From f4e10ea9d5713dd1080db6a84d26f6a497b83c48 Mon Sep 17 00:00:00 2001 From: Henri Verbeet Date: Sat, 5 Oct 2024 22:02:12 +0200 Subject: [PATCH] vkd3d-shader/d3d-asm: Include the I/O signatures when tracing vsir code. --- libs/vkd3d-shader/d3d_asm.c | 19 ++++++++++--------- libs/vkd3d-shader/vkd3d_shader_private.h | 1 + 2 files changed, 11 insertions(+), 9 deletions(-) diff --git a/libs/vkd3d-shader/d3d_asm.c b/libs/vkd3d-shader/d3d_asm.c index 764f08884..9c398cbfc 100644 --- a/libs/vkd3d-shader/d3d_asm.c +++ b/libs/vkd3d-shader/d3d_asm.c @@ -2271,6 +2271,10 @@ enum vkd3d_result d3d_asm_compile(const struct vsir_program *program, indent_str = " "; else indent_str = ""; + /* The signatures we emit only make sense for DXBC shaders. d3dbc doesn't + * even have an explicit concept of signature. */ + if (formatting & VKD3D_SHADER_COMPILE_OPTION_FORMATTING_IO_SIGNATURES && shader_version->major >= 4) + compiler.flags |= VSIR_ASM_FLAG_DUMP_SIGNATURES; buffer = &compiler.buffer; vkd3d_string_buffer_init(buffer); @@ -2281,15 +2285,11 @@ enum vkd3d_result d3d_asm_compile(const struct vsir_program *program, shader_get_type_prefix(shader_version->type), shader_version->major, shader_version->minor, compiler.colours.reset); - /* The signatures we emit only make sense for DXBC shaders. D3DBC - * doesn't even have an explicit concept of signature. */ - if (formatting & VKD3D_SHADER_COMPILE_OPTION_FORMATTING_IO_SIGNATURES && shader_version->major >= 4) + if (compiler.flags & VSIR_ASM_FLAG_DUMP_SIGNATURES + && (result = dump_dxbc_signatures(&compiler, program)) < 0) { - if ((result = dump_dxbc_signatures(&compiler, program)) < 0) - { - vkd3d_string_buffer_cleanup(buffer); - return result; - } + vkd3d_string_buffer_cleanup(buffer); + return result; } indent = 0; @@ -2417,7 +2417,8 @@ static void trace_io_declarations(const struct vsir_program *program) void vsir_program_trace(const struct vsir_program *program) { - const unsigned int flags = VSIR_ASM_FLAG_DUMP_TYPES | VSIR_ASM_FLAG_DUMP_ALL_INDICES; + const unsigned int flags = VSIR_ASM_FLAG_DUMP_TYPES | VSIR_ASM_FLAG_DUMP_ALL_INDICES + | VSIR_ASM_FLAG_DUMP_SIGNATURES; struct vkd3d_shader_code code; const char *p, *q, *end; diff --git a/libs/vkd3d-shader/vkd3d_shader_private.h b/libs/vkd3d-shader/vkd3d_shader_private.h index b1eb49eec..7ebc1f9bf 100644 --- a/libs/vkd3d-shader/vkd3d_shader_private.h +++ b/libs/vkd3d-shader/vkd3d_shader_private.h @@ -1564,6 +1564,7 @@ enum vsir_asm_flags VSIR_ASM_FLAG_NONE = 0, VSIR_ASM_FLAG_DUMP_TYPES = 0x1, VSIR_ASM_FLAG_DUMP_ALL_INDICES = 0x2, + VSIR_ASM_FLAG_DUMP_SIGNATURES = 0x4, }; enum vkd3d_result d3d_asm_compile(const struct vsir_program *program,