mirror of
https://gitlab.winehq.org/wine/vkd3d.git
synced 2025-09-12 18:50:22 -07:00
vkd3d-shader/d3d-asm: Emit precise flags for a number of opcodes.
I've seen them specifically on RESINFO, but it general it makes sense to print them for any opcode that expects a bit field in the flags.
This commit is contained in:
committed by
Henri Verbeet
parent
f7866df201
commit
bdccdd9996
Notes:
Henri Verbeet
2025-07-29 13:34:53 +02:00
Approved-by: Elizabeth Figura (@zfigura) Approved-by: Henri Verbeet (@hverbeet) Merge-Request: https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/1654
@@ -156,6 +156,8 @@ static void shader_dump_atomic_op_flags(struct vkd3d_d3d_asm_compiler *compiler,
|
||||
atomic_flags &= ~VKD3DARF_VOLATILE;
|
||||
}
|
||||
|
||||
atomic_flags &= ~VKD3DSI_PRECISE_XYZW;
|
||||
|
||||
if (atomic_flags)
|
||||
vkd3d_string_buffer_printf(&compiler->buffer, "_unknown_flags(%#x)", atomic_flags);
|
||||
}
|
||||
@@ -183,6 +185,8 @@ static void shader_dump_sync_flags(struct vkd3d_d3d_asm_compiler *compiler, uint
|
||||
sync_flags &= ~VKD3DSSF_THREAD_GROUP;
|
||||
}
|
||||
|
||||
sync_flags &= ~VKD3DSI_PRECISE_XYZW;
|
||||
|
||||
if (sync_flags)
|
||||
vkd3d_string_buffer_printf(&compiler->buffer, "_unknown_flags(%#x)", sync_flags);
|
||||
}
|
||||
@@ -1332,7 +1336,7 @@ static void shader_dump_instruction_flags(struct vkd3d_d3d_asm_compiler *compile
|
||||
break;
|
||||
|
||||
case VSIR_OP_RESINFO:
|
||||
switch (ins->flags)
|
||||
switch (ins->flags & ~VKD3DSI_PRECISE_XYZW)
|
||||
{
|
||||
case VKD3DSI_NONE:
|
||||
break;
|
||||
@@ -1349,7 +1353,7 @@ static void shader_dump_instruction_flags(struct vkd3d_d3d_asm_compiler *compile
|
||||
break;
|
||||
|
||||
case VSIR_OP_SAMPLE_INFO:
|
||||
switch (ins->flags)
|
||||
switch (ins->flags & ~VKD3DSI_PRECISE_XYZW)
|
||||
{
|
||||
case VKD3DSI_NONE:
|
||||
break;
|
||||
@@ -1405,9 +1409,9 @@ static void shader_dump_instruction_flags(struct vkd3d_d3d_asm_compiler *compile
|
||||
case VSIR_OP_USHR:
|
||||
if (ins->flags & VKD3DSI_SHIFT_UNMASKED)
|
||||
vkd3d_string_buffer_printf(buffer, "_unmasked");
|
||||
/* fall through */
|
||||
break;
|
||||
|
||||
default:
|
||||
shader_dump_precise_flags(compiler, ins->flags);
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -1664,9 +1668,14 @@ static void shader_dump_instruction(struct vkd3d_d3d_asm_compiler *compiler,
|
||||
default:
|
||||
shader_dump_instruction_flags(compiler, ins);
|
||||
|
||||
if (ins->resource_type != VKD3D_SHADER_RESOURCE_NONE)
|
||||
vkd3d_string_buffer_printf(buffer, "_indexable");
|
||||
|
||||
shader_dump_precise_flags(compiler, ins->flags);
|
||||
|
||||
if (ins->resource_type != VKD3D_SHADER_RESOURCE_NONE)
|
||||
{
|
||||
vkd3d_string_buffer_printf(buffer, "_indexable(");
|
||||
vkd3d_string_buffer_printf(buffer, "(");
|
||||
if (ins->raw)
|
||||
vkd3d_string_buffer_printf(buffer, "raw_");
|
||||
if (ins->structured)
|
||||
|
Reference in New Issue
Block a user