vulkan: avoid needless constant-folding

While we're at it, also switch to the nir_f{add,mul}_imm helpers.

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/23855>
This commit is contained in:
Erik Faye-Lund
2023-06-16 12:51:36 +02:00
committed by Marge Bot
parent 195399f857
commit c69dc01796
+13 -12
View File
@@ -38,12 +38,13 @@ y_range(nir_builder *b,
case VK_SAMPLER_YCBCR_RANGE_ITU_FULL:
return y_channel;
case VK_SAMPLER_YCBCR_RANGE_ITU_NARROW:
return nir_fmul(b,
nir_fadd(b,
nir_fmul(b, y_channel,
nir_imm_float(b, pow(2, bpc) - 1)),
nir_imm_float(b, -16.0f * pow(2, bpc - 8))),
nir_frcp(b, nir_imm_float(b, 219.0f * pow(2, bpc - 8))));
return nir_fmul_imm(b,
nir_fadd_imm(b,
nir_fmul_imm(b, y_channel,
pow(2, bpc) - 1),
-16.0f * pow(2, bpc - 8)),
1.0f / (219.0f * pow(2, bpc - 8)));
default:
unreachable("missing Ycbcr range");
return NULL;
@@ -61,12 +62,12 @@ chroma_range(nir_builder *b,
return nir_fadd(b, chroma_channel,
nir_imm_float(b, -pow(2, bpc - 1) / (pow(2, bpc) - 1.0f)));
case VK_SAMPLER_YCBCR_RANGE_ITU_NARROW:
return nir_fmul(b,
nir_fadd(b,
nir_fmul(b, chroma_channel,
nir_imm_float(b, pow(2, bpc) - 1)),
nir_imm_float(b, -128.0f * pow(2, bpc - 8))),
nir_frcp(b, nir_imm_float(b, 224.0f * pow(2, bpc - 8))));
return nir_fmul_imm(b,
nir_fadd_imm(b,
nir_fmul_imm(b, chroma_channel,
pow(2, bpc) - 1),
-128.0f * pow(2, bpc - 8)),
1.0f / (224.0f * pow(2, bpc - 8)));
default:
unreachable("missing Ycbcr range");
return NULL;