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 &= ~VKD3DARF_VOLATILE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
atomic_flags &= ~VKD3DSI_PRECISE_XYZW;
|
||||||
|
|
||||||
if (atomic_flags)
|
if (atomic_flags)
|
||||||
vkd3d_string_buffer_printf(&compiler->buffer, "_unknown_flags(%#x)", 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 &= ~VKD3DSSF_THREAD_GROUP;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
sync_flags &= ~VKD3DSI_PRECISE_XYZW;
|
||||||
|
|
||||||
if (sync_flags)
|
if (sync_flags)
|
||||||
vkd3d_string_buffer_printf(&compiler->buffer, "_unknown_flags(%#x)", 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;
|
break;
|
||||||
|
|
||||||
case VSIR_OP_RESINFO:
|
case VSIR_OP_RESINFO:
|
||||||
switch (ins->flags)
|
switch (ins->flags & ~VKD3DSI_PRECISE_XYZW)
|
||||||
{
|
{
|
||||||
case VKD3DSI_NONE:
|
case VKD3DSI_NONE:
|
||||||
break;
|
break;
|
||||||
@@ -1349,7 +1353,7 @@ static void shader_dump_instruction_flags(struct vkd3d_d3d_asm_compiler *compile
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case VSIR_OP_SAMPLE_INFO:
|
case VSIR_OP_SAMPLE_INFO:
|
||||||
switch (ins->flags)
|
switch (ins->flags & ~VKD3DSI_PRECISE_XYZW)
|
||||||
{
|
{
|
||||||
case VKD3DSI_NONE:
|
case VKD3DSI_NONE:
|
||||||
break;
|
break;
|
||||||
@@ -1405,9 +1409,9 @@ static void shader_dump_instruction_flags(struct vkd3d_d3d_asm_compiler *compile
|
|||||||
case VSIR_OP_USHR:
|
case VSIR_OP_USHR:
|
||||||
if (ins->flags & VKD3DSI_SHIFT_UNMASKED)
|
if (ins->flags & VKD3DSI_SHIFT_UNMASKED)
|
||||||
vkd3d_string_buffer_printf(buffer, "_unmasked");
|
vkd3d_string_buffer_printf(buffer, "_unmasked");
|
||||||
/* fall through */
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
shader_dump_precise_flags(compiler, ins->flags);
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1664,9 +1668,14 @@ static void shader_dump_instruction(struct vkd3d_d3d_asm_compiler *compiler,
|
|||||||
default:
|
default:
|
||||||
shader_dump_instruction_flags(compiler, ins);
|
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)
|
if (ins->resource_type != VKD3D_SHADER_RESOURCE_NONE)
|
||||||
{
|
{
|
||||||
vkd3d_string_buffer_printf(buffer, "_indexable(");
|
vkd3d_string_buffer_printf(buffer, "(");
|
||||||
if (ins->raw)
|
if (ins->raw)
|
||||||
vkd3d_string_buffer_printf(buffer, "raw_");
|
vkd3d_string_buffer_printf(buffer, "raw_");
|
||||||
if (ins->structured)
|
if (ins->structured)
|
||||||
|
Reference in New Issue
Block a user