On 11/22/2012 08:57 AM, Carl Worth wrote:
The specification is clear that an undefined macro in an #if or #elif should
cause an error. This is distinct from the behavior required for recent desktop
OpenGL.
FIXME: This commit isn't compiling for me since I don't have any API_OPENGLES3
symbol in my environment. I'm seeking guidance on how to get such a sumbol or
otherwise what should be changed in this condition.
---
src/glsl/glcpp/glcpp-parse.y | 16 +++++++++++++++-
src/glsl/glcpp/glcpp.h | 1 +
2 files changed, 16 insertions(+), 1 deletion(-)
diff --git a/src/glsl/glcpp/glcpp-parse.y b/src/glsl/glcpp/glcpp-parse.y
index 38fe44a..70dec84 100644
--- a/src/glsl/glcpp/glcpp-parse.y
+++ b/src/glsl/glcpp/glcpp-parse.y
@@ -281,9 +281,21 @@ control_line:
if (parser->skip_stack == NULL ||
parser->skip_stack->type == SKIP_NO_SKIP)
{
+ int undefined_macro_mode = UNDEFINED_MACRO_IS_ZERO;
+
+ /* Page 11 (page 17 of the PDF) of the OpenGL
+ * ES Shading Language 3.00 spec says:
+ *
+ * "Undefined identifiers not consumed by the
+ * defined operator do not default to '0'. Use
+ * of such identifiers causes an error."
+ */
+ if (parser->api == API_OPENGLES3)
There isn't one. We treat OpenGL ES 3 as version 30 of API_OPENGLES2.
There's a utility function _mesa_is_gles3 to check this. See
src/mesa/main/context.h.
+ undefined_macro_mode =
UNDEFINED_MACRO_IS_IDENTIFIER;
+
_glcpp_parser_expand_and_lex_from (parser,
IF_EXPANDED, $2,
-
UNDEFINED_MACRO_IS_ZERO);
+
undefined_macro_mode);
}
else
{
@@ -1151,6 +1163,8 @@ glcpp_parser_create (const struct gl_extensions
*extensions, int api)
parser->has_new_source_number = 0;
parser->new_source_number = 0;
+ parser->api = api;
+
/* Add pre-defined macros. */
if (extensions != NULL) {
if (extensions->OES_EGL_image_external)
diff --git a/src/glsl/glcpp/glcpp.h b/src/glsl/glcpp/glcpp.h
index a459289..7a528dd 100644
--- a/src/glsl/glcpp/glcpp.h
+++ b/src/glsl/glcpp/glcpp.h
@@ -182,6 +182,7 @@ struct glcpp_parser {
int new_line_number;
bool has_new_source_number;
int new_source_number;
+ int api;
};
struct gl_extensions;
_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-dev