Module: Mesa Branch: main Commit: cb21534a7c1270adace37a0d9703f72cd0c14c4a URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=cb21534a7c1270adace37a0d9703f72cd0c14c4a
Author: Jesse Natalie <[email protected]> Date: Thu Aug 11 13:40:49 2022 -0700 microsoft/compiler: Support SM6.7 Reviewed-by: Giancarlo Devich <[email protected]> Reviewed-by: Boris Brezillon <[email protected]> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/18022> --- src/microsoft/compiler/nir_to_dxil.c | 10 +++++++++- src/microsoft/compiler/nir_to_dxil.h | 1 + 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/src/microsoft/compiler/nir_to_dxil.c b/src/microsoft/compiler/nir_to_dxil.c index 611b602a3c7..53e917841d5 100644 --- a/src/microsoft/compiler/nir_to_dxil.c +++ b/src/microsoft/compiler/nir_to_dxil.c @@ -1633,6 +1633,14 @@ get_module_flags(struct ntd_context *ctx) if (ctx->opts->disable_math_refactoring) flags |= (1 << 1); + /* Work around https://github.com/microsoft/DirectXShaderCompiler/issues/4616 + * When targeting SM6.7 and with at least one UAV, if no other flags are present, + * set the resources-may-not-alias flag, or else the DXIL validator may end up + * with uninitialized memory which will fail validation, due to missing that flag. + */ + if (flags == 0 && ctx->mod.minor_version >= 7 && ctx->num_uavs > 0) + flags |= (1ull << 33); + return flags; } @@ -5928,7 +5936,7 @@ type_size_vec4(const struct glsl_type *type, bool bindless) static const unsigned dxil_validator_min_capable_version = DXIL_VALIDATOR_1_4; static const unsigned dxil_validator_max_capable_version = DXIL_VALIDATOR_1_7; static const unsigned dxil_min_shader_model = SHADER_MODEL_6_1; -static const unsigned dxil_max_shader_model = SHADER_MODEL_6_6; +static const unsigned dxil_max_shader_model = SHADER_MODEL_6_7; bool nir_to_dxil(struct nir_shader *s, const struct nir_to_dxil_options *opts, diff --git a/src/microsoft/compiler/nir_to_dxil.h b/src/microsoft/compiler/nir_to_dxil.h index 74842ab47c8..c431906138a 100644 --- a/src/microsoft/compiler/nir_to_dxil.h +++ b/src/microsoft/compiler/nir_to_dxil.h @@ -89,6 +89,7 @@ enum dxil_shader_model { SHADER_MODEL_6_4, SHADER_MODEL_6_5, SHADER_MODEL_6_6, + SHADER_MODEL_6_7, }; struct nir_to_dxil_options {
