microsoft/compiler: Fix sampler/texture array emission

Those need to be declared as sampler/SRV arrays, as we do for UAVs and
CBVs.

Signed-off-by: Boris Brezillon <boris.brezillon@collabora.com>
Reviewed-by: Jesse Natalie <jenatali@microsoft.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/13993>
This commit is contained in:
Boris Brezillon
2021-12-01 09:13:26 +01:00
committed by Marge Bot
parent 54c32aeba6
commit 678b94c2d8

View File

@@ -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)