zink: create a struct for tracking push constant layout
it'll be helpful to update this as we add more values here so we can avoid having to update all the users Reviewed-by: Dave Airlie <airlied@redhat.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8971>
This commit is contained in:
parent
c28bc38f94
commit
00642ab6ed
|
@ -657,8 +657,12 @@ zink_shader_tcs_create(struct zink_context *ctx, struct zink_shader *vs)
|
|||
glsl_struct_type(fields, 2, "struct", false), "pushconst");
|
||||
pushconst->data.location = VARYING_SLOT_VAR0;
|
||||
|
||||
nir_ssa_def *load_inner = nir_load_push_constant(&b, 2, 32, nir_imm_int(&b, 0), .base = 0, .range = 8);
|
||||
nir_ssa_def *load_outer = nir_load_push_constant(&b, 4, 32, nir_imm_int(&b, 8), .base = 8, .range = 16);
|
||||
nir_ssa_def *load_inner = nir_load_push_constant(&b, 2, 32,
|
||||
nir_imm_int(&b, offsetof(struct zink_push_constant, default_inner_level)),
|
||||
.base = offsetof(struct zink_push_constant, default_inner_level), .range = 8);
|
||||
nir_ssa_def *load_outer = nir_load_push_constant(&b, 4, 32,
|
||||
nir_imm_int(&b, offsetof(struct zink_push_constant, default_outer_level)),
|
||||
.base = offsetof(struct zink_push_constant, default_outer_level), .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);
|
||||
|
|
|
@ -40,6 +40,11 @@ struct zink_gfx_pipeline_state;
|
|||
struct hash_table;
|
||||
struct set;
|
||||
|
||||
struct zink_push_constant {
|
||||
float default_inner_level[2];
|
||||
float default_outer_level[4];
|
||||
};
|
||||
|
||||
/* a shader module is used for directly reusing a shader module between programs,
|
||||
* e.g., in the case where we're swapping out only one shader,
|
||||
* allowing us to skip going through shader keys
|
||||
|
|
Loading…
Reference in New Issue