summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFernando S <fsahmkow27@gmail.com>2023-07-02 09:27:29 +0200
committerGitHub <noreply@github.com>2023-07-02 09:27:29 +0200
commitb7c7768e0ab174823d84e5cd7d3f4f437641efbf (patch)
tree5d5660b3efecb3c5c54aff61b7bfa7ebb95d1281
parentMerge pull request #10984 from comex/cob (diff)
parentRevert "texture_cache: Fix incorrect logic for AccelerateDMA" (diff)
downloadyuzu-b7c7768e0ab174823d84e5cd7d3f4f437641efbf.tar
yuzu-b7c7768e0ab174823d84e5cd7d3f4f437641efbf.tar.gz
yuzu-b7c7768e0ab174823d84e5cd7d3f4f437641efbf.tar.bz2
yuzu-b7c7768e0ab174823d84e5cd7d3f4f437641efbf.tar.lz
yuzu-b7c7768e0ab174823d84e5cd7d3f4f437641efbf.tar.xz
yuzu-b7c7768e0ab174823d84e5cd7d3f4f437641efbf.tar.zst
yuzu-b7c7768e0ab174823d84e5cd7d3f4f437641efbf.zip
-rw-r--r--src/video_core/texture_cache/texture_cache.h12
1 files changed, 8 insertions, 4 deletions
diff --git a/src/video_core/texture_cache/texture_cache.h b/src/video_core/texture_cache/texture_cache.h
index 8190f3ba1..79f158db4 100644
--- a/src/video_core/texture_cache/texture_cache.h
+++ b/src/video_core/texture_cache/texture_cache.h
@@ -865,11 +865,15 @@ void TextureCache<P>::PopAsyncFlushes() {
template <class P>
ImageId TextureCache<P>::DmaImageId(const Tegra::DMA::ImageOperand& operand, bool is_upload) {
const ImageInfo dst_info(operand);
- const ImageId image_id = FindDMAImage(dst_info, operand.address);
- if (!image_id) {
+ const ImageId dst_id = FindDMAImage(dst_info, operand.address);
+ if (!dst_id) {
+ return NULL_IMAGE_ID;
+ }
+ auto& image = slot_images[dst_id];
+ if (False(image.flags & ImageFlagBits::GpuModified)) {
+ // No need to waste time on an image that's synced with guest
return NULL_IMAGE_ID;
}
- auto& image = slot_images[image_id];
if (image.info.type == ImageType::e3D) {
// Don't accelerate 3D images.
return NULL_IMAGE_ID;
@@ -883,7 +887,7 @@ ImageId TextureCache<P>::DmaImageId(const Tegra::DMA::ImageOperand& operand, boo
if (!base) {
return NULL_IMAGE_ID;
}
- return image_id;
+ return dst_id;
}
template <class P>