TextureCache: Fix regression caused by ART and improve blit detection algorithm to be smarter.
This commit is contained in:
parent
a21d1447ab
commit
37459e821b
2 changed files with 27 additions and 10 deletions
|
@ -1151,17 +1151,37 @@ bool IsSubresource(const ImageInfo& candidate, const ImageBase& image, GPUVAddr
|
|||
|
||||
void DeduceBlitImages(ImageInfo& dst_info, ImageInfo& src_info, const ImageBase* dst,
|
||||
const ImageBase* src) {
|
||||
if (src && GetFormatType(src->info.format) != SurfaceType::ColorTexture) {
|
||||
if (src) {
|
||||
src_info.format = src->info.format;
|
||||
src_info.num_samples = src->info.num_samples;
|
||||
src_info.size = src->info.size;
|
||||
}
|
||||
if (dst && GetFormatType(dst->info.format) != SurfaceType::ColorTexture) {
|
||||
if (dst) {
|
||||
dst_info.format = dst->info.format;
|
||||
dst_info.num_samples = dst->info.num_samples;
|
||||
dst_info.size = dst->info.size;
|
||||
}
|
||||
if (src && GetFormatType(src->info.format) != SurfaceType::ColorTexture) {
|
||||
dst_info.format = src->info.format;
|
||||
if (dst) {
|
||||
src_info.format = dst_info.format;
|
||||
} else {
|
||||
dst_info.format = src->info.format;
|
||||
}
|
||||
}
|
||||
if (dst && GetFormatType(dst->info.format) != SurfaceType::ColorTexture) {
|
||||
src_info.format = dst->info.format;
|
||||
if (src) {
|
||||
if (GetFormatType(src->info.format) == SurfaceType::ColorTexture) {
|
||||
dst_info.format = src->info.format;
|
||||
}
|
||||
} else {
|
||||
src_info.format = dst->info.format;
|
||||
}
|
||||
}
|
||||
if (src_info.num_samples > 1) {
|
||||
dst_info.format = src_info.format;
|
||||
}
|
||||
if (dst_info.num_samples > 1) {
|
||||
src_info.format = dst_info.format;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue