summaryrefslogtreecommitdiffstats
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
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.
-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))
{