From a4dba67e0c43f84c4650a38d16af04cec568802f Mon Sep 17 00:00:00 2001 From: Lander Gallastegi Date: Thu, 14 Nov 2024 19:54:43 +0100 Subject: [PATCH] Specialize normalization component number --- src/shader_recompiler/specialization.h | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/shader_recompiler/specialization.h b/src/shader_recompiler/specialization.h index e64df5766..9863b23a0 100644 --- a/src/shader_recompiler/specialization.h +++ b/src/shader_recompiler/specialization.h @@ -26,7 +26,7 @@ struct TextureBufferSpecialization { }; struct ImageSpecialization { - enum class Normalization : u8 { + enum class NormalizationSign : u8 { None, Signed, Unsigned, @@ -34,7 +34,8 @@ struct ImageSpecialization { AmdGpu::ImageType type = AmdGpu::ImageType::Color2D; bool is_integer = false; - Normalization normalization = Normalization::None; + NormalizationSign normalization = NormalizationSign::None; + u32 normalized_components = 0; auto operator<=>(const ImageSpecialization&) const = default; }; @@ -88,8 +89,9 @@ struct StageSpecialization { if (sharp.NeedsNormalizationPatch()) { spec.normalization = sharp.GetNumberFmt() == AmdGpu::NumberFormat::Snorm - ? ImageSpecialization::Normalization::Signed - : ImageSpecialization::Normalization::Unsigned; + ? ImageSpecialization::NormalizationSign::Signed + : ImageSpecialization::NormalizationSign::Unsigned; + spec.normalized_components = AmdGpu::NumComponents(sharp.GetDataFmt()); } }); ForEachSharp(binding, fmasks, info->fmasks,