From 88ff88bb7d01857ed9687e11608d151cd28cc56c Mon Sep 17 00:00:00 2001 From: Jesse Natalie Date: Fri, 9 Apr 2021 13:43:25 -0700 Subject: [PATCH] microsoft/compiler: Support raw SRVs/UAVs through dxil_module_get_res_type Switch the OpenCL "globals" array to use that helper Reviewed-by: Enrico Galli Part-of: --- src/microsoft/compiler/dxil_module.c | 8 ++++++++ src/microsoft/compiler/nir_to_dxil.c | 8 ++------ 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/src/microsoft/compiler/dxil_module.c b/src/microsoft/compiler/dxil_module.c index 7f772c96f85..86cd9465d46 100644 --- a/src/microsoft/compiler/dxil_module.c +++ b/src/microsoft/compiler/dxil_module.c @@ -830,6 +830,14 @@ dxil_module_get_res_type(struct dxil_module *m, enum dxil_resource_kind kind, return dxil_module_get_struct_type(m, class_name, &vec_type, 1); } + case DXIL_RESOURCE_KIND_RAW_BUFFER: + { + const struct dxil_type *component_type = dxil_module_get_int_type(m, 32); + char class_name[64] = { 0 }; + snprintf(class_name, 64, "struct.%sByteAddressBuffer", readwrite ? "RW" : ""); + return dxil_module_get_struct_type(m, class_name, &component_type, 1); + } + default: unreachable("resource type not supported"); } diff --git a/src/microsoft/compiler/nir_to_dxil.c b/src/microsoft/compiler/nir_to_dxil.c index e8b450648a2..b21c13a4856 100644 --- a/src/microsoft/compiler/nir_to_dxil.c +++ b/src/microsoft/compiler/nir_to_dxil.c @@ -795,12 +795,8 @@ emit_globals(struct ntd_context *ctx, nir_shader *s, unsigned size) if (!size) return true; - const struct dxil_type *type = dxil_module_get_int_type(&ctx->mod, 32); - if (!type) - return false; - - const struct dxil_type *struct_type = - dxil_module_get_struct_type(&ctx->mod, NULL, &type, 1); + const struct dxil_type *struct_type = dxil_module_get_res_type(&ctx->mod, + DXIL_RESOURCE_KIND_RAW_BUFFER, DXIL_COMP_TYPE_INVALID, true /* readwrite */); if (!struct_type) return false;