glsl/lexer: Add new tokens for ARB_shader_image_load_store.
Reviewed-by: Paul Berry <stereotype441@gmail.com>
This commit is contained in:
@@ -337,6 +337,51 @@ samplerExternalOES {
|
||||
return IDENTIFIER;
|
||||
}
|
||||
|
||||
/* keywords available with ARB_shader_image_load_store */
|
||||
image1D KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, IMAGE1D);
|
||||
image2D KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, IMAGE2D);
|
||||
image3D KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, IMAGE3D);
|
||||
image2DRect KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, IMAGE2DRECT);
|
||||
imageCube KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, IMAGECUBE);
|
||||
imageBuffer KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, IMAGEBUFFER);
|
||||
image1DArray KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, IMAGE1DARRAY);
|
||||
image2DArray KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, IMAGE2DARRAY);
|
||||
imageCubeArray KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, IMAGECUBEARRAY);
|
||||
image2DMS KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, IMAGE2DMS);
|
||||
image2DMSArray KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, IMAGE2DMSARRAY);
|
||||
iimage1D KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, IIMAGE1D);
|
||||
iimage2D KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, IIMAGE2D);
|
||||
iimage3D KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, IIMAGE3D);
|
||||
iimage2DRect KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, IIMAGE2DRECT);
|
||||
iimageCube KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, IIMAGECUBE);
|
||||
iimageBuffer KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, IIMAGEBUFFER);
|
||||
iimage1DArray KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, IIMAGE1DARRAY);
|
||||
iimage2DArray KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, IIMAGE2DARRAY);
|
||||
iimageCubeArray KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, IIMAGECUBEARRAY);
|
||||
iimage2DMS KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, IIMAGE2DMS);
|
||||
iimage2DMSArray KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, IIMAGE2DMSARRAY);
|
||||
uimage1D KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, UIMAGE1D);
|
||||
uimage2D KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, UIMAGE2D);
|
||||
uimage3D KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, UIMAGE3D);
|
||||
uimage2DRect KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, UIMAGE2DRECT);
|
||||
uimageCube KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, UIMAGECUBE);
|
||||
uimageBuffer KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, UIMAGEBUFFER);
|
||||
uimage1DArray KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, UIMAGE1DARRAY);
|
||||
uimage2DArray KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, UIMAGE2DARRAY);
|
||||
uimageCubeArray KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, UIMAGECUBEARRAY);
|
||||
uimage2DMS KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, UIMAGE2DMS);
|
||||
uimage2DMSArray KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, UIMAGE2DMSARRAY);
|
||||
image1DShadow KEYWORD(130, 300, 0, 0, IMAGE1DSHADOW);
|
||||
image2DShadow KEYWORD(130, 300, 0, 0, IMAGE2DSHADOW);
|
||||
image1DArrayShadow KEYWORD(130, 300, 0, 0, IMAGE1DARRAYSHADOW);
|
||||
image2DArrayShadow KEYWORD(130, 300, 0, 0, IMAGE2DARRAYSHADOW);
|
||||
|
||||
coherent KEYWORD_WITH_ALT(420, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, COHERENT);
|
||||
volatile KEYWORD_WITH_ALT(110, 100, 420, 0, yyextra->ARB_shader_image_load_store_enable, VOLATILE);
|
||||
restrict KEYWORD_WITH_ALT(420, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, RESTRICT);
|
||||
readonly KEYWORD_WITH_ALT(420, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, READONLY);
|
||||
writeonly KEYWORD_WITH_ALT(420, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, WRITEONLY);
|
||||
|
||||
atomic_uint KEYWORD_WITH_ALT(420, 300, 420, 0, yyextra->ARB_shader_atomic_counters_enable, ATOMIC_UINT);
|
||||
|
||||
struct return STRUCT;
|
||||
@@ -436,7 +481,6 @@ switch KEYWORD(110, 100, 130, 300, SWITCH);
|
||||
default KEYWORD(110, 100, 130, 300, DEFAULT);
|
||||
inline KEYWORD(110, 100, 0, 0, INLINE_TOK);
|
||||
noinline KEYWORD(110, 100, 0, 0, NOINLINE);
|
||||
volatile KEYWORD(110, 100, 0, 0, VOLATILE);
|
||||
public KEYWORD(110, 100, 0, 0, PUBLIC_TOK);
|
||||
static KEYWORD(110, 100, 0, 0, STATIC);
|
||||
extern KEYWORD(110, 100, 0, 0, EXTERN);
|
||||
@@ -481,31 +525,6 @@ active KEYWORD(130, 300, 0, 0, ACTIVE);
|
||||
superp KEYWORD(130, 100, 0, 0, SUPERP);
|
||||
samplerBuffer KEYWORD(130, 300, 140, 0, SAMPLERBUFFER);
|
||||
filter KEYWORD(130, 300, 0, 0, FILTER);
|
||||
image1D KEYWORD(130, 300, 0, 0, IMAGE1D);
|
||||
image2D KEYWORD(130, 300, 0, 0, IMAGE2D);
|
||||
image3D KEYWORD(130, 300, 0, 0, IMAGE3D);
|
||||
imageCube KEYWORD(130, 300, 0, 0, IMAGECUBE);
|
||||
iimage1D KEYWORD(130, 300, 0, 0, IIMAGE1D);
|
||||
iimage2D KEYWORD(130, 300, 0, 0, IIMAGE2D);
|
||||
iimage3D KEYWORD(130, 300, 0, 0, IIMAGE3D);
|
||||
iimageCube KEYWORD(130, 300, 0, 0, IIMAGECUBE);
|
||||
uimage1D KEYWORD(130, 300, 0, 0, UIMAGE1D);
|
||||
uimage2D KEYWORD(130, 300, 0, 0, UIMAGE2D);
|
||||
uimage3D KEYWORD(130, 300, 0, 0, UIMAGE3D);
|
||||
uimageCube KEYWORD(130, 300, 0, 0, UIMAGECUBE);
|
||||
image1DArray KEYWORD(130, 300, 0, 0, IMAGE1DARRAY);
|
||||
image2DArray KEYWORD(130, 300, 0, 0, IMAGE2DARRAY);
|
||||
iimage1DArray KEYWORD(130, 300, 0, 0, IIMAGE1DARRAY);
|
||||
iimage2DArray KEYWORD(130, 300, 0, 0, IIMAGE2DARRAY);
|
||||
uimage1DArray KEYWORD(130, 300, 0, 0, UIMAGE1DARRAY);
|
||||
uimage2DArray KEYWORD(130, 300, 0, 0, UIMAGE2DARRAY);
|
||||
image1DShadow KEYWORD(130, 300, 0, 0, IMAGE1DSHADOW);
|
||||
image2DShadow KEYWORD(130, 300, 0, 0, IMAGE2DSHADOW);
|
||||
image1DArrayShadow KEYWORD(130, 300, 0, 0, IMAGE1DARRAYSHADOW);
|
||||
image2DArrayShadow KEYWORD(130, 300, 0, 0, IMAGE2DARRAYSHADOW);
|
||||
imageBuffer KEYWORD(130, 300, 0, 0, IMAGEBUFFER);
|
||||
iimageBuffer KEYWORD(130, 300, 0, 0, IIMAGEBUFFER);
|
||||
uimageBuffer KEYWORD(130, 300, 0, 0, UIMAGEBUFFER);
|
||||
row_major KEYWORD_WITH_ALT(130, 0, 140, 0, yyextra->ARB_uniform_buffer_object_enable && !yyextra->es_shader, ROW_MAJOR);
|
||||
|
||||
/* Additional reserved words in GLSL 1.40 */
|
||||
@@ -515,10 +534,6 @@ isamplerBuffer KEYWORD(140, 300, 140, 0, ISAMPLERBUFFER);
|
||||
usamplerBuffer KEYWORD(140, 300, 140, 0, USAMPLERBUFFER);
|
||||
|
||||
/* Additional reserved words in GLSL ES 3.00 */
|
||||
coherent KEYWORD(0, 300, 0, 0, COHERENT);
|
||||
restrict KEYWORD(0, 300, 0, 0, RESTRICT);
|
||||
readonly KEYWORD(0, 300, 0, 0, READONLY);
|
||||
writeonly KEYWORD(0, 300, 0, 0, WRITEONLY);
|
||||
resource KEYWORD(0, 300, 0, 0, RESOURCE);
|
||||
patch KEYWORD(0, 300, 0, 0, PATCH);
|
||||
sample KEYWORD_WITH_ALT(400, 300, 400, 0, yyextra->ARB_gpu_shader5_enable, SAMPLE);
|
||||
|
@@ -145,6 +145,14 @@ static bool match_layout_qualifier(const char *s1, const char *s2,
|
||||
%token SAMPLER2DMS ISAMPLER2DMS USAMPLER2DMS
|
||||
%token SAMPLER2DMSARRAY ISAMPLER2DMSARRAY USAMPLER2DMSARRAY
|
||||
%token SAMPLEREXTERNALOES
|
||||
%token IMAGE1D IMAGE2D IMAGE3D IMAGE2DRECT IMAGECUBE IMAGEBUFFER
|
||||
%token IMAGE1DARRAY IMAGE2DARRAY IMAGECUBEARRAY IMAGE2DMS IMAGE2DMSARRAY
|
||||
%token IIMAGE1D IIMAGE2D IIMAGE3D IIMAGE2DRECT IIMAGECUBE IIMAGEBUFFER
|
||||
%token IIMAGE1DARRAY IIMAGE2DARRAY IIMAGECUBEARRAY IIMAGE2DMS IIMAGE2DMSARRAY
|
||||
%token UIMAGE1D UIMAGE2D UIMAGE3D UIMAGE2DRECT UIMAGECUBE UIMAGEBUFFER
|
||||
%token UIMAGE1DARRAY UIMAGE2DARRAY UIMAGECUBEARRAY UIMAGE2DMS UIMAGE2DMSARRAY
|
||||
%token IMAGE1DSHADOW IMAGE2DSHADOW IMAGE1DARRAYSHADOW IMAGE2DARRAYSHADOW
|
||||
%token COHERENT VOLATILE RESTRICT READONLY WRITEONLY
|
||||
%token ATOMIC_UINT
|
||||
%token STRUCT VOID_TOK WHILE
|
||||
%token <identifier> IDENTIFIER TYPE_IDENTIFIER NEW_IDENTIFIER
|
||||
@@ -170,23 +178,17 @@ static bool match_layout_qualifier(const char *s1, const char *s2,
|
||||
/* Reserved words that are not actually used in the grammar.
|
||||
*/
|
||||
%token ASM CLASS UNION ENUM TYPEDEF TEMPLATE THIS PACKED_TOK GOTO
|
||||
%token INLINE_TOK NOINLINE VOLATILE PUBLIC_TOK STATIC EXTERN EXTERNAL
|
||||
%token INLINE_TOK NOINLINE PUBLIC_TOK STATIC EXTERN EXTERNAL
|
||||
%token LONG_TOK SHORT_TOK DOUBLE_TOK HALF FIXED_TOK UNSIGNED INPUT_TOK OUPTUT
|
||||
%token HVEC2 HVEC3 HVEC4 DVEC2 DVEC3 DVEC4 FVEC2 FVEC3 FVEC4
|
||||
%token SAMPLER3DRECT
|
||||
%token SIZEOF CAST NAMESPACE USING
|
||||
%token COHERENT RESTRICT READONLY WRITEONLY RESOURCE PATCH SAMPLE
|
||||
%token RESOURCE PATCH SAMPLE
|
||||
%token SUBROUTINE
|
||||
|
||||
%token ERROR_TOK
|
||||
|
||||
%token COMMON PARTITION ACTIVE FILTER
|
||||
%token IMAGE1D IMAGE2D IMAGE3D IMAGECUBE IMAGE1DARRAY IMAGE2DARRAY
|
||||
%token IIMAGE1D IIMAGE2D IIMAGE3D IIMAGECUBE IIMAGE1DARRAY IIMAGE2DARRAY
|
||||
%token UIMAGE1D UIMAGE2D UIMAGE3D UIMAGECUBE UIMAGE1DARRAY UIMAGE2DARRAY
|
||||
%token IMAGE1DSHADOW IMAGE2DSHADOW IMAGEBUFFER IIMAGEBUFFER UIMAGEBUFFER
|
||||
%token IMAGE1DARRAYSHADOW IMAGE2DARRAYSHADOW
|
||||
%token ROW_MAJOR
|
||||
%token COMMON PARTITION ACTIVE FILTER ROW_MAJOR
|
||||
|
||||
%type <identifier> variable_identifier
|
||||
%type <node> statement
|
||||
|
Reference in New Issue
Block a user