Mesa (main): microsoft/compiler: Add a getter for a validator version from DXIL.dll
GitLab Mirror
gitlab-mirror at kemper.freedesktop.org
Sat Jul 23 15:39:15 UTC 2022
Module: Mesa
Branch: main
Commit: 8fcd506178fd40611f8f91d42930135fd7a8e3e0
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=8fcd506178fd40611f8f91d42930135fd7a8e3e0
Author: Jesse Natalie <jenatali at microsoft.com>
Date: Sun Jul 17 11:08:04 2022 -0700
microsoft/compiler: Add a getter for a validator version from DXIL.dll
Reviewed-by: Erik Faye-Lund <erik.faye-lund at collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17603>
---
src/microsoft/compiler/dxil_validator.cpp | 28 ++++++++++++++++++++++++++++
src/microsoft/compiler/dxil_validator.h | 3 +++
2 files changed, 31 insertions(+)
diff --git a/src/microsoft/compiler/dxil_validator.cpp b/src/microsoft/compiler/dxil_validator.cpp
index 7a1f60e2a19..bb01af57fd7 100644
--- a/src/microsoft/compiler/dxil_validator.cpp
+++ b/src/microsoft/compiler/dxil_validator.cpp
@@ -22,6 +22,8 @@ struct dxil_validator {
IDxcValidator *dxc_validator;
IDxcLibrary *dxc_library;
IDxcCompiler *dxc_compiler;
+
+ enum dxil_validator_version version;
};
extern "C" {
@@ -84,6 +86,24 @@ create_dxc_validator(HMODULE dxil_mod)
return dxc_validator;
}
+static enum dxil_validator_version
+get_validator_version(IDxcValidator *val)
+{
+ ComPtr<IDxcVersionInfo> version_info;
+ if (FAILED(val->QueryInterface(version_info.ReleaseAndGetAddressOf())))
+ return NO_DXIL_VALIDATION;
+
+ UINT32 major, minor;
+ if (FAILED(version_info->GetVersion(&major, &minor)))
+ return NO_DXIL_VALIDATION;
+
+ if (major == 1)
+ return (enum dxil_validator_version)(DXIL_VALIDATOR_1_0 + MIN2(minor, 7));
+ if (major > 1)
+ return DXIL_VALIDATOR_1_7;
+ return NO_DXIL_VALIDATION;
+}
+
struct dxil_validator *
dxil_create_validator(const void *ctx)
{
@@ -107,6 +127,8 @@ dxil_create_validator(const void *ctx)
if (!val->dxc_validator)
goto fail;
+ val->version = get_validator_version(val->dxc_validator);
+
/* Try to load dxcompiler.dll. This is just used for diagnostics, and
* will fail on most end-users install. So we do not error out if this
* fails.
@@ -272,3 +294,9 @@ dxil_disasm_module(struct dxil_validator *val, void *data, size_t size)
str[blob_utf8->GetBufferSize() - 1] = 0;
return ralloc_strdup(val, str);
}
+
+enum dxil_validator_version
+dxil_get_validator_version(struct dxil_validator *val)
+{
+ return val->version;
+}
diff --git a/src/microsoft/compiler/dxil_validator.h b/src/microsoft/compiler/dxil_validator.h
index 827aec7396d..8a7db43b212 100644
--- a/src/microsoft/compiler/dxil_validator.h
+++ b/src/microsoft/compiler/dxil_validator.h
@@ -57,6 +57,9 @@ dxil_validate_module(struct dxil_validator *val, void *data,
char *
dxil_disasm_module(struct dxil_validator *val, void *data, size_t size);
+enum dxil_validator_version
+dxil_get_validator_version(struct dxil_validator *val);
+
#ifdef __cplusplus
}
#endif
More information about the mesa-commit
mailing list