summaryrefslogtreecommitdiffstats
path: root/src/video_core/texture_cache/texture_cache.h
diff options
context:
space:
mode:
authorameerj <52414509+ameerj@users.noreply.github.com>2023-02-08 03:33:57 +0100
committerameerj <52414509+ameerj@users.noreply.github.com>2023-02-11 21:43:07 +0100
commit93cf2b3ca8edeb1e8f1e00182f920b8d50664ed5 (patch)
tree27f50dead32e6741d0cff761b3c0be4d8d7acd0c /src/video_core/texture_cache/texture_cache.h
parentMerge pull request #9508 from ameerj/hle-ipc-buffer-span (diff)
downloadyuzu-93cf2b3ca8edeb1e8f1e00182f920b8d50664ed5.tar
yuzu-93cf2b3ca8edeb1e8f1e00182f920b8d50664ed5.tar.gz
yuzu-93cf2b3ca8edeb1e8f1e00182f920b8d50664ed5.tar.bz2
yuzu-93cf2b3ca8edeb1e8f1e00182f920b8d50664ed5.tar.lz
yuzu-93cf2b3ca8edeb1e8f1e00182f920b8d50664ed5.tar.xz
yuzu-93cf2b3ca8edeb1e8f1e00182f920b8d50664ed5.tar.zst
yuzu-93cf2b3ca8edeb1e8f1e00182f920b8d50664ed5.zip
Diffstat (limited to 'src/video_core/texture_cache/texture_cache.h')
-rw-r--r--src/video_core/texture_cache/texture_cache.h14
1 files changed, 7 insertions, 7 deletions
diff --git a/src/video_core/texture_cache/texture_cache.h b/src/video_core/texture_cache/texture_cache.h
index 1b01990a4..3e2cbb0b0 100644
--- a/src/video_core/texture_cache/texture_cache.h
+++ b/src/video_core/texture_cache/texture_cache.h
@@ -773,7 +773,7 @@ void TextureCache<P>::RefreshContents(Image& image, ImageId image_id) {
image.flags &= ~ImageFlagBits::CpuModified;
TrackImage(image, image_id);
- if (image.info.num_samples > 1) {
+ if (image.info.num_samples > 1 && !runtime.CanUploadMSAA()) {
LOG_WARNING(HW_GPU, "MSAA image uploads are not implemented");
return;
}
@@ -1167,14 +1167,14 @@ ImageId TextureCache<P>::JoinImages(const ImageInfo& info, GPUVAddr gpu_addr, VA
if (True(overlap.flags & ImageFlagBits::GpuModified)) {
new_image.flags |= ImageFlagBits::GpuModified;
}
+ const auto& resolution = Settings::values.resolution_info;
+ const SubresourceBase base = new_image.TryFindBase(overlap.gpu_addr).value();
+ const u32 up_scale = can_rescale ? resolution.up_scale : 1;
+ const u32 down_shift = can_rescale ? resolution.down_shift : 0;
+ auto copies = MakeShrinkImageCopies(new_info, overlap.info, base, up_scale, down_shift);
if (overlap.info.num_samples != new_image.info.num_samples) {
- LOG_WARNING(HW_GPU, "Copying between images with different samples is not implemented");
+ runtime.CopyImageMSAA(new_image, overlap, std::move(copies));
} else {
- const auto& resolution = Settings::values.resolution_info;
- const SubresourceBase base = new_image.TryFindBase(overlap.gpu_addr).value();
- const u32 up_scale = can_rescale ? resolution.up_scale : 1;
- const u32 down_shift = can_rescale ? resolution.down_shift : 0;
- auto copies = MakeShrinkImageCopies(new_info, overlap.info, base, up_scale, down_shift);
runtime.CopyImage(new_image, overlap, std::move(copies));
}
if (True(overlap.flags & ImageFlagBits::Tracked)) {