zink: create entrypoints for descriptor variables with spirv 1.5
Reviewed-by: Dave Airlie <airlied@redhat.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/10512>
This commit is contained in:
parent
3bf52471cc
commit
1ff40cedf0
|
@ -397,6 +397,10 @@ create_shared_block(struct ntv_context *ctx, unsigned shared_size)
|
|||
SpvStorageClassWorkgroup,
|
||||
array);
|
||||
ctx->shared_block_var = spirv_builder_emit_var(&ctx->builder, ptr_type, SpvStorageClassWorkgroup);
|
||||
if (ctx->spirv_15) {
|
||||
assert(ctx->num_entry_ifaces < ARRAY_SIZE(ctx->entry_ifaces));
|
||||
ctx->entry_ifaces[ctx->num_entry_ifaces++] = ctx->shared_block_var;
|
||||
}
|
||||
}
|
||||
|
||||
#define HANDLE_EMIT_BUILTIN(SLOT, BUILTIN) \
|
||||
|
@ -419,9 +423,14 @@ input_var_init(struct ntv_context *ctx, struct nir_variable *var)
|
|||
if (var->name)
|
||||
spirv_builder_emit_name(&ctx->builder, var_id, var->name);
|
||||
|
||||
if (var->data.mode == nir_var_mem_push_const)
|
||||
if (var->data.mode == nir_var_mem_push_const) {
|
||||
ctx->push_const_var = var_id;
|
||||
|
||||
if (ctx->spirv_15) {
|
||||
assert(ctx->num_entry_ifaces < ARRAY_SIZE(ctx->entry_ifaces));
|
||||
ctx->entry_ifaces[ctx->num_entry_ifaces++] = var_id;
|
||||
}
|
||||
}
|
||||
return var_id;
|
||||
}
|
||||
|
||||
|
@ -821,6 +830,10 @@ emit_image(struct ntv_context *ctx, struct nir_variable *var)
|
|||
_mesa_hash_table_insert(ctx->image_vars, key, var);
|
||||
emit_access_decorations(ctx, var, var_id);
|
||||
}
|
||||
if (ctx->spirv_15) {
|
||||
assert(ctx->num_entry_ifaces < ARRAY_SIZE(ctx->entry_ifaces));
|
||||
ctx->entry_ifaces[ctx->num_entry_ifaces++] = var_id;
|
||||
}
|
||||
|
||||
spirv_builder_emit_descriptor_set(&ctx->builder, var_id, var->data.descriptor_set);
|
||||
spirv_builder_emit_binding(&ctx->builder, var_id, var->data.binding);
|
||||
|
@ -909,6 +922,10 @@ emit_bo(struct ntv_context *ctx, struct nir_variable *var)
|
|||
assert(!ctx->ubos[var->data.driver_location]);
|
||||
ctx->ubos[var->data.driver_location] = var_id;
|
||||
}
|
||||
if (ctx->spirv_15) {
|
||||
assert(ctx->num_entry_ifaces < ARRAY_SIZE(ctx->entry_ifaces));
|
||||
ctx->entry_ifaces[ctx->num_entry_ifaces++] = var_id;
|
||||
}
|
||||
|
||||
spirv_builder_emit_descriptor_set(&ctx->builder, var_id, var->data.descriptor_set);
|
||||
spirv_builder_emit_binding(&ctx->builder, var_id, var->data.binding);
|
||||
|
|
Loading…
Reference in New Issue