From f62ff500cd31a4a44f17c3a15fdb034053d32878 Mon Sep 17 00:00:00 2001 From: "Ryan C. Gordon" Date: Fri, 6 Mar 2009 22:58:21 -0500 Subject: [PATCH] Initial work on parsing sampler declarations. --- mojoshader_compiler.c | 9 +++++++++ mojoshader_parser_hlsl.lemon | 12 ++++++++++++ 2 files changed, 21 insertions(+) diff --git a/mojoshader_compiler.c b/mojoshader_compiler.c index c324f27a..7dfb2287 100644 --- a/mojoshader_compiler.c +++ b/mojoshader_compiler.c @@ -245,6 +245,15 @@ static int ConvertToLemonToken(const Context *ctx) if (tokencmp("call")) return TOKEN_HLSL_CALL; if (tokencmp("case")) return TOKEN_HLSL_CASE; if (tokencmp("default")) return TOKEN_HLSL_DEFAULT; + if (tokencmp("sampler")) return TOKEN_HLSL_SAMPLER; + if (tokencmp("sampler1D")) return TOKEN_HLSL_SAMPLER1D; + if (tokencmp("sampler2D")) return TOKEN_HLSL_SAMPLER2D; + if (tokencmp("sampler3D")) return TOKEN_HLSL_SAMPLER3D; + if (tokencmp("samplerCUBE")) return TOKEN_HLSL_SAMPLERCUBE; + if (tokencmp("sampler_state")) return TOKEN_HLSL_SAMPLER_STATE; + if (tokencmp("SamplerState")) return TOKEN_HLSL_SAMPLERSTATE; + if (tokencmp("SamplerComparisonState")) return TOKEN_HLSL_SAMPLERCOMPARISONSTATE; + #undef tokencmp return TOKEN_HLSL_IDENTIFIER; diff --git a/mojoshader_parser_hlsl.lemon b/mojoshader_parser_hlsl.lemon index 282b9c84..f9f4f0bd 100644 --- a/mojoshader_parser_hlsl.lemon +++ b/mojoshader_parser_hlsl.lemon @@ -170,6 +170,8 @@ variable_declaration ::= datatype scalar_or_array variable_lowlevel SEMICOLON. variable_declaration ::= datatype scalar_or_array SEMICOLON. variable_declaration ::= struct_declaration scalar_or_array SEMICOLON. +// !!! FIXME: we don't handle full sampler declarations at the moment. + struct_declaration ::= STRUCT identifier LBRACE struct_member_list RBRACE. struct_member_list ::= struct_member. @@ -220,10 +222,20 @@ initializer ::= ASSIGN expression. intrinsic_datatype ::= datatype_vector. intrinsic_datatype ::= datatype_matrix. intrinsic_datatype ::= datatype_scalar. +intrinsic_datatype ::= datatype_sampler. datatype ::= intrinsic_datatype. datatype ::= USERTYPE. +datatype_sampler ::= SAMPLER. +datatype_sampler ::= SAMPLER1D. +datatype_sampler ::= SAMPLER2D. +datatype_sampler ::= SAMPLER3D. +datatype_sampler ::= SAMPLERCUBE. +datatype_sampler ::= SAMPLER_STATE. +datatype_sampler ::= SAMPLERSTATE. +datatype_sampler ::= SAMPLERCOMPARISONSTATE. + datatype_scalar ::= BOOL. datatype_scalar ::= INT. datatype_scalar ::= UINT.