ARB prog parser: Add support for GL_MESA_texture_array
This isn't really tested yet as no drivers actually support this extension.
This commit is contained in:
File diff suppressed because it is too large
Load Diff
@@ -31,6 +31,7 @@
|
||||
#define require_ARB_fp (yyextra->mode == ARB_fragment)
|
||||
#define require_shadow (yyextra->option.Shadow)
|
||||
#define require_rect (yyextra->option.TexRect)
|
||||
#define require_texarray (yyextra->option.TexArray)
|
||||
|
||||
#define return_token_or_IDENTIFIER(condition, token) \
|
||||
do { \
|
||||
@@ -299,6 +300,10 @@ RECT { return_token_or_IDENTIFIER(require_ARB_fp && require
|
||||
SHADOW1D { return_token_or_IDENTIFIER(require_ARB_fp && require_shadow, TEX_SHADOW1D); }
|
||||
SHADOW2D { return_token_or_IDENTIFIER(require_ARB_fp && require_shadow, TEX_SHADOW2D); }
|
||||
SHADOWRECT { return_token_or_IDENTIFIER(require_ARB_fp && require_shadow && require_rect, TEX_SHADOWRECT); }
|
||||
ARRAY1D { return_token_or_IDENTIFIER(require_ARB_fp && require_texarray, TEX_ARRAY1D); }
|
||||
ARRAY2D { return_token_or_IDENTIFIER(require_ARB_fp && require_texarray, TEX_ARRAY2D); }
|
||||
ARRAYSHADOW1D { return_token_or_IDENTIFIER(require_ARB_fp && require_shadow && require_texarray, TEX_ARRAYSHADOW1D); }
|
||||
ARRAYSHADOW2D { return_token_or_IDENTIFIER(require_ARB_fp && require_shadow && require_texarray, TEX_ARRAYSHADOW2D); }
|
||||
|
||||
[_a-zA-Z$][_a-zA-Z0-9$]* {
|
||||
yylval->string = strdup(yytext);
|
||||
|
File diff suppressed because it is too large
Load Diff
@@ -127,17 +127,21 @@
|
||||
TEX_SHADOW1D = 343,
|
||||
TEX_SHADOW2D = 344,
|
||||
TEX_SHADOWRECT = 345,
|
||||
VERTEX = 346,
|
||||
VTXATTRIB = 347,
|
||||
WEIGHT = 348,
|
||||
IDENTIFIER = 349,
|
||||
MASK4 = 350,
|
||||
MASK3 = 351,
|
||||
MASK2 = 352,
|
||||
MASK1 = 353,
|
||||
SWIZZLE = 354,
|
||||
DOT_DOT = 355,
|
||||
DOT = 356
|
||||
TEX_ARRAY1D = 346,
|
||||
TEX_ARRAY2D = 347,
|
||||
TEX_ARRAYSHADOW1D = 348,
|
||||
TEX_ARRAYSHADOW2D = 349,
|
||||
VERTEX = 350,
|
||||
VTXATTRIB = 351,
|
||||
WEIGHT = 352,
|
||||
IDENTIFIER = 353,
|
||||
MASK4 = 354,
|
||||
MASK3 = 355,
|
||||
MASK2 = 356,
|
||||
MASK1 = 357,
|
||||
SWIZZLE = 358,
|
||||
DOT_DOT = 359,
|
||||
DOT = 360
|
||||
};
|
||||
#endif
|
||||
|
||||
@@ -170,7 +174,7 @@ typedef union YYSTYPE
|
||||
|
||||
|
||||
/* Line 1676 of yacc.c */
|
||||
#line 174 "program_parse.tab.h"
|
||||
#line 178 "program_parse.tab.h"
|
||||
} YYSTYPE;
|
||||
# define YYSTYPE_IS_TRIVIAL 1
|
||||
# define yystype YYSTYPE /* obsolescent; will be withdrawn */
|
||||
|
@@ -158,6 +158,7 @@ static struct asm_instruction *asm_instruction_ctor(gl_inst_opcode op,
|
||||
%token TEXCOORD TEXENV TEXGEN TEXGEN_Q TEXGEN_R TEXGEN_S TEXGEN_T TEXTURE TRANSPOSE
|
||||
%token TEXTURE_UNIT TEX_1D TEX_2D TEX_3D TEX_CUBE TEX_RECT
|
||||
%token TEX_SHADOW1D TEX_SHADOW2D TEX_SHADOWRECT
|
||||
%token TEX_ARRAY1D TEX_ARRAY2D TEX_ARRAYSHADOW1D TEX_ARRAYSHADOW2D
|
||||
%token VERTEX VTXATTRIB
|
||||
%token WEIGHT
|
||||
|
||||
@@ -450,6 +451,10 @@ texTarget: TEX_1D { $$ = TEXTURE_1D_INDEX; }
|
||||
| TEX_SHADOW1D { $$ = -TEXTURE_1D_INDEX; }
|
||||
| TEX_SHADOW2D { $$ = -TEXTURE_2D_INDEX; }
|
||||
| TEX_SHADOWRECT { $$ = -TEXTURE_RECT_INDEX; }
|
||||
| TEX_ARRAY1D { $$ = TEXTURE_1D_ARRAY_INDEX; }
|
||||
| TEX_ARRAY2D { $$ = TEXTURE_2D_ARRAY_INDEX; }
|
||||
| TEX_ARRAYSHADOW1D { $$ = -TEXTURE_1D_ARRAY_INDEX; }
|
||||
| TEX_ARRAYSHADOW2D { $$ = -TEXTURE_2D_ARRAY_INDEX; }
|
||||
;
|
||||
|
||||
SWZ_instruction: SWZ maskedDstReg ',' srcReg ',' extendedSwizzle
|
||||
|
@@ -102,6 +102,15 @@ _mesa_ARBfp_parse_option(struct asm_parser_state *state, const char *option)
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
} else if (strncmp(option, "MESA_", 5) == 0) {
|
||||
option += 5;
|
||||
|
||||
if (strcmp(option, "texture_array") == 0) {
|
||||
if (state->ctx->Extensions.MESA_texture_array) {
|
||||
state->option.TexArray = 1;
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
|
@@ -201,6 +201,7 @@ struct asm_parser_state {
|
||||
unsigned DrawBuffers:1;
|
||||
unsigned Shadow:1;
|
||||
unsigned TexRect:1;
|
||||
unsigned TexArray:1;
|
||||
} option;
|
||||
|
||||
struct {
|
||||
|
Reference in New Issue
Block a user