Signed-off-by: Conor McCarthy cmccarthy@codeweavers.com --- libs/vkd3d-shader/trace.c | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-)
diff --git a/libs/vkd3d-shader/trace.c b/libs/vkd3d-shader/trace.c index 8da877b4..e55ef3a2 100644 --- a/libs/vkd3d-shader/trace.c +++ b/libs/vkd3d-shader/trace.c @@ -762,6 +762,16 @@ static void shader_print_subscript(struct vkd3d_d3d_asm_compiler *compiler, shader_print_uint_literal(compiler, "", offset, "]"); }
+static void shader_print_subscript_range(struct vkd3d_d3d_asm_compiler *compiler, + unsigned int offset_first, unsigned int offset_last) +{ + shader_print_uint_literal(compiler, "[", offset_first, ":"); + if (offset_last != ~0u) + shader_print_uint_literal(compiler, "", offset_last, "]"); + else + vkd3d_string_buffer_printf(&compiler->buffer, "*]"); +} + static void shader_dump_register(struct vkd3d_d3d_asm_compiler *compiler, const struct vkd3d_shader_register *reg, bool is_descriptor_declaration) { @@ -1059,10 +1069,11 @@ static void shader_dump_register(struct vkd3d_d3d_asm_compiler *compiler, const }
/* For descriptors in sm < 5.1 we move the reg->idx values up one slot - * to normalise with 5.1. */ + * to normalise with 5.1. For 5.1 descriptor declarations we need to + * trace the register range instead of a single register index. */ if (shader_ver_ge(&compiler->shader_version, 5, 1) && is_descriptor_declaration) { - shader_print_subscript(compiler, reg->idx[1].offset, NULL); + shader_print_subscript_range(compiler, reg->idx[1].offset, reg->idx[2].offset); } else {