summaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
authorIago Toral Quiroga <[email protected]>2017-05-30 13:25:35 +0200
committerIago Toral Quiroga <[email protected]>2017-06-07 07:50:46 +0200
commitf7741985be0234c3fe71e1f97740579e35726b92 (patch)
treecead629d1dba8b5c2f807b4861baf563718eeb5d /include
parent1ec4f008a2b5348828a4a2e48cd7129811ff3fe4 (diff)
glcpp: fix #undef to match latest spec update and GLSLang implementation
GLSL ES spec includes the following: "It is an error to undefine or to redefine a built-in (pre-defined) macro name." But desktop GLSL doesn't. This has sparked some discussion in Khronos, and the final conclusion was to update the GLSL 4.50 spec to include the following: "By convention, all macro names containing two consecutive underscores ( __ ) are reserved for use by underlying software layers. Defining or undefining such a name in a shader does not itself result in an error, but may result in unintended behaviors that stem from having multiple definitions of the same name. All macro names prefixed with “GL_” (“GL” followed by a single underscore) are also reserved, and defining or undefining such a name results in a compile-time error." In other words, undefining GL_* names should be an error, but undefining other names with a double underscore in them is not strictly prohibited in desktop GLSL. This patch fixes the preprocessor to apply these rules, following exactly the implementation already present in GLSLang. This fixes some tests in CTS. Khronos bug: https://cvs.khronos.org/bugzilla/show_bug.cgi?id=16003 Fixes: KHR-GL45.shaders.preprocessor.definitions.undefine_core_profile_vertex KHR-GL45.shaders.preprocessor.definitions.undefine_core_profile_fragment Reviewed-by: Samuel Pitoiset <[email protected]>
Diffstat (limited to 'include')
0 files changed, 0 insertions, 0 deletions