From 83c162d80d371c455d84b4ee62b88cc6db05311a Mon Sep 17 00:00:00 2001 From: MaranBr Date: Wed, 29 Oct 2025 00:07:13 +0100 Subject: [PATCH] [video_core] Fix regression on image_view and image_view_info (#2873) Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/2873 Reviewed-by: Lizzie Reviewed-by: crueter Co-authored-by: MaranBr Co-committed-by: MaranBr --- src/video_core/texture_cache/image_info.cpp | 24 ++++--------------- .../texture_cache/image_view_info.cpp | 19 ++++----------- 2 files changed, 9 insertions(+), 34 deletions(-) diff --git a/src/video_core/texture_cache/image_info.cpp b/src/video_core/texture_cache/image_info.cpp index 677e22b8a7..a0d8d5d94c 100644 --- a/src/video_core/texture_cache/image_info.cpp +++ b/src/video_core/texture_cache/image_info.cpp @@ -70,19 +70,14 @@ ImageInfo::ImageInfo(const TICEntry& config) noexcept { switch (tex_type) { case TextureType::Texture1D: ASSERT(config.BaseLayer() == 0); - ASSERT(config.Depth() == 1); type = ImageType::e1D; size.width = config.Width(); - size.depth = 1; resources.layers = 1; break; case TextureType::Texture1DArray: - ASSERT(config.Depth() > 0); - ASSERT(config.BaseLayer() < config.Depth()); type = ImageType::e1D; size.width = config.Width(); - size.depth = 1; - resources.layers = config.Depth() - config.BaseLayer(); + resources.layers = config.BaseLayer() + config.Depth(); break; case TextureType::Texture2D: case TextureType::Texture2DNoMipmap: @@ -91,36 +86,28 @@ ImageInfo::ImageInfo(const TICEntry& config) noexcept { rescaleable = !config.IsPitchLinear(); size.width = config.Width(); size.height = config.Height(); - size.depth = 1; - resources.layers = 1; + resources.layers = config.BaseLayer() + 1; break; case TextureType::Texture2DArray: - ASSERT(config.Depth() > 0); - ASSERT(config.BaseLayer() < config.Depth()); type = ImageType::e2D; rescaleable = true; size.width = config.Width(); size.height = config.Height(); - size.depth = 1; - resources.layers = config.Depth() - config.BaseLayer(); + resources.layers = config.BaseLayer() + config.Depth(); break; case TextureType::TextureCubemap: ASSERT(config.Depth() == 1); type = ImageType::e2D; size.width = config.Width(); size.height = config.Height(); - size.depth = 1; - resources.layers = 6; + resources.layers = config.BaseLayer() + 6; break; case TextureType::TextureCubeArray: UNIMPLEMENTED_IF(config.load_store_hint != 0); - ASSERT(config.Depth() > 0); - ASSERT(config.BaseLayer() < config.Depth()); type = ImageType::e2D; size.width = config.Width(); size.height = config.Height(); - size.depth = 1; - resources.layers = (config.Depth() - config.BaseLayer()) * 6; + resources.layers = config.BaseLayer() + config.Depth() * 6; break; case TextureType::Texture3D: ASSERT(config.BaseLayer() == 0); @@ -133,7 +120,6 @@ ImageInfo::ImageInfo(const TICEntry& config) noexcept { case TextureType::Texture1DBuffer: type = ImageType::Buffer; size.width = config.Width(); - size.depth = 1; resources.layers = 1; break; default: diff --git a/src/video_core/texture_cache/image_view_info.cpp b/src/video_core/texture_cache/image_view_info.cpp index d9057604ae..c53cd0e413 100644 --- a/src/video_core/texture_cache/image_view_info.cpp +++ b/src/video_core/texture_cache/image_view_info.cpp @@ -60,27 +60,21 @@ ImageViewInfo::ImageViewInfo(const TICEntry& config, s32 base_layer) noexcept case TextureType::Texture1D: ASSERT(config.Height() == 1); ASSERT(config.Depth() == 1); - ASSERT(base_layer == 0); type = ImageViewType::e1D; - range.extent.layers = 1; break; case TextureType::Texture1DArray: - ASSERT(config.Depth() > 0); - ASSERT(static_cast(base_layer) < config.Depth()); + ASSERT(config.Height() == 1); type = ImageViewType::e1DArray; - range.extent.layers = config.Depth() - base_layer; + range.extent.layers = config.Depth(); break; case TextureType::Texture2D: case TextureType::Texture2DNoMipmap: ASSERT(config.Depth() == 1); type = config.normalized_coords ? ImageViewType::e2D : ImageViewType::Rect; - range.extent.layers = 1; break; case TextureType::Texture2DArray: - ASSERT(config.Depth() > 0); - ASSERT(static_cast(base_layer) < config.Depth()); type = ImageViewType::e2DArray; - range.extent.layers = config.Depth() - base_layer; + range.extent.layers = config.Depth(); break; case TextureType::TextureCubemap: ASSERT(config.Depth() == 1); @@ -88,19 +82,14 @@ ImageViewInfo::ImageViewInfo(const TICEntry& config, s32 base_layer) noexcept range.extent.layers = 6; break; case TextureType::TextureCubeArray: - ASSERT(config.Depth() > 0); - ASSERT(static_cast(base_layer) < config.Depth()); type = ImageViewType::CubeArray; - range.extent.layers = (config.Depth() - base_layer) * 6; + range.extent.layers = config.Depth() * 6; break; case TextureType::Texture3D: - ASSERT(base_layer == 0); type = ImageViewType::e3D; - range.extent.layers = 1; break; case TextureType::Texture1DBuffer: type = ImageViewType::Buffer; - range.extent.layers = 1; break; default: ASSERT_MSG(false, "Invalid texture_type={}", static_cast(tex_type));