--- /dev/null
+Name
+
+ EXT_shader_integer_mix
+
+Name Strings
+
+ GL_EXT_shader_integer_mix
+
+Contact
+
+ Matt Turner (matt.turner 'at' intel.com)
+
+Contributors
+
+ Matt Turner, Intel
+ Ian Romanick, Intel
+
+Status
+
+ Shipping
+
+Version
+
+ Last Modified Date: 09/12/2013
+ Author Revision: 6
+
+Number
+
+ TBD
+
+Dependencies
+
+ OpenGL 3.0 or OpenGL ES 3.0 is required. This extension interacts with
+ GL_ARB_ES3_compatibility.
+
+ This extension is written against the OpenGL 4.4 (core) specification
+ and the GLSL 4.40 specification.
+
+Overview
+
+ GLSL 1.30 (and GLSL ES 3.00) expanded the mix() built-in function to
+ operate on a boolean third argument that does not interpolate but
+ selects. This extension extends mix() to select between int, uint,
+ and bool components.
+
+New Procedures and Functions
+
+ None.
+
+New Tokens
+
+ None.
+
+Additions to Chapter 8 of the GLSL 4.40 Specification (Built-in Functions)
+
+ Modify Section 8.3, Common Functions
+
+ Additions to the table listing common built-in functions:
+
+ Syntax Description
+ --------------------------- --------------------------------------------------
+ genIType mix(genIType x, Selects which vector each returned component comes
+ genIType y, from. For a component of a that is false, the
+ genBType a) corresponding component of x is returned. For a
+ genUType mix(genUType x, component of a that is true, the corresponding
+ genUType y, component of y is returned.
+ genBType a)
+ genBType mix(genBType x,
+ genBType y,
+ genBType a)
+
+Additions to the AGL/GLX/WGL Specifications
+
+ None.
+
+Modifications to The OpenGL Shading Language Specification, Version 4.40
+
+ Including the following line in a shader can be used to control the
+ language features described in this extension:
+
+ #extension GL_EXT_shader_integer_mix : <behavior>
+
+ where <behavior> is as specified in section 3.3.
+
+ New preprocessor #defines are added to the OpenGL Shading Language:
+
+ #define GL_EXT_shader_integer_mix 1
+
+Interactions with ARB_ES3_compatibility
+
+ On desktop implementations that support ARB_ES3_compatibility,
+ GL_EXT_shader_integer_mix can be enabled (and the new functions
+ used) in shaders declared with '#version 300 es'.
+
+GLX Protocol
+
+ None.
+
+Errors
+
+ None.
+
+New State
+
+ None.
+
+New Implementation Dependent State
+
+ None.
+
+Issues
+
+ 1) Should we allow linear interpolation of integers via a non-boolean
+ third component?
+
+ RESOLVED: No.
+
+ 2) Should we allow mix() to select between boolean components?
+
+ RESOLVED: Yes. Implementing the same functionality using casts would be
+ possible but ugly.
+
+Revision History
+
+ Rev. Date Author Changes
+ ---- -------- -------- ---------------------------------------------
+ 6 09/12/2013 idr After discussions in Khronos, change vendor
+ prefix to EXT.
+
+ 5 09/09/2013 idr Add ARB_ES3_compatibility interaction.
+
+ 4 09/06/2013 mattst88 Allow extension on OpenGL ES 3.0.
+
+ 3 08/28/2013 mattst88 Add #extension/#define changes.
+
+ 2 08/26/2013 mattst88 Change vendor prefix to MESA. Add mix() that
+ selects between boolean components.
+ 1 08/26/2013 mattst88 Initial revision
+++ /dev/null
-Name
-
- MESA_shader_integer_mix
-
-Name Strings
-
- GL_MESA_shader_integer_mix
-
-Contact
-
- Matt Turner (matt.turner 'at' intel.com)
-
-Contributors
-
- Matt Turner, Intel
- Ian Romanick, Intel
-
-Status
-
- Shipping
-
-Version
-
- Last Modified Date: 09/09/2013
- Author Revision: 5
-
-Number
-
-
-
-Dependencies
-
- OpenGL 3.0 or OpenGL ES 3.0 is required. This extension interacts with
- GL_ARB_ES3_compatibility.
-
- This extension is written against the OpenGL 4.4 (core) specification
- and the GLSL 4.40 specification.
-
-Overview
-
- GLSL 1.30 (and GLSL ES 3.00) expanded the mix() built-in function to
- operate on a boolean third argument that does not interpolate but
- selects. This extension extends mix() to select between int, uint,
- and bool components.
-
-New Procedures and Functions
-
- None.
-
-New Tokens
-
- None.
-
-Additions to Chapter 8 of the GLSL 4.40 Specification (Built-in Functions)
-
- Modify Section 8.3, Common Functions
-
- Additions to the table listing common built-in functions:
-
- Syntax Description
- --------------------------- --------------------------------------------------
- genIType mix(genIType x, Selects which vector each returned component comes
- genIType y, from. For a component of a that is false, the
- genBType a) corresponding component of x is returned. For a
- genUType mix(genUType x, component of a that is true, the corresponding
- genUType y, component of y is returned.
- genBType a)
- genBType mix(genBType x,
- genBType y,
- genBType a)
-
-Additions to the AGL/GLX/WGL Specifications
-
- None.
-
-Modifications to The OpenGL Shading Language Specification, Version 4.40
-
- Including the following line in a shader can be used to control the
- language features described in this extension:
-
- #extension GL_MESA_shader_integer_mix : <behavior>
-
- where <behavior> is as specified in section 3.3.
-
- New preprocessor #defines are added to the OpenGL Shading Language:
-
- #define GL_MESA_shader_integer_mix 1
-
-Interactions with ARB_ES3_compatibility
-
- On desktop implementations that support ARB_ES3_compatibility,
- GL_MESA_shader_integer_mix can be enabled (and the new functions
- used) in shaders declared with '#version 300 es'.
-
-GLX Protocol
-
- None.
-
-Errors
-
- None.
-
-New State
-
- None.
-
-New Implementation Dependent State
-
- None.
-
-Issues
-
- 1) Should we allow linear interpolation of integers via a non-boolean
- third component?
-
- RESOLVED: No.
-
- 2) Should we allow mix() to select between boolean components?
-
- RESOLVED: Yes. Implementing the same functionality using casts would be
- possible but ugly.
-
-Revision History
-
- Rev. Date Author Changes
- ---- -------- -------- ---------------------------------------------
- 5 09/09/2013 idr Add ARB_ES3_compatibility interaction.
-
- 4 09/06/2013 mattst88 Allow extension on OpenGL ES 3.0.
-
- 3 08/28/2013 mattst88 Add #extension/#define changes.
-
- 2 08/26/2013 mattst88 Change vendor prefix to MESA. Add mix() that
- selects between boolean components.
- 1 08/26/2013 mattst88 Initial revision
static bool
shader_integer_mix(const _mesa_glsl_parse_state *state)
{
- return v130(state) && state->MESA_shader_integer_mix_enable;
+ return v130(state) && state->EXT_shader_integer_mix_enable;
}
static bool
if (extensions->ARB_shading_language_420pack)
add_builtin_define(parser, "GL_ARB_shading_language_420pack", 1);
- if (extensions->MESA_shader_integer_mix)
- add_builtin_define(parser, "GL_MESA_shader_integer_mix", 1);
+ if (extensions->EXT_shader_integer_mix)
+ add_builtin_define(parser, "GL_EXT_shader_integer_mix", 1);
}
}
EXT(ARB_texture_query_lod, true, false, ARB_texture_query_lod),
EXT(ARB_gpu_shader5, true, false, ARB_gpu_shader5),
EXT(AMD_vertex_shader_layer, true, false, AMD_vertex_shader_layer),
- EXT(MESA_shader_integer_mix, true, true, MESA_shader_integer_mix),
+ EXT(EXT_shader_integer_mix, true, true, EXT_shader_integer_mix),
};
#undef EXT
bool AMD_vertex_shader_layer_warn;
bool ARB_shading_language_420pack_enable;
bool ARB_shading_language_420pack_warn;
- bool MESA_shader_integer_mix_enable;
- bool MESA_shader_integer_mix_warn;
+ bool EXT_shader_integer_mix_enable;
+ bool EXT_shader_integer_mix_warn;
/*@}*/
/** Extensions supported by the OpenGL implementation. */
if (brw->gen >= 5) {
ctx->Extensions.ARB_texture_query_lod = true;
ctx->Extensions.EXT_timer_query = true;
- ctx->Extensions.MESA_shader_integer_mix = ctx->Const.GLSLVersion >= 130;
+ ctx->Extensions.EXT_shader_integer_mix = ctx->Const.GLSLVersion >= 130;
}
if (ctx->API == API_OPENGL_CORE)
{ "GL_EXT_secondary_color", o(dummy_true), GLL, 1999 },
{ "GL_EXT_separate_shader_objects", o(EXT_separate_shader_objects), GLL, 2008 },
{ "GL_EXT_separate_specular_color", o(dummy_true), GLL, 1997 },
+ { "GL_EXT_shader_integer_mix", o(EXT_shader_integer_mix), GL | ES3, 2013 },
{ "GL_EXT_shadow_funcs", o(ARB_shadow), GLL, 2002 },
{ "GL_EXT_stencil_two_side", o(EXT_stencil_two_side), GLL, 2001 },
{ "GL_EXT_stencil_wrap", o(dummy_true), GLL, 2002 },
{ "GL_IBM_texture_mirrored_repeat", o(dummy_true), GLL, 1998 },
{ "GL_INGR_blend_func_separate", o(EXT_blend_func_separate), GLL, 1999 },
{ "GL_MESA_pack_invert", o(MESA_pack_invert), GL, 2002 },
- { "GL_MESA_shader_integer_mix", o(MESA_shader_integer_mix), GL | ES3, 2013 },
{ "GL_MESA_texture_array", o(MESA_texture_array), GLL, 2007 },
{ "GL_MESA_texture_signed_rgba", o(EXT_texture_snorm), GL, 2009 },
{ "GL_MESA_window_pos", o(dummy_true), GLL, 2000 },
GLboolean EXT_point_parameters;
GLboolean EXT_provoking_vertex;
GLboolean EXT_separate_shader_objects;
+ GLboolean EXT_shader_integer_mix;
GLboolean EXT_stencil_two_side;
GLboolean EXT_texture3D;
GLboolean EXT_texture_array;
GLboolean ATI_fragment_shader;
GLboolean ATI_separate_stencil;
GLboolean MESA_pack_invert;
- GLboolean MESA_shader_integer_mix;
GLboolean MESA_texture_array;
GLboolean MESA_ycbcr_texture;
GLboolean NV_conditional_render;