aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMaranBr <maranbr@outlook.com>2025-10-29 00:07:13 +0100
committercrueter <crueter@eden-emu.dev>2025-10-29 00:07:13 +0100
commit83c162d80d371c455d84b4ee62b88cc6db05311a (patch)
treed77daa0776e3ef2a599450d7379f298ae91bf44c
parent1a2d1821b5bd8245ca795af32d1113cea9889676 (diff)
[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 <lizzie@eden-emu.dev> Reviewed-by: crueter <crueter@eden-emu.dev> Co-authored-by: MaranBr <maranbr@outlook.com> Co-committed-by: MaranBr <maranbr@outlook.com>
-rw-r--r--src/video_core/texture_cache/image_info.cpp24
-rw-r--r--src/video_core/texture_cache/image_view_info.cpp19
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<u32>(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<u32>(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<u32>(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<int>(tex_type));