Browse Source

Fixes to mipmap's process and reconstruct process

Fernando Sahmkow 7 năm trước cách đây
mục cha
commit
de0b1cb2b2

+ 2 - 2
src/video_core/texture_cache/surface_base.h

@@ -262,20 +262,20 @@ public:
             view_params.target == SurfaceTarget::Texture3D) {
             return {};
         }
-        const std::size_t size{view_params.GetGuestSizeInBytes()};
         const auto layer_mipmap{GetLayerMipmap(view_addr)};
         if (!layer_mipmap) {
             return {};
         }
         const u32 layer{layer_mipmap->first};
         const u32 mipmap{layer_mipmap->second};
+        const std::size_t size{view_params.GetGuestSizeInBytes()};
         if (GetMipmapSize(mipmap) != size) {
             // TODO: The view may cover many mimaps, this case can still go on.
             // This edge-case can be safely be ignored since it will just result in worse
             // performance.
             return {};
         }
-        return GetView(ViewParams(params.target, layer, 1, mipmap, 1));
+        return GetView(ViewParams(view_params.target, layer, 1, mipmap, 1));
     }
 
     TView GetMainView() const {

+ 1 - 1
src/video_core/texture_cache/texture_cache.h

@@ -323,7 +323,7 @@ private:
                                                                  const SurfaceParams& params,
                                                                  const GPUVAddr gpu_addr,
                                                                  const u8* host_ptr) {
-        if (!params.is_layered || params.target == SurfaceTarget::Texture3D) {
+        if (params.target == SurfaceTarget::Texture3D) {
             return {};
         }
         TSurface new_surface = GetUncachedSurface(gpu_addr, params);