summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/video_core/texture_cache/texture_cache.h16
1 files changed, 13 insertions, 3 deletions
diff --git a/src/video_core/texture_cache/texture_cache.h b/src/video_core/texture_cache/texture_cache.h
index f24de9a38..565b99254 100644
--- a/src/video_core/texture_cache/texture_cache.h
+++ b/src/video_core/texture_cache/texture_cache.h
@@ -1137,8 +1137,11 @@ typename TextureCache<P>::BlitImages TextureCache<P>::GetBlitImages(
1137 } while (has_deleted_images); 1137 } while (has_deleted_images);
1138 if (GetFormatType(dst_info.format) != SurfaceType::ColorTexture) { 1138 if (GetFormatType(dst_info.format) != SurfaceType::ColorTexture) {
1139 // Make sure the images are depth and/or stencil textures. 1139 // Make sure the images are depth and/or stencil textures.
1140 src_id = FindOrInsertImage(src_info, src_addr, RelaxedOptions{}); 1140 do {
1141 dst_id = FindOrInsertImage(dst_info, dst_addr, RelaxedOptions{}); 1141 has_deleted_images = false;
1142 src_id = FindOrInsertImage(src_info, src_addr, RelaxedOptions{});
1143 dst_id = FindOrInsertImage(dst_info, dst_addr, RelaxedOptions{});
1144 } while (has_deleted_images);
1142 } 1145 }
1143 return BlitImages{ 1146 return BlitImages{
1144 .dst_id = dst_id, 1147 .dst_id = dst_id,
@@ -1196,7 +1199,14 @@ template <class P>
1196ImageViewId TextureCache<P>::FindRenderTargetView(const ImageInfo& info, GPUVAddr gpu_addr, 1199ImageViewId TextureCache<P>::FindRenderTargetView(const ImageInfo& info, GPUVAddr gpu_addr,
1197 bool is_clear) { 1200 bool is_clear) {
1198 const auto options = is_clear ? RelaxedOptions::Samples : RelaxedOptions{}; 1201 const auto options = is_clear ? RelaxedOptions::Samples : RelaxedOptions{};
1199 const ImageId image_id = FindOrInsertImage(info, gpu_addr, options); 1202 ImageId image_id{};
1203 bool delete_state = has_deleted_images;
1204 do {
1205 has_deleted_images = false;
1206 image_id = FindOrInsertImage(info, gpu_addr, options);
1207 delete_state |= has_deleted_images;
1208 } while (has_deleted_images);
1209 has_deleted_images = delete_state;
1200 if (!image_id) { 1210 if (!image_id) {
1201 return NULL_IMAGE_VIEW_ID; 1211 return NULL_IMAGE_VIEW_ID;
1202 } 1212 }