Matteo Bruni : d3dx9: Allow sampler declaration without sampler type.

Alexandre Julliard julliard at winehq.org
Thu Jun 10 12:22:50 CDT 2010


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

Author: Matteo Bruni <matteo.mystral at gmail.com>
Date:   Tue Jun  8 03:20:20 2010 +0200

d3dx9: Allow sampler declaration without sampler type.

---

 dlls/d3dx9_36/asmshader.y |   15 +++++++++++++++
 dlls/d3dx9_36/tests/asm.c |    5 +++++
 2 files changed, 20 insertions(+), 0 deletions(-)

diff --git a/dlls/d3dx9_36/asmshader.y b/dlls/d3dx9_36/asmshader.y
index 0c335b4..689a8fd 100644
--- a/dlls/d3dx9_36/asmshader.y
+++ b/dlls/d3dx9_36/asmshader.y
@@ -618,6 +618,21 @@ instruction:          INSTR_ADD omods dreg ',' sregs
                                 }
                                 asm_ctx.funcs->dcl_sampler(&asm_ctx, $2, $3.mod, $4, asm_ctx.line_no);
                             }
+                    | INSTR_DCL omods REG_SAMPLER
+                            {
+                                TRACE("Sampler declared\n");
+                                if($2.shift != 0) {
+                                    asmparser_message(&asm_ctx, "Line %u: Shift modifier not allowed here\n",
+                                                      asm_ctx.line_no);
+                                    set_parse_status(&asm_ctx, PARSE_ERR);
+                                }
+                                if(asm_ctx.shader->type != ST_PIXEL) {
+                                    asmparser_message(&asm_ctx, "Line %u: Declaration needs a sampler type\n",
+                                                      asm_ctx.line_no);
+                                    set_parse_status(&asm_ctx, PARSE_ERR);
+                                }
+                                asm_ctx.funcs->dcl_sampler(&asm_ctx, BWRITERSTT_UNKNOWN, $2.mod, $3, asm_ctx.line_no);
+                            }
                     | INSTR_DCL sampdcl omods dcl_inputreg
                             {
                                 TRACE("Error rule: sampler decl of input reg\n");
diff --git a/dlls/d3dx9_36/tests/asm.c b/dlls/d3dx9_36/tests/asm.c
index dda0e2b..5f2e49a 100644
--- a/dlls/d3dx9_36/tests/asm.c
+++ b/dlls/d3dx9_36/tests/asm.c
@@ -1216,6 +1216,11 @@ static void ps_3_0_test(void) {
             "dcl v0\n",
             {0xffff0300, 0x0200001f, 0x80000000, 0x900f0000, 0x0000ffff}
         },
+        {   /* shader 16 */
+            "ps_3_0\n"
+            "dcl s2\n",
+            {0xffff0300, 0x0200001f, 0x80000000, 0xa00f0802, 0x0000ffff}
+        },
     };
 
     exec_tests("ps_3_0", tests, sizeof(tests) / sizeof(tests[0]));




More information about the wine-cvs mailing list