diff --git a/src/video_core/texture_cache/texture_cache.h b/src/video_core/texture_cache/texture_cache.h index 46a825ea39..a986f732c5 100644 --- a/src/video_core/texture_cache/texture_cache.h +++ b/src/video_core/texture_cache/texture_cache.h @@ -288,21 +288,41 @@ void TextureCache

::CheckFeedbackLoop(std::span views) { if (!view.id) { continue; } + + bool is_render_target = false; + + for (const auto& ct_view_id : render_targets.color_buffer_ids) { + if (ct_view_id && ct_view_id == view.id) { + is_render_target = true; + break; + } + } + + if (!is_render_target && render_targets.depth_buffer_id == view.id) { + is_render_target = true; + } + + if (is_render_target) { + continue; + } + auto& image_view = slot_image_views[view.id]; - // Check color targets for (const auto& ct_view_id : render_targets.color_buffer_ids) { - if (ct_view_id) { - auto& ct_view = slot_image_views[ct_view_id]; - if (image_view.image_id == ct_view.image_id) { - return true; - } + if (!ct_view_id) { + continue; + } + + auto& ct_view = slot_image_views[ct_view_id]; + + if (image_view.image_id == ct_view.image_id) { + return true; } } - // Check zeta target if (render_targets.depth_buffer_id) { auto& zt_view = slot_image_views[render_targets.depth_buffer_id]; + if (image_view.image_id == zt_view.image_id) { return true; }