dzn: Skip dxil validator and some Windows-only debug flags for Linux
Reviewed-by: Boris Brezillon <boris.brezillon@collabora.com> Reviewed-by: Bill Kristiansen <billkris@microsoft.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17340>
This commit is contained in:
@@ -46,8 +46,10 @@
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
#ifdef _WIN32
|
||||
#include <windows.h>
|
||||
#include <shlobj.h>
|
||||
#endif
|
||||
|
||||
#include <directx/d3d12sdklayers.h>
|
||||
|
||||
@@ -146,8 +148,10 @@ dzn_instance_destroy(struct dzn_instance *instance, const VkAllocationCallbacks
|
||||
if (!instance)
|
||||
return;
|
||||
|
||||
#ifdef _WIN32
|
||||
if (instance->dxil_validator)
|
||||
dxil_destroy_validator(instance->dxil_validator);
|
||||
#endif
|
||||
|
||||
list_for_each_entry_safe(struct dzn_physical_device, pdev,
|
||||
&instance->physical_devices, link) {
|
||||
@@ -188,6 +192,7 @@ dzn_instance_create(const VkInstanceCreateInfo *pCreateInfo,
|
||||
instance->debug_flags =
|
||||
parse_debug_string(getenv("DZN_DEBUG"), dzn_debug_options);
|
||||
|
||||
#ifdef _WIN32
|
||||
if (instance->debug_flags & DZN_DEBUG_DEBUGGER) {
|
||||
/* wait for debugger to attach... */
|
||||
while (!IsDebuggerPresent()) {
|
||||
@@ -204,11 +209,17 @@ dzn_instance_create(const VkInstanceCreateInfo *pCreateInfo,
|
||||
freopen(path, "w", stdout);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
bool missing_validator = false;
|
||||
#ifdef _WIN32
|
||||
instance->dxil_validator = dxil_create_validator(NULL);
|
||||
missing_validator = !instance->dxil_validator;
|
||||
#endif
|
||||
|
||||
instance->d3d12.serialize_root_sig = d3d12_get_serialize_root_sig();
|
||||
|
||||
if (!instance->dxil_validator ||
|
||||
if (missing_validator ||
|
||||
!instance->d3d12.serialize_root_sig) {
|
||||
dzn_instance_destroy(instance, pAllocator);
|
||||
return vk_error(NULL, VK_ERROR_INITIALIZATION_FAILED);
|
||||
|
@@ -48,6 +48,7 @@ dzn_meta_compile_shader(struct dzn_device *device, nir_shader *nir,
|
||||
ASSERTED bool ret = nir_to_dxil(nir, &opts, &dxil_blob);
|
||||
assert(ret);
|
||||
|
||||
#ifdef _WIN32
|
||||
char *err = NULL;
|
||||
bool res = dxil_validate_module(instance->dxil_validator,
|
||||
dxil_blob.data,
|
||||
@@ -79,6 +80,7 @@ dzn_meta_compile_shader(struct dzn_device *device, nir_shader *nir,
|
||||
ralloc_free(err);
|
||||
}
|
||||
assert(res);
|
||||
#endif
|
||||
|
||||
void *data;
|
||||
size_t size;
|
||||
|
@@ -367,6 +367,7 @@ dzn_pipeline_compile_shader(struct dzn_device *device,
|
||||
if (result != VK_SUCCESS)
|
||||
return result;
|
||||
|
||||
#ifdef _WIN32
|
||||
char *err;
|
||||
bool res = dxil_validate_module(instance->dxil_validator,
|
||||
(void *)slot->pShaderBytecode,
|
||||
@@ -397,6 +398,7 @@ dzn_pipeline_compile_shader(struct dzn_device *device,
|
||||
}
|
||||
return vk_error(device, VK_ERROR_OUT_OF_HOST_MEMORY);
|
||||
}
|
||||
#endif
|
||||
|
||||
return VK_SUCCESS;
|
||||
}
|
||||
|
Reference in New Issue
Block a user