summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorChristoph Bumiller <[email protected]>2011-10-12 18:04:50 +0200
committerChristoph Bumiller <[email protected]>2011-10-21 23:00:36 +0200
commit903e3257d071caeeec84a096069a78b55666f72d (patch)
tree8a61a63bd1b2f17a029b1a0e73a6b35ea553950b /src
parentd2cc8aedb5d544608842b58b6ae4754313ded939 (diff)
d3d1x: add FORK/JOIN phase opcodes to declarations
The phase instance counts are not necessarily redeclared so with the separation of declarations and instructions we wouldn't know which instance count applies to which phase.
Diffstat (limited to 'src')
-rw-r--r--src/gallium/state_trackers/d3d1x/d3d1xshader/src/sm4_parse.cpp9
1 files changed, 9 insertions, 0 deletions
diff --git a/src/gallium/state_trackers/d3d1x/d3d1xshader/src/sm4_parse.cpp b/src/gallium/state_trackers/d3d1x/d3d1xshader/src/sm4_parse.cpp
index f406b1f8dca..9d7392b9a2c 100644
--- a/src/gallium/state_trackers/d3d1x/d3d1xshader/src/sm4_parse.cpp
+++ b/src/gallium/state_trackers/d3d1x/d3d1xshader/src/sm4_parse.cpp
@@ -202,6 +202,15 @@ relative:
continue;
}
+ if(opcode == SM4_OPCODE_HS_FORK_PHASE || opcode == SM4_OPCODE_HS_JOIN_PHASE)
+ {
+ // need to interleave these with the declarations or we cannot
+ // assign fork/join phase instance counts to phases
+ sm4_dcl& dcl = *new sm4_dcl;
+ program.dcls.push_back(&dcl);
+ dcl.opcode = opcode;
+ }
+
if((opcode >= SM4_OPCODE_DCL_RESOURCE && opcode <= SM4_OPCODE_DCL_GLOBAL_FLAGS)
|| (opcode >= SM4_OPCODE_DCL_STREAM && opcode <= SM4_OPCODE_DCL_RESOURCE_STRUCTURED))
{