Module: wine Branch: master Commit: c9a42ca5fcbad4354987360dddd5f1d6b9b3f0c6 URL: http://source.winehq.org/git/wine.git/?a=commit;h=c9a42ca5fcbad4354987360ddd...
Author: Matteo Bruni mbruni@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