diff --git a/src/microsoft/compiler/nir_to_dxil.c b/src/microsoft/compiler/nir_to_dxil.c index c77f4dbb98c..9c1990e6930 100644 --- a/src/microsoft/compiler/nir_to_dxil.c +++ b/src/microsoft/compiler/nir_to_dxil.c @@ -934,7 +934,10 @@ emit_srv(struct ntd_context *ctx, nir_variable *var, unsigned count) res_type = DXIL_RES_SRV_TYPED; } const struct dxil_type *res_type_as_type = dxil_module_get_res_type(&ctx->mod, res_kind, comp_type, false /* readwrite */); - res_type_as_type = dxil_module_get_array_type(&ctx->mod, res_type_as_type, count); + + if (count > 1) + res_type_as_type = dxil_module_get_array_type(&ctx->mod, res_type_as_type, count); + const struct dxil_mdnode *srv_meta = emit_srv_metadata(&ctx->mod, res_type_as_type, var->name, &layout, comp_type, res_kind); @@ -1201,7 +1204,10 @@ emit_sampler(struct ntd_context *ctx, nir_variable *var, unsigned count) resource_array_layout layout = {id, binding, count, var->data.descriptor_set}; const struct dxil_type *int32_type = dxil_module_get_int_type(&ctx->mod, 32); const struct dxil_type *sampler_type = dxil_module_get_struct_type(&ctx->mod, "struct.SamplerState", &int32_type, 1); - sampler_type = dxil_module_get_array_type(&ctx->mod, sampler_type, count); + + if (count > 1) + sampler_type = dxil_module_get_array_type(&ctx->mod, sampler_type, count); + const struct dxil_mdnode *sampler_meta = emit_sampler_metadata(&ctx->mod, sampler_type, var, &layout); if (!sampler_meta)