Mesa (master): zink: create entrypoints for descriptor variables with spirv 1.5
GitLab Mirror
gitlab-mirror at kemper.freedesktop.org
Thu Apr 29 03:42:14 UTC 2021
Module: Mesa
Branch: master
Commit: 1ff40cedf01dfab6e363f78a674d30cadf60766a
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=1ff40cedf01dfab6e363f78a674d30cadf60766a
Author: Mike Blumenkrantz <michael.blumenkrantz at gmail.com>
Date: Tue Mar 23 10:51:38 2021 -0400
zink: create entrypoints for descriptor variables with spirv 1.5
Reviewed-by: Dave Airlie <airlied at redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/10512>
---
src/gallium/drivers/zink/nir_to_spirv/nir_to_spirv.c | 19 ++++++++++++++++++-
1 file changed, 18 insertions(+), 1 deletion(-)
diff --git a/src/gallium/drivers/zink/nir_to_spirv/nir_to_spirv.c b/src/gallium/drivers/zink/nir_to_spirv/nir_to_spirv.c
index ffe13dc4b5d..4479cf053c6 100644
--- a/src/gallium/drivers/zink/nir_to_spirv/nir_to_spirv.c
+++ b/src/gallium/drivers/zink/nir_to_spirv/nir_to_spirv.c
@@ -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);
More information about the mesa-commit
mailing list