Răsfoiți Sursa

texture_cache: return null surface on invalid address

Fernando Sahmkow 7 ani în urmă
părinte
comite
e60ed2bb3e
1 a modificat fișierele cu 12 adăugiri și 0 ștergeri
  1. 12 0
      src/video_core/texture_cache/texture_cache.h

+ 12 - 0
src/video_core/texture_cache/texture_cache.h

@@ -483,6 +483,18 @@ private:
         const auto host_ptr{memory_manager->GetPointer(gpu_addr)};
         const auto cache_addr{ToCacheAddr(host_ptr)};
 
+        // Step 0: guarantee a valid surface
+        if (!cache_addr) {
+            // Return a null surface if it's invalid
+            SurfaceParams new_params = params;
+            new_params.width = 1;
+            new_params.height = 1;
+            new_params.depth = 1;
+            new_params.block_height = 0;
+            new_params.block_depth = 0;
+            return InitializeSurface(gpu_addr, new_params, false);
+        }
+
         // Step 1
         // Check Level 1 Cache for a fast structural match. If candidate surface
         // matches at certain level we are pretty much done.