=?UTF-8?Q?J=C3=B3zef=20Kucia=20?=: wined3d: Update UAV read bitmask for ld_raw and ld_structured instructions.

Alexandre Julliard julliard at winehq.org
Fri Feb 24 14:48:09 CST 2017


Module: wine
Branch: master
Commit: dae8785bea94c3b13f1ca7e582af1e9984ff1859
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=dae8785bea94c3b13f1ca7e582af1e9984ff1859

Author: Józef Kucia <jkucia at codeweavers.com>
Date:   Fri Feb 24 12:27:40 2017 +0100

wined3d: Update UAV read bitmask for ld_raw and ld_structured instructions.

Signed-off-by: Józef Kucia <jkucia at codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/wined3d/shader.c | 8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)

diff --git a/dlls/wined3d/shader.c b/dlls/wined3d/shader.c
index 14cb243..fa61674 100644
--- a/dlls/wined3d/shader.c
+++ b/dlls/wined3d/shader.c
@@ -1331,11 +1331,15 @@ static HRESULT shader_get_registers_used(struct wined3d_shader *shader, const st
                     || (WINED3DSIH_IMM_ATOMIC_AND <= ins.handler_idx
                     && ins.handler_idx <= WINED3DSIH_IMM_ATOMIC_XOR
                     && ins.handler_idx != WINED3DSIH_IMM_ATOMIC_CONSUME)
-                    || ins.handler_idx == WINED3DSIH_LD_UAV_TYPED)
+                    || ins.handler_idx == WINED3DSIH_LD_UAV_TYPED
+                    || (ins.handler_idx == WINED3DSIH_LD_RAW && ins.src[1].reg.type == WINED3DSPR_UAV)
+                    || (ins.handler_idx == WINED3DSIH_LD_STRUCTURED && ins.src[2].reg.type == WINED3DSPR_UAV))
             {
                 unsigned int reg_idx;
-                if (ins.handler_idx == WINED3DSIH_LD_UAV_TYPED)
+                if (ins.handler_idx == WINED3DSIH_LD_UAV_TYPED || ins.handler_idx == WINED3DSIH_LD_RAW)
                     reg_idx = ins.src[1].reg.idx[0].offset;
+                else if (ins.handler_idx == WINED3DSIH_LD_STRUCTURED)
+                    reg_idx = ins.src[2].reg.idx[0].offset;
                 else if (WINED3DSIH_ATOMIC_AND <= ins.handler_idx && ins.handler_idx <= WINED3DSIH_ATOMIC_XOR)
                     reg_idx = ins.dst[0].reg.idx[0].offset;
                 else




More information about the wine-cvs mailing list