aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorcrueter <crueter@eden-emu.dev>2026-05-04 20:27:53 +0200
committercrueter <crueter@eden-emu.dev>2026-05-04 20:27:53 +0200
commit17c341ff6c0f8be5d4e7614389456159cd247bd0 (patch)
treeecad932160605318f0e972a4fe8efd9da6018bdc /src
parent2deee80f290ad49106c27560c65969abae9beb8c (diff)
[video_core] index rescaling metadata by descriptor (#3899) (#3924)
#3898 fix was good but exposed a rescaling metadata mismatch that can cause scaled texture descriptors to read the wrong state so this patch tries to keep them aligned with shader lookup Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/3899 Reviewed-by: MaranBr <maranbr@eden-emu.dev> Reviewed-by: crueter <crueter@eden-emu.dev> Co-authored-by: ryana <ryanamayque@gmail.com> Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/3924
Diffstat (limited to 'src')
-rw-r--r--src/video_core/renderer_vulkan/pipeline_helper.h10
1 files changed, 8 insertions, 2 deletions
diff --git a/src/video_core/renderer_vulkan/pipeline_helper.h b/src/video_core/renderer_vulkan/pipeline_helper.h
index e88b27b273..451a02c7e6 100644
--- a/src/video_core/renderer_vulkan/pipeline_helper.h
+++ b/src/video_core/renderer_vulkan/pipeline_helper.h
@@ -189,6 +189,7 @@ inline void PushImageDescriptors(TextureCache& texture_cache,
views += num_texture_buffers;
views += num_image_buffers;
for (const auto& desc : info.texture_descriptors) {
+ bool is_rescaled{};
for (u32 index = 0; index < desc.count; ++index) {
const VideoCommon::ImageViewId image_view_id{(views++)->id};
const VideoCommon::SamplerId sampler_id{*(samplers++)};
@@ -200,10 +201,13 @@ inline void PushImageDescriptors(TextureCache& texture_cache,
const VkSampler vk_sampler{use_fallback_sampler ? sampler.HandleWithDefaultAnisotropy()
: sampler.Handle()};
guest_descriptor_queue.AddSampledImage(vk_image_view, vk_sampler);
- rescaling.PushTexture(texture_cache.IsRescaling(image_view));
+ const bool element_rescaled{texture_cache.IsRescaling(image_view)};
+ is_rescaled |= element_rescaled;
}
+ rescaling.PushTexture(is_rescaled);
}
for (const auto& desc : info.image_descriptors) {
+ bool is_rescaled{};
for (u32 index = 0; index < desc.count; ++index) {
ImageView& image_view{texture_cache.GetImageView((views++)->id)};
if (desc.is_written) {
@@ -211,8 +215,10 @@ inline void PushImageDescriptors(TextureCache& texture_cache,
}
const VkImageView vk_image_view{image_view.StorageView(desc.type, desc.format)};
guest_descriptor_queue.AddImage(vk_image_view);
- rescaling.PushImage(texture_cache.IsRescaling(image_view));
+ const bool element_rescaled{texture_cache.IsRescaling(image_view)};
+ is_rescaled |= element_rescaled;
}
+ rescaling.PushImage(is_rescaled);
}
}