mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-01-05 13:20:10 +01:00
anv: write spirv-nir logs back to the application
Using the existing VK_EXT_debug_report extension. Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com> Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
This commit is contained in:
parent
53a7649e5d
commit
bc62673dce
1 changed files with 35 additions and 0 deletions
|
|
@ -95,6 +95,33 @@ static const uint64_t stage_to_debug[] = {
|
|||
[MESA_SHADER_COMPUTE] = DEBUG_CS,
|
||||
};
|
||||
|
||||
struct anv_spirv_debug_data {
|
||||
struct anv_device *device;
|
||||
const struct anv_shader_module *module;
|
||||
};
|
||||
|
||||
static void anv_spirv_nir_debug(void *private_data,
|
||||
enum nir_spirv_debug_level level,
|
||||
size_t spirv_offset,
|
||||
const char *message)
|
||||
{
|
||||
struct anv_spirv_debug_data *debug_data = private_data;
|
||||
static const VkDebugReportFlagsEXT vk_flags[] = {
|
||||
[NIR_SPIRV_DEBUG_LEVEL_INFO] = VK_DEBUG_REPORT_INFORMATION_BIT_EXT,
|
||||
[NIR_SPIRV_DEBUG_LEVEL_WARNING] = VK_DEBUG_REPORT_WARNING_BIT_EXT,
|
||||
[NIR_SPIRV_DEBUG_LEVEL_ERROR] = VK_DEBUG_REPORT_ERROR_BIT_EXT,
|
||||
};
|
||||
char buffer[256];
|
||||
|
||||
snprintf(buffer, sizeof(buffer), "SPIR-V offset %lu: %s", spirv_offset, message);
|
||||
|
||||
vk_debug_report(&debug_data->device->instance->debug_report_callbacks,
|
||||
vk_flags[level],
|
||||
VK_DEBUG_REPORT_OBJECT_TYPE_SHADER_MODULE_EXT,
|
||||
(uint64_t) (uintptr_t) debug_data->module,
|
||||
0, 0, "anv", buffer);
|
||||
}
|
||||
|
||||
/* Eventually, this will become part of anv_CreateShader. Unfortunately,
|
||||
* we can't do that yet because we don't have the ability to copy nir.
|
||||
*/
|
||||
|
|
@ -134,6 +161,10 @@ anv_shader_compile_to_nir(struct anv_device *device,
|
|||
}
|
||||
}
|
||||
|
||||
struct anv_spirv_debug_data spirv_debug_data = {
|
||||
.device = device,
|
||||
.module = module,
|
||||
};
|
||||
struct spirv_to_nir_options spirv_options = {
|
||||
.lower_workgroup_access_to_offsets = true,
|
||||
.caps = {
|
||||
|
|
@ -183,6 +214,10 @@ anv_shader_compile_to_nir(struct anv_device *device,
|
|||
* with certain code / code generators.
|
||||
*/
|
||||
.shared_addr_format = nir_address_format_32bit_offset,
|
||||
.debug = {
|
||||
.func = anv_spirv_nir_debug,
|
||||
.private_data = &spirv_debug_data,
|
||||
},
|
||||
};
|
||||
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue