From 9b1748b05f2bfc24b1510aee066edd743d54d892 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B3zef=20Kucia?= Date: Fri, 3 Mar 2017 01:30:27 +0100 Subject: [PATCH] wined3d: Add support for atomic min/max operations on thread group shared memory. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Józef Kucia Signed-off-by: Henri Verbeet Signed-off-by: Alexandre Julliard --- 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 6d45b435bbc..c6d2e393e23 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);