From 835f5faf145df1614afc2e7486b6bfaecd66bca6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marek=20Ol=C5=A1=C3=A1k?= Date: Fri, 20 Mar 2026 16:31:33 -0400 Subject: [PATCH] nir: add back color0/1 system values and VARYING_SLOT_PARAM_GEN_AMD MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit It turns out we need the color sysvals recorded in system_values_read, and PARAM_GEN is for point smoothing. Acked-by: Pierre-Eric Reviewed-by: Timur Kristóf Part-of: --- src/compiler/nir/nir.c | 8 ++++++++ src/compiler/nir/nir_gather_info.c | 2 ++ src/compiler/shader_enums.c | 2 ++ src/compiler/shader_enums.h | 4 ++++ 4 files changed, 16 insertions(+) diff --git a/src/compiler/nir/nir.c b/src/compiler/nir/nir.c index 2de5614bc18..a77820d115d 100644 --- a/src/compiler/nir/nir.c +++ b/src/compiler/nir/nir.c @@ -2583,6 +2583,10 @@ nir_intrinsic_from_system_value(gl_system_value val) return nir_intrinsic_load_warp_id_arm; case SYSTEM_VALUE_WARP_MAX_ID_ARM: return nir_intrinsic_load_warp_max_id_arm; + case SYSTEM_VALUE_COLOR0_AMD: + return nir_intrinsic_load_color0_amd; + case SYSTEM_VALUE_COLOR1_AMD: + return nir_intrinsic_load_color1_amd; default: return nir_num_intrinsics; } @@ -2769,6 +2773,10 @@ nir_system_value_from_intrinsic(nir_intrinsic_op intrin) return SYSTEM_VALUE_WARP_ID_ARM; case nir_intrinsic_load_warp_max_id_arm: return SYSTEM_VALUE_WARP_MAX_ID_ARM; + case nir_intrinsic_load_color0_amd: + return SYSTEM_VALUE_COLOR0_AMD; + case nir_intrinsic_load_color1_amd: + return SYSTEM_VALUE_COLOR1_AMD; default: return SYSTEM_VALUE_MAX; } diff --git a/src/compiler/nir/nir_gather_info.c b/src/compiler/nir/nir_gather_info.c index 862a4d198e0..f1f2b1cf0fb 100644 --- a/src/compiler/nir/nir_gather_info.c +++ b/src/compiler/nir/nir_gather_info.c @@ -781,6 +781,8 @@ gather_intrinsic_info(nir_intrinsic_instr *instr, nir_shader *shader) case nir_intrinsic_load_tcs_header_ir3: case nir_intrinsic_load_ray_triangle_vertex_positions: case nir_intrinsic_load_layer_id: + case nir_intrinsic_load_color0_amd: + case nir_intrinsic_load_color1_amd: BITSET_SET(shader->info.system_values_read, nir_system_value_from_intrinsic(instr->intrinsic)); break; diff --git a/src/compiler/shader_enums.c b/src/compiler/shader_enums.c index 1d5a2bc2438..bf712880338 100644 --- a/src/compiler/shader_enums.c +++ b/src/compiler/shader_enums.c @@ -459,6 +459,8 @@ gl_system_value_name(gl_system_value sysval) ENUM(SYSTEM_VALUE_CORE_MAX_ID_ARM), ENUM(SYSTEM_VALUE_WARP_ID_ARM), ENUM(SYSTEM_VALUE_WARP_MAX_ID_ARM), + ENUM(SYSTEM_VALUE_COLOR0_AMD), + ENUM(SYSTEM_VALUE_COLOR1_AMD), }; STATIC_ASSERT(ARRAY_SIZE(names) == SYSTEM_VALUE_MAX); return NAME(sysval); diff --git a/src/compiler/shader_enums.h b/src/compiler/shader_enums.h index a45fda6458a..8b42304a029 100644 --- a/src/compiler/shader_enums.h +++ b/src/compiler/shader_enums.h @@ -376,6 +376,7 @@ typedef enum VARYING_SLOT_GS_HEADER_IR3 = VARYING_SLOT_BOUNDING_BOX0, /* VS/TES output and GS input */ VARYING_SLOT_GS_VERTEX_FLAGS_IR3 = VARYING_SLOT_BOUNDING_BOX1, /* GS output */ + VARYING_SLOT_PARAM_GEN_AMD = VARYING_SLOT_BOUNDING_BOX0, /* Only appears as FS input. */ VARYING_SLOT_VAR0 = 32, /* First generic varying slot */ /* the remaining are simply for the benefit of gl_varying_slot_name() @@ -969,6 +970,9 @@ typedef enum SYSTEM_VALUE_WARP_ID_ARM, SYSTEM_VALUE_WARP_MAX_ID_ARM, + SYSTEM_VALUE_COLOR0_AMD, + SYSTEM_VALUE_COLOR1_AMD, + SYSTEM_VALUE_MAX /**< Number of values */ } gl_system_value;