From 8d95e66cf78921cd067c4bcf6a1053a7ec3a2ed4 Mon Sep 17 00:00:00 2001 From: Brian Paul Date: Mon, 24 Nov 2008 17:18:56 -0700 Subject: mesa: added support for GLSL 1.20 array.length() method This is the only method supported in GLSL 1.20 so we take a few short-cuts. --- src/mesa/shader/slang/library/slang_shader.syn | 20 ++++++++++++++++++++ src/mesa/shader/slang/library/slang_shader_syn.h | 7 +++++++ 2 files changed, 27 insertions(+) (limited to 'src/mesa/shader/slang/library') diff --git a/src/mesa/shader/slang/library/slang_shader.syn b/src/mesa/shader/slang/library/slang_shader.syn index a02a3ac5d9..760dfbcea7 100644 --- a/src/mesa/shader/slang/library/slang_shader.syn +++ b/src/mesa/shader/slang/library/slang_shader.syn @@ -251,6 +251,7 @@ .emtcode OP_POSTINCREMENT 60 .emtcode OP_POSTDECREMENT 61 .emtcode OP_PRECISION 62 +.emtcode OP_METHOD 63 /* parameter qualifier */ .emtcode PARAM_QUALIFIER_IN 0 @@ -342,6 +343,25 @@ integer_expression * ::= */ function_call + function_call_or_method; + +/* + * ::= + * | "." + */ +function_call_or_method + regular_function_call .or method_call; + +/* + * ::= "." + */ +method_call + identifier .emit OP_METHOD .and dot .and function_call_generic .and .true .emit OP_END; + +/* + * ::= + */ +regular_function_call function_call_generic .emit OP_CALL .and .true .emit OP_END; /* diff --git a/src/mesa/shader/slang/library/slang_shader_syn.h b/src/mesa/shader/slang/library/slang_shader_syn.h index f695717782..42ff92b65a 100644 --- a/src/mesa/shader/slang/library/slang_shader_syn.h +++ b/src/mesa/shader/slang/library/slang_shader_syn.h @@ -138,6 +138,7 @@ ".emtcode OP_POSTINCREMENT 60\n" ".emtcode OP_POSTDECREMENT 61\n" ".emtcode OP_PRECISION 62\n" +".emtcode OP_METHOD 63\n" ".emtcode PARAM_QUALIFIER_IN 0\n" ".emtcode PARAM_QUALIFIER_OUT 1\n" ".emtcode PARAM_QUALIFIER_INOUT 2\n" @@ -175,6 +176,12 @@ "integer_expression\n" " expression;\n" "function_call\n" +" function_call_or_method;\n" +"function_call_or_method\n" +" regular_function_call .or method_call;\n" +"method_call\n" +" identifier .emit OP_METHOD .and dot .and function_call_generic .and .true .emit OP_END;\n" +"regular_function_call\n" " function_call_generic .emit OP_CALL .and .true .emit OP_END;\n" "function_call_generic\n" " function_call_generic_1 .or function_call_generic_2;\n" -- cgit v1.2.3