|
|
|
@ -1151,19 +1151,25 @@ bool IsSubresource(const ImageInfo& candidate, const ImageBase& image, GPUVAddr
|
|
|
|
|
|
|
|
|
|
void DeduceBlitImages(ImageInfo& dst_info, ImageInfo& src_info, const ImageBase* dst,
|
|
|
|
|
const ImageBase* src) {
|
|
|
|
|
bool is_resolve = false;
|
|
|
|
|
const auto original_src_format = src_info.format;
|
|
|
|
|
const auto original_dst_format = dst_info.format;
|
|
|
|
|
if (src) {
|
|
|
|
|
if (GetFormatType(src->info.format) != SurfaceType::ColorTexture) {
|
|
|
|
|
src_info.format = src->info.format;
|
|
|
|
|
}
|
|
|
|
|
is_resolve = src->info.num_samples > 1;
|
|
|
|
|
src_info.num_samples = src->info.num_samples;
|
|
|
|
|
src_info.size = src->info.size;
|
|
|
|
|
}
|
|
|
|
|
if (dst) {
|
|
|
|
|
if (dst && GetFormatType(dst->info.format) != SurfaceType::ColorTexture) {
|
|
|
|
|
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) {
|
|
|
|
|
if (dst) {
|
|
|
|
|
src_info.format = dst_info.format;
|
|
|
|
|
if (GetFormatType(dst->info.format) == SurfaceType::ColorTexture) {
|
|
|
|
|
src_info.format = original_src_format;
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
dst_info.format = src->info.format;
|
|
|
|
|
}
|
|
|
|
@ -1171,18 +1177,13 @@ void DeduceBlitImages(ImageInfo& dst_info, ImageInfo& src_info, const ImageBase*
|
|
|
|
|
if (dst && GetFormatType(dst->info.format) != SurfaceType::ColorTexture) {
|
|
|
|
|
if (src) {
|
|
|
|
|
if (GetFormatType(src->info.format) == SurfaceType::ColorTexture) {
|
|
|
|
|
dst_info.format = src->info.format;
|
|
|
|
|
dst_info.format = original_dst_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;
|
|
|
|
|
}
|
|
|
|
|
ASSERT(!is_resolve || dst_info.format == src_info.format);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
u32 MapSizeBytes(const ImageBase& image) {
|
|
|
|
|