mesa: add ARB_sparse_buffer NamedBufferPageCommitmentEXT function
[mesa.git] / src / mapi / glapi / gen / apiexec.py
1 # Copyright (C) 2015 Intel Corporation
2 #
3 # Permission is hereby granted, free of charge, to any person obtaining a
4 # copy of this software and associated documentation files (the "Software"),
5 # to deal in the Software without restriction, including without limitation
6 # the rights to use, copy, modify, merge, publish, distribute, sublicense,
7 # and/or sell copies of the Software, and to permit persons to whom the
8 # Software is furnished to do so, subject to the following conditions:
9 #
10 # The above copyright notice and this permission notice (including the next
11 # paragraph) shall be included in all copies or substantial portions of the
12 # Software.
13 #
14 # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15 # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16 # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
17 # THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
18 # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
19 # FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
20 # IN THE SOFTWARE.
21
22 class exec_info():
23 """Information relating GL APIs to a function.
24
25 Each of the four attributes of this class, compatibility, core, es1, and
26 es2, specify the minimum API version where a function can possibly exist
27 in Mesa. The version is specified as an integer of (real GL version *
28 10). For example, glCreateProgram was added in OpenGL 2.0, so
29 compatibility=20 and core=31.
30
31 If the attribute is None, then it cannot be supported by that
32 API. For example, glNewList was removed from core profiles, so
33 compatibility=10 and core=None.
34
35 Each of the attributes that is not None must have a valid value. The
36 valid ranges are:
37
38 compatibility: [10, )
39 core: [31, )
40 es1: [10, 11]
41 es2: [20, )
42
43 These ranges are enforced by the constructor.
44 """
45 def __init__(self, compatibility=None, core=None, es1=None, es2=None):
46 if compatibility is not None:
47 assert isinstance(compatibility, int)
48 assert compatibility >= 10
49
50 if core is not None:
51 assert isinstance(core, int)
52 assert core >= 31
53
54 if es1 is not None:
55 assert isinstance(es1, int)
56 assert es1 == 10 or es1 == 11
57
58 if es2 is not None:
59 assert isinstance(es2, int)
60 assert es2 >= 20
61
62 self.compatibility = compatibility
63 self.core = core
64 self.es1 = es1
65 self.es2 = es2
66
67 functions = {
68 # OpenGL 3.1 / GL_ARB_texture_buffer_object.
69 "TexBuffer": exec_info(compatibility=20, core=31, es2=31),
70
71 # OpenGL 3.2 / GL_OES_geometry_shader.
72 "FramebufferTexture": exec_info(compatibility=32, core=32, es2=31),
73
74 # OpenGL 4.0 / GL_ARB_shader_subroutines. Mesa only exposes this
75 # extension with core profile.
76 "GetSubroutineUniformLocation": exec_info(compatibility=31, core=31),
77 "GetSubroutineIndex": exec_info(compatibility=31, core=31),
78 "GetActiveSubroutineUniformiv": exec_info(compatibility=31, core=31),
79 "GetActiveSubroutineUniformName": exec_info(compatibility=31, core=31),
80 "GetActiveSubroutineName": exec_info(compatibility=31, core=31),
81 "UniformSubroutinesuiv": exec_info(compatibility=31, core=31),
82 "GetUniformSubroutineuiv": exec_info(compatibility=31, core=31),
83 "GetProgramStageiv": exec_info(compatibility=31, core=31),
84
85 # OpenGL 4.0 / GL_ARB_gpu_shader_fp64. The extension spec says:
86 #
87 # "OpenGL 3.2 and GLSL 1.50 are required."
88 "Uniform1d": exec_info(compatibility=32, core=32),
89 "Uniform2d": exec_info(compatibility=32, core=32),
90 "Uniform3d": exec_info(compatibility=32, core=32),
91 "Uniform4d": exec_info(compatibility=32, core=32),
92 "Uniform1dv": exec_info(compatibility=32, core=32),
93 "Uniform2dv": exec_info(compatibility=32, core=32),
94 "Uniform3dv": exec_info(compatibility=32, core=32),
95 "Uniform4dv": exec_info(compatibility=32, core=32),
96 "UniformMatrix2dv": exec_info(compatibility=32, core=32),
97 "UniformMatrix3dv": exec_info(compatibility=32, core=32),
98 "UniformMatrix4dv": exec_info(compatibility=32, core=32),
99 "UniformMatrix2x3dv": exec_info(compatibility=32,core=32),
100 "UniformMatrix2x4dv": exec_info(compatibility=32, core=32),
101 "UniformMatrix3x2dv": exec_info(compatibility=32, core=32),
102 "UniformMatrix3x4dv": exec_info(compatibility=32, core=32),
103 "UniformMatrix4x2dv": exec_info(compatibility=32, core=32),
104 "UniformMatrix4x3dv": exec_info(compatibility=32, core=32),
105 "GetUniformdv": exec_info(compatibility=32, core=32),
106
107 # OpenGL 4.1 / GL_ARB_vertex_attrib_64bit. The extension spec says:
108 #
109 # "OpenGL 3.0 and GLSL 1.30 are required.
110 #
111 # ARB_gpu_shader_fp64 (or equivalent functionality) is required."
112 #
113 # For Mesa this effectively means OpenGL 3.2 is required. It seems
114 # unlikely that Mesa will ever get support for any of the NV extensions
115 # that add "equivalent functionality."
116 "VertexAttribL1d": exec_info(compatibility=32, core=32),
117 "VertexAttribL2d": exec_info(compatibility=32, core=32),
118 "VertexAttribL3d": exec_info(compatibility=32, core=32),
119 "VertexAttribL4d": exec_info(compatibility=32, core=32),
120 "VertexAttribL1dv": exec_info(compatibility=32, core=32),
121 "VertexAttribL2dv": exec_info(compatibility=32, core=32),
122 "VertexAttribL3dv": exec_info(compatibility=32, core=32),
123 "VertexAttribL4dv": exec_info(compatibility=32, core=32),
124 "VertexAttribLPointer": exec_info(compatibility=32, core=32),
125 "GetVertexAttribLdv": exec_info(compatibility=32, core=32),
126
127 # OpenGL 4.1 / GL_ARB_viewport_array. The extension spec says:
128 #
129 # "OpenGL 3.2 or the EXT_geometry_shader4 or ARB_geometry_shader4
130 # extensions are required."
131 #
132 # Mesa does not support either of the geometry shader extensions, so
133 # OpenGL 3.2 is required.
134 "ViewportArrayv": exec_info(compatibility=32, core=32, es2=31),
135 "ViewportIndexedf": exec_info(compatibility=32, core=32, es2=31),
136 "ViewportIndexedfv": exec_info(compatibility=32, core=32, es2=31),
137 "ScissorArrayv": exec_info(compatibility=32, core=32, es2=31),
138 "ScissorIndexed": exec_info(compatibility=32, core=32, es2=31),
139 "ScissorIndexedv": exec_info(compatibility=32, core=32, es2=31),
140 "DepthRangeArrayv": exec_info(compatibility=32, core=32),
141 "DepthRangeIndexed": exec_info(compatibility=32, core=32),
142 # GetFloati_v also GL_ARB_shader_atomic_counters
143 # GetDoublei_v also GL_ARB_shader_atomic_counters
144
145 # OpenGL 4.3 / GL_ARB_texture_buffer_range.
146 "TexBufferRange": exec_info(compatibility=20, core=31, es2=31),
147
148 # OpenGL 4.3 / GL_ARB_framebuffer_no_attachments. Mesa can expose the
149 # extension with OpenGL 3.0.
150 "FramebufferParameteri": exec_info(compatibility=30, core=31, es2=31),
151 "GetFramebufferParameteriv": exec_info(compatibility=30, core=31, es2=31),
152
153 # OpenGL 4.3 / GL_MESA_framebuffer_flip_y.
154 "FramebufferParameteriMESA": exec_info(core=31, es2=30),
155 "GetFramebufferParameterivMESA": exec_info(core=31, es2=30),
156
157 # OpenGL 4.5 / GL_ARB_direct_state_access. Mesa can expose the extension
158 # with core profile.
159 "CreateTransformFeedbacks": exec_info(compatibility=31, core=31),
160 "TransformFeedbackBufferBase": exec_info(compatibility=31, core=31),
161 "TransformFeedbackBufferRange": exec_info(compatibility=31, core=31),
162 "GetTransformFeedbackiv": exec_info(compatibility=31, core=31),
163 "GetTransformFeedbacki_v": exec_info(compatibility=31, core=31),
164 "GetTransformFeedbacki64_v": exec_info(compatibility=31, core=31),
165 "CreateBuffers": exec_info(compatibility=31, core=31),
166 "NamedBufferStorage": exec_info(compatibility=31, core=31),
167 "NamedBufferData": exec_info(compatibility=31, core=31),
168 "NamedBufferSubData": exec_info(compatibility=31, core=31),
169 "CopyNamedBufferSubData": exec_info(compatibility=31, core=31),
170 "ClearNamedBufferData": exec_info(compatibility=31, core=31),
171 "ClearNamedBufferSubData": exec_info(compatibility=31, core=31),
172 "MapNamedBuffer": exec_info(compatibility=31, core=31),
173 "MapNamedBufferRange": exec_info(compatibility=31, core=31),
174 "UnmapNamedBuffer": exec_info(compatibility=31, core=31),
175 "FlushMappedNamedBufferRange": exec_info(compatibility=31, core=31),
176 "GetNamedBufferParameteriv": exec_info(compatibility=31, core=31),
177 "GetNamedBufferParameteri64v": exec_info(compatibility=31, core=31),
178 "GetNamedBufferPointerv": exec_info(compatibility=31, core=31),
179 "GetNamedBufferSubData": exec_info(compatibility=31, core=31),
180 "CreateFramebuffers": exec_info(compatibility=31, core=31),
181 "NamedFramebufferRenderbuffer": exec_info(compatibility=31, core=31),
182 "NamedFramebufferParameteri": exec_info(compatibility=31, core=31),
183 "NamedFramebufferTexture": exec_info(compatibility=31, core=31),
184 "NamedFramebufferTextureLayer": exec_info(compatibility=31, core=31),
185 "NamedFramebufferDrawBuffer": exec_info(compatibility=31, core=31),
186 "NamedFramebufferDrawBuffers": exec_info(compatibility=31, core=31),
187 "NamedFramebufferReadBuffer": exec_info(compatibility=31, core=31),
188 "InvalidateNamedFramebufferData": exec_info(compatibility=31, core=31),
189 "InvalidateNamedFramebufferSubData": exec_info(compatibility=31, core=31),
190 "ClearNamedFramebufferiv": exec_info(compatibility=31, core=31),
191 "ClearNamedFramebufferuiv": exec_info(compatibility=31, core=31),
192 "ClearNamedFramebufferfv": exec_info(compatibility=31, core=31),
193 "ClearNamedFramebufferfi": exec_info(compatibility=31, core=31),
194 "BlitNamedFramebuffer": exec_info(compatibility=31, core=31),
195 "CheckNamedFramebufferStatus": exec_info(compatibility=31, core=31),
196 "GetNamedFramebufferParameteriv": exec_info(compatibility=31, core=31),
197 "GetNamedFramebufferAttachmentParameteriv": exec_info(compatibility=31, core=31),
198 "CreateRenderbuffers": exec_info(compatibility=31, core=31),
199 "NamedRenderbufferStorage": exec_info(compatibility=31, core=31),
200 "NamedRenderbufferStorageMultisample": exec_info(compatibility=31, core=31),
201 "GetNamedRenderbufferParameteriv": exec_info(compatibility=31, core=31),
202 "CreateTextures": exec_info(compatibility=31, core=31),
203 "TextureBuffer": exec_info(compatibility=31, core=31),
204 "TextureBufferRange": exec_info(compatibility=31, core=31),
205 "TextureStorage1D": exec_info(compatibility=31, core=31),
206 "TextureStorage2D": exec_info(compatibility=31, core=31),
207 "TextureStorage3D": exec_info(compatibility=31, core=31),
208 "TextureStorage2DMultisample": exec_info(compatibility=31, core=31),
209 "TextureStorage3DMultisample": exec_info(compatibility=31, core=31),
210 "TextureSubImage1D": exec_info(compatibility=31, core=31),
211 "TextureSubImage2D": exec_info(compatibility=31, core=31),
212 "TextureSubImage3D": exec_info(compatibility=31, core=31),
213 "CompressedTextureSubImage1D": exec_info(compatibility=31, core=31),
214 "CompressedTextureSubImage2D": exec_info(compatibility=31, core=31),
215 "CompressedTextureSubImage3D": exec_info(compatibility=31, core=31),
216 "CopyTextureSubImage1D": exec_info(compatibility=31, core=31),
217 "CopyTextureSubImage2D": exec_info(compatibility=31, core=31),
218 "CopyTextureSubImage3D": exec_info(compatibility=31, core=31),
219 "TextureParameterf": exec_info(compatibility=31, core=31),
220 "TextureParameterfv": exec_info(compatibility=31, core=31),
221 "TextureParameteri": exec_info(compatibility=31, core=31),
222 "TextureParameterIiv": exec_info(compatibility=31, core=31),
223 "TextureParameterIuiv": exec_info(compatibility=31, core=31),
224 "TextureParameteriv": exec_info(compatibility=31, core=31),
225 "GenerateTextureMipmap": exec_info(compatibility=31, core=31),
226 "BindTextureUnit": exec_info(compatibility=31, core=31),
227 "GetTextureImage": exec_info(compatibility=31, core=31),
228 "GetCompressedTextureImage": exec_info(compatibility=31, core=31),
229 "GetTextureLevelParameterfv": exec_info(compatibility=31, core=31),
230 "GetTextureLevelParameteriv": exec_info(compatibility=31, core=31),
231 "GetTextureParameterfv": exec_info(compatibility=31, core=31),
232 "GetTextureParameterIiv": exec_info(compatibility=31, core=31),
233 "GetTextureParameterIuiv": exec_info(compatibility=31, core=31),
234 "GetTextureParameteriv": exec_info(compatibility=31, core=31),
235 "CreateVertexArrays": exec_info(compatibility=31, core=31),
236 "DisableVertexArrayAttrib": exec_info(compatibility=31, core=31),
237 "EnableVertexArrayAttrib": exec_info(compatibility=31, core=31),
238 "VertexArrayElementBuffer": exec_info(compatibility=31, core=31),
239 "VertexArrayVertexBuffer": exec_info(compatibility=31, core=31),
240 "VertexArrayVertexBuffers": exec_info(compatibility=31, core=31),
241 "VertexArrayAttribFormat": exec_info(compatibility=31, core=31),
242 "VertexArrayAttribIFormat": exec_info(compatibility=31, core=31),
243 "VertexArrayAttribLFormat": exec_info(compatibility=31, core=31),
244 "VertexArrayAttribBinding": exec_info(compatibility=31, core=31),
245 "VertexArrayBindingDivisor": exec_info(compatibility=31, core=31),
246 "GetVertexArrayiv": exec_info(compatibility=31, core=31),
247 "GetVertexArrayIndexediv": exec_info(compatibility=31, core=31),
248 "GetVertexArrayIndexed64iv": exec_info(compatibility=31, core=31),
249 "CreateSamplers": exec_info(compatibility=31, core=31),
250 "CreateProgramPipelines": exec_info(compatibility=31, core=31),
251 "CreateQueries": exec_info(compatibility=31, core=31),
252 "GetQueryBufferObjectiv": exec_info(compatibility=31, core=31),
253 "GetQueryBufferObjectuiv": exec_info(compatibility=31, core=31),
254 "GetQueryBufferObjecti64v": exec_info(compatibility=31, core=31),
255 "GetQueryBufferObjectui64v": exec_info(compatibility=31, core=31),
256
257 # GL_ARB_gpu_shader_int64 - nominally requires OpenGL 4.0
258 "Uniform1i64ARB": exec_info(compatibility=40, core=31),
259 "Uniform2i64ARB": exec_info(compatibility=40, core=31),
260 "Uniform3i64ARB": exec_info(compatibility=40, core=31),
261 "Uniform4i64ARB": exec_info(compatibility=40, core=31),
262 "Uniform1i64vARB": exec_info(compatibility=40, core=31),
263 "Uniform2i64vARB": exec_info(compatibility=40, core=31),
264 "Uniform3i64vARB": exec_info(compatibility=40, core=31),
265 "Uniform4i64vARB": exec_info(compatibility=40, core=31),
266 "Uniform1ui64ARB": exec_info(compatibility=40, core=31),
267 "Uniform2ui64ARB": exec_info(compatibility=40, core=31),
268 "Uniform3ui64ARB": exec_info(compatibility=40, core=31),
269 "Uniform4ui64ARB": exec_info(compatibility=40, core=31),
270 "Uniform1ui64vARB": exec_info(compatibility=40, core=31),
271 "Uniform2ui64vARB": exec_info(compatibility=40, core=31),
272 "Uniform3ui64vARB": exec_info(compatibility=40, core=31),
273 "Uniform4ui64vARB": exec_info(compatibility=40, core=31),
274 "GetUniformi64vARB": exec_info(compatibility=40, core=31),
275 "GetUniformui64vARB": exec_info(compatibility=40, core=31),
276 "GetnUniformi64vARB": exec_info(compatibility=40, core=31),
277 "GetnUniformui64vARB": exec_info(compatibility=40, core=31),
278 "ProgramUniform1i64ARB": exec_info(compatibility=40, core=31),
279 "ProgramUniform2i64ARB": exec_info(compatibility=40, core=31),
280 "ProgramUniform3i64ARB": exec_info(compatibility=40, core=31),
281 "ProgramUniform4i64ARB": exec_info(compatibility=40, core=31),
282 "ProgramUniform1i64vARB": exec_info(compatibility=40, core=31),
283 "ProgramUniform2i64vARB": exec_info(compatibility=40, core=31),
284 "ProgramUniform3i64vARB": exec_info(compatibility=40, core=31),
285 "ProgramUniform4i64vARB": exec_info(compatibility=40, core=31),
286 "ProgramUniform1ui64ARB": exec_info(compatibility=40, core=31),
287 "ProgramUniform2ui64ARB": exec_info(compatibility=40, core=31),
288 "ProgramUniform3ui64ARB": exec_info(compatibility=40, core=31),
289 "ProgramUniform4ui64ARB": exec_info(compatibility=40, core=31),
290 "ProgramUniform1ui64vARB": exec_info(compatibility=40, core=31),
291 "ProgramUniform2ui64vARB": exec_info(compatibility=40, core=31),
292 "ProgramUniform3ui64vARB": exec_info(compatibility=40, core=31),
293 "ProgramUniform4ui64vARB": exec_info(compatibility=40, core=31),
294
295 # GL_ARB_bindless_texture
296 "GetVertexAttribLui64vARB": exec_info(compatibility=30, core=31),
297 }