Module: wine Branch: master Commit: 9b1748b05f2bfc24b1510aee066edd743d54d892 URL: http://source.winehq.org/git/wine.git/?a=commit;h=9b1748b05f2bfc24b1510aee06...
Author: Józef Kucia jkucia@codeweavers.com Date: Fri Mar 3 01:30:27 2017 +0100
wined3d: Add support for atomic min/max operations on thread group shared memory.
Signed-off-by: Józef Kucia jkucia@codeweavers.com Signed-off-by: Henri Verbeet hverbeet@codeweavers.com Signed-off-by: Alexandre Julliard julliard@winehq.org
---
dlls/wined3d/glsl_shader.c | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-)
diff --git a/dlls/wined3d/glsl_shader.c b/dlls/wined3d/glsl_shader.c index 6d45b43..c6d2e39 100644 --- a/dlls/wined3d/glsl_shader.c +++ b/dlls/wined3d/glsl_shader.c @@ -5034,7 +5034,10 @@ static void shader_glsl_atomic(const struct wined3d_shader_instruction *ins) break; case WINED3DSIH_ATOMIC_IMAX: case WINED3DSIH_IMM_ATOMIC_IMAX: - op = "imageAtomicMax"; + if (is_tgsm) + op = "atomicMax"; + else + op = "imageAtomicMax"; if (data_type != WINED3D_DATA_INT) { FIXME("Unhandled opcode %#x for unsigned integers.\n", ins->handler_idx); @@ -5043,7 +5046,10 @@ static void shader_glsl_atomic(const struct wined3d_shader_instruction *ins) break; case WINED3DSIH_ATOMIC_IMIN: case WINED3DSIH_IMM_ATOMIC_IMIN: - op = "imageAtomicMin"; + if (is_tgsm) + op = "atomicMin"; + else + op = "imageAtomicMin"; if (data_type != WINED3D_DATA_INT) { FIXME("Unhandled opcode %#x for unsigned integers.\n", ins->handler_idx); @@ -5059,7 +5065,10 @@ static void shader_glsl_atomic(const struct wined3d_shader_instruction *ins) break; case WINED3DSIH_ATOMIC_UMAX: case WINED3DSIH_IMM_ATOMIC_UMAX: - op = "imageAtomicMax"; + if (is_tgsm) + op = "atomicMax"; + else + op = "imageAtomicMax"; if (data_type != WINED3D_DATA_UINT) { FIXME("Unhandled opcode %#x for signed integers.\n", ins->handler_idx); @@ -5068,7 +5077,10 @@ static void shader_glsl_atomic(const struct wined3d_shader_instruction *ins) break; case WINED3DSIH_ATOMIC_UMIN: case WINED3DSIH_IMM_ATOMIC_UMIN: - op = "imageAtomicMin"; + if (is_tgsm) + op = "atomicMin"; + else + op = "imageAtomicMin"; if (data_type != WINED3D_DATA_UINT) { FIXME("Unhandled opcode %#x for signed integers.\n", ins->handler_idx);