Merge pull request #7495 from FernandoS27/text-blit-fix-again

Texture Cache: Fix mismatching image/views on blits
This commit is contained in:
Morph 2021-12-09 05:26:21 -05:00 committed by GitHub
commit 429320aee8
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -1122,7 +1122,7 @@ typename TextureCache<P>::BlitImages TextureCache<P>::GetBlitImages(
break; break;
} }
if (can_be_depth_blit) { if (can_be_depth_blit) {
const ImageBase* const dst_image = src_id ? &slot_images[src_id] : nullptr; const ImageBase* const dst_image = dst_id ? &slot_images[dst_id] : nullptr;
DeduceBlitImages(dst_info, src_info, dst_image, src_image); DeduceBlitImages(dst_info, src_info, dst_image, src_image);
if (GetFormatType(dst_info.format) != GetFormatType(src_info.format)) { if (GetFormatType(dst_info.format) != GetFormatType(src_info.format)) {
continue; continue;
@ -1135,8 +1135,11 @@ typename TextureCache<P>::BlitImages TextureCache<P>::GetBlitImages(
dst_id = InsertImage(dst_info, dst_addr, RelaxedOptions{}); dst_id = InsertImage(dst_info, dst_addr, RelaxedOptions{});
} }
} while (has_deleted_images); } while (has_deleted_images);
if (GetFormatType(dst_info.format) != SurfaceType::ColorTexture) { const ImageBase& src_image = slot_images[src_id];
// Make sure the images are depth and/or stencil textures. const ImageBase& dst_image = slot_images[dst_id];
if (GetFormatType(dst_info.format) != GetFormatType(dst_image.info.format) ||
GetFormatType(src_info.format) != GetFormatType(src_image.info.format)) {
// Make sure the images match the expected format.
do { do {
has_deleted_images = false; has_deleted_images = false;
src_id = FindOrInsertImage(src_info, src_addr, RelaxedOptions{}); src_id = FindOrInsertImage(src_info, src_addr, RelaxedOptions{});