Browse Source

[video_core] Better error messages (#2827)

Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/2827
Reviewed-by: Maufeat <sahyno1996@gmail.com>
Reviewed-by: Lizzie <lizzie@eden-emu.dev>
Co-authored-by: MaranBr <maranbr@outlook.com>
Co-committed-by: MaranBr <maranbr@outlook.com>
pull/2833/head
MaranBr 2 months ago
committed by crueter
parent
commit
cd4bcb91cc
No known key found for this signature in database GPG Key ID: 425ACD2D4830EBC6
  1. 2
      src/video_core/shader_environment.cpp
  2. 6
      src/video_core/texture_cache/image_info.cpp
  3. 9
      src/video_core/texture_cache/image_view_info.cpp

2
src/video_core/shader_environment.cpp

@ -59,7 +59,7 @@ static Shader::TextureType ConvertTextureType(const Tegra::Texture::TICEntry& en
case Tegra::Texture::TextureType::TextureCubeArray: case Tegra::Texture::TextureType::TextureCubeArray:
return Shader::TextureType::ColorArrayCube; return Shader::TextureType::ColorArrayCube;
default: default:
UNIMPLEMENTED();
LOG_ERROR(Shader, "Invalid texture_type={}, falling back to texture_type={}", static_cast<int>(entry.texture_type.Value()), Shader::TextureType::Color2D);
return Shader::TextureType::Color2D; return Shader::TextureType::Color2D;
} }
} }

6
src/video_core/texture_cache/image_info.cpp

@ -51,10 +51,8 @@ ImageInfo::ImageInfo(const TICEntry& config) noexcept {
config.texture_type != TextureType::Texture2DNoMipmap) { config.texture_type != TextureType::Texture2DNoMipmap) {
ASSERT(!config.IsPitchLinear()); ASSERT(!config.IsPitchLinear());
} }
//Normalize so that the 1D that actually uses layers is treated as 1DArray
TextureType tex_type = config.texture_type; TextureType tex_type = config.texture_type;
if (tex_type == TextureType::Texture1D &&
(config.Depth() > 1 || config.BaseLayer() != 0)) {
if (tex_type == TextureType::Texture1D && (config.Depth() > 1 || config.BaseLayer() != 0)) {
tex_type = TextureType::Texture1DArray; tex_type = TextureType::Texture1DArray;
} }
switch (tex_type) { switch (tex_type) {
@ -113,7 +111,7 @@ ImageInfo::ImageInfo(const TICEntry& config) noexcept {
resources.layers = 1; resources.layers = 1;
break; break;
default: default:
ASSERT_MSG(false, "Invalid texture_type={}", static_cast<int>(config.texture_type.Value()));
ASSERT_MSG(false, "Invalid texture_type={}", static_cast<int>(tex_type));
break; break;
} }
if (num_samples > 1) { if (num_samples > 1) {

9
src/video_core/texture_cache/image_view_info.cpp

@ -41,9 +41,7 @@ ImageViewInfo::ImageViewInfo(const TICEntry& config, s32 base_layer) noexcept
}; };
range.extent.levels = config.res_max_mip_level - config.res_min_mip_level + 1; range.extent.levels = config.res_max_mip_level - config.res_min_mip_level + 1;
TextureType tex_type = config.texture_type; TextureType tex_type = config.texture_type;
//normalize 1D texture with many layers
if (tex_type == TextureType::Texture1D &&
(config.Depth() > 1 || base_layer != 0)) {
if (tex_type == TextureType::Texture1D && (config.Depth() > 1 || base_layer != 0)) {
tex_type = TextureType::Texture1DArray; tex_type = TextureType::Texture1DArray;
} }
switch (tex_type) { switch (tex_type) {
@ -74,18 +72,15 @@ ImageViewInfo::ImageViewInfo(const TICEntry& config, s32 base_layer) noexcept
type = ImageViewType::Cube; type = ImageViewType::Cube;
range.extent.layers = 6; range.extent.layers = 6;
break; break;
case TextureType::TextureCubeArray: case TextureType::TextureCubeArray:
type = ImageViewType::CubeArray; type = ImageViewType::CubeArray;
range.extent.layers = config.Depth() * 6; range.extent.layers = config.Depth() * 6;
break; break;
case TextureType::Texture1DBuffer: case TextureType::Texture1DBuffer:
type = ImageViewType::Buffer; type = ImageViewType::Buffer;
break; break;
default: default:
ASSERT_MSG(false, "Invalid texture_type={}", static_cast<int>(config.texture_type.Value()));
ASSERT_MSG(false, "Invalid texture_type={}", static_cast<int>(tex_type));
break; break;
} }
} }

Loading…
Cancel
Save