mirror of
https://git.eden-emu.dev/eden-emu/eden
synced 2026-05-13 21:47:02 +02:00
#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
This commit is contained in:
parent
2deee80f29
commit
17c341ff6c
1 changed files with 8 additions and 2 deletions
|
|
@ -189,6 +189,7 @@ inline void PushImageDescriptors(TextureCache& texture_cache,
|
||||||
views += num_texture_buffers;
|
views += num_texture_buffers;
|
||||||
views += num_image_buffers;
|
views += num_image_buffers;
|
||||||
for (const auto& desc : info.texture_descriptors) {
|
for (const auto& desc : info.texture_descriptors) {
|
||||||
|
bool is_rescaled{};
|
||||||
for (u32 index = 0; index < desc.count; ++index) {
|
for (u32 index = 0; index < desc.count; ++index) {
|
||||||
const VideoCommon::ImageViewId image_view_id{(views++)->id};
|
const VideoCommon::ImageViewId image_view_id{(views++)->id};
|
||||||
const VideoCommon::SamplerId sampler_id{*(samplers++)};
|
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()
|
const VkSampler vk_sampler{use_fallback_sampler ? sampler.HandleWithDefaultAnisotropy()
|
||||||
: sampler.Handle()};
|
: sampler.Handle()};
|
||||||
guest_descriptor_queue.AddSampledImage(vk_image_view, vk_sampler);
|
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) {
|
for (const auto& desc : info.image_descriptors) {
|
||||||
|
bool is_rescaled{};
|
||||||
for (u32 index = 0; index < desc.count; ++index) {
|
for (u32 index = 0; index < desc.count; ++index) {
|
||||||
ImageView& image_view{texture_cache.GetImageView((views++)->id)};
|
ImageView& image_view{texture_cache.GetImageView((views++)->id)};
|
||||||
if (desc.is_written) {
|
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)};
|
const VkImageView vk_image_view{image_view.StorageView(desc.type, desc.format)};
|
||||||
guest_descriptor_queue.AddImage(vk_image_view);
|
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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue