mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-09 04:38:03 +02:00
zink: use unified pushconst layour for passthorugh tcs
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/19163>
This commit is contained in:
parent
ec4ac380f1
commit
0f070923e8
1 changed files with 7 additions and 17 deletions
|
|
@ -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);
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue