glsl2: Conditionally allow optional extensions to be enabled
The only optional extension currently supported by the compiler is GL_EXT_texture_array.
This commit is contained in:
@@ -27,6 +27,7 @@
|
||||
|
||||
extern "C" {
|
||||
#include <talloc.h>
|
||||
#include "main/mtypes.h"
|
||||
}
|
||||
|
||||
#include "ast.h"
|
||||
@@ -135,6 +136,11 @@ _mesa_glsl_process_extension(const char *name, YYLTYPE *name_locp,
|
||||
} else if (strcmp(name, "GL_ARB_texture_rectangle") == 0) {
|
||||
state->ARB_texture_rectangle_enable = (ext_mode != extension_disable);
|
||||
state->ARB_texture_rectangle_warn = (ext_mode == extension_warn);
|
||||
} else if (strcmp(name, "GL_EXT_texture_array") == 0) {
|
||||
state->EXT_texture_array_enable = (ext_mode != extension_disable);
|
||||
state->EXT_texture_array_warn = (ext_mode == extension_warn);
|
||||
|
||||
unsupported = !state->extensions->EXT_texture_array;
|
||||
} else {
|
||||
unsupported = true;
|
||||
}
|
||||
|
@@ -90,6 +90,9 @@ struct _mesa_glsl_parse_state {
|
||||
unsigned EXT_texture_array_enable:1;
|
||||
unsigned EXT_texture_array_warn:1;
|
||||
/*@}*/
|
||||
|
||||
/** Extensions supported by the OpenGL implementation. */
|
||||
const struct gl_extensions *extensions;
|
||||
};
|
||||
|
||||
typedef struct YYLTYPE {
|
||||
|
@@ -129,6 +129,7 @@ compile_shader(struct gl_shader *shader)
|
||||
state->ARB_texture_rectangle_enable = true;
|
||||
|
||||
memset(&ext, 0, sizeof(ext));
|
||||
state->extensions = &ext;
|
||||
state->Const.MaxDrawBuffers = 2;
|
||||
state->Const.MaxTextureCoords = 4;
|
||||
|
||||
|
@@ -1709,6 +1709,7 @@ _mesa_glsl_compile_shader(GLcontext *ctx, struct gl_shader *shader)
|
||||
state->loop_or_switch_nesting = NULL;
|
||||
state->ARB_texture_rectangle_enable = true;
|
||||
|
||||
state->extensions = &ctx->Extensions;
|
||||
state->Const.MaxDrawBuffers = ctx->Const.MaxDrawBuffers;
|
||||
state->Const.MaxTextureCoords = ctx->Const.MaxTextureCoordUnits;
|
||||
|
||||
|
Reference in New Issue
Block a user