x11/dri3: Don't open-code ARRAY_SIZE
[mesa.git] / docs / specs / EXT_shader_integer_mix.spec
1 Name
2
3 EXT_shader_integer_mix
4
5 Name Strings
6
7 GL_EXT_shader_integer_mix
8
9 Contact
10
11 Matt Turner (matt.turner 'at' intel.com)
12
13 Contributors
14
15 Matt Turner, Intel
16 Ian Romanick, Intel
17
18 Status
19
20 Shipping
21
22 Version
23
24 Last Modified Date: 09/12/2013
25 Author Revision: 6
26
27 Number
28
29 TBD
30
31 Dependencies
32
33 OpenGL 3.0 or OpenGL ES 3.0 is required. This extension interacts with
34 GL_ARB_ES3_compatibility.
35
36 This extension is written against the OpenGL 4.4 (core) specification
37 and the GLSL 4.40 specification.
38
39 Overview
40
41 GLSL 1.30 (and GLSL ES 3.00) expanded the mix() built-in function to
42 operate on a boolean third argument that does not interpolate but
43 selects. This extension extends mix() to select between int, uint,
44 and bool components.
45
46 New Procedures and Functions
47
48 None.
49
50 New Tokens
51
52 None.
53
54 Additions to Chapter 8 of the GLSL 4.40 Specification (Built-in Functions)
55
56 Modify Section 8.3, Common Functions
57
58 Additions to the table listing common built-in functions:
59
60 Syntax Description
61 --------------------------- --------------------------------------------------
62 genIType mix(genIType x, Selects which vector each returned component comes
63 genIType y, from. For a component of a that is false, the
64 genBType a) corresponding component of x is returned. For a
65 genUType mix(genUType x, component of a that is true, the corresponding
66 genUType y, component of y is returned.
67 genBType a)
68 genBType mix(genBType x,
69 genBType y,
70 genBType a)
71
72 Additions to the AGL/GLX/WGL Specifications
73
74 None.
75
76 Modifications to The OpenGL Shading Language Specification, Version 4.40
77
78 Including the following line in a shader can be used to control the
79 language features described in this extension:
80
81 #extension GL_EXT_shader_integer_mix : <behavior>
82
83 where <behavior> is as specified in section 3.3.
84
85 New preprocessor #defines are added to the OpenGL Shading Language:
86
87 #define GL_EXT_shader_integer_mix 1
88
89 Interactions with ARB_ES3_compatibility
90
91 On desktop implementations that support ARB_ES3_compatibility,
92 GL_EXT_shader_integer_mix can be enabled (and the new functions
93 used) in shaders declared with '#version 300 es'.
94
95 GLX Protocol
96
97 None.
98
99 Errors
100
101 None.
102
103 New State
104
105 None.
106
107 New Implementation Dependent State
108
109 None.
110
111 Issues
112
113 1) Should we allow linear interpolation of integers via a non-boolean
114 third component?
115
116 RESOLVED: No.
117
118 2) Should we allow mix() to select between boolean components?
119
120 RESOLVED: Yes. Implementing the same functionality using casts would be
121 possible but ugly.
122
123 Revision History
124
125 Rev. Date Author Changes
126 ---- -------- -------- ---------------------------------------------
127 6 09/12/2013 idr After discussions in Khronos, change vendor
128 prefix to EXT.
129
130 5 09/09/2013 idr Add ARB_ES3_compatibility interaction.
131
132 4 09/06/2013 mattst88 Allow extension on OpenGL ES 3.0.
133
134 3 08/28/2013 mattst88 Add #extension/#define changes.
135
136 2 08/26/2013 mattst88 Change vendor prefix to MESA. Add mix() that
137 selects between boolean components.
138 1 08/26/2013 mattst88 Initial revision