rsx: Fix shader interpreter
Some checks are pending
Generate Translation Template / Generate Translation Template (push) Waiting to run
Build RPCS3 / RPCS3 Linux ${{ matrix.os }} ${{ matrix.compiler }} (/rpcs3/.ci/build-linux-aarch64.sh, gcc, rpcs3/rpcs3-ci-jammy-aarch64:1.7, ubuntu-24.04-arm) (push) Waiting to run
Build RPCS3 / RPCS3 Linux ${{ matrix.os }} ${{ matrix.compiler }} (/rpcs3/.ci/build-linux.sh, gcc, rpcs3/rpcs3-ci-jammy:1.7, ubuntu-24.04) (push) Waiting to run
Build RPCS3 / RPCS3 Linux ${{ matrix.os }} ${{ matrix.compiler }} (a1d35836e8d45bfc6f63c26f0a3e5d46ef622fe1, rpcs3/rpcs3-binaries-linux-arm64, /rpcs3/.ci/build-linux-aarch64.sh, clang, rpcs3/rpcs3-ci-jammy-aarch64:1.7, ubuntu-24.04-arm) (push) Waiting to run
Build RPCS3 / RPCS3 Linux ${{ matrix.os }} ${{ matrix.compiler }} (d812f1254a1157c80fd402f94446310560f54e5f, rpcs3/rpcs3-binaries-linux, /rpcs3/.ci/build-linux.sh, clang, rpcs3/rpcs3-ci-jammy:1.7, ubuntu-24.04) (push) Waiting to run
Build RPCS3 / RPCS3 Mac ${{ matrix.name }} (51ae32f468089a8169aaf1567de355ff4a3e0842, rpcs3/rpcs3-binaries-mac, .ci/build-mac.sh, Intel) (push) Waiting to run
Build RPCS3 / RPCS3 Mac ${{ matrix.name }} (8e21bdbc40711a3fccd18fbf17b742348b0f4281, rpcs3/rpcs3-binaries-mac-arm64, .ci/build-mac-arm64.sh, Apple Silicon) (push) Waiting to run
Build RPCS3 / RPCS3 Windows (push) Waiting to run
Build RPCS3 / RPCS3 Windows Clang (win64, clang, clang64) (push) Waiting to run
Build RPCS3 / RPCS3 FreeBSD (push) Waiting to run

This commit is contained in:
kd-11 2025-11-09 16:55:56 +03:00 committed by kd-11
parent d87f055bb2
commit 265d6643e5
2 changed files with 7 additions and 3 deletions

View File

@ -529,7 +529,7 @@ void initialize()
// WPOS // WPOS
vr0 = vec4(abs(wpos_scale), wpos_scale, 1., 1.); vr0 = vec4(abs(wpos_scale), wpos_scale, 1., 1.);
vr1 = vec4(0., wpos_bias, 0., 0.); vr1 = vec4(wpos_bias, 0., 0.);
wpos = gl_FragCoord * vr0 + vr1; wpos = gl_FragCoord * vr0 + vr1;
// Other // Other

View File

@ -501,8 +501,11 @@ namespace vk
if (auto ptr = std::get_if<descriptor_image_array_t>(&slot)) if (auto ptr = std::get_if<descriptor_image_array_t>(&slot))
{ {
// We need to convert the VkDescriptorImageInfoEx entries back to the native vulkan variants since we're going to be flushing an array with no stride check
auto vk_data = ptr->map(FN(static_cast<VkDescriptorImageInfo>(x)));
writer.descriptorCount = ptr->size(); writer.descriptorCount = ptr->size();
m_descriptor_set.push(ptr->data(), ptr->size(), type, idx); m_descriptor_set.push(vk_data.data(), vk_data.size(), type, idx);
return; return;
} }
@ -552,8 +555,9 @@ namespace vk
if (auto ptr = std::get_if<descriptor_image_array_t>(&slot)) if (auto ptr = std::get_if<descriptor_image_array_t>(&slot))
{ {
auto vk_data = ptr->map(FN(static_cast<VkDescriptorImageInfo>(x))); // This can be optimized to update only changed ids but this is an interpreter-only feature for now
ensure(m_descriptor_template[idx].descriptorCount == ptr->size()); ensure(m_descriptor_template[idx].descriptorCount == ptr->size());
m_descriptor_template[idx].pImageInfo = m_descriptor_set.store(*ptr); m_descriptor_template[idx].pImageInfo = m_descriptor_set.store(vk_data);
return; return;
} }