Matteo Bruni : d3dcompiler: Check for invalid matrix majority modifiers.

Alexandre Julliard julliard at winehq.org
Wed Jul 18 12:44:41 CDT 2012


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

Author: Matteo Bruni <mbruni at codeweavers.com>
Date:   Wed Jul 18 16:25:11 2012 +0200

d3dcompiler: Check for invalid matrix majority modifiers.

---

 dlls/d3dcompiler_43/hlsl.y |   12 ++++++++++++
 1 files changed, 12 insertions(+), 0 deletions(-)

diff --git a/dlls/d3dcompiler_43/hlsl.y b/dlls/d3dcompiler_43/hlsl.y
index 882de2e..72a209f 100644
--- a/dlls/d3dcompiler_43/hlsl.y
+++ b/dlls/d3dcompiler_43/hlsl.y
@@ -109,6 +109,15 @@ static void debug_dump_decl(struct hlsl_type *type, DWORD modifiers, const char
     TRACE("%s %s;\n", debug_hlsl_type(type), declname);
 }
 
+static void check_invalid_matrix_modifiers(DWORD modifiers, struct source_location *loc)
+{
+    if (modifiers & (HLSL_MODIFIER_ROW_MAJOR | HLSL_MODIFIER_COLUMN_MAJOR))
+    {
+        hlsl_report_message(loc->file, loc->line, loc->col, HLSL_LEVEL_ERROR,
+                "'row_major' or 'column_major' modifiers are only allowed for matrices");
+    }
+}
+
 static BOOL declare_variable(struct hlsl_ir_var *decl, BOOL local)
 {
     BOOL ret;
@@ -122,6 +131,9 @@ static BOOL declare_variable(struct hlsl_ir_var *decl, BOOL local)
                     ? HLSL_MODIFIER_ROW_MAJOR : HLSL_MODIFIER_COLUMN_MAJOR;
         }
     }
+    else
+        check_invalid_matrix_modifiers(decl->modifiers, &decl->node.loc);
+
     if (local)
     {
         DWORD invalid = decl->modifiers & (HLSL_STORAGE_EXTERN | HLSL_STORAGE_SHARED




More information about the wine-cvs mailing list