From 0f070923e837405bf1667b90f9c1f08778efb421 Mon Sep 17 00:00:00 2001 From: SoroushIMG Date: Mon, 24 Oct 2022 14:45:12 +0100 Subject: [PATCH] zink: use unified pushconst layour for passthorugh tcs Part-of: --- src/gallium/drivers/zink/zink_compiler.c | 24 +++++++----------------- 1 file changed, 7 insertions(+), 17 deletions(-) diff --git a/src/gallium/drivers/zink/zink_compiler.c b/src/gallium/drivers/zink/zink_compiler.c index 192022e19c3..37f08b7a2af 100644 --- a/src/gallium/drivers/zink/zink_compiler.c +++ b/src/gallium/drivers/zink/zink_compiler.c @@ -3485,24 +3485,14 @@ zink_shader_tcs_create(struct zink_screen *screen, struct zink_shader *vs, unsig gl_TessLevelOuter->data.location = VARYING_SLOT_TESS_LEVEL_OUTER; gl_TessLevelOuter->data.patch = 1; - /* hacks so we can size these right for now */ - struct glsl_struct_field *fields = rzalloc_array(nir, struct glsl_struct_field, 3); - /* just use a single blob for padding here because it's easier */ - fields[0].type = glsl_array_type(glsl_uint_type(), offsetof(struct zink_gfx_push_constant, default_inner_level) / 4, 0); - fields[0].name = ralloc_asprintf(nir, "padding"); - fields[0].offset = 0; - fields[1].type = glsl_array_type(glsl_uint_type(), 2, 0); - fields[1].name = ralloc_asprintf(nir, "gl_TessLevelInner"); - fields[1].offset = offsetof(struct zink_gfx_push_constant, default_inner_level); - fields[2].type = glsl_array_type(glsl_uint_type(), 4, 0); - fields[2].name = ralloc_asprintf(nir, "gl_TessLevelOuter"); - fields[2].offset = offsetof(struct zink_gfx_push_constant, default_outer_level); - nir_variable *pushconst = nir_variable_create(nir, nir_var_mem_push_const, - glsl_struct_type(fields, 3, "struct", false), "pushconst"); - pushconst->data.location = VARYING_SLOT_VAR0; + create_gfx_pushconst(nir); - nir_ssa_def *load_inner = nir_load_push_constant(&b, 2, 32, nir_imm_int(&b, 1), .base = 1, .range = 8); - nir_ssa_def *load_outer = nir_load_push_constant(&b, 4, 32, nir_imm_int(&b, 2), .base = 2, .range = 16); + nir_ssa_def *load_inner = nir_load_push_constant(&b, 2, 32, + nir_imm_int(&b, ZINK_GFX_PUSHCONST_DEFAULT_INNER_LEVEL), + .base = 1, .range = 8); + nir_ssa_def *load_outer = nir_load_push_constant(&b, 4, 32, + nir_imm_int(&b, ZINK_GFX_PUSHCONST_DEFAULT_OUTER_LEVEL), + .base = 2, .range = 16); for (unsigned i = 0; i < 2; i++) { nir_deref_instr *store_idx = nir_build_deref_array_imm(&b, nir_build_deref_var(&b, gl_TessLevelInner), i);