From 0de28a9fd0a0b4bafc6f477931fbf15e93c7b7a6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marek=20Ol=C5=A1=C3=A1k?= Date: Tue, 24 Dec 2024 13:27:00 -0500 Subject: [PATCH] nir: use IO intrinsics in nir_lower_bitmap Reviewed-by: Alyssa Rosenzweig Part-of: --- src/compiler/nir/nir_lower_bitmap.c | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/src/compiler/nir/nir_lower_bitmap.c b/src/compiler/nir/nir_lower_bitmap.c index 3e6a7832d28..0f65b848786 100644 --- a/src/compiler/nir/nir_lower_bitmap.c +++ b/src/compiler/nir/nir_lower_bitmap.c @@ -48,8 +48,6 @@ * * If L8_UNORM, options->swizzle_xxxx is true. Otherwise we can just use * the .w comp. - * - * Run before nir_lower_io. */ static void @@ -60,8 +58,17 @@ lower_bitmap(nir_shader *shader, nir_builder *b, nir_tex_instr *tex; nir_def *cond; - texcoord = nir_load_var(b, nir_get_variable_with_location(shader, nir_var_shader_in, - VARYING_SLOT_TEX0, glsl_vec4_type())); + if (shader->info.io_lowered) { + nir_def *baryc = + nir_load_barycentric_pixel(b, 32, .interp_mode = INTERP_MODE_SMOOTH); + texcoord = nir_load_interpolated_input(b, 4, 32, baryc, nir_imm_int(b, 0), + .io_semantics.location = VARYING_SLOT_TEX0); + } else { + nir_variable *var = + nir_get_variable_with_location(shader, nir_var_shader_in, + VARYING_SLOT_TEX0, glsl_vec4_type()); + texcoord = nir_load_var(b, var); + } const struct glsl_type *sampler2D = glsl_sampler_type(GLSL_SAMPLER_DIM_2D, false, false, GLSL_TYPE_FLOAT);