Skip to content
Snippets Groups Projects

vkd3d-shader/d3d-asm: Dump the input and output signatures.

Merged Giovanni Mascellani requested to merge giomasce/vkd3d:flegrei into master
4 unresolved threads
1 file
+ 21
12
Compare changes
  • Side-by-side
  • Inline
+ 21
12
@@ -1383,31 +1383,40 @@ static void shader_dump_reg_type(struct vkd3d_d3d_asm_compiler *compiler,
shader_addline(buffer, ">");
}
static char *dump_write_mask(char buffer[5], uint32_t write_mask)
{
unsigned int i = 0;
if (write_mask & VKD3DSP_WRITEMASK_0)
buffer[i++] = 'x';
if (write_mask & VKD3DSP_WRITEMASK_1)
buffer[i++] = 'y';
if (write_mask & VKD3DSP_WRITEMASK_2)
buffer[i++] = 'z';
if (write_mask & VKD3DSP_WRITEMASK_3)
buffer[i++] = 'w';
buffer[i++] = '\0';
return buffer;
}
static void shader_dump_dst_param(struct vkd3d_d3d_asm_compiler *compiler,
const struct vkd3d_shader_dst_param *param, bool is_declaration)
{
struct vkd3d_string_buffer *buffer = &compiler->buffer;
uint32_t write_mask = param->write_mask;
char tmp[5];
shader_dump_register(compiler, &param->reg, is_declaration);
if (write_mask && param->reg.dimension == VSIR_DIMENSION_VEC4)
{
static const char write_mask_chars[] = "xyzw";
if (data_type_is_64_bit(param->reg.data_type))
write_mask = vsir_write_mask_32_from_64(write_mask);
shader_addline(buffer, ".%s", compiler->colours.write_mask);
if (write_mask & VKD3DSP_WRITEMASK_0)
shader_addline(buffer, "%c", write_mask_chars[0]);
if (write_mask & VKD3DSP_WRITEMASK_1)
shader_addline(buffer, "%c", write_mask_chars[1]);
if (write_mask & VKD3DSP_WRITEMASK_2)
shader_addline(buffer, "%c", write_mask_chars[2]);
if (write_mask & VKD3DSP_WRITEMASK_3)
shader_addline(buffer, "%c", write_mask_chars[3]);
shader_addline(buffer, "%s", compiler->colours.reset);
shader_addline(buffer, ".%s%s%s", compiler->colours.write_mask,
dump_write_mask(tmp, write_mask), compiler->colours.reset);
}
shader_print_precision(compiler, &param->reg);
Loading