mirror of
https://gitlab.winehq.org/wine/vkd3d.git
synced 2025-09-12 18:50:22 -07:00
vkd3d-shader/dxil: Implement the DXIL ATOMICRMW instruction.
This commit is contained in:
committed by
Alexandre Julliard
parent
b708a9b3b5
commit
9e0b9c3a7a
Notes:
Alexandre Julliard
2024-03-27 23:07:08 +01:00
Approved-by: Giovanni Mascellani (@giomasce) Approved-by: Henri Verbeet (@hverbeet) Approved-by: Alexandre Julliard (@julliard) Merge-Request: https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/707
@@ -448,6 +448,23 @@ static void shader_dump_global_flags(struct vkd3d_d3d_asm_compiler *compiler,
|
||||
vkd3d_string_buffer_printf(&compiler->buffer, "unknown_flags(%#"PRIx64")", (uint64_t)global_flags);
|
||||
}
|
||||
|
||||
static void shader_dump_atomic_op_flags(struct vkd3d_d3d_asm_compiler *compiler, uint32_t atomic_flags)
|
||||
{
|
||||
if (atomic_flags & VKD3DARF_SEQ_CST)
|
||||
{
|
||||
vkd3d_string_buffer_printf(&compiler->buffer, "_seqCst");
|
||||
atomic_flags &= ~VKD3DARF_SEQ_CST;
|
||||
}
|
||||
if (atomic_flags & VKD3DARF_VOLATILE)
|
||||
{
|
||||
vkd3d_string_buffer_printf(&compiler->buffer, "_volatile");
|
||||
atomic_flags &= ~VKD3DARF_VOLATILE;
|
||||
}
|
||||
|
||||
if (atomic_flags)
|
||||
vkd3d_string_buffer_printf(&compiler->buffer, "_unknown_flags(%#x)", atomic_flags);
|
||||
}
|
||||
|
||||
static void shader_dump_sync_flags(struct vkd3d_d3d_asm_compiler *compiler, uint32_t sync_flags)
|
||||
{
|
||||
if (sync_flags & VKD3DSSF_GLOBAL_UAV)
|
||||
@@ -1734,6 +1751,19 @@ static void shader_dump_instruction_flags(struct vkd3d_d3d_asm_compiler *compile
|
||||
}
|
||||
break;
|
||||
|
||||
case VKD3DSIH_IMM_ATOMIC_CMP_EXCH:
|
||||
case VKD3DSIH_IMM_ATOMIC_IADD:
|
||||
case VKD3DSIH_IMM_ATOMIC_AND:
|
||||
case VKD3DSIH_IMM_ATOMIC_IMAX:
|
||||
case VKD3DSIH_IMM_ATOMIC_IMIN:
|
||||
case VKD3DSIH_IMM_ATOMIC_OR:
|
||||
case VKD3DSIH_IMM_ATOMIC_UMAX:
|
||||
case VKD3DSIH_IMM_ATOMIC_UMIN:
|
||||
case VKD3DSIH_IMM_ATOMIC_EXCH:
|
||||
case VKD3DSIH_IMM_ATOMIC_XOR:
|
||||
shader_dump_atomic_op_flags(compiler, ins->flags);
|
||||
break;
|
||||
|
||||
case VKD3DSIH_SYNC:
|
||||
shader_dump_sync_flags(compiler, ins->flags);
|
||||
break;
|
||||
|
Reference in New Issue
Block a user