dzn: Add a debug option to enable experimental shader models
This allows us to run with unsigned shaders Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/27160>
This commit is contained in:
@@ -186,6 +186,7 @@ static const struct debug_control dzn_debug_options[] = {
|
|||||||
{ "redirects", DZN_DEBUG_REDIRECTS },
|
{ "redirects", DZN_DEBUG_REDIRECTS },
|
||||||
{ "bindless", DZN_DEBUG_BINDLESS },
|
{ "bindless", DZN_DEBUG_BINDLESS },
|
||||||
{ "nobindless", DZN_DEBUG_NO_BINDLESS },
|
{ "nobindless", DZN_DEBUG_NO_BINDLESS },
|
||||||
|
{ "experimental", DZN_DEBUG_EXPERIMENTAL },
|
||||||
{ NULL, 0 }
|
{ NULL, 0 }
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -1806,8 +1807,10 @@ dzn_instance_create(const VkInstanceCreateInfo *pCreateInfo,
|
|||||||
|
|
||||||
bool missing_validator = false;
|
bool missing_validator = false;
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
instance->dxil_validator = dxil_create_validator(NULL);
|
if ((instance->debug_flags & DZN_DEBUG_EXPERIMENTAL) == 0) {
|
||||||
missing_validator = !instance->dxil_validator;
|
instance->dxil_validator = dxil_create_validator(NULL);
|
||||||
|
missing_validator = !instance->dxil_validator;
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if (missing_validator) {
|
if (missing_validator) {
|
||||||
|
@@ -79,7 +79,7 @@ dzn_meta_compile_shader(struct dzn_device *device, nir_shader *nir,
|
|||||||
|
|
||||||
if ((instance->debug_flags & DZN_DEBUG_DXIL) &&
|
if ((instance->debug_flags & DZN_DEBUG_DXIL) &&
|
||||||
(instance->debug_flags & DZN_DEBUG_INTERNAL) &&
|
(instance->debug_flags & DZN_DEBUG_INTERNAL) &&
|
||||||
!res) {
|
!res && !(instance->debug_flags & DZN_DEBUG_EXPERIMENTAL)) {
|
||||||
fprintf(stderr,
|
fprintf(stderr,
|
||||||
"== VALIDATION ERROR =============================================\n"
|
"== VALIDATION ERROR =============================================\n"
|
||||||
"%s\n"
|
"%s\n"
|
||||||
@@ -87,7 +87,7 @@ dzn_meta_compile_shader(struct dzn_device *device, nir_shader *nir,
|
|||||||
err ? err : "unknown");
|
err ? err : "unknown");
|
||||||
ralloc_free(err);
|
ralloc_free(err);
|
||||||
}
|
}
|
||||||
assert(res);
|
assert(res || (instance->debug_flags & DZN_DEBUG_EXPERIMENTAL));
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
void *data;
|
void *data;
|
||||||
|
@@ -450,7 +450,7 @@ dzn_pipeline_compile_shader(struct dzn_device *device,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!res) {
|
if (!res && !(instance->debug_flags & DZN_DEBUG_EXPERIMENTAL)) {
|
||||||
if (err) {
|
if (err) {
|
||||||
mesa_loge(
|
mesa_loge(
|
||||||
"== VALIDATION ERROR =============================================\n"
|
"== VALIDATION ERROR =============================================\n"
|
||||||
|
@@ -1246,6 +1246,7 @@ enum dzn_debug_flags {
|
|||||||
DZN_DEBUG_REDIRECTS = 1 << 9,
|
DZN_DEBUG_REDIRECTS = 1 << 9,
|
||||||
DZN_DEBUG_BINDLESS = 1 << 10,
|
DZN_DEBUG_BINDLESS = 1 << 10,
|
||||||
DZN_DEBUG_NO_BINDLESS = 1 << 11,
|
DZN_DEBUG_NO_BINDLESS = 1 << 11,
|
||||||
|
DZN_DEBUG_EXPERIMENTAL = 1 << 12,
|
||||||
};
|
};
|
||||||
|
|
||||||
struct dzn_instance {
|
struct dzn_instance {
|
||||||
|
Reference in New Issue
Block a user