Просмотр исходного кода

texture_cache: Fix incorrect logic for AccelerateDMA

ameerj 3 лет назад
Родитель
Сommit
1fc47361a1
1 измененных файлов с 4 добавлено и 8 удалено
  1. 4 8
      src/video_core/texture_cache/texture_cache.h

+ 4 - 8
src/video_core/texture_cache/texture_cache.h

@@ -850,15 +850,11 @@ 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 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
+    const ImageId image_id = FindDMAImage(dst_info, operand.address);
+    if (!image_id) {
         return NULL_IMAGE_ID;
     }
+    auto& image = slot_images[image_id];
     if (!is_upload && !image.info.dma_downloaded) {
         // Force a full sync.
         image.info.dma_downloaded = true;
@@ -868,7 +864,7 @@ ImageId TextureCache<P>::DmaImageId(const Tegra::DMA::ImageOperand& operand, boo
     if (!base) {
         return NULL_IMAGE_ID;
     }
-    return dst_id;
+    return image_id;
 }
 
 template <class P>