|
@@ -759,7 +759,8 @@ ImageId TextureCache<P>::FindImage(const ImageInfo& info, GPUVAddr gpu_addr,
|
|
|
return ImageId{};
|
|
return ImageId{};
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
- const bool broken_views = runtime.HasBrokenTextureViewFormats();
|
|
|
|
|
|
|
+ const bool broken_views =
|
|
|
|
|
+ runtime.HasBrokenTextureViewFormats() || True(options & RelaxedOptions::ForceBrokenViews);
|
|
|
const bool native_bgr = runtime.HasNativeBgr();
|
|
const bool native_bgr = runtime.HasNativeBgr();
|
|
|
ImageId image_id;
|
|
ImageId image_id;
|
|
|
const auto lambda = [&](ImageId existing_image_id, ImageBase& existing_image) {
|
|
const auto lambda = [&](ImageId existing_image_id, ImageBase& existing_image) {
|
|
@@ -1096,7 +1097,12 @@ typename TextureCache<P>::BlitImages TextureCache<P>::GetBlitImages(
|
|
|
continue;
|
|
continue;
|
|
|
}
|
|
}
|
|
|
src_id = FindOrInsertImage(src_info, src_addr);
|
|
src_id = FindOrInsertImage(src_info, src_addr);
|
|
|
- dst_id = FindOrInsertImage(dst_info, dst_addr);
|
|
|
|
|
|
|
+ RelaxedOptions dst_options{};
|
|
|
|
|
+ if (src_info.num_samples > 1) {
|
|
|
|
|
+ // it's a resolve, we must enforce the same format.
|
|
|
|
|
+ dst_options = RelaxedOptions::ForceBrokenViews;
|
|
|
|
|
+ }
|
|
|
|
|
+ dst_id = FindOrInsertImage(dst_info, dst_addr, dst_options);
|
|
|
} while (has_deleted_images);
|
|
} while (has_deleted_images);
|
|
|
return BlitImages{
|
|
return BlitImages{
|
|
|
.dst_id = dst_id,
|
|
.dst_id = dst_id,
|