diff options
author | Matt Turner <mattst88@gmail.com> | 2013-08-28 18:01:39 -0700 |
---|---|---|
committer | Matt Turner <mattst88@gmail.com> | 2013-09-09 15:01:08 -0700 |
commit | 56fff7063dd05232cf86aef9d2ae1c04c52a8360 (patch) | |
tree | 2be41e9db05029a329484e18cfb35cdcc2ded843 /docs/specs | |
parent | fd183fa02c4430e439faf6a5195f5008d34db987 (diff) | |
download | external_mesa3d-56fff7063dd05232cf86aef9d2ae1c04c52a8360.zip external_mesa3d-56fff7063dd05232cf86aef9d2ae1c04c52a8360.tar.gz external_mesa3d-56fff7063dd05232cf86aef9d2ae1c04c52a8360.tar.bz2 |
glsl: Implement MESA_shader_integer_mix extension.
Because why doesn't GLSL allow you to do this already?
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
Diffstat (limited to 'docs/specs')
-rw-r--r-- | docs/specs/MESA_shader_integer_mix.spec | 135 |
1 files changed, 135 insertions, 0 deletions
diff --git a/docs/specs/MESA_shader_integer_mix.spec b/docs/specs/MESA_shader_integer_mix.spec new file mode 100644 index 0000000..d381ddd --- /dev/null +++ b/docs/specs/MESA_shader_integer_mix.spec @@ -0,0 +1,135 @@ +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 |