فهرست منبع

Merge pull request #4144 from FernandoS27/tt-fix

TextureCache: Fix case where layer goes off bound.
bunnei 6 سال پیش
والد
کامیت
3579db425e
1فایلهای تغییر یافته به همراه3 افزوده شده و 0 حذف شده
  1. 3 0
      src/video_core/texture_cache/surface_base.cpp

+ 3 - 0
src/video_core/texture_cache/surface_base.cpp

@@ -120,6 +120,9 @@ std::optional<std::pair<u32, u32>> SurfaceBaseImpl::GetLayerMipmap(
     }
     }
     const auto relative_address{static_cast<GPUVAddr>(candidate_gpu_addr - gpu_addr)};
     const auto relative_address{static_cast<GPUVAddr>(candidate_gpu_addr - gpu_addr)};
     const auto layer{static_cast<u32>(relative_address / layer_size)};
     const auto layer{static_cast<u32>(relative_address / layer_size)};
+    if (layer >= params.depth) {
+        return {};
+    }
     const GPUVAddr mipmap_address = relative_address - layer_size * layer;
     const GPUVAddr mipmap_address = relative_address - layer_size * layer;
     const auto mipmap_it =
     const auto mipmap_it =
         Common::BinaryFind(mipmap_offsets.begin(), mipmap_offsets.end(), mipmap_address);
         Common::BinaryFind(mipmap_offsets.begin(), mipmap_offsets.end(), mipmap_address);