vkd3d-shader/d3d-asm: Include the I/O signatures when tracing vsir code.

This commit is contained in:
Henri Verbeet
2024-10-05 22:02:12 +02:00
committed by Henri Verbeet
parent 24e61cf74e
commit f4e10ea9d5
Notes: Henri Verbeet 2025-04-14 22:03:34 +02:00
Approved-by: Henri Verbeet (@hverbeet)
Merge-Request: https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/1446
2 changed files with 11 additions and 9 deletions

View File

@@ -2271,6 +2271,10 @@ enum vkd3d_result d3d_asm_compile(const struct vsir_program *program,
indent_str = " "; indent_str = " ";
else else
indent_str = ""; 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; buffer = &compiler.buffer;
vkd3d_string_buffer_init(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_get_type_prefix(shader_version->type), shader_version->major,
shader_version->minor, compiler.colours.reset); shader_version->minor, compiler.colours.reset);
/* The signatures we emit only make sense for DXBC shaders. D3DBC if (compiler.flags & VSIR_ASM_FLAG_DUMP_SIGNATURES
* doesn't even have an explicit concept of signature. */ && (result = dump_dxbc_signatures(&compiler, program)) < 0)
if (formatting & VKD3D_SHADER_COMPILE_OPTION_FORMATTING_IO_SIGNATURES && shader_version->major >= 4)
{ {
if ((result = dump_dxbc_signatures(&compiler, program)) < 0) vkd3d_string_buffer_cleanup(buffer);
{ return result;
vkd3d_string_buffer_cleanup(buffer);
return result;
}
} }
indent = 0; 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) 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; struct vkd3d_shader_code code;
const char *p, *q, *end; const char *p, *q, *end;

View File

@@ -1564,6 +1564,7 @@ enum vsir_asm_flags
VSIR_ASM_FLAG_NONE = 0, VSIR_ASM_FLAG_NONE = 0,
VSIR_ASM_FLAG_DUMP_TYPES = 0x1, VSIR_ASM_FLAG_DUMP_TYPES = 0x1,
VSIR_ASM_FLAG_DUMP_ALL_INDICES = 0x2, VSIR_ASM_FLAG_DUMP_ALL_INDICES = 0x2,
VSIR_ASM_FLAG_DUMP_SIGNATURES = 0x4,
}; };
enum vkd3d_result d3d_asm_compile(const struct vsir_program *program, enum vkd3d_result d3d_asm_compile(const struct vsir_program *program,