1 /****************************************************************************
2 **
3 ** Copyright (C) 2016 The Qt Company Ltd.
4 ** Contact: https://www.qt.io/licensing/
5 **
6 ** This file is part of the QtGui module of the Qt Toolkit.
7 **
8 ** $QT_BEGIN_LICENSE:LGPL$
9 ** Commercial License Usage
10 ** Licensees holding valid commercial Qt licenses may use this file in
11 ** accordance with the commercial license agreement provided with the
12 ** Software or, alternatively, in accordance with the terms contained in
13 ** a written agreement between you and The Qt Company. For licensing terms
14 ** and conditions see https://www.qt.io/terms-conditions. For further
15 ** information use the contact form at https://www.qt.io/contact-us.
16 **
17 ** GNU Lesser General Public License Usage
18 ** Alternatively, this file may be used under the terms of the GNU Lesser
19 ** General Public License version 3 as published by the Free Software
20 ** Foundation and appearing in the file LICENSE.LGPL3 included in the
21 ** packaging of this file. Please review the following information to
22 ** ensure the GNU Lesser General Public License version 3 requirements
23 ** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
24 **
25 ** GNU General Public License Usage
26 ** Alternatively, this file may be used under the terms of the GNU
27 ** General Public License version 2.0 or (at your option) the GNU General
28 ** Public license version 3 or any later version approved by the KDE Free
29 ** Qt Foundation. The licenses are as published by the Free Software
30 ** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
31 ** included in the packaging of this file. Please review the following
32 ** information to ensure the GNU General Public License requirements will
33 ** be met: https://www.gnu.org/licenses/gpl-2.0.html and
34 ** https://www.gnu.org/licenses/gpl-3.0.html.
35 **
36 ** $QT_END_LICENSE$
37 **
38 ****************************************************************************/
39 
40 #ifndef QOPENGLEXTRAFUNCTIONS_H
41 #define QOPENGLEXTRAFUNCTIONS_H
42 
43 #include <QtGui/qtguiglobal.h>
44 
45 #ifndef QT_NO_OPENGL
46 
47 #include <QtGui/qopenglfunctions.h>
48 
49 // MemoryBarrier is a macro on some architectures on Windows
50 #ifdef Q_OS_WIN
51 #pragma push_macro("MemoryBarrier")
52 #undef MemoryBarrier
53 #endif
54 
55 // GLES build without having included gl32.h -> GLDEBUGPROC is still need for the protos, define it here
56 #if defined(QT_OPENGL_ES_2) && !defined(QT_OPENGL_ES_3_2)
57 typedef void (QOPENGLF_APIENTRY  *GLDEBUGPROC)(GLenum source,GLenum type,GLuint id,GLenum severity,GLsizei length,const GLchar *message,const void *userParam);
58 #endif
59 
60 QT_BEGIN_NAMESPACE
61 
62 class QOpenGLExtraFunctionsPrivate;
63 
64 #undef glReadBuffer
65 #undef glDrawRangeElements
66 #undef glTexImage3D
67 #undef glTexSubImage3D
68 #undef glCopyTexSubImage3D
69 #undef glCompressedTexImage3D
70 #undef glCompressedTexSubImage3D
71 #undef glGenQueries
72 #undef glDeleteQueries
73 #undef glIsQuery
74 #undef glBeginQuery
75 #undef glEndQuery
76 #undef glGetQueryiv
77 #undef glGetQueryObjectuiv
78 #undef glUnmapBuffer
79 #undef glGetBufferPointerv
80 #undef glDrawBuffers
81 #undef glUniformMatrix2x3fv
82 #undef glUniformMatrix3x2fv
83 #undef glUniformMatrix2x4fv
84 #undef glUniformMatrix4x2fv
85 #undef glUniformMatrix3x4fv
86 #undef glUniformMatrix4x3fv
87 #undef glBlitFramebuffer
88 #undef glRenderbufferStorageMultisample
89 #undef glFramebufferTextureLayer
90 #undef glMapBufferRange
91 #undef glFlushMappedBufferRange
92 #undef glBindVertexArray
93 #undef glDeleteVertexArrays
94 #undef glGenVertexArrays
95 #undef glIsVertexArray
96 #undef glGetIntegeri_v
97 #undef glBeginTransformFeedback
98 #undef glEndTransformFeedback
99 #undef glBindBufferRange
100 #undef glBindBufferBase
101 #undef glTransformFeedbackVaryings
102 #undef glGetTransformFeedbackVarying
103 #undef glVertexAttribIPointer
104 #undef glGetVertexAttribIiv
105 #undef glGetVertexAttribIuiv
106 #undef glVertexAttribI4i
107 #undef glVertexAttribI4ui
108 #undef glVertexAttribI4iv
109 #undef glVertexAttribI4uiv
110 #undef glGetUniformuiv
111 #undef glGetFragDataLocation
112 #undef glUniform1ui
113 #undef glUniform2ui
114 #undef glUniform3ui
115 #undef glUniform4ui
116 #undef glUniform1uiv
117 #undef glUniform2uiv
118 #undef glUniform3uiv
119 #undef glUniform4uiv
120 #undef glClearBufferiv
121 #undef glClearBufferuiv
122 #undef glClearBufferfv
123 #undef glClearBufferfi
124 #undef glGetStringi
125 #undef glCopyBufferSubData
126 #undef glGetUniformIndices
127 #undef glGetActiveUniformsiv
128 #undef glGetUniformBlockIndex
129 #undef glGetActiveUniformBlockiv
130 #undef glGetActiveUniformBlockName
131 #undef glUniformBlockBinding
132 #undef glDrawArraysInstanced
133 #undef glDrawElementsInstanced
134 #undef glFenceSync
135 #undef glIsSync
136 #undef glDeleteSync
137 #undef glClientWaitSync
138 #undef glWaitSync
139 #undef glGetInteger64v
140 #undef glGetSynciv
141 #undef glGetInteger64i_v
142 #undef glGetBufferParameteri64v
143 #undef glGenSamplers
144 #undef glDeleteSamplers
145 #undef glIsSampler
146 #undef glBindSampler
147 #undef glSamplerParameteri
148 #undef glSamplerParameteriv
149 #undef glSamplerParameterf
150 #undef glSamplerParameterfv
151 #undef glGetSamplerParameteriv
152 #undef glGetSamplerParameterfv
153 #undef glVertexAttribDivisor
154 #undef glBindTransformFeedback
155 #undef glDeleteTransformFeedbacks
156 #undef glGenTransformFeedbacks
157 #undef glIsTransformFeedback
158 #undef glPauseTransformFeedback
159 #undef glResumeTransformFeedback
160 #undef glGetProgramBinary
161 #undef glProgramBinary
162 #undef glProgramParameteri
163 #undef glInvalidateFramebuffer
164 #undef glInvalidateSubFramebuffer
165 #undef glTexStorage2D
166 #undef glTexStorage3D
167 #undef glGetInternalformativ
168 
169 #undef glDispatchCompute
170 #undef glDispatchComputeIndirect
171 #undef glDrawArraysIndirect
172 #undef glDrawElementsIndirect
173 #undef glFramebufferParameteri
174 #undef glGetFramebufferParameteriv
175 #undef glGetProgramInterfaceiv
176 #undef glGetProgramResourceIndex
177 #undef glGetProgramResourceName
178 #undef glGetProgramResourceiv
179 #undef glGetProgramResourceLocation
180 #undef glUseProgramStages
181 #undef glActiveShaderProgram
182 #undef glCreateShaderProgramv
183 #undef glBindProgramPipeline
184 #undef glDeleteProgramPipelines
185 #undef glGenProgramPipelines
186 #undef glIsProgramPipeline
187 #undef glGetProgramPipelineiv
188 #undef glProgramUniform1i
189 #undef glProgramUniform2i
190 #undef glProgramUniform3i
191 #undef glProgramUniform4i
192 #undef glProgramUniform1ui
193 #undef glProgramUniform2ui
194 #undef glProgramUniform3ui
195 #undef glProgramUniform4ui
196 #undef glProgramUniform1f
197 #undef glProgramUniform2f
198 #undef glProgramUniform3f
199 #undef glProgramUniform4f
200 #undef glProgramUniform1iv
201 #undef glProgramUniform2iv
202 #undef glProgramUniform3iv
203 #undef glProgramUniform4iv
204 #undef glProgramUniform1uiv
205 #undef glProgramUniform2uiv
206 #undef glProgramUniform3uiv
207 #undef glProgramUniform4uiv
208 #undef glProgramUniform1fv
209 #undef glProgramUniform2fv
210 #undef glProgramUniform3fv
211 #undef glProgramUniform4fv
212 #undef glProgramUniformMatrix2fv
213 #undef glProgramUniformMatrix3fv
214 #undef glProgramUniformMatrix4fv
215 #undef glProgramUniformMatrix2x3fv
216 #undef glProgramUniformMatrix3x2fv
217 #undef glProgramUniformMatrix2x4fv
218 #undef glProgramUniformMatrix4x2fv
219 #undef glProgramUniformMatrix3x4fv
220 #undef glProgramUniformMatrix4x3fv
221 #undef glValidateProgramPipeline
222 #undef glGetProgramPipelineInfoLog
223 #undef glBindImageTexture
224 #undef glGetBooleani_v
225 #undef glMemoryBarrier
226 #undef glMemoryBarrierByRegion
227 #undef glTexStorage2DMultisample
228 #undef glGetMultisamplefv
229 #undef glSampleMaski
230 #undef glGetTexLevelParameteriv
231 #undef glGetTexLevelParameterfv
232 #undef glBindVertexBuffer
233 #undef glVertexAttribFormat
234 #undef glVertexAttribIFormat
235 #undef glVertexAttribBinding
236 #undef glVertexBindingDivisor
237 
238 #undef glBlendBarrier
239 #undef glCopyImageSubData
240 #undef glDebugMessageControl
241 #undef glDebugMessageInsert
242 #undef glDebugMessageCallback
243 #undef glGetDebugMessageLog
244 #undef glPushDebugGroup
245 #undef glPopDebugGroup
246 #undef glObjectLabel
247 #undef glGetObjectLabel
248 #undef glGetObjectPtrLabel
249 #undef glGetPointerv
250 #undef glEnablei
251 #undef glDisablei
252 #undef glBlendEquationi
253 #undef glBlendEquationSeparatei
254 #undef glBlendFunci
255 #undef glBlendFuncSeparatei
256 #undef glColorMaski
257 #undef glIsEnabledi
258 #undef glDrawElementsBaseVertex
259 #undef glDrawRangeElementsBaseVertex
260 #undef glDrawElementsInstancedBaseVertex
261 #undef glFrameBufferTexture
262 #undef glPrimitiveBoundingBox
263 #undef glGetGraphicsResetStatus
264 #undef glReadnPixels
265 #undef glGetnUniformfv
266 #undef glGetnUniformiv
267 #undef glGetnUniformuiv
268 #undef glMinSampleShading
269 #undef glPatchParameteri
270 #undef glTexParameterIiv
271 #undef glTexParameterIuiv
272 #undef glGetTexParameterIiv
273 #undef glGetTexParameterIuiv
274 #undef glSamplerParameterIiv
275 #undef glSamplerParameterIuiv
276 #undef glGetSamplerParameterIiv
277 #undef glGetSamplerParameterIuiv
278 #undef glTexBuffer
279 #undef glTexBufferRange
280 #undef glTexStorage3DMultisample
281 
282 class Q_GUI_EXPORT QOpenGLExtraFunctions : public QOpenGLFunctions
283 {
284     Q_DECLARE_PRIVATE(QOpenGLExtraFunctions)
285 
286 public:
287     QOpenGLExtraFunctions();
288     QOpenGLExtraFunctions(QOpenGLContext *context);
~QOpenGLExtraFunctions()289     ~QOpenGLExtraFunctions() {}
290 
291     // GLES3
292     void glReadBuffer(GLenum mode);
293     void glDrawRangeElements(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void *indices);
294     void glTexImage3D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void *pixels);
295     void glTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *pixels);
296     void glCopyTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height);
297     void glCompressedTexImage3D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void *data);
298     void glCompressedTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *data);
299     void glGenQueries(GLsizei n, GLuint *ids);
300     void glDeleteQueries(GLsizei n, const GLuint *ids);
301     GLboolean glIsQuery(GLuint id);
302     void glBeginQuery(GLenum target, GLuint id);
303     void glEndQuery(GLenum target);
304     void glGetQueryiv(GLenum target, GLenum pname, GLint *params);
305     void glGetQueryObjectuiv(GLuint id, GLenum pname, GLuint *params);
306     GLboolean glUnmapBuffer(GLenum target);
307     void glGetBufferPointerv(GLenum target, GLenum pname, void **params);
308     void glDrawBuffers(GLsizei n, const GLenum *bufs);
309     void glUniformMatrix2x3fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
310     void glUniformMatrix3x2fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
311     void glUniformMatrix2x4fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
312     void glUniformMatrix4x2fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
313     void glUniformMatrix3x4fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
314     void glUniformMatrix4x3fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
315     void glBlitFramebuffer(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter);
316     void glRenderbufferStorageMultisample(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height);
317     void glFramebufferTextureLayer(GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer);
318     void *glMapBufferRange(GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access);
319     void glFlushMappedBufferRange(GLenum target, GLintptr offset, GLsizeiptr length);
320     void glBindVertexArray(GLuint array);
321     void glDeleteVertexArrays(GLsizei n, const GLuint *arrays);
322     void glGenVertexArrays(GLsizei n, GLuint *arrays);
323     GLboolean glIsVertexArray(GLuint array);
324     void glGetIntegeri_v(GLenum target, GLuint index, GLint *data);
325     void glBeginTransformFeedback(GLenum primitiveMode);
326     void glEndTransformFeedback(void);
327     void glBindBufferRange(GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size);
328     void glBindBufferBase(GLenum target, GLuint index, GLuint buffer);
329     void glTransformFeedbackVaryings(GLuint program, GLsizei count, const GLchar *const*varyings, GLenum bufferMode);
330     void glGetTransformFeedbackVarying(GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLsizei *size, GLenum *type, GLchar *name);
331     void glVertexAttribIPointer(GLuint index, GLint size, GLenum type, GLsizei stride, const void *pointer);
332     void glGetVertexAttribIiv(GLuint index, GLenum pname, GLint *params);
333     void glGetVertexAttribIuiv(GLuint index, GLenum pname, GLuint *params);
334     void glVertexAttribI4i(GLuint index, GLint x, GLint y, GLint z, GLint w);
335     void glVertexAttribI4ui(GLuint index, GLuint x, GLuint y, GLuint z, GLuint w);
336     void glVertexAttribI4iv(GLuint index, const GLint *v);
337     void glVertexAttribI4uiv(GLuint index, const GLuint *v);
338     void glGetUniformuiv(GLuint program, GLint location, GLuint *params);
339     GLint glGetFragDataLocation(GLuint program, const GLchar *name);
340     void glUniform1ui(GLint location, GLuint v0);
341     void glUniform2ui(GLint location, GLuint v0, GLuint v1);
342     void glUniform3ui(GLint location, GLuint v0, GLuint v1, GLuint v2);
343     void glUniform4ui(GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3);
344     void glUniform1uiv(GLint location, GLsizei count, const GLuint *value);
345     void glUniform2uiv(GLint location, GLsizei count, const GLuint *value);
346     void glUniform3uiv(GLint location, GLsizei count, const GLuint *value);
347     void glUniform4uiv(GLint location, GLsizei count, const GLuint *value);
348     void glClearBufferiv(GLenum buffer, GLint drawbuffer, const GLint *value);
349     void glClearBufferuiv(GLenum buffer, GLint drawbuffer, const GLuint *value);
350     void glClearBufferfv(GLenum buffer, GLint drawbuffer, const GLfloat *value);
351     void glClearBufferfi(GLenum buffer, GLint drawbuffer, GLfloat depth, GLint stencil);
352     const GLubyte *glGetStringi(GLenum name, GLuint index);
353     void glCopyBufferSubData(GLenum readTarget, GLenum writeTarget, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size);
354     void glGetUniformIndices(GLuint program, GLsizei uniformCount, const GLchar *const*uniformNames, GLuint *uniformIndices);
355     void glGetActiveUniformsiv(GLuint program, GLsizei uniformCount, const GLuint *uniformIndices, GLenum pname, GLint *params);
356     GLuint glGetUniformBlockIndex(GLuint program, const GLchar *uniformBlockName);
357     void glGetActiveUniformBlockiv(GLuint program, GLuint uniformBlockIndex, GLenum pname, GLint *params);
358     void glGetActiveUniformBlockName(GLuint program, GLuint uniformBlockIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformBlockName);
359     void glUniformBlockBinding(GLuint program, GLuint uniformBlockIndex, GLuint uniformBlockBinding);
360     void glDrawArraysInstanced(GLenum mode, GLint first, GLsizei count, GLsizei instancecount);
361     void glDrawElementsInstanced(GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount);
362     GLsync glFenceSync(GLenum condition, GLbitfield flags);
363     GLboolean glIsSync(GLsync sync);
364     void glDeleteSync(GLsync sync);
365     GLenum glClientWaitSync(GLsync sync, GLbitfield flags, GLuint64 timeout);
366     void glWaitSync(GLsync sync, GLbitfield flags, GLuint64 timeout);
367     void glGetInteger64v(GLenum pname, GLint64 *data);
368     void glGetSynciv(GLsync sync, GLenum pname, GLsizei bufSize, GLsizei *length, GLint *values);
369     void glGetInteger64i_v(GLenum target, GLuint index, GLint64 *data);
370     void glGetBufferParameteri64v(GLenum target, GLenum pname, GLint64 *params);
371     void glGenSamplers(GLsizei count, GLuint *samplers);
372     void glDeleteSamplers(GLsizei count, const GLuint *samplers);
373     GLboolean glIsSampler(GLuint sampler);
374     void glBindSampler(GLuint unit, GLuint sampler);
375     void glSamplerParameteri(GLuint sampler, GLenum pname, GLint param);
376     void glSamplerParameteriv(GLuint sampler, GLenum pname, const GLint *param);
377     void glSamplerParameterf(GLuint sampler, GLenum pname, GLfloat param);
378     void glSamplerParameterfv(GLuint sampler, GLenum pname, const GLfloat *param);
379     void glGetSamplerParameteriv(GLuint sampler, GLenum pname, GLint *params);
380     void glGetSamplerParameterfv(GLuint sampler, GLenum pname, GLfloat *params);
381     void glVertexAttribDivisor(GLuint index, GLuint divisor);
382     void glBindTransformFeedback(GLenum target, GLuint id);
383     void glDeleteTransformFeedbacks(GLsizei n, const GLuint *ids);
384     void glGenTransformFeedbacks(GLsizei n, GLuint *ids);
385     GLboolean glIsTransformFeedback(GLuint id);
386     void glPauseTransformFeedback(void);
387     void glResumeTransformFeedback(void);
388     void glGetProgramBinary(GLuint program, GLsizei bufSize, GLsizei *length, GLenum *binaryFormat, void *binary);
389     void glProgramBinary(GLuint program, GLenum binaryFormat, const void *binary, GLsizei length);
390     void glProgramParameteri(GLuint program, GLenum pname, GLint value);
391     void glInvalidateFramebuffer(GLenum target, GLsizei numAttachments, const GLenum *attachments);
392     void glInvalidateSubFramebuffer(GLenum target, GLsizei numAttachments, const GLenum *attachments, GLint x, GLint y, GLsizei width, GLsizei height);
393     void glTexStorage2D(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height);
394     void glTexStorage3D(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth);
395     void glGetInternalformativ(GLenum target, GLenum internalformat, GLenum pname, GLsizei bufSize, GLint *params);
396 
397     // GLES 3.1
398     void glDispatchCompute(GLuint num_groups_x, GLuint num_groups_y, GLuint num_groups_z);
399     void glDispatchComputeIndirect(GLintptr indirect);
400     void glDrawArraysIndirect(GLenum mode, const void *indirect);
401     void glDrawElementsIndirect(GLenum mode, GLenum type, const void *indirect);
402     void glFramebufferParameteri(GLenum target, GLenum pname, GLint param);
403     void glGetFramebufferParameteriv(GLenum target, GLenum pname, GLint *params);
404     void glGetProgramInterfaceiv(GLuint program, GLenum programInterface, GLenum pname, GLint *params);
405     GLuint glGetProgramResourceIndex(GLuint program, GLenum programInterface, const GLchar *name);
406     void glGetProgramResourceName(GLuint program, GLenum programInterface, GLuint index, GLsizei bufSize, GLsizei *length, GLchar *name);
407     void glGetProgramResourceiv(GLuint program, GLenum programInterface, GLuint index, GLsizei propCount, const GLenum *props, GLsizei bufSize, GLsizei *length, GLint *params);
408     GLint glGetProgramResourceLocation(GLuint program, GLenum programInterface, const GLchar *name);
409     void glUseProgramStages(GLuint pipeline, GLbitfield stages, GLuint program);
410     void glActiveShaderProgram(GLuint pipeline, GLuint program);
411     GLuint glCreateShaderProgramv(GLenum type, GLsizei count, const GLchar *const*strings);
412     void glBindProgramPipeline(GLuint pipeline);
413     void glDeleteProgramPipelines(GLsizei n, const GLuint *pipelines);
414     void glGenProgramPipelines(GLsizei n, GLuint *pipelines);
415     GLboolean glIsProgramPipeline(GLuint pipeline);
416     void glGetProgramPipelineiv(GLuint pipeline, GLenum pname, GLint *params);
417     void glProgramUniform1i(GLuint program, GLint location, GLint v0);
418     void glProgramUniform2i(GLuint program, GLint location, GLint v0, GLint v1);
419     void glProgramUniform3i(GLuint program, GLint location, GLint v0, GLint v1, GLint v2);
420     void glProgramUniform4i(GLuint program, GLint location, GLint v0, GLint v1, GLint v2, GLint v3);
421     void glProgramUniform1ui(GLuint program, GLint location, GLuint v0);
422     void glProgramUniform2ui(GLuint program, GLint location, GLuint v0, GLuint v1);
423     void glProgramUniform3ui(GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2);
424     void glProgramUniform4ui(GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3);
425     void glProgramUniform1f(GLuint program, GLint location, GLfloat v0);
426     void glProgramUniform2f(GLuint program, GLint location, GLfloat v0, GLfloat v1);
427     void glProgramUniform3f(GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2);
428     void glProgramUniform4f(GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3);
429     void glProgramUniform1iv(GLuint program, GLint location, GLsizei count, const GLint *value);
430     void glProgramUniform2iv(GLuint program, GLint location, GLsizei count, const GLint *value);
431     void glProgramUniform3iv(GLuint program, GLint location, GLsizei count, const GLint *value);
432     void glProgramUniform4iv(GLuint program, GLint location, GLsizei count, const GLint *value);
433     void glProgramUniform1uiv(GLuint program, GLint location, GLsizei count, const GLuint *value);
434     void glProgramUniform2uiv(GLuint program, GLint location, GLsizei count, const GLuint *value);
435     void glProgramUniform3uiv(GLuint program, GLint location, GLsizei count, const GLuint *value);
436     void glProgramUniform4uiv(GLuint program, GLint location, GLsizei count, const GLuint *value);
437     void glProgramUniform1fv(GLuint program, GLint location, GLsizei count, const GLfloat *value);
438     void glProgramUniform2fv(GLuint program, GLint location, GLsizei count, const GLfloat *value);
439     void glProgramUniform3fv(GLuint program, GLint location, GLsizei count, const GLfloat *value);
440     void glProgramUniform4fv(GLuint program, GLint location, GLsizei count, const GLfloat *value);
441     void glProgramUniformMatrix2fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
442     void glProgramUniformMatrix3fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
443     void glProgramUniformMatrix4fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
444     void glProgramUniformMatrix2x3fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
445     void glProgramUniformMatrix3x2fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
446     void glProgramUniformMatrix2x4fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
447     void glProgramUniformMatrix4x2fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
448     void glProgramUniformMatrix3x4fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
449     void glProgramUniformMatrix4x3fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
450     void glValidateProgramPipeline(GLuint pipeline);
451     void glGetProgramPipelineInfoLog(GLuint pipeline, GLsizei bufSize, GLsizei *length, GLchar *infoLog);
452     void glBindImageTexture(GLuint unit, GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum access, GLenum format);
453     void glGetBooleani_v(GLenum target, GLuint index, GLboolean *data);
454     void glMemoryBarrier(GLbitfield barriers);
455     void glMemoryBarrierByRegion(GLbitfield barriers);
456     void glTexStorage2DMultisample(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations);
457     void glGetMultisamplefv(GLenum pname, GLuint index, GLfloat *val);
458     void glSampleMaski(GLuint maskNumber, GLbitfield mask);
459     void glGetTexLevelParameteriv(GLenum target, GLint level, GLenum pname, GLint *params);
460     void glGetTexLevelParameterfv(GLenum target, GLint level, GLenum pname, GLfloat *params);
461     void glBindVertexBuffer(GLuint bindingindex, GLuint buffer, GLintptr offset, GLsizei stride);
462     void glVertexAttribFormat(GLuint attribindex, GLint size, GLenum type, GLboolean normalized, GLuint relativeoffset);
463     void glVertexAttribIFormat(GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset);
464     void glVertexAttribBinding(GLuint attribindex, GLuint bindingindex);
465     void glVertexBindingDivisor(GLuint bindingindex, GLuint divisor);
466 
467     // GLES 3.2
468     void glBlendBarrier(void);
469     void glCopyImageSubData(GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srcY, GLint srcZ, GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei srcWidth, GLsizei srcHeight, GLsizei srcDepth);
470     void glDebugMessageControl(GLenum source, GLenum type, GLenum severity, GLsizei count, const GLuint *ids, GLboolean enabled);
471     void glDebugMessageInsert(GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar *buf);
472     void glDebugMessageCallback(GLDEBUGPROC callback, const void *userParam);
473     GLuint glGetDebugMessageLog(GLuint count, GLsizei bufSize, GLenum *sources, GLenum *types, GLuint *ids, GLenum *severities, GLsizei *lengths, GLchar *messageLog);
474     void glPushDebugGroup(GLenum source, GLuint id, GLsizei length, const GLchar *message);
475     void glPopDebugGroup(void);
476     void glObjectLabel(GLenum identifier, GLuint name, GLsizei length, const GLchar *label);
477     void glGetObjectLabel(GLenum identifier, GLuint name, GLsizei bufSize, GLsizei *length, GLchar *label);
478     void glObjectPtrLabel(const void *ptr, GLsizei length, const GLchar *label);
479     void glGetObjectPtrLabel(const void *ptr, GLsizei bufSize, GLsizei *length, GLchar *label);
480     void glGetPointerv(GLenum pname, void **params);
481     void glEnablei(GLenum target, GLuint index);
482     void glDisablei(GLenum target, GLuint index);
483     void glBlendEquationi(GLuint buf, GLenum mode);
484     void glBlendEquationSeparatei(GLuint buf, GLenum modeRGB, GLenum modeAlpha);
485     void glBlendFunci(GLuint buf, GLenum src, GLenum dst);
486     void glBlendFuncSeparatei(GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha);
487     void glColorMaski(GLuint index, GLboolean r, GLboolean g, GLboolean b, GLboolean a);
488     GLboolean glIsEnabledi(GLenum target, GLuint index);
489     void glDrawElementsBaseVertex(GLenum mode, GLsizei count, GLenum type, const void *indices, GLint basevertex);
490     void glDrawRangeElementsBaseVertex(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void *indices, GLint basevertex);
491     void glDrawElementsInstancedBaseVertex(GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLint basevertex);
492     void glFramebufferTexture(GLenum target, GLenum attachment, GLuint texture, GLint level);
493     void glPrimitiveBoundingBox(GLfloat minX, GLfloat minY, GLfloat minZ, GLfloat minW, GLfloat maxX, GLfloat maxY, GLfloat maxZ, GLfloat maxW);
494     GLenum glGetGraphicsResetStatus(void);
495     void glReadnPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLsizei bufSize, void *data);
496     void glGetnUniformfv(GLuint program, GLint location, GLsizei bufSize, GLfloat *params);
497     void glGetnUniformiv(GLuint program, GLint location, GLsizei bufSize, GLint *params);
498     void glGetnUniformuiv(GLuint program, GLint location, GLsizei bufSize, GLuint *params);
499     void glMinSampleShading(GLfloat value);
500     void glPatchParameteri(GLenum pname, GLint value);
501     void glTexParameterIiv(GLenum target, GLenum pname, const GLint *params);
502     void glTexParameterIuiv(GLenum target, GLenum pname, const GLuint *params);
503     void glGetTexParameterIiv(GLenum target, GLenum pname, GLint *params);
504     void glGetTexParameterIuiv(GLenum target, GLenum pname, GLuint *params);
505     void glSamplerParameterIiv(GLuint sampler, GLenum pname, const GLint *param);
506     void glSamplerParameterIuiv(GLuint sampler, GLenum pname, const GLuint *param);
507     void glGetSamplerParameterIiv(GLuint sampler, GLenum pname, GLint *params);
508     void glGetSamplerParameterIuiv(GLuint sampler, GLenum pname, GLuint *params);
509     void glTexBuffer(GLenum target, GLenum internalformat, GLuint buffer);
510     void glTexBufferRange(GLenum target, GLenum internalformat, GLuint buffer, GLintptr offset, GLsizeiptr size);
511     void glTexStorage3DMultisample(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations);
512 
513 private:
isInitialized(const QOpenGLExtraFunctionsPrivate * d)514     static bool isInitialized(const QOpenGLExtraFunctionsPrivate *d) { return d != nullptr; }
515 };
516 
517 
518 #define QT_OPENGL_DECLARE_FUNCTIONS(ret, name, args) \
519     ret (QOPENGLF_APIENTRYP name)args;
520 #define QT_OPENGL_COUNT_FUNCTIONS(ret, name, args) +1
521 
522 #define QT_OPENGL_DECLARE(FUNCTIONS) \
523 public: \
524     struct Functions { \
525         FUNCTIONS(QT_OPENGL_DECLARE_FUNCTIONS) \
526     }; \
527     union { \
528         QFunctionPointer functions[FUNCTIONS(QT_OPENGL_COUNT_FUNCTIONS)]; \
529         Functions f; \
530     }; \
531 private: \
532     void init(QOpenGLContext *context);
533 
534 class QOpenGLExtraFunctionsPrivate : public QOpenGLFunctionsPrivate
535 {
536 public:
537     QOpenGLExtraFunctionsPrivate(QOpenGLContext *ctx);
538 
539     // GLES3
540 #define QT_OPENGL_EXTRA_FUNCTIONS(F) \
541     F(void, ReadBuffer, (GLenum mode)) \
542     F(void, DrawRangeElements, (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void *indices)) \
543     F(void, TexImage3D, (GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void *pixels)) \
544     F(void, TexSubImage3D, (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *pixels)) \
545     F(void, CopyTexSubImage3D, (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height)) \
546     F(void, CompressedTexImage3D, (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void *data)) \
547     F(void, CompressedTexSubImage3D, (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *data)) \
548     F(void, GenQueries, (GLsizei n, GLuint *ids)) \
549     F(void, DeleteQueries, (GLsizei n, const GLuint *ids)) \
550     F(GLboolean, IsQuery, (GLuint id)) \
551     F(void, BeginQuery, (GLenum target, GLuint id)) \
552     F(void, EndQuery, (GLenum target)) \
553     F(void, GetQueryiv, (GLenum target, GLenum pname, GLint *params)) \
554     F(void, GetQueryObjectuiv, (GLuint id, GLenum pname, GLuint *params)) \
555     F(GLboolean, UnmapBuffer, (GLenum target)) \
556     F(void, GetBufferPointerv, (GLenum target, GLenum pname, void **params)) \
557     F(void, DrawBuffers, (GLsizei n, const GLenum *bufs)) \
558     F(void, UniformMatrix2x3fv, (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)) \
559     F(void, UniformMatrix3x2fv, (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)) \
560     F(void, UniformMatrix2x4fv, (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)) \
561     F(void, UniformMatrix4x2fv, (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)) \
562     F(void, UniformMatrix3x4fv, (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)) \
563     F(void, UniformMatrix4x3fv, (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)) \
564     F(void, BlitFramebuffer, (GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter)) \
565     F(void, RenderbufferStorageMultisample, (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height)) \
566     F(void, FramebufferTextureLayer, (GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer)) \
567     F(void *,MapBufferRange, (GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access)) \
568     F(void, FlushMappedBufferRange, (GLenum target, GLintptr offset, GLsizeiptr length)) \
569     F(void, BindVertexArray, (GLuint array)) \
570     F(void, DeleteVertexArrays, (GLsizei n, const GLuint *arrays)) \
571     F(void, GenVertexArrays, (GLsizei n, GLuint *arrays)) \
572     F(GLboolean, IsVertexArray, (GLuint array)) \
573     F(void, GetIntegeri_v, (GLenum target, GLuint index, GLint *data)) \
574     F(void, BeginTransformFeedback, (GLenum primitiveMode)) \
575     F(void, EndTransformFeedback, (void)) \
576     F(void, BindBufferRange, (GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size)) \
577     F(void, BindBufferBase, (GLenum target, GLuint index, GLuint buffer)) \
578     F(void, TransformFeedbackVaryings, (GLuint program, GLsizei count, const GLchar *const*varyings, GLenum bufferMode)) \
579     F(void, GetTransformFeedbackVarying, (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLsizei *size, GLenum *type, GLchar *name)) \
580     F(void, VertexAttribIPointer, (GLuint index, GLint size, GLenum type, GLsizei stride, const void *pointer)) \
581     F(void, GetVertexAttribIiv, (GLuint index, GLenum pname, GLint *params)) \
582     F(void, GetVertexAttribIuiv, (GLuint index, GLenum pname, GLuint *params)) \
583     F(void, VertexAttribI4i, (GLuint index, GLint x, GLint y, GLint z, GLint w)) \
584     F(void, VertexAttribI4ui, (GLuint index, GLuint x, GLuint y, GLuint z, GLuint w)) \
585     F(void, VertexAttribI4iv, (GLuint index, const GLint *v)) \
586     F(void, VertexAttribI4uiv, (GLuint index, const GLuint *v)) \
587     F(void, GetUniformuiv, (GLuint program, GLint location, GLuint *params)) \
588     F(GLint, GetFragDataLocation, (GLuint program, const GLchar *name)) \
589     F(void, Uniform1ui, (GLint location, GLuint v0)) \
590     F(void, Uniform2ui, (GLint location, GLuint v0, GLuint v1)) \
591     F(void, Uniform3ui, (GLint location, GLuint v0, GLuint v1, GLuint v2)) \
592     F(void, Uniform4ui, (GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3)) \
593     F(void, Uniform1uiv, (GLint location, GLsizei count, const GLuint *value)) \
594     F(void, Uniform2uiv, (GLint location, GLsizei count, const GLuint *value)) \
595     F(void, Uniform3uiv, (GLint location, GLsizei count, const GLuint *value)) \
596     F(void, Uniform4uiv, (GLint location, GLsizei count, const GLuint *value)) \
597     F(void, ClearBufferiv, (GLenum buffer, GLint drawbuffer, const GLint *value)) \
598     F(void, ClearBufferuiv, (GLenum buffer, GLint drawbuffer, const GLuint *value)) \
599     F(void, ClearBufferfv, (GLenum buffer, GLint drawbuffer, const GLfloat *value)) \
600     F(void, ClearBufferfi, (GLenum buffer, GLint drawbuffer, GLfloat depth, GLint stencil)) \
601     F(const GLubyte *, GetStringi, (GLenum name, GLuint index)) \
602     F(void, CopyBufferSubData, (GLenum readTarget, GLenum writeTarget, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size)) \
603     F(void, GetUniformIndices, (GLuint program, GLsizei uniformCount, const GLchar *const*uniformNames, GLuint *uniformIndices)) \
604     F(void, GetActiveUniformsiv, (GLuint program, GLsizei uniformCount, const GLuint *uniformIndices, GLenum pname, GLint *params)) \
605     F(GLuint, GetUniformBlockIndex, (GLuint program, const GLchar *uniformBlockName)) \
606     F(void, GetActiveUniformBlockiv, (GLuint program, GLuint uniformBlockIndex, GLenum pname, GLint *params)) \
607     F(void, GetActiveUniformBlockName, (GLuint program, GLuint uniformBlockIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformBlockName)) \
608     F(void, UniformBlockBinding, (GLuint program, GLuint uniformBlockIndex, GLuint uniformBlockBinding)) \
609     F(void, DrawArraysInstanced, (GLenum mode, GLint first, GLsizei count, GLsizei instancecount)) \
610     F(void, DrawElementsInstanced, (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount)) \
611     F(GLsync, FenceSync, (GLenum condition, GLbitfield flags)) \
612     F(GLboolean, IsSync, (GLsync sync)) \
613     F(void, DeleteSync, (GLsync sync)) \
614     F(GLenum, ClientWaitSync, (GLsync sync, GLbitfield flags, GLuint64 timeout)) \
615     F(void, WaitSync, (GLsync sync, GLbitfield flags, GLuint64 timeout)) \
616     F(void, GetInteger64v, (GLenum pname, GLint64 *data)) \
617     F(void, GetSynciv, (GLsync sync, GLenum pname, GLsizei bufSize, GLsizei *length, GLint *values)) \
618     F(void, GetInteger64i_v, (GLenum target, GLuint index, GLint64 *data)) \
619     F(void, GetBufferParameteri64v, (GLenum target, GLenum pname, GLint64 *params)) \
620     F(void, GenSamplers, (GLsizei count, GLuint *samplers)) \
621     F(void, DeleteSamplers, (GLsizei count, const GLuint *samplers)) \
622     F(GLboolean, IsSampler, (GLuint sampler)) \
623     F(void, BindSampler, (GLuint unit, GLuint sampler)) \
624     F(void, SamplerParameteri, (GLuint sampler, GLenum pname, GLint param)) \
625     F(void, SamplerParameteriv, (GLuint sampler, GLenum pname, const GLint *param)) \
626     F(void, SamplerParameterf, (GLuint sampler, GLenum pname, GLfloat param)) \
627     F(void, SamplerParameterfv, (GLuint sampler, GLenum pname, const GLfloat *param)) \
628     F(void, GetSamplerParameteriv, (GLuint sampler, GLenum pname, GLint *params)) \
629     F(void, GetSamplerParameterfv, (GLuint sampler, GLenum pname, GLfloat *params)) \
630     F(void, VertexAttribDivisor, (GLuint index, GLuint divisor)) \
631     F(void, BindTransformFeedback, (GLenum target, GLuint id)) \
632     F(void, DeleteTransformFeedbacks, (GLsizei n, const GLuint *ids)) \
633     F(void, GenTransformFeedbacks, (GLsizei n, GLuint *ids)) \
634     F(GLboolean, IsTransformFeedback, (GLuint id)) \
635     F(void, PauseTransformFeedback, (void)) \
636     F(void, ResumeTransformFeedback, (void)) \
637     F(void, GetProgramBinary, (GLuint program, GLsizei bufSize, GLsizei *length, GLenum *binaryFormat, void *binary)) \
638     F(void, ProgramBinary, (GLuint program, GLenum binaryFormat, const void *binary, GLsizei length)) \
639     F(void, ProgramParameteri, (GLuint program, GLenum pname, GLint value)) \
640     F(void, InvalidateFramebuffer, (GLenum target, GLsizei numAttachments, const GLenum *attachments)) \
641     F(void, InvalidateSubFramebuffer, (GLenum target, GLsizei numAttachments, const GLenum *attachments, GLint x, GLint y, GLsizei width, GLsizei height)) \
642     F(void, TexStorage2D, (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height)) \
643     F(void, TexStorage3D, (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth)) \
644     F(void, GetInternalformativ, (GLenum target, GLenum internalformat, GLenum pname, GLsizei bufSize, GLint *params)) \
645     F(void, DispatchCompute, (GLuint num_groups_x, GLuint num_groups_y, GLuint num_groups_z)) \
646     F(void, DispatchComputeIndirect, (GLintptr indirect)) \
647     F(void, DrawArraysIndirect, (GLenum mode, const void *indirect)) \
648     F(void, DrawElementsIndirect, (GLenum mode, GLenum type, const void *indirect)) \
649     F(void, FramebufferParameteri, (GLenum target, GLenum pname, GLint param)) \
650     F(void, GetFramebufferParameteriv, (GLenum target, GLenum pname, GLint *params)) \
651     F(void, GetProgramInterfaceiv, (GLuint program, GLenum programInterface, GLenum pname, GLint *params)) \
652     F(GLuint, GetProgramResourceIndex, (GLuint program, GLenum programInterface, const GLchar *name)) \
653     F(void, GetProgramResourceName, (GLuint program, GLenum programInterface, GLuint index, GLsizei bufSize, GLsizei *length, GLchar *name)) \
654     F(void, GetProgramResourceiv, (GLuint program, GLenum programInterface, GLuint index, GLsizei propCount, const GLenum *props, GLsizei bufSize, GLsizei *length, GLint *params)) \
655     F(GLint, GetProgramResourceLocation, (GLuint program, GLenum programInterface, const GLchar *name)) \
656     F(void, UseProgramStages, (GLuint pipeline, GLbitfield stages, GLuint program)) \
657     F(void, ActiveShaderProgram, (GLuint pipeline, GLuint program)) \
658     F(GLuint, CreateShaderProgramv, (GLenum type, GLsizei count, const GLchar *const*strings)) \
659     F(void, BindProgramPipeline, (GLuint pipeline)) \
660     F(void, DeleteProgramPipelines, (GLsizei n, const GLuint *pipelines)) \
661     F(void, GenProgramPipelines, (GLsizei n, GLuint *pipelines)) \
662     F(GLboolean, IsProgramPipeline, (GLuint pipeline)) \
663     F(void, GetProgramPipelineiv, (GLuint pipeline, GLenum pname, GLint *params)) \
664     F(void, ProgramUniform1i, (GLuint program, GLint location, GLint v0)) \
665     F(void, ProgramUniform2i, (GLuint program, GLint location, GLint v0, GLint v1)) \
666     F(void, ProgramUniform3i, (GLuint program, GLint location, GLint v0, GLint v1, GLint v2)) \
667     F(void, ProgramUniform4i, (GLuint program, GLint location, GLint v0, GLint v1, GLint v2, GLint v3)) \
668     F(void, ProgramUniform1ui, (GLuint program, GLint location, GLuint v0)) \
669     F(void, ProgramUniform2ui, (GLuint program, GLint location, GLuint v0, GLuint v1)) \
670     F(void, ProgramUniform3ui, (GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2)) \
671     F(void, ProgramUniform4ui, (GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3)) \
672     F(void, ProgramUniform1f, (GLuint program, GLint location, GLfloat v0)) \
673     F(void, ProgramUniform2f, (GLuint program, GLint location, GLfloat v0, GLfloat v1)) \
674     F(void, ProgramUniform3f, (GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2)) \
675     F(void, ProgramUniform4f, (GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3)) \
676     F(void, ProgramUniform1iv, (GLuint program, GLint location, GLsizei count, const GLint *value)) \
677     F(void, ProgramUniform2iv, (GLuint program, GLint location, GLsizei count, const GLint *value)) \
678     F(void, ProgramUniform3iv, (GLuint program, GLint location, GLsizei count, const GLint *value)) \
679     F(void, ProgramUniform4iv, (GLuint program, GLint location, GLsizei count, const GLint *value)) \
680     F(void, ProgramUniform1uiv, (GLuint program, GLint location, GLsizei count, const GLuint *value)) \
681     F(void, ProgramUniform2uiv, (GLuint program, GLint location, GLsizei count, const GLuint *value)) \
682     F(void, ProgramUniform3uiv, (GLuint program, GLint location, GLsizei count, const GLuint *value)) \
683     F(void, ProgramUniform4uiv, (GLuint program, GLint location, GLsizei count, const GLuint *value)) \
684     F(void, ProgramUniform1fv, (GLuint program, GLint location, GLsizei count, const GLfloat *value)) \
685     F(void, ProgramUniform2fv, (GLuint program, GLint location, GLsizei count, const GLfloat *value)) \
686     F(void, ProgramUniform3fv, (GLuint program, GLint location, GLsizei count, const GLfloat *value)) \
687     F(void, ProgramUniform4fv, (GLuint program, GLint location, GLsizei count, const GLfloat *value)) \
688     F(void, ProgramUniformMatrix2fv, (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)) \
689     F(void, ProgramUniformMatrix3fv, (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)) \
690     F(void, ProgramUniformMatrix4fv, (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)) \
691     F(void, ProgramUniformMatrix2x3fv, (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)) \
692     F(void, ProgramUniformMatrix3x2fv, (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)) \
693     F(void, ProgramUniformMatrix2x4fv, (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)) \
694     F(void, ProgramUniformMatrix4x2fv, (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)) \
695     F(void, ProgramUniformMatrix3x4fv, (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)) \
696     F(void, ProgramUniformMatrix4x3fv, (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)) \
697     F(void, ValidateProgramPipeline, (GLuint pipeline)) \
698     F(void, GetProgramPipelineInfoLog, (GLuint pipeline, GLsizei bufSize, GLsizei *length, GLchar *infoLog)) \
699     F(void, BindImageTexture, (GLuint unit, GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum access, GLenum format)) \
700     F(void, GetBooleani_v, (GLenum target, GLuint index, GLboolean *data)) \
701     F(void, MemoryBarrier, (GLbitfield barriers)) \
702     F(void, MemoryBarrierByRegion, (GLbitfield barriers)) \
703     F(void, TexStorage2DMultisample, (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations)) \
704     F(void, GetMultisamplefv, (GLenum pname, GLuint index, GLfloat *val)) \
705     F(void, SampleMaski, (GLuint maskNumber, GLbitfield mask)) \
706     F(void, GetTexLevelParameteriv, (GLenum target, GLint level, GLenum pname, GLint *params)) \
707     F(void, GetTexLevelParameterfv, (GLenum target, GLint level, GLenum pname, GLfloat *params)) \
708     F(void, BindVertexBuffer, (GLuint bindingindex, GLuint buffer, GLintptr offset, GLsizei stride)) \
709     F(void, VertexAttribFormat, (GLuint attribindex, GLint size, GLenum type, GLboolean normalized, GLuint relativeoffset)) \
710     F(void, VertexAttribIFormat, (GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset)) \
711     F(void, VertexAttribBinding, (GLuint attribindex, GLuint bindingindex)) \
712     F(void, VertexBindingDivisor, (GLuint bindingindex, GLuint divisor)) \
713     F(void, BlendBarrier, (void)) \
714     F(void, BlendEquationSeparatei, (GLuint buf, GLenum modeRGB, GLenum modeAlpha)) \
715     F(void, BlendEquationi, (GLuint buf, GLenum mode))              \
716     F(void, BlendFuncSeparatei, (GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha)) \
717     F(void, BlendFunci, (GLuint buf, GLenum src, GLenum dst)) \
718     F(void, ColorMaski, (GLuint index, GLboolean r, GLboolean g, GLboolean b, GLboolean a)) \
719     F(void, CopyImageSubData, (GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srcY, GLint srcZ, GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei srcWidth, GLsizei srcHeight, GLsizei srcDepth)) \
720     F(void, DebugMessageCallback, (GLDEBUGPROC callback, const void * userParam)) \
721     F(void, DebugMessageControl, (GLenum source, GLenum type, GLenum severity, GLsizei count, const GLuint * ids, GLboolean enabled)) \
722     F(void, DebugMessageInsert, (GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar * buf)) \
723     F(void, Disablei, (GLenum target, GLuint index)) \
724     F(void, DrawElementsBaseVertex, (GLenum mode, GLsizei count, GLenum type, const void * indices, GLint basevertex)) \
725     F(void, DrawElementsInstancedBaseVertex, (GLenum mode, GLsizei count, GLenum type, const void * indices, GLsizei instancecount, GLint basevertex)) \
726     F(void, DrawRangeElementsBaseVertex, (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void * indices, GLint basevertex)) \
727     F(void, Enablei, (GLenum target, GLuint index)) \
728     F(void, FramebufferTexture, (GLenum target, GLenum attachment, GLuint texture, GLint level)) \
729     F(GLuint, GetDebugMessageLog, (GLuint count, GLsizei bufSize, GLenum* sources, GLenum* types, GLuint* ids, GLenum* severities, GLsizei* lengths, GLchar* messageLog)) \
730     F(GLenum, GetGraphicsResetStatus, (void)) \
731     F(void, GetObjectLabel, (GLenum identifier, GLuint name, GLsizei bufSize, GLsizei* length, GLchar* label)) \
732     F(void, GetObjectPtrLabel, (const void * ptr, GLsizei bufSize, GLsizei* length, GLchar* label)) \
733     F(void, GetPointerv, (GLenum pname, void ** params)) \
734     F(void, GetSamplerParameterIiv, (GLuint sampler, GLenum pname, GLint* params)) \
735     F(void, GetSamplerParameterIuiv, (GLuint sampler, GLenum pname, GLuint* params)) \
736     F(void, GetTexParameterIiv, (GLenum target, GLenum pname, GLint* params)) \
737     F(void, GetTexParameterIuiv, (GLenum target, GLenum pname, GLuint* params)) \
738     F(void, GetnUniformfv, (GLuint program, GLint location, GLsizei bufSize, GLfloat* params)) \
739     F(void, GetnUniformiv, (GLuint program, GLint location, GLsizei bufSize, GLint* params)) \
740     F(void, GetnUniformuiv, (GLuint program, GLint location, GLsizei bufSize, GLuint* params)) \
741     F(GLboolean, IsEnabledi, (GLenum target, GLuint index)) \
742     F(void, MinSampleShading, (GLfloat value)) \
743     F(void, ObjectLabel, (GLenum identifier, GLuint name, GLsizei length, const GLchar * label)) \
744     F(void, ObjectPtrLabel, (const void * ptr, GLsizei length, const GLchar * label)) \
745     F(void, PatchParameteri, (GLenum pname, GLint value)) \
746     F(void, PopDebugGroup, (void)) \
747     F(void, PrimitiveBoundingBox, (GLfloat minX, GLfloat minY, GLfloat minZ, GLfloat minW, GLfloat maxX, GLfloat maxY, GLfloat maxZ, GLfloat maxW)) \
748     F(void, PushDebugGroup, (GLenum source, GLuint id, GLsizei length, const GLchar * message)) \
749     F(void, ReadnPixels, (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLsizei bufSize, void * data)) \
750     F(void, SamplerParameterIiv, (GLuint sampler, GLenum pname, const GLint * param)) \
751     F(void, SamplerParameterIuiv, (GLuint sampler, GLenum pname, const GLuint * param)) \
752     F(void, TexBuffer, (GLenum target, GLenum internalformat, GLuint buffer)) \
753     F(void, TexBufferRange, (GLenum target, GLenum internalformat, GLuint buffer, GLintptr offset, GLsizeiptr size)) \
754     F(void, TexParameterIiv, (GLenum target, GLenum pname, const GLint * params)) \
755     F(void, TexParameterIuiv, (GLenum target, GLenum pname, const GLuint * params)) \
756     F(void, TexStorage3DMultisample, (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations)) \
757 
758     QT_OPENGL_DECLARE(QT_OPENGL_EXTRA_FUNCTIONS)
759 };
760 
761 // GLES 3.0 and 3.1
762 
glBeginQuery(GLenum target,GLuint id)763 inline void QOpenGLExtraFunctions::glBeginQuery(GLenum target, GLuint id)
764 {
765     Q_D(QOpenGLExtraFunctions);
766     Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
767     d->f.BeginQuery(target, id);
768     Q_OPENGL_FUNCTIONS_DEBUG
769 }
770 
glBeginTransformFeedback(GLenum primitiveMode)771 inline void QOpenGLExtraFunctions::glBeginTransformFeedback(GLenum primitiveMode)
772 {
773     Q_D(QOpenGLExtraFunctions);
774     Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
775     d->f.BeginTransformFeedback(primitiveMode);
776     Q_OPENGL_FUNCTIONS_DEBUG
777 }
778 
glBindBufferBase(GLenum target,GLuint index,GLuint buffer)779 inline void QOpenGLExtraFunctions::glBindBufferBase(GLenum target, GLuint index, GLuint buffer)
780 {
781     Q_D(QOpenGLExtraFunctions);
782     Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
783     d->f.BindBufferBase(target, index, buffer);
784     Q_OPENGL_FUNCTIONS_DEBUG
785 }
786 
glBindBufferRange(GLenum target,GLuint index,GLuint buffer,GLintptr offset,GLsizeiptr size)787 inline void QOpenGLExtraFunctions::glBindBufferRange(GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size)
788 {
789     Q_D(QOpenGLExtraFunctions);
790     Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
791     d->f.BindBufferRange(target, index, buffer, offset, size);
792     Q_OPENGL_FUNCTIONS_DEBUG
793 }
794 
glBindSampler(GLuint unit,GLuint sampler)795 inline void QOpenGLExtraFunctions::glBindSampler(GLuint unit, GLuint sampler)
796 {
797     Q_D(QOpenGLExtraFunctions);
798     Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
799     d->f.BindSampler(unit, sampler);
800     Q_OPENGL_FUNCTIONS_DEBUG
801 }
802 
glBindTransformFeedback(GLenum target,GLuint id)803 inline void QOpenGLExtraFunctions::glBindTransformFeedback(GLenum target, GLuint id)
804 {
805     Q_D(QOpenGLExtraFunctions);
806     Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
807     d->f.BindTransformFeedback(target, id);
808     Q_OPENGL_FUNCTIONS_DEBUG
809 }
810 
glBindVertexArray(GLuint array)811 inline void QOpenGLExtraFunctions::glBindVertexArray(GLuint array)
812 {
813     Q_D(QOpenGLExtraFunctions);
814     Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
815     d->f.BindVertexArray(array);
816     Q_OPENGL_FUNCTIONS_DEBUG
817 }
818 
glBlitFramebuffer(GLint srcX0,GLint srcY0,GLint srcX1,GLint srcY1,GLint dstX0,GLint dstY0,GLint dstX1,GLint dstY1,GLbitfield mask,GLenum filter)819 inline void QOpenGLExtraFunctions::glBlitFramebuffer(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter)
820 {
821     Q_D(QOpenGLExtraFunctions);
822     Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
823     d->f.BlitFramebuffer(srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask, filter);
824     Q_OPENGL_FUNCTIONS_DEBUG
825 }
826 
glClearBufferfi(GLenum buffer,GLint drawbuffer,GLfloat depth,GLint stencil)827 inline void QOpenGLExtraFunctions::glClearBufferfi(GLenum buffer, GLint drawbuffer, GLfloat depth, GLint stencil)
828 {
829     Q_D(QOpenGLExtraFunctions);
830     Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
831     d->f.ClearBufferfi(buffer, drawbuffer, depth, stencil);
832     Q_OPENGL_FUNCTIONS_DEBUG
833 }
834 
glClearBufferfv(GLenum buffer,GLint drawbuffer,const GLfloat * value)835 inline void QOpenGLExtraFunctions::glClearBufferfv(GLenum buffer, GLint drawbuffer, const GLfloat * value)
836 {
837     Q_D(QOpenGLExtraFunctions);
838     Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
839     d->f.ClearBufferfv(buffer, drawbuffer, value);
840     Q_OPENGL_FUNCTIONS_DEBUG
841 }
842 
glClearBufferiv(GLenum buffer,GLint drawbuffer,const GLint * value)843 inline void QOpenGLExtraFunctions::glClearBufferiv(GLenum buffer, GLint drawbuffer, const GLint * value)
844 {
845     Q_D(QOpenGLExtraFunctions);
846     Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
847     d->f.ClearBufferiv(buffer, drawbuffer, value);
848     Q_OPENGL_FUNCTIONS_DEBUG
849 }
850 
glClearBufferuiv(GLenum buffer,GLint drawbuffer,const GLuint * value)851 inline void QOpenGLExtraFunctions::glClearBufferuiv(GLenum buffer, GLint drawbuffer, const GLuint * value)
852 {
853     Q_D(QOpenGLExtraFunctions);
854     Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
855     d->f.ClearBufferuiv(buffer, drawbuffer, value);
856     Q_OPENGL_FUNCTIONS_DEBUG
857 }
858 
glClientWaitSync(GLsync sync,GLbitfield flags,GLuint64 timeout)859 inline GLenum QOpenGLExtraFunctions::glClientWaitSync(GLsync sync, GLbitfield flags, GLuint64 timeout)
860 {
861     Q_D(QOpenGLExtraFunctions);
862     Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
863     GLenum result = d->f.ClientWaitSync(sync, flags, timeout);
864     Q_OPENGL_FUNCTIONS_DEBUG
865     return result;
866 }
867 
glCompressedTexImage3D(GLenum target,GLint level,GLenum internalformat,GLsizei width,GLsizei height,GLsizei depth,GLint border,GLsizei imageSize,const void * data)868 inline void QOpenGLExtraFunctions::glCompressedTexImage3D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void * data)
869 {
870     Q_D(QOpenGLExtraFunctions);
871     Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
872     d->f.CompressedTexImage3D(target, level, internalformat, width, height, depth, border, imageSize, data);
873     Q_OPENGL_FUNCTIONS_DEBUG
874 }
875 
glCompressedTexSubImage3D(GLenum target,GLint level,GLint xoffset,GLint yoffset,GLint zoffset,GLsizei width,GLsizei height,GLsizei depth,GLenum format,GLsizei imageSize,const void * data)876 inline void QOpenGLExtraFunctions::glCompressedTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void * data)
877 {
878     Q_D(QOpenGLExtraFunctions);
879     Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
880     d->f.CompressedTexSubImage3D(target, level, xoffset, yoffset, zoffset, width, height, depth, format, imageSize, data);
881     Q_OPENGL_FUNCTIONS_DEBUG
882 }
883 
glCopyBufferSubData(GLenum readTarget,GLenum writeTarget,GLintptr readOffset,GLintptr writeOffset,GLsizeiptr size)884 inline void QOpenGLExtraFunctions::glCopyBufferSubData(GLenum readTarget, GLenum writeTarget, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size)
885 {
886     Q_D(QOpenGLExtraFunctions);
887     Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
888     d->f.CopyBufferSubData(readTarget, writeTarget, readOffset, writeOffset, size);
889     Q_OPENGL_FUNCTIONS_DEBUG
890 }
891 
glCopyTexSubImage3D(GLenum target,GLint level,GLint xoffset,GLint yoffset,GLint zoffset,GLint x,GLint y,GLsizei width,GLsizei height)892 inline void QOpenGLExtraFunctions::glCopyTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height)
893 {
894     Q_D(QOpenGLExtraFunctions);
895     Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
896     d->f.CopyTexSubImage3D(target, level, xoffset, yoffset, zoffset, x, y, width, height);
897     Q_OPENGL_FUNCTIONS_DEBUG
898 }
899 
glDeleteQueries(GLsizei n,const GLuint * ids)900 inline void QOpenGLExtraFunctions::glDeleteQueries(GLsizei n, const GLuint * ids)
901 {
902     Q_D(QOpenGLExtraFunctions);
903     Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
904     d->f.DeleteQueries(n, ids);
905     Q_OPENGL_FUNCTIONS_DEBUG
906 }
907 
glDeleteSamplers(GLsizei count,const GLuint * samplers)908 inline void QOpenGLExtraFunctions::glDeleteSamplers(GLsizei count, const GLuint * samplers)
909 {
910     Q_D(QOpenGLExtraFunctions);
911     Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
912     d->f.DeleteSamplers(count, samplers);
913     Q_OPENGL_FUNCTIONS_DEBUG
914 }
915 
glDeleteSync(GLsync sync)916 inline void QOpenGLExtraFunctions::glDeleteSync(GLsync sync)
917 {
918     Q_D(QOpenGLExtraFunctions);
919     Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
920     d->f.DeleteSync(sync);
921     Q_OPENGL_FUNCTIONS_DEBUG
922 }
923 
glDeleteTransformFeedbacks(GLsizei n,const GLuint * ids)924 inline void QOpenGLExtraFunctions::glDeleteTransformFeedbacks(GLsizei n, const GLuint * ids)
925 {
926     Q_D(QOpenGLExtraFunctions);
927     Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
928     d->f.DeleteTransformFeedbacks(n, ids);
929     Q_OPENGL_FUNCTIONS_DEBUG
930 }
931 
glDeleteVertexArrays(GLsizei n,const GLuint * arrays)932 inline void QOpenGLExtraFunctions::glDeleteVertexArrays(GLsizei n, const GLuint * arrays)
933 {
934     Q_D(QOpenGLExtraFunctions);
935     Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
936     d->f.DeleteVertexArrays(n, arrays);
937     Q_OPENGL_FUNCTIONS_DEBUG
938 }
939 
glDrawArraysInstanced(GLenum mode,GLint first,GLsizei count,GLsizei instancecount)940 inline void QOpenGLExtraFunctions::glDrawArraysInstanced(GLenum mode, GLint first, GLsizei count, GLsizei instancecount)
941 {
942     Q_D(QOpenGLExtraFunctions);
943     Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
944     d->f.DrawArraysInstanced(mode, first, count, instancecount);
945     Q_OPENGL_FUNCTIONS_DEBUG
946 }
947 
glDrawBuffers(GLsizei n,const GLenum * bufs)948 inline void QOpenGLExtraFunctions::glDrawBuffers(GLsizei n, const GLenum * bufs)
949 {
950     Q_D(QOpenGLExtraFunctions);
951     Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
952     d->f.DrawBuffers(n, bufs);
953     Q_OPENGL_FUNCTIONS_DEBUG
954 }
955 
glDrawElementsInstanced(GLenum mode,GLsizei count,GLenum type,const void * indices,GLsizei instancecount)956 inline void QOpenGLExtraFunctions::glDrawElementsInstanced(GLenum mode, GLsizei count, GLenum type, const void * indices, GLsizei instancecount)
957 {
958     Q_D(QOpenGLExtraFunctions);
959     Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
960     d->f.DrawElementsInstanced(mode, count, type, indices, instancecount);
961     Q_OPENGL_FUNCTIONS_DEBUG
962 }
963 
glDrawRangeElements(GLenum mode,GLuint start,GLuint end,GLsizei count,GLenum type,const void * indices)964 inline void QOpenGLExtraFunctions::glDrawRangeElements(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void * indices)
965 {
966     Q_D(QOpenGLExtraFunctions);
967     Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
968     d->f.DrawRangeElements(mode, start, end, count, type, indices);
969     Q_OPENGL_FUNCTIONS_DEBUG
970 }
971 
glEndQuery(GLenum target)972 inline void QOpenGLExtraFunctions::glEndQuery(GLenum target)
973 {
974     Q_D(QOpenGLExtraFunctions);
975     Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
976     d->f.EndQuery(target);
977     Q_OPENGL_FUNCTIONS_DEBUG
978 }
979 
glEndTransformFeedback()980 inline void QOpenGLExtraFunctions::glEndTransformFeedback()
981 {
982     Q_D(QOpenGLExtraFunctions);
983     Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
984     d->f.EndTransformFeedback();
985     Q_OPENGL_FUNCTIONS_DEBUG
986 }
987 
glFenceSync(GLenum condition,GLbitfield flags)988 inline GLsync QOpenGLExtraFunctions::glFenceSync(GLenum condition, GLbitfield flags)
989 {
990     Q_D(QOpenGLExtraFunctions);
991     Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
992     GLsync result = d->f.FenceSync(condition, flags);
993     Q_OPENGL_FUNCTIONS_DEBUG
994     return result;
995 }
996 
glFlushMappedBufferRange(GLenum target,GLintptr offset,GLsizeiptr length)997 inline void QOpenGLExtraFunctions::glFlushMappedBufferRange(GLenum target, GLintptr offset, GLsizeiptr length)
998 {
999     Q_D(QOpenGLExtraFunctions);
1000     Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1001     d->f.FlushMappedBufferRange(target, offset, length);
1002     Q_OPENGL_FUNCTIONS_DEBUG
1003 }
1004 
glFramebufferTextureLayer(GLenum target,GLenum attachment,GLuint texture,GLint level,GLint layer)1005 inline void QOpenGLExtraFunctions::glFramebufferTextureLayer(GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer)
1006 {
1007     Q_D(QOpenGLExtraFunctions);
1008     Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1009     d->f.FramebufferTextureLayer(target, attachment, texture, level, layer);
1010     Q_OPENGL_FUNCTIONS_DEBUG
1011 }
1012 
glGenQueries(GLsizei n,GLuint * ids)1013 inline void QOpenGLExtraFunctions::glGenQueries(GLsizei n, GLuint* ids)
1014 {
1015     Q_D(QOpenGLExtraFunctions);
1016     Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1017     d->f.GenQueries(n, ids);
1018     Q_OPENGL_FUNCTIONS_DEBUG
1019 }
1020 
glGenSamplers(GLsizei count,GLuint * samplers)1021 inline void QOpenGLExtraFunctions::glGenSamplers(GLsizei count, GLuint* samplers)
1022 {
1023     Q_D(QOpenGLExtraFunctions);
1024     Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1025     d->f.GenSamplers(count, samplers);
1026     Q_OPENGL_FUNCTIONS_DEBUG
1027 }
1028 
glGenTransformFeedbacks(GLsizei n,GLuint * ids)1029 inline void QOpenGLExtraFunctions::glGenTransformFeedbacks(GLsizei n, GLuint* ids)
1030 {
1031     Q_D(QOpenGLExtraFunctions);
1032     Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1033     d->f.GenTransformFeedbacks(n, ids);
1034     Q_OPENGL_FUNCTIONS_DEBUG
1035 }
1036 
glGenVertexArrays(GLsizei n,GLuint * arrays)1037 inline void QOpenGLExtraFunctions::glGenVertexArrays(GLsizei n, GLuint* arrays)
1038 {
1039     Q_D(QOpenGLExtraFunctions);
1040     Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1041     d->f.GenVertexArrays(n, arrays);
1042     Q_OPENGL_FUNCTIONS_DEBUG
1043 }
1044 
glGetActiveUniformBlockName(GLuint program,GLuint uniformBlockIndex,GLsizei bufSize,GLsizei * length,GLchar * uniformBlockName)1045 inline void QOpenGLExtraFunctions::glGetActiveUniformBlockName(GLuint program, GLuint uniformBlockIndex, GLsizei bufSize, GLsizei* length, GLchar* uniformBlockName)
1046 {
1047     Q_D(QOpenGLExtraFunctions);
1048     Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1049     d->f.GetActiveUniformBlockName(program, uniformBlockIndex, bufSize, length, uniformBlockName);
1050     Q_OPENGL_FUNCTIONS_DEBUG
1051 }
1052 
glGetActiveUniformBlockiv(GLuint program,GLuint uniformBlockIndex,GLenum pname,GLint * params)1053 inline void QOpenGLExtraFunctions::glGetActiveUniformBlockiv(GLuint program, GLuint uniformBlockIndex, GLenum pname, GLint* params)
1054 {
1055     Q_D(QOpenGLExtraFunctions);
1056     Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1057     d->f.GetActiveUniformBlockiv(program, uniformBlockIndex, pname, params);
1058     Q_OPENGL_FUNCTIONS_DEBUG
1059 }
1060 
glGetActiveUniformsiv(GLuint program,GLsizei uniformCount,const GLuint * uniformIndices,GLenum pname,GLint * params)1061 inline void QOpenGLExtraFunctions::glGetActiveUniformsiv(GLuint program, GLsizei uniformCount, const GLuint * uniformIndices, GLenum pname, GLint* params)
1062 {
1063     Q_D(QOpenGLExtraFunctions);
1064     Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1065     d->f.GetActiveUniformsiv(program, uniformCount, uniformIndices, pname, params);
1066     Q_OPENGL_FUNCTIONS_DEBUG
1067 }
1068 
glGetBufferParameteri64v(GLenum target,GLenum pname,GLint64 * params)1069 inline void QOpenGLExtraFunctions::glGetBufferParameteri64v(GLenum target, GLenum pname, GLint64* params)
1070 {
1071     Q_D(QOpenGLExtraFunctions);
1072     Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1073     d->f.GetBufferParameteri64v(target, pname, params);
1074     Q_OPENGL_FUNCTIONS_DEBUG
1075 }
1076 
glGetBufferPointerv(GLenum target,GLenum pname,void ** params)1077 inline void QOpenGLExtraFunctions::glGetBufferPointerv(GLenum target, GLenum pname, void ** params)
1078 {
1079     Q_D(QOpenGLExtraFunctions);
1080     Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1081     d->f.GetBufferPointerv(target, pname, params);
1082     Q_OPENGL_FUNCTIONS_DEBUG
1083 }
1084 
glGetFragDataLocation(GLuint program,const GLchar * name)1085 inline GLint QOpenGLExtraFunctions::glGetFragDataLocation(GLuint program, const GLchar * name)
1086 {
1087     Q_D(QOpenGLExtraFunctions);
1088     Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1089     GLint result = d->f.GetFragDataLocation(program, name);
1090     Q_OPENGL_FUNCTIONS_DEBUG
1091     return result;
1092 }
1093 
glGetInteger64i_v(GLenum target,GLuint index,GLint64 * data)1094 inline void QOpenGLExtraFunctions::glGetInteger64i_v(GLenum target, GLuint index, GLint64* data)
1095 {
1096     Q_D(QOpenGLExtraFunctions);
1097     Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1098     d->f.GetInteger64i_v(target, index, data);
1099     Q_OPENGL_FUNCTIONS_DEBUG
1100 }
1101 
glGetInteger64v(GLenum pname,GLint64 * data)1102 inline void QOpenGLExtraFunctions::glGetInteger64v(GLenum pname, GLint64* data)
1103 {
1104     Q_D(QOpenGLExtraFunctions);
1105     Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1106     d->f.GetInteger64v(pname, data);
1107     Q_OPENGL_FUNCTIONS_DEBUG
1108 }
1109 
glGetIntegeri_v(GLenum target,GLuint index,GLint * data)1110 inline void QOpenGLExtraFunctions::glGetIntegeri_v(GLenum target, GLuint index, GLint* data)
1111 {
1112     Q_D(QOpenGLExtraFunctions);
1113     Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1114     d->f.GetIntegeri_v(target, index, data);
1115     Q_OPENGL_FUNCTIONS_DEBUG
1116 }
1117 
glGetInternalformativ(GLenum target,GLenum internalformat,GLenum pname,GLsizei bufSize,GLint * params)1118 inline void QOpenGLExtraFunctions::glGetInternalformativ(GLenum target, GLenum internalformat, GLenum pname, GLsizei bufSize, GLint* params)
1119 {
1120     Q_D(QOpenGLExtraFunctions);
1121     Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1122     d->f.GetInternalformativ(target, internalformat, pname, bufSize, params);
1123     Q_OPENGL_FUNCTIONS_DEBUG
1124 }
1125 
glGetProgramBinary(GLuint program,GLsizei bufSize,GLsizei * length,GLenum * binaryFormat,void * binary)1126 inline void QOpenGLExtraFunctions::glGetProgramBinary(GLuint program, GLsizei bufSize, GLsizei* length, GLenum* binaryFormat, void * binary)
1127 {
1128     Q_D(QOpenGLExtraFunctions);
1129     Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1130     d->f.GetProgramBinary(program, bufSize, length, binaryFormat, binary);
1131     Q_OPENGL_FUNCTIONS_DEBUG
1132 }
1133 
glGetQueryObjectuiv(GLuint id,GLenum pname,GLuint * params)1134 inline void QOpenGLExtraFunctions::glGetQueryObjectuiv(GLuint id, GLenum pname, GLuint* params)
1135 {
1136     Q_D(QOpenGLExtraFunctions);
1137     Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1138     d->f.GetQueryObjectuiv(id, pname, params);
1139     Q_OPENGL_FUNCTIONS_DEBUG
1140 }
1141 
glGetQueryiv(GLenum target,GLenum pname,GLint * params)1142 inline void QOpenGLExtraFunctions::glGetQueryiv(GLenum target, GLenum pname, GLint* params)
1143 {
1144     Q_D(QOpenGLExtraFunctions);
1145     Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1146     d->f.GetQueryiv(target, pname, params);
1147     Q_OPENGL_FUNCTIONS_DEBUG
1148 }
1149 
glGetSamplerParameterfv(GLuint sampler,GLenum pname,GLfloat * params)1150 inline void QOpenGLExtraFunctions::glGetSamplerParameterfv(GLuint sampler, GLenum pname, GLfloat* params)
1151 {
1152     Q_D(QOpenGLExtraFunctions);
1153     Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1154     d->f.GetSamplerParameterfv(sampler, pname, params);
1155     Q_OPENGL_FUNCTIONS_DEBUG
1156 }
1157 
glGetSamplerParameteriv(GLuint sampler,GLenum pname,GLint * params)1158 inline void QOpenGLExtraFunctions::glGetSamplerParameteriv(GLuint sampler, GLenum pname, GLint* params)
1159 {
1160     Q_D(QOpenGLExtraFunctions);
1161     Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1162     d->f.GetSamplerParameteriv(sampler, pname, params);
1163     Q_OPENGL_FUNCTIONS_DEBUG
1164 }
1165 
glGetStringi(GLenum name,GLuint index)1166 inline const GLubyte * QOpenGLExtraFunctions::glGetStringi(GLenum name, GLuint index)
1167 {
1168     Q_D(QOpenGLExtraFunctions);
1169     Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1170     const GLubyte * result = d->f.GetStringi(name, index);
1171     Q_OPENGL_FUNCTIONS_DEBUG
1172     return result;
1173 }
1174 
glGetSynciv(GLsync sync,GLenum pname,GLsizei bufSize,GLsizei * length,GLint * values)1175 inline void QOpenGLExtraFunctions::glGetSynciv(GLsync sync, GLenum pname, GLsizei bufSize, GLsizei* length, GLint* values)
1176 {
1177     Q_D(QOpenGLExtraFunctions);
1178     Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1179     d->f.GetSynciv(sync, pname, bufSize, length, values);
1180     Q_OPENGL_FUNCTIONS_DEBUG
1181 }
1182 
glGetTransformFeedbackVarying(GLuint program,GLuint index,GLsizei bufSize,GLsizei * length,GLsizei * size,GLenum * type,GLchar * name)1183 inline void QOpenGLExtraFunctions::glGetTransformFeedbackVarying(GLuint program, GLuint index, GLsizei bufSize, GLsizei* length, GLsizei* size, GLenum* type, GLchar* name)
1184 {
1185     Q_D(QOpenGLExtraFunctions);
1186     Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1187     d->f.GetTransformFeedbackVarying(program, index, bufSize, length, size, type, name);
1188     Q_OPENGL_FUNCTIONS_DEBUG
1189 }
1190 
glGetUniformBlockIndex(GLuint program,const GLchar * uniformBlockName)1191 inline GLuint QOpenGLExtraFunctions::glGetUniformBlockIndex(GLuint program, const GLchar * uniformBlockName)
1192 {
1193     Q_D(QOpenGLExtraFunctions);
1194     Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1195     GLuint result = d->f.GetUniformBlockIndex(program, uniformBlockName);
1196     Q_OPENGL_FUNCTIONS_DEBUG
1197     return result;
1198 }
1199 
glGetUniformIndices(GLuint program,GLsizei uniformCount,const GLchar * const * uniformNames,GLuint * uniformIndices)1200 inline void QOpenGLExtraFunctions::glGetUniformIndices(GLuint program, GLsizei uniformCount, const GLchar *const* uniformNames, GLuint* uniformIndices)
1201 {
1202     Q_D(QOpenGLExtraFunctions);
1203     Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1204     d->f.GetUniformIndices(program, uniformCount, uniformNames, uniformIndices);
1205     Q_OPENGL_FUNCTIONS_DEBUG
1206 }
1207 
glGetUniformuiv(GLuint program,GLint location,GLuint * params)1208 inline void QOpenGLExtraFunctions::glGetUniformuiv(GLuint program, GLint location, GLuint* params)
1209 {
1210     Q_D(QOpenGLExtraFunctions);
1211     Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1212     d->f.GetUniformuiv(program, location, params);
1213     Q_OPENGL_FUNCTIONS_DEBUG
1214 }
1215 
glGetVertexAttribIiv(GLuint index,GLenum pname,GLint * params)1216 inline void QOpenGLExtraFunctions::glGetVertexAttribIiv(GLuint index, GLenum pname, GLint* params)
1217 {
1218     Q_D(QOpenGLExtraFunctions);
1219     Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1220     d->f.GetVertexAttribIiv(index, pname, params);
1221     Q_OPENGL_FUNCTIONS_DEBUG
1222 }
1223 
glGetVertexAttribIuiv(GLuint index,GLenum pname,GLuint * params)1224 inline void QOpenGLExtraFunctions::glGetVertexAttribIuiv(GLuint index, GLenum pname, GLuint* params)
1225 {
1226     Q_D(QOpenGLExtraFunctions);
1227     Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1228     d->f.GetVertexAttribIuiv(index, pname, params);
1229     Q_OPENGL_FUNCTIONS_DEBUG
1230 }
1231 
glInvalidateFramebuffer(GLenum target,GLsizei numAttachments,const GLenum * attachments)1232 inline void QOpenGLExtraFunctions::glInvalidateFramebuffer(GLenum target, GLsizei numAttachments, const GLenum * attachments)
1233 {
1234     Q_D(QOpenGLExtraFunctions);
1235     Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1236     d->f.InvalidateFramebuffer(target, numAttachments, attachments);
1237     Q_OPENGL_FUNCTIONS_DEBUG
1238 }
1239 
glInvalidateSubFramebuffer(GLenum target,GLsizei numAttachments,const GLenum * attachments,GLint x,GLint y,GLsizei width,GLsizei height)1240 inline void QOpenGLExtraFunctions::glInvalidateSubFramebuffer(GLenum target, GLsizei numAttachments, const GLenum * attachments, GLint x, GLint y, GLsizei width, GLsizei height)
1241 {
1242     Q_D(QOpenGLExtraFunctions);
1243     Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1244     d->f.InvalidateSubFramebuffer(target, numAttachments, attachments, x, y, width, height);
1245     Q_OPENGL_FUNCTIONS_DEBUG
1246 }
1247 
glIsQuery(GLuint id)1248 inline GLboolean QOpenGLExtraFunctions::glIsQuery(GLuint id)
1249 {
1250     Q_D(QOpenGLExtraFunctions);
1251     Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1252     GLboolean result = d->f.IsQuery(id);
1253     Q_OPENGL_FUNCTIONS_DEBUG
1254     return result;
1255 }
1256 
glIsSampler(GLuint sampler)1257 inline GLboolean QOpenGLExtraFunctions::glIsSampler(GLuint sampler)
1258 {
1259     Q_D(QOpenGLExtraFunctions);
1260     Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1261     GLboolean result = d->f.IsSampler(sampler);
1262     Q_OPENGL_FUNCTIONS_DEBUG
1263     return result;
1264 }
1265 
glIsSync(GLsync sync)1266 inline GLboolean QOpenGLExtraFunctions::glIsSync(GLsync sync)
1267 {
1268     Q_D(QOpenGLExtraFunctions);
1269     Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1270     GLboolean result = d->f.IsSync(sync);
1271     Q_OPENGL_FUNCTIONS_DEBUG
1272     return result;
1273 }
1274 
glIsTransformFeedback(GLuint id)1275 inline GLboolean QOpenGLExtraFunctions::glIsTransformFeedback(GLuint id)
1276 {
1277     Q_D(QOpenGLExtraFunctions);
1278     Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1279     GLboolean result = d->f.IsTransformFeedback(id);
1280     Q_OPENGL_FUNCTIONS_DEBUG
1281     return result;
1282 }
1283 
glIsVertexArray(GLuint array)1284 inline GLboolean QOpenGLExtraFunctions::glIsVertexArray(GLuint array)
1285 {
1286     Q_D(QOpenGLExtraFunctions);
1287     Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1288     GLboolean result = d->f.IsVertexArray(array);
1289     Q_OPENGL_FUNCTIONS_DEBUG
1290     return result;
1291 }
1292 
glMapBufferRange(GLenum target,GLintptr offset,GLsizeiptr length,GLbitfield access)1293 inline void * QOpenGLExtraFunctions::glMapBufferRange(GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access)
1294 {
1295     Q_D(QOpenGLExtraFunctions);
1296     Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1297     void *result = d->f.MapBufferRange(target, offset, length, access);
1298     Q_OPENGL_FUNCTIONS_DEBUG
1299     return result;
1300 }
1301 
glPauseTransformFeedback()1302 inline void QOpenGLExtraFunctions::glPauseTransformFeedback()
1303 {
1304     Q_D(QOpenGLExtraFunctions);
1305     Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1306     d->f.PauseTransformFeedback();
1307     Q_OPENGL_FUNCTIONS_DEBUG
1308 }
1309 
glProgramBinary(GLuint program,GLenum binaryFormat,const void * binary,GLsizei length)1310 inline void QOpenGLExtraFunctions::glProgramBinary(GLuint program, GLenum binaryFormat, const void * binary, GLsizei length)
1311 {
1312     Q_D(QOpenGLExtraFunctions);
1313     Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1314     d->f.ProgramBinary(program, binaryFormat, binary, length);
1315     Q_OPENGL_FUNCTIONS_DEBUG
1316 }
1317 
glProgramParameteri(GLuint program,GLenum pname,GLint value)1318 inline void QOpenGLExtraFunctions::glProgramParameteri(GLuint program, GLenum pname, GLint value)
1319 {
1320     Q_D(QOpenGLExtraFunctions);
1321     Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1322     d->f.ProgramParameteri(program, pname, value);
1323     Q_OPENGL_FUNCTIONS_DEBUG
1324 }
1325 
glReadBuffer(GLenum src)1326 inline void QOpenGLExtraFunctions::glReadBuffer(GLenum src)
1327 {
1328     Q_D(QOpenGLExtraFunctions);
1329     Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1330     d->f.ReadBuffer(src);
1331     Q_OPENGL_FUNCTIONS_DEBUG
1332 }
1333 
glRenderbufferStorageMultisample(GLenum target,GLsizei samples,GLenum internalformat,GLsizei width,GLsizei height)1334 inline void QOpenGLExtraFunctions::glRenderbufferStorageMultisample(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height)
1335 {
1336     Q_D(QOpenGLExtraFunctions);
1337     Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1338     d->f.RenderbufferStorageMultisample(target, samples, internalformat, width, height);
1339     Q_OPENGL_FUNCTIONS_DEBUG
1340 }
1341 
glResumeTransformFeedback()1342 inline void QOpenGLExtraFunctions::glResumeTransformFeedback()
1343 {
1344     Q_D(QOpenGLExtraFunctions);
1345     Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1346     d->f.ResumeTransformFeedback();
1347     Q_OPENGL_FUNCTIONS_DEBUG
1348 }
1349 
glSamplerParameterf(GLuint sampler,GLenum pname,GLfloat param)1350 inline void QOpenGLExtraFunctions::glSamplerParameterf(GLuint sampler, GLenum pname, GLfloat param)
1351 {
1352     Q_D(QOpenGLExtraFunctions);
1353     Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1354     d->f.SamplerParameterf(sampler, pname, param);
1355     Q_OPENGL_FUNCTIONS_DEBUG
1356 }
1357 
glSamplerParameterfv(GLuint sampler,GLenum pname,const GLfloat * param)1358 inline void QOpenGLExtraFunctions::glSamplerParameterfv(GLuint sampler, GLenum pname, const GLfloat * param)
1359 {
1360     Q_D(QOpenGLExtraFunctions);
1361     Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1362     d->f.SamplerParameterfv(sampler, pname, param);
1363     Q_OPENGL_FUNCTIONS_DEBUG
1364 }
1365 
glSamplerParameteri(GLuint sampler,GLenum pname,GLint param)1366 inline void QOpenGLExtraFunctions::glSamplerParameteri(GLuint sampler, GLenum pname, GLint param)
1367 {
1368     Q_D(QOpenGLExtraFunctions);
1369     Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1370     d->f.SamplerParameteri(sampler, pname, param);
1371     Q_OPENGL_FUNCTIONS_DEBUG
1372 }
1373 
glSamplerParameteriv(GLuint sampler,GLenum pname,const GLint * param)1374 inline void QOpenGLExtraFunctions::glSamplerParameteriv(GLuint sampler, GLenum pname, const GLint * param)
1375 {
1376     Q_D(QOpenGLExtraFunctions);
1377     Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1378     d->f.SamplerParameteriv(sampler, pname, param);
1379     Q_OPENGL_FUNCTIONS_DEBUG
1380 }
1381 
glTexImage3D(GLenum target,GLint level,GLint internalformat,GLsizei width,GLsizei height,GLsizei depth,GLint border,GLenum format,GLenum type,const void * pixels)1382 inline void QOpenGLExtraFunctions::glTexImage3D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void * pixels)
1383 {
1384     Q_D(QOpenGLExtraFunctions);
1385     Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1386     d->f.TexImage3D(target, level, internalformat, width, height, depth, border, format, type, pixels);
1387     Q_OPENGL_FUNCTIONS_DEBUG
1388 }
1389 
glTexStorage2D(GLenum target,GLsizei levels,GLenum internalformat,GLsizei width,GLsizei height)1390 inline void QOpenGLExtraFunctions::glTexStorage2D(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height)
1391 {
1392     Q_D(QOpenGLExtraFunctions);
1393     Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1394     d->f.TexStorage2D(target, levels, internalformat, width, height);
1395     Q_OPENGL_FUNCTIONS_DEBUG
1396 }
1397 
glTexStorage3D(GLenum target,GLsizei levels,GLenum internalformat,GLsizei width,GLsizei height,GLsizei depth)1398 inline void QOpenGLExtraFunctions::glTexStorage3D(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth)
1399 {
1400     Q_D(QOpenGLExtraFunctions);
1401     Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1402     d->f.TexStorage3D(target, levels, internalformat, width, height, depth);
1403     Q_OPENGL_FUNCTIONS_DEBUG
1404 }
1405 
glTexSubImage3D(GLenum target,GLint level,GLint xoffset,GLint yoffset,GLint zoffset,GLsizei width,GLsizei height,GLsizei depth,GLenum format,GLenum type,const void * pixels)1406 inline void QOpenGLExtraFunctions::glTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void * pixels)
1407 {
1408     Q_D(QOpenGLExtraFunctions);
1409     Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1410     d->f.TexSubImage3D(target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, pixels);
1411     Q_OPENGL_FUNCTIONS_DEBUG
1412 }
1413 
glTransformFeedbackVaryings(GLuint program,GLsizei count,const GLchar * const * varyings,GLenum bufferMode)1414 inline void QOpenGLExtraFunctions::glTransformFeedbackVaryings(GLuint program, GLsizei count, const GLchar *const* varyings, GLenum bufferMode)
1415 {
1416     Q_D(QOpenGLExtraFunctions);
1417     Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1418     d->f.TransformFeedbackVaryings(program, count, varyings, bufferMode);
1419     Q_OPENGL_FUNCTIONS_DEBUG
1420 }
1421 
glUniform1ui(GLint location,GLuint v0)1422 inline void QOpenGLExtraFunctions::glUniform1ui(GLint location, GLuint v0)
1423 {
1424     Q_D(QOpenGLExtraFunctions);
1425     Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1426     d->f.Uniform1ui(location, v0);
1427     Q_OPENGL_FUNCTIONS_DEBUG
1428 }
1429 
glUniform1uiv(GLint location,GLsizei count,const GLuint * value)1430 inline void QOpenGLExtraFunctions::glUniform1uiv(GLint location, GLsizei count, const GLuint * value)
1431 {
1432     Q_D(QOpenGLExtraFunctions);
1433     Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1434     d->f.Uniform1uiv(location, count, value);
1435     Q_OPENGL_FUNCTIONS_DEBUG
1436 }
1437 
glUniform2ui(GLint location,GLuint v0,GLuint v1)1438 inline void QOpenGLExtraFunctions::glUniform2ui(GLint location, GLuint v0, GLuint v1)
1439 {
1440     Q_D(QOpenGLExtraFunctions);
1441     Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1442     d->f.Uniform2ui(location, v0, v1);
1443     Q_OPENGL_FUNCTIONS_DEBUG
1444 }
1445 
glUniform2uiv(GLint location,GLsizei count,const GLuint * value)1446 inline void QOpenGLExtraFunctions::glUniform2uiv(GLint location, GLsizei count, const GLuint * value)
1447 {
1448     Q_D(QOpenGLExtraFunctions);
1449     Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1450     d->f.Uniform2uiv(location, count, value);
1451     Q_OPENGL_FUNCTIONS_DEBUG
1452 }
1453 
glUniform3ui(GLint location,GLuint v0,GLuint v1,GLuint v2)1454 inline void QOpenGLExtraFunctions::glUniform3ui(GLint location, GLuint v0, GLuint v1, GLuint v2)
1455 {
1456     Q_D(QOpenGLExtraFunctions);
1457     Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1458     d->f.Uniform3ui(location, v0, v1, v2);
1459     Q_OPENGL_FUNCTIONS_DEBUG
1460 }
1461 
glUniform3uiv(GLint location,GLsizei count,const GLuint * value)1462 inline void QOpenGLExtraFunctions::glUniform3uiv(GLint location, GLsizei count, const GLuint * value)
1463 {
1464     Q_D(QOpenGLExtraFunctions);
1465     Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1466     d->f.Uniform3uiv(location, count, value);
1467     Q_OPENGL_FUNCTIONS_DEBUG
1468 }
1469 
glUniform4ui(GLint location,GLuint v0,GLuint v1,GLuint v2,GLuint v3)1470 inline void QOpenGLExtraFunctions::glUniform4ui(GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3)
1471 {
1472     Q_D(QOpenGLExtraFunctions);
1473     Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1474     d->f.Uniform4ui(location, v0, v1, v2, v3);
1475     Q_OPENGL_FUNCTIONS_DEBUG
1476 }
1477 
glUniform4uiv(GLint location,GLsizei count,const GLuint * value)1478 inline void QOpenGLExtraFunctions::glUniform4uiv(GLint location, GLsizei count, const GLuint * value)
1479 {
1480     Q_D(QOpenGLExtraFunctions);
1481     Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1482     d->f.Uniform4uiv(location, count, value);
1483     Q_OPENGL_FUNCTIONS_DEBUG
1484 }
1485 
glUniformBlockBinding(GLuint program,GLuint uniformBlockIndex,GLuint uniformBlockBinding)1486 inline void QOpenGLExtraFunctions::glUniformBlockBinding(GLuint program, GLuint uniformBlockIndex, GLuint uniformBlockBinding)
1487 {
1488     Q_D(QOpenGLExtraFunctions);
1489     Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1490     d->f.UniformBlockBinding(program, uniformBlockIndex, uniformBlockBinding);
1491     Q_OPENGL_FUNCTIONS_DEBUG
1492 }
1493 
glUniformMatrix2x3fv(GLint location,GLsizei count,GLboolean transpose,const GLfloat * value)1494 inline void QOpenGLExtraFunctions::glUniformMatrix2x3fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat * value)
1495 {
1496     Q_D(QOpenGLExtraFunctions);
1497     Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1498     d->f.UniformMatrix2x3fv(location, count, transpose, value);
1499     Q_OPENGL_FUNCTIONS_DEBUG
1500 }
1501 
glUniformMatrix2x4fv(GLint location,GLsizei count,GLboolean transpose,const GLfloat * value)1502 inline void QOpenGLExtraFunctions::glUniformMatrix2x4fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat * value)
1503 {
1504     Q_D(QOpenGLExtraFunctions);
1505     Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1506     d->f.UniformMatrix2x4fv(location, count, transpose, value);
1507     Q_OPENGL_FUNCTIONS_DEBUG
1508 }
1509 
glUniformMatrix3x2fv(GLint location,GLsizei count,GLboolean transpose,const GLfloat * value)1510 inline void QOpenGLExtraFunctions::glUniformMatrix3x2fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat * value)
1511 {
1512     Q_D(QOpenGLExtraFunctions);
1513     Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1514     d->f.UniformMatrix3x2fv(location, count, transpose, value);
1515     Q_OPENGL_FUNCTIONS_DEBUG
1516 }
1517 
glUniformMatrix3x4fv(GLint location,GLsizei count,GLboolean transpose,const GLfloat * value)1518 inline void QOpenGLExtraFunctions::glUniformMatrix3x4fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat * value)
1519 {
1520     Q_D(QOpenGLExtraFunctions);
1521     Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1522     d->f.UniformMatrix3x4fv(location, count, transpose, value);
1523     Q_OPENGL_FUNCTIONS_DEBUG
1524 }
1525 
glUniformMatrix4x2fv(GLint location,GLsizei count,GLboolean transpose,const GLfloat * value)1526 inline void QOpenGLExtraFunctions::glUniformMatrix4x2fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat * value)
1527 {
1528     Q_D(QOpenGLExtraFunctions);
1529     Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1530     d->f.UniformMatrix4x2fv(location, count, transpose, value);
1531     Q_OPENGL_FUNCTIONS_DEBUG
1532 }
1533 
glUniformMatrix4x3fv(GLint location,GLsizei count,GLboolean transpose,const GLfloat * value)1534 inline void QOpenGLExtraFunctions::glUniformMatrix4x3fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat * value)
1535 {
1536     Q_D(QOpenGLExtraFunctions);
1537     Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1538     d->f.UniformMatrix4x3fv(location, count, transpose, value);
1539     Q_OPENGL_FUNCTIONS_DEBUG
1540 }
1541 
glUnmapBuffer(GLenum target)1542 inline GLboolean QOpenGLExtraFunctions::glUnmapBuffer(GLenum target)
1543 {
1544     Q_D(QOpenGLExtraFunctions);
1545     Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1546     GLboolean result = d->f.UnmapBuffer(target);
1547     Q_OPENGL_FUNCTIONS_DEBUG
1548     return result;
1549 }
1550 
glVertexAttribDivisor(GLuint index,GLuint divisor)1551 inline void QOpenGLExtraFunctions::glVertexAttribDivisor(GLuint index, GLuint divisor)
1552 {
1553     Q_D(QOpenGLExtraFunctions);
1554     Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1555     d->f.VertexAttribDivisor(index, divisor);
1556     Q_OPENGL_FUNCTIONS_DEBUG
1557 }
1558 
glVertexAttribI4i(GLuint index,GLint x,GLint y,GLint z,GLint w)1559 inline void QOpenGLExtraFunctions::glVertexAttribI4i(GLuint index, GLint x, GLint y, GLint z, GLint w)
1560 {
1561     Q_D(QOpenGLExtraFunctions);
1562     Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1563     d->f.VertexAttribI4i(index, x, y, z, w);
1564     Q_OPENGL_FUNCTIONS_DEBUG
1565 }
1566 
glVertexAttribI4iv(GLuint index,const GLint * v)1567 inline void QOpenGLExtraFunctions::glVertexAttribI4iv(GLuint index, const GLint * v)
1568 {
1569     Q_D(QOpenGLExtraFunctions);
1570     Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1571     d->f.VertexAttribI4iv(index, v);
1572     Q_OPENGL_FUNCTIONS_DEBUG
1573 }
1574 
glVertexAttribI4ui(GLuint index,GLuint x,GLuint y,GLuint z,GLuint w)1575 inline void QOpenGLExtraFunctions::glVertexAttribI4ui(GLuint index, GLuint x, GLuint y, GLuint z, GLuint w)
1576 {
1577     Q_D(QOpenGLExtraFunctions);
1578     Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1579     d->f.VertexAttribI4ui(index, x, y, z, w);
1580     Q_OPENGL_FUNCTIONS_DEBUG
1581 }
1582 
glVertexAttribI4uiv(GLuint index,const GLuint * v)1583 inline void QOpenGLExtraFunctions::glVertexAttribI4uiv(GLuint index, const GLuint * v)
1584 {
1585     Q_D(QOpenGLExtraFunctions);
1586     Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1587     d->f.VertexAttribI4uiv(index, v);
1588     Q_OPENGL_FUNCTIONS_DEBUG
1589 }
1590 
glVertexAttribIPointer(GLuint index,GLint size,GLenum type,GLsizei stride,const void * pointer)1591 inline void QOpenGLExtraFunctions::glVertexAttribIPointer(GLuint index, GLint size, GLenum type, GLsizei stride, const void * pointer)
1592 {
1593     Q_D(QOpenGLExtraFunctions);
1594     Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1595     d->f.VertexAttribIPointer(index, size, type, stride, pointer);
1596     Q_OPENGL_FUNCTIONS_DEBUG
1597 }
1598 
glWaitSync(GLsync sync,GLbitfield flags,GLuint64 timeout)1599 inline void QOpenGLExtraFunctions::glWaitSync(GLsync sync, GLbitfield flags, GLuint64 timeout)
1600 {
1601     Q_D(QOpenGLExtraFunctions);
1602     Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1603     d->f.WaitSync(sync, flags, timeout);
1604     Q_OPENGL_FUNCTIONS_DEBUG
1605 }
1606 
glActiveShaderProgram(GLuint pipeline,GLuint program)1607 inline void QOpenGLExtraFunctions::glActiveShaderProgram(GLuint pipeline, GLuint program)
1608 {
1609     Q_D(QOpenGLExtraFunctions);
1610     Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1611     d->f.ActiveShaderProgram(pipeline, program);
1612     Q_OPENGL_FUNCTIONS_DEBUG
1613 }
1614 
glBindImageTexture(GLuint unit,GLuint texture,GLint level,GLboolean layered,GLint layer,GLenum access,GLenum format)1615 inline void QOpenGLExtraFunctions::glBindImageTexture(GLuint unit, GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum access, GLenum format)
1616 {
1617     Q_D(QOpenGLExtraFunctions);
1618     Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1619     d->f.BindImageTexture(unit, texture, level, layered, layer, access, format);
1620     Q_OPENGL_FUNCTIONS_DEBUG
1621 }
1622 
glBindProgramPipeline(GLuint pipeline)1623 inline void QOpenGLExtraFunctions::glBindProgramPipeline(GLuint pipeline)
1624 {
1625     Q_D(QOpenGLExtraFunctions);
1626     Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1627     d->f.BindProgramPipeline(pipeline);
1628     Q_OPENGL_FUNCTIONS_DEBUG
1629 }
1630 
glBindVertexBuffer(GLuint bindingindex,GLuint buffer,GLintptr offset,GLsizei stride)1631 inline void QOpenGLExtraFunctions::glBindVertexBuffer(GLuint bindingindex, GLuint buffer, GLintptr offset, GLsizei stride)
1632 {
1633     Q_D(QOpenGLExtraFunctions);
1634     Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1635     d->f.BindVertexBuffer(bindingindex, buffer, offset, stride);
1636     Q_OPENGL_FUNCTIONS_DEBUG
1637 }
1638 
glCreateShaderProgramv(GLenum type,GLsizei count,const GLchar * const * strings)1639 inline GLuint QOpenGLExtraFunctions::glCreateShaderProgramv(GLenum type, GLsizei count, const GLchar *const* strings)
1640 {
1641     Q_D(QOpenGLExtraFunctions);
1642     Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1643     GLuint result = d->f.CreateShaderProgramv(type, count, strings);
1644     Q_OPENGL_FUNCTIONS_DEBUG
1645     return result;
1646 }
1647 
glDeleteProgramPipelines(GLsizei n,const GLuint * pipelines)1648 inline void QOpenGLExtraFunctions::glDeleteProgramPipelines(GLsizei n, const GLuint * pipelines)
1649 {
1650     Q_D(QOpenGLExtraFunctions);
1651     Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1652     d->f.DeleteProgramPipelines(n, pipelines);
1653     Q_OPENGL_FUNCTIONS_DEBUG
1654 }
1655 
glDispatchCompute(GLuint num_groups_x,GLuint num_groups_y,GLuint num_groups_z)1656 inline void QOpenGLExtraFunctions::glDispatchCompute(GLuint num_groups_x, GLuint num_groups_y, GLuint num_groups_z)
1657 {
1658     Q_D(QOpenGLExtraFunctions);
1659     Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1660     d->f.DispatchCompute(num_groups_x, num_groups_y, num_groups_z);
1661     Q_OPENGL_FUNCTIONS_DEBUG
1662 }
1663 
glDispatchComputeIndirect(GLintptr indirect)1664 inline void QOpenGLExtraFunctions::glDispatchComputeIndirect(GLintptr indirect)
1665 {
1666     Q_D(QOpenGLExtraFunctions);
1667     Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1668     d->f.DispatchComputeIndirect(indirect);
1669     Q_OPENGL_FUNCTIONS_DEBUG
1670 }
1671 
glDrawArraysIndirect(GLenum mode,const void * indirect)1672 inline void QOpenGLExtraFunctions::glDrawArraysIndirect(GLenum mode, const void * indirect)
1673 {
1674     Q_D(QOpenGLExtraFunctions);
1675     Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1676     d->f.DrawArraysIndirect(mode, indirect);
1677     Q_OPENGL_FUNCTIONS_DEBUG
1678 }
1679 
glDrawElementsIndirect(GLenum mode,GLenum type,const void * indirect)1680 inline void QOpenGLExtraFunctions::glDrawElementsIndirect(GLenum mode, GLenum type, const void * indirect)
1681 {
1682     Q_D(QOpenGLExtraFunctions);
1683     Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1684     d->f.DrawElementsIndirect(mode, type, indirect);
1685     Q_OPENGL_FUNCTIONS_DEBUG
1686 }
1687 
glFramebufferParameteri(GLenum target,GLenum pname,GLint param)1688 inline void QOpenGLExtraFunctions::glFramebufferParameteri(GLenum target, GLenum pname, GLint param)
1689 {
1690     Q_D(QOpenGLExtraFunctions);
1691     Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1692     d->f.FramebufferParameteri(target, pname, param);
1693     Q_OPENGL_FUNCTIONS_DEBUG
1694 }
1695 
glGenProgramPipelines(GLsizei n,GLuint * pipelines)1696 inline void QOpenGLExtraFunctions::glGenProgramPipelines(GLsizei n, GLuint* pipelines)
1697 {
1698     Q_D(QOpenGLExtraFunctions);
1699     Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1700     d->f.GenProgramPipelines(n, pipelines);
1701     Q_OPENGL_FUNCTIONS_DEBUG
1702 }
1703 
glGetBooleani_v(GLenum target,GLuint index,GLboolean * data)1704 inline void QOpenGLExtraFunctions::glGetBooleani_v(GLenum target, GLuint index, GLboolean* data)
1705 {
1706     Q_D(QOpenGLExtraFunctions);
1707     Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1708     d->f.GetBooleani_v(target, index, data);
1709     Q_OPENGL_FUNCTIONS_DEBUG
1710 }
1711 
glGetFramebufferParameteriv(GLenum target,GLenum pname,GLint * params)1712 inline void QOpenGLExtraFunctions::glGetFramebufferParameteriv(GLenum target, GLenum pname, GLint* params)
1713 {
1714     Q_D(QOpenGLExtraFunctions);
1715     Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1716     d->f.GetFramebufferParameteriv(target, pname, params);
1717     Q_OPENGL_FUNCTIONS_DEBUG
1718 }
1719 
glGetMultisamplefv(GLenum pname,GLuint index,GLfloat * val)1720 inline void QOpenGLExtraFunctions::glGetMultisamplefv(GLenum pname, GLuint index, GLfloat* val)
1721 {
1722     Q_D(QOpenGLExtraFunctions);
1723     Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1724     d->f.GetMultisamplefv(pname, index, val);
1725     Q_OPENGL_FUNCTIONS_DEBUG
1726 }
1727 
glGetProgramInterfaceiv(GLuint program,GLenum programInterface,GLenum pname,GLint * params)1728 inline void QOpenGLExtraFunctions::glGetProgramInterfaceiv(GLuint program, GLenum programInterface, GLenum pname, GLint* params)
1729 {
1730     Q_D(QOpenGLExtraFunctions);
1731     Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1732     d->f.GetProgramInterfaceiv(program, programInterface, pname, params);
1733     Q_OPENGL_FUNCTIONS_DEBUG
1734 }
1735 
glGetProgramPipelineInfoLog(GLuint pipeline,GLsizei bufSize,GLsizei * length,GLchar * infoLog)1736 inline void QOpenGLExtraFunctions::glGetProgramPipelineInfoLog(GLuint pipeline, GLsizei bufSize, GLsizei* length, GLchar* infoLog)
1737 {
1738     Q_D(QOpenGLExtraFunctions);
1739     Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1740     d->f.GetProgramPipelineInfoLog(pipeline, bufSize, length, infoLog);
1741     Q_OPENGL_FUNCTIONS_DEBUG
1742 }
1743 
glGetProgramPipelineiv(GLuint pipeline,GLenum pname,GLint * params)1744 inline void QOpenGLExtraFunctions::glGetProgramPipelineiv(GLuint pipeline, GLenum pname, GLint* params)
1745 {
1746     Q_D(QOpenGLExtraFunctions);
1747     Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1748     d->f.GetProgramPipelineiv(pipeline, pname, params);
1749     Q_OPENGL_FUNCTIONS_DEBUG
1750 }
1751 
glGetProgramResourceIndex(GLuint program,GLenum programInterface,const GLchar * name)1752 inline GLuint QOpenGLExtraFunctions::glGetProgramResourceIndex(GLuint program, GLenum programInterface, const GLchar * name)
1753 {
1754     Q_D(QOpenGLExtraFunctions);
1755     Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1756     GLuint result = d->f.GetProgramResourceIndex(program, programInterface, name);
1757     Q_OPENGL_FUNCTIONS_DEBUG
1758     return result;
1759 }
1760 
glGetProgramResourceLocation(GLuint program,GLenum programInterface,const GLchar * name)1761 inline GLint QOpenGLExtraFunctions::glGetProgramResourceLocation(GLuint program, GLenum programInterface, const GLchar * name)
1762 {
1763     Q_D(QOpenGLExtraFunctions);
1764     Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1765     GLint result = d->f.GetProgramResourceLocation(program, programInterface, name);
1766     Q_OPENGL_FUNCTIONS_DEBUG
1767     return result;
1768 }
1769 
glGetProgramResourceName(GLuint program,GLenum programInterface,GLuint index,GLsizei bufSize,GLsizei * length,GLchar * name)1770 inline void QOpenGLExtraFunctions::glGetProgramResourceName(GLuint program, GLenum programInterface, GLuint index, GLsizei bufSize, GLsizei* length, GLchar* name)
1771 {
1772     Q_D(QOpenGLExtraFunctions);
1773     Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1774     d->f.GetProgramResourceName(program, programInterface, index, bufSize, length, name);
1775     Q_OPENGL_FUNCTIONS_DEBUG
1776 }
1777 
glGetProgramResourceiv(GLuint program,GLenum programInterface,GLuint index,GLsizei propCount,const GLenum * props,GLsizei bufSize,GLsizei * length,GLint * params)1778 inline void QOpenGLExtraFunctions::glGetProgramResourceiv(GLuint program, GLenum programInterface, GLuint index, GLsizei propCount, const GLenum * props, GLsizei bufSize, GLsizei* length, GLint* params)
1779 {
1780     Q_D(QOpenGLExtraFunctions);
1781     Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1782     d->f.GetProgramResourceiv(program, programInterface, index, propCount, props, bufSize, length, params);
1783     Q_OPENGL_FUNCTIONS_DEBUG
1784 }
1785 
glGetTexLevelParameterfv(GLenum target,GLint level,GLenum pname,GLfloat * params)1786 inline void QOpenGLExtraFunctions::glGetTexLevelParameterfv(GLenum target, GLint level, GLenum pname, GLfloat* params)
1787 {
1788     Q_D(QOpenGLExtraFunctions);
1789     Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1790     d->f.GetTexLevelParameterfv(target, level, pname, params);
1791     Q_OPENGL_FUNCTIONS_DEBUG
1792 }
1793 
glGetTexLevelParameteriv(GLenum target,GLint level,GLenum pname,GLint * params)1794 inline void QOpenGLExtraFunctions::glGetTexLevelParameteriv(GLenum target, GLint level, GLenum pname, GLint* params)
1795 {
1796     Q_D(QOpenGLExtraFunctions);
1797     Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1798     d->f.GetTexLevelParameteriv(target, level, pname, params);
1799     Q_OPENGL_FUNCTIONS_DEBUG
1800 }
1801 
glIsProgramPipeline(GLuint pipeline)1802 inline GLboolean QOpenGLExtraFunctions::glIsProgramPipeline(GLuint pipeline)
1803 {
1804     Q_D(QOpenGLExtraFunctions);
1805     Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1806     GLboolean result = d->f.IsProgramPipeline(pipeline);
1807     Q_OPENGL_FUNCTIONS_DEBUG
1808     return result;
1809 }
1810 
glMemoryBarrier(GLbitfield barriers)1811 inline void QOpenGLExtraFunctions::glMemoryBarrier(GLbitfield barriers)
1812 {
1813     Q_D(QOpenGLExtraFunctions);
1814     Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1815     d->f.MemoryBarrier(barriers);
1816     Q_OPENGL_FUNCTIONS_DEBUG
1817 }
1818 
glMemoryBarrierByRegion(GLbitfield barriers)1819 inline void QOpenGLExtraFunctions::glMemoryBarrierByRegion(GLbitfield barriers)
1820 {
1821     Q_D(QOpenGLExtraFunctions);
1822     Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1823     d->f.MemoryBarrierByRegion(barriers);
1824     Q_OPENGL_FUNCTIONS_DEBUG
1825 }
1826 
glProgramUniform1f(GLuint program,GLint location,GLfloat v0)1827 inline void QOpenGLExtraFunctions::glProgramUniform1f(GLuint program, GLint location, GLfloat v0)
1828 {
1829     Q_D(QOpenGLExtraFunctions);
1830     Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1831     d->f.ProgramUniform1f(program, location, v0);
1832     Q_OPENGL_FUNCTIONS_DEBUG
1833 }
1834 
glProgramUniform1fv(GLuint program,GLint location,GLsizei count,const GLfloat * value)1835 inline void QOpenGLExtraFunctions::glProgramUniform1fv(GLuint program, GLint location, GLsizei count, const GLfloat * value)
1836 {
1837     Q_D(QOpenGLExtraFunctions);
1838     Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1839     d->f.ProgramUniform1fv(program, location, count, value);
1840     Q_OPENGL_FUNCTIONS_DEBUG
1841 }
1842 
glProgramUniform1i(GLuint program,GLint location,GLint v0)1843 inline void QOpenGLExtraFunctions::glProgramUniform1i(GLuint program, GLint location, GLint v0)
1844 {
1845     Q_D(QOpenGLExtraFunctions);
1846     Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1847     d->f.ProgramUniform1i(program, location, v0);
1848     Q_OPENGL_FUNCTIONS_DEBUG
1849 }
1850 
glProgramUniform1iv(GLuint program,GLint location,GLsizei count,const GLint * value)1851 inline void QOpenGLExtraFunctions::glProgramUniform1iv(GLuint program, GLint location, GLsizei count, const GLint * value)
1852 {
1853     Q_D(QOpenGLExtraFunctions);
1854     Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1855     d->f.ProgramUniform1iv(program, location, count, value);
1856     Q_OPENGL_FUNCTIONS_DEBUG
1857 }
1858 
glProgramUniform1ui(GLuint program,GLint location,GLuint v0)1859 inline void QOpenGLExtraFunctions::glProgramUniform1ui(GLuint program, GLint location, GLuint v0)
1860 {
1861     Q_D(QOpenGLExtraFunctions);
1862     Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1863     d->f.ProgramUniform1ui(program, location, v0);
1864     Q_OPENGL_FUNCTIONS_DEBUG
1865 }
1866 
glProgramUniform1uiv(GLuint program,GLint location,GLsizei count,const GLuint * value)1867 inline void QOpenGLExtraFunctions::glProgramUniform1uiv(GLuint program, GLint location, GLsizei count, const GLuint * value)
1868 {
1869     Q_D(QOpenGLExtraFunctions);
1870     Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1871     d->f.ProgramUniform1uiv(program, location, count, value);
1872     Q_OPENGL_FUNCTIONS_DEBUG
1873 }
1874 
glProgramUniform2f(GLuint program,GLint location,GLfloat v0,GLfloat v1)1875 inline void QOpenGLExtraFunctions::glProgramUniform2f(GLuint program, GLint location, GLfloat v0, GLfloat v1)
1876 {
1877     Q_D(QOpenGLExtraFunctions);
1878     Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1879     d->f.ProgramUniform2f(program, location, v0, v1);
1880     Q_OPENGL_FUNCTIONS_DEBUG
1881 }
1882 
glProgramUniform2fv(GLuint program,GLint location,GLsizei count,const GLfloat * value)1883 inline void QOpenGLExtraFunctions::glProgramUniform2fv(GLuint program, GLint location, GLsizei count, const GLfloat * value)
1884 {
1885     Q_D(QOpenGLExtraFunctions);
1886     Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1887     d->f.ProgramUniform2fv(program, location, count, value);
1888     Q_OPENGL_FUNCTIONS_DEBUG
1889 }
1890 
glProgramUniform2i(GLuint program,GLint location,GLint v0,GLint v1)1891 inline void QOpenGLExtraFunctions::glProgramUniform2i(GLuint program, GLint location, GLint v0, GLint v1)
1892 {
1893     Q_D(QOpenGLExtraFunctions);
1894     Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1895     d->f.ProgramUniform2i(program, location, v0, v1);
1896     Q_OPENGL_FUNCTIONS_DEBUG
1897 }
1898 
glProgramUniform2iv(GLuint program,GLint location,GLsizei count,const GLint * value)1899 inline void QOpenGLExtraFunctions::glProgramUniform2iv(GLuint program, GLint location, GLsizei count, const GLint * value)
1900 {
1901     Q_D(QOpenGLExtraFunctions);
1902     Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1903     d->f.ProgramUniform2iv(program, location, count, value);
1904     Q_OPENGL_FUNCTIONS_DEBUG
1905 }
1906 
glProgramUniform2ui(GLuint program,GLint location,GLuint v0,GLuint v1)1907 inline void QOpenGLExtraFunctions::glProgramUniform2ui(GLuint program, GLint location, GLuint v0, GLuint v1)
1908 {
1909     Q_D(QOpenGLExtraFunctions);
1910     Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1911     d->f.ProgramUniform2ui(program, location, v0, v1);
1912     Q_OPENGL_FUNCTIONS_DEBUG
1913 }
1914 
glProgramUniform2uiv(GLuint program,GLint location,GLsizei count,const GLuint * value)1915 inline void QOpenGLExtraFunctions::glProgramUniform2uiv(GLuint program, GLint location, GLsizei count, const GLuint * value)
1916 {
1917     Q_D(QOpenGLExtraFunctions);
1918     Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1919     d->f.ProgramUniform2uiv(program, location, count, value);
1920     Q_OPENGL_FUNCTIONS_DEBUG
1921 }
1922 
glProgramUniform3f(GLuint program,GLint location,GLfloat v0,GLfloat v1,GLfloat v2)1923 inline void QOpenGLExtraFunctions::glProgramUniform3f(GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2)
1924 {
1925     Q_D(QOpenGLExtraFunctions);
1926     Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1927     d->f.ProgramUniform3f(program, location, v0, v1, v2);
1928     Q_OPENGL_FUNCTIONS_DEBUG
1929 }
1930 
glProgramUniform3fv(GLuint program,GLint location,GLsizei count,const GLfloat * value)1931 inline void QOpenGLExtraFunctions::glProgramUniform3fv(GLuint program, GLint location, GLsizei count, const GLfloat * value)
1932 {
1933     Q_D(QOpenGLExtraFunctions);
1934     Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1935     d->f.ProgramUniform3fv(program, location, count, value);
1936     Q_OPENGL_FUNCTIONS_DEBUG
1937 }
1938 
glProgramUniform3i(GLuint program,GLint location,GLint v0,GLint v1,GLint v2)1939 inline void QOpenGLExtraFunctions::glProgramUniform3i(GLuint program, GLint location, GLint v0, GLint v1, GLint v2)
1940 {
1941     Q_D(QOpenGLExtraFunctions);
1942     Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1943     d->f.ProgramUniform3i(program, location, v0, v1, v2);
1944     Q_OPENGL_FUNCTIONS_DEBUG
1945 }
1946 
glProgramUniform3iv(GLuint program,GLint location,GLsizei count,const GLint * value)1947 inline void QOpenGLExtraFunctions::glProgramUniform3iv(GLuint program, GLint location, GLsizei count, const GLint * value)
1948 {
1949     Q_D(QOpenGLExtraFunctions);
1950     Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1951     d->f.ProgramUniform3iv(program, location, count, value);
1952     Q_OPENGL_FUNCTIONS_DEBUG
1953 }
1954 
glProgramUniform3ui(GLuint program,GLint location,GLuint v0,GLuint v1,GLuint v2)1955 inline void QOpenGLExtraFunctions::glProgramUniform3ui(GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2)
1956 {
1957     Q_D(QOpenGLExtraFunctions);
1958     Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1959     d->f.ProgramUniform3ui(program, location, v0, v1, v2);
1960     Q_OPENGL_FUNCTIONS_DEBUG
1961 }
1962 
glProgramUniform3uiv(GLuint program,GLint location,GLsizei count,const GLuint * value)1963 inline void QOpenGLExtraFunctions::glProgramUniform3uiv(GLuint program, GLint location, GLsizei count, const GLuint * value)
1964 {
1965     Q_D(QOpenGLExtraFunctions);
1966     Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1967     d->f.ProgramUniform3uiv(program, location, count, value);
1968     Q_OPENGL_FUNCTIONS_DEBUG
1969 }
1970 
glProgramUniform4f(GLuint program,GLint location,GLfloat v0,GLfloat v1,GLfloat v2,GLfloat v3)1971 inline void QOpenGLExtraFunctions::glProgramUniform4f(GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3)
1972 {
1973     Q_D(QOpenGLExtraFunctions);
1974     Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1975     d->f.ProgramUniform4f(program, location, v0, v1, v2, v3);
1976     Q_OPENGL_FUNCTIONS_DEBUG
1977 }
1978 
glProgramUniform4fv(GLuint program,GLint location,GLsizei count,const GLfloat * value)1979 inline void QOpenGLExtraFunctions::glProgramUniform4fv(GLuint program, GLint location, GLsizei count, const GLfloat * value)
1980 {
1981     Q_D(QOpenGLExtraFunctions);
1982     Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1983     d->f.ProgramUniform4fv(program, location, count, value);
1984     Q_OPENGL_FUNCTIONS_DEBUG
1985 }
1986 
glProgramUniform4i(GLuint program,GLint location,GLint v0,GLint v1,GLint v2,GLint v3)1987 inline void QOpenGLExtraFunctions::glProgramUniform4i(GLuint program, GLint location, GLint v0, GLint v1, GLint v2, GLint v3)
1988 {
1989     Q_D(QOpenGLExtraFunctions);
1990     Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1991     d->f.ProgramUniform4i(program, location, v0, v1, v2, v3);
1992     Q_OPENGL_FUNCTIONS_DEBUG
1993 }
1994 
glProgramUniform4iv(GLuint program,GLint location,GLsizei count,const GLint * value)1995 inline void QOpenGLExtraFunctions::glProgramUniform4iv(GLuint program, GLint location, GLsizei count, const GLint * value)
1996 {
1997     Q_D(QOpenGLExtraFunctions);
1998     Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
1999     d->f.ProgramUniform4iv(program, location, count, value);
2000     Q_OPENGL_FUNCTIONS_DEBUG
2001 }
2002 
glProgramUniform4ui(GLuint program,GLint location,GLuint v0,GLuint v1,GLuint v2,GLuint v3)2003 inline void QOpenGLExtraFunctions::glProgramUniform4ui(GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3)
2004 {
2005     Q_D(QOpenGLExtraFunctions);
2006     Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
2007     d->f.ProgramUniform4ui(program, location, v0, v1, v2, v3);
2008     Q_OPENGL_FUNCTIONS_DEBUG
2009 }
2010 
glProgramUniform4uiv(GLuint program,GLint location,GLsizei count,const GLuint * value)2011 inline void QOpenGLExtraFunctions::glProgramUniform4uiv(GLuint program, GLint location, GLsizei count, const GLuint * value)
2012 {
2013     Q_D(QOpenGLExtraFunctions);
2014     Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
2015     d->f.ProgramUniform4uiv(program, location, count, value);
2016     Q_OPENGL_FUNCTIONS_DEBUG
2017 }
2018 
glProgramUniformMatrix2fv(GLuint program,GLint location,GLsizei count,GLboolean transpose,const GLfloat * value)2019 inline void QOpenGLExtraFunctions::glProgramUniformMatrix2fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat * value)
2020 {
2021     Q_D(QOpenGLExtraFunctions);
2022     Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
2023     d->f.ProgramUniformMatrix2fv(program, location, count, transpose, value);
2024     Q_OPENGL_FUNCTIONS_DEBUG
2025 }
2026 
glProgramUniformMatrix2x3fv(GLuint program,GLint location,GLsizei count,GLboolean transpose,const GLfloat * value)2027 inline void QOpenGLExtraFunctions::glProgramUniformMatrix2x3fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat * value)
2028 {
2029     Q_D(QOpenGLExtraFunctions);
2030     Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
2031     d->f.ProgramUniformMatrix2x3fv(program, location, count, transpose, value);
2032     Q_OPENGL_FUNCTIONS_DEBUG
2033 }
2034 
glProgramUniformMatrix2x4fv(GLuint program,GLint location,GLsizei count,GLboolean transpose,const GLfloat * value)2035 inline void QOpenGLExtraFunctions::glProgramUniformMatrix2x4fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat * value)
2036 {
2037     Q_D(QOpenGLExtraFunctions);
2038     Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
2039     d->f.ProgramUniformMatrix2x4fv(program, location, count, transpose, value);
2040     Q_OPENGL_FUNCTIONS_DEBUG
2041 }
2042 
glProgramUniformMatrix3fv(GLuint program,GLint location,GLsizei count,GLboolean transpose,const GLfloat * value)2043 inline void QOpenGLExtraFunctions::glProgramUniformMatrix3fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat * value)
2044 {
2045     Q_D(QOpenGLExtraFunctions);
2046     Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
2047     d->f.ProgramUniformMatrix3fv(program, location, count, transpose, value);
2048     Q_OPENGL_FUNCTIONS_DEBUG
2049 }
2050 
glProgramUniformMatrix3x2fv(GLuint program,GLint location,GLsizei count,GLboolean transpose,const GLfloat * value)2051 inline void QOpenGLExtraFunctions::glProgramUniformMatrix3x2fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat * value)
2052 {
2053     Q_D(QOpenGLExtraFunctions);
2054     Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
2055     d->f.ProgramUniformMatrix3x2fv(program, location, count, transpose, value);
2056     Q_OPENGL_FUNCTIONS_DEBUG
2057 }
2058 
glProgramUniformMatrix3x4fv(GLuint program,GLint location,GLsizei count,GLboolean transpose,const GLfloat * value)2059 inline void QOpenGLExtraFunctions::glProgramUniformMatrix3x4fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat * value)
2060 {
2061     Q_D(QOpenGLExtraFunctions);
2062     Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
2063     d->f.ProgramUniformMatrix3x4fv(program, location, count, transpose, value);
2064     Q_OPENGL_FUNCTIONS_DEBUG
2065 }
2066 
glProgramUniformMatrix4fv(GLuint program,GLint location,GLsizei count,GLboolean transpose,const GLfloat * value)2067 inline void QOpenGLExtraFunctions::glProgramUniformMatrix4fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat * value)
2068 {
2069     Q_D(QOpenGLExtraFunctions);
2070     Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
2071     d->f.ProgramUniformMatrix4fv(program, location, count, transpose, value);
2072     Q_OPENGL_FUNCTIONS_DEBUG
2073 }
2074 
glProgramUniformMatrix4x2fv(GLuint program,GLint location,GLsizei count,GLboolean transpose,const GLfloat * value)2075 inline void QOpenGLExtraFunctions::glProgramUniformMatrix4x2fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat * value)
2076 {
2077     Q_D(QOpenGLExtraFunctions);
2078     Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
2079     d->f.ProgramUniformMatrix4x2fv(program, location, count, transpose, value);
2080     Q_OPENGL_FUNCTIONS_DEBUG
2081 }
2082 
glProgramUniformMatrix4x3fv(GLuint program,GLint location,GLsizei count,GLboolean transpose,const GLfloat * value)2083 inline void QOpenGLExtraFunctions::glProgramUniformMatrix4x3fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat * value)
2084 {
2085     Q_D(QOpenGLExtraFunctions);
2086     Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
2087     d->f.ProgramUniformMatrix4x3fv(program, location, count, transpose, value);
2088     Q_OPENGL_FUNCTIONS_DEBUG
2089 }
2090 
glSampleMaski(GLuint maskNumber,GLbitfield mask)2091 inline void QOpenGLExtraFunctions::glSampleMaski(GLuint maskNumber, GLbitfield mask)
2092 {
2093     Q_D(QOpenGLExtraFunctions);
2094     Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
2095     d->f.SampleMaski(maskNumber, mask);
2096     Q_OPENGL_FUNCTIONS_DEBUG
2097 }
2098 
glTexStorage2DMultisample(GLenum target,GLsizei samples,GLenum internalformat,GLsizei width,GLsizei height,GLboolean fixedsamplelocations)2099 inline void QOpenGLExtraFunctions::glTexStorage2DMultisample(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations)
2100 {
2101     Q_D(QOpenGLExtraFunctions);
2102     Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
2103     d->f.TexStorage2DMultisample(target, samples, internalformat, width, height, fixedsamplelocations);
2104     Q_OPENGL_FUNCTIONS_DEBUG
2105 }
2106 
glUseProgramStages(GLuint pipeline,GLbitfield stages,GLuint program)2107 inline void QOpenGLExtraFunctions::glUseProgramStages(GLuint pipeline, GLbitfield stages, GLuint program)
2108 {
2109     Q_D(QOpenGLExtraFunctions);
2110     Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
2111     d->f.UseProgramStages(pipeline, stages, program);
2112     Q_OPENGL_FUNCTIONS_DEBUG
2113 }
2114 
glValidateProgramPipeline(GLuint pipeline)2115 inline void QOpenGLExtraFunctions::glValidateProgramPipeline(GLuint pipeline)
2116 {
2117     Q_D(QOpenGLExtraFunctions);
2118     Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
2119     d->f.ValidateProgramPipeline(pipeline);
2120     Q_OPENGL_FUNCTIONS_DEBUG
2121 }
2122 
glVertexAttribBinding(GLuint attribindex,GLuint bindingindex)2123 inline void QOpenGLExtraFunctions::glVertexAttribBinding(GLuint attribindex, GLuint bindingindex)
2124 {
2125     Q_D(QOpenGLExtraFunctions);
2126     Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
2127     d->f.VertexAttribBinding(attribindex, bindingindex);
2128     Q_OPENGL_FUNCTIONS_DEBUG
2129 }
2130 
glVertexAttribFormat(GLuint attribindex,GLint size,GLenum type,GLboolean normalized,GLuint relativeoffset)2131 inline void QOpenGLExtraFunctions::glVertexAttribFormat(GLuint attribindex, GLint size, GLenum type, GLboolean normalized, GLuint relativeoffset)
2132 {
2133     Q_D(QOpenGLExtraFunctions);
2134     Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
2135     d->f.VertexAttribFormat(attribindex, size, type, normalized, relativeoffset);
2136     Q_OPENGL_FUNCTIONS_DEBUG
2137 }
2138 
glVertexAttribIFormat(GLuint attribindex,GLint size,GLenum type,GLuint relativeoffset)2139 inline void QOpenGLExtraFunctions::glVertexAttribIFormat(GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset)
2140 {
2141     Q_D(QOpenGLExtraFunctions);
2142     Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
2143     d->f.VertexAttribIFormat(attribindex, size, type, relativeoffset);
2144     Q_OPENGL_FUNCTIONS_DEBUG
2145 }
2146 
glVertexBindingDivisor(GLuint bindingindex,GLuint divisor)2147 inline void QOpenGLExtraFunctions::glVertexBindingDivisor(GLuint bindingindex, GLuint divisor)
2148 {
2149     Q_D(QOpenGLExtraFunctions);
2150     Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
2151     d->f.VertexBindingDivisor(bindingindex, divisor);
2152     Q_OPENGL_FUNCTIONS_DEBUG
2153 }
2154 
2155 // GLES 3.2
2156 
glBlendBarrier()2157 inline void QOpenGLExtraFunctions::glBlendBarrier()
2158 {
2159     Q_D(QOpenGLExtraFunctions);
2160     Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
2161     d->f.BlendBarrier();
2162     Q_OPENGL_FUNCTIONS_DEBUG
2163 }
2164 
glBlendEquationSeparatei(GLuint buf,GLenum modeRGB,GLenum modeAlpha)2165 inline void QOpenGLExtraFunctions::glBlendEquationSeparatei(GLuint buf, GLenum modeRGB, GLenum modeAlpha)
2166 {
2167     Q_D(QOpenGLExtraFunctions);
2168     Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
2169     d->f.BlendEquationSeparatei(buf, modeRGB, modeAlpha);
2170     Q_OPENGL_FUNCTIONS_DEBUG
2171 }
2172 
glBlendEquationi(GLuint buf,GLenum mode)2173 inline void QOpenGLExtraFunctions::glBlendEquationi(GLuint buf, GLenum mode)
2174 {
2175     Q_D(QOpenGLExtraFunctions);
2176     Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
2177     d->f.BlendEquationi(buf, mode);
2178     Q_OPENGL_FUNCTIONS_DEBUG
2179 }
2180 
glBlendFuncSeparatei(GLuint buf,GLenum srcRGB,GLenum dstRGB,GLenum srcAlpha,GLenum dstAlpha)2181 inline void QOpenGLExtraFunctions::glBlendFuncSeparatei(GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha)
2182 {
2183     Q_D(QOpenGLExtraFunctions);
2184     Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
2185     d->f.BlendFuncSeparatei(buf, srcRGB, dstRGB, srcAlpha, dstAlpha);
2186     Q_OPENGL_FUNCTIONS_DEBUG
2187 }
2188 
glBlendFunci(GLuint buf,GLenum src,GLenum dst)2189 inline void QOpenGLExtraFunctions::glBlendFunci(GLuint buf, GLenum src, GLenum dst)
2190 {
2191     Q_D(QOpenGLExtraFunctions);
2192     Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
2193     d->f.BlendFunci(buf, src, dst);
2194     Q_OPENGL_FUNCTIONS_DEBUG
2195 }
2196 
glColorMaski(GLuint index,GLboolean r,GLboolean g,GLboolean b,GLboolean a)2197 inline void QOpenGLExtraFunctions::glColorMaski(GLuint index, GLboolean r, GLboolean g, GLboolean b, GLboolean a)
2198 {
2199     Q_D(QOpenGLExtraFunctions);
2200     Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
2201     d->f.ColorMaski(index, r, g, b, a);
2202     Q_OPENGL_FUNCTIONS_DEBUG
2203 }
2204 
glCopyImageSubData(GLuint srcName,GLenum srcTarget,GLint srcLevel,GLint srcX,GLint srcY,GLint srcZ,GLuint dstName,GLenum dstTarget,GLint dstLevel,GLint dstX,GLint dstY,GLint dstZ,GLsizei srcWidth,GLsizei srcHeight,GLsizei srcDepth)2205 inline void QOpenGLExtraFunctions::glCopyImageSubData(GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srcY, GLint srcZ, GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei srcWidth, GLsizei srcHeight, GLsizei srcDepth)
2206 {
2207     Q_D(QOpenGLExtraFunctions);
2208     Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
2209     d->f.CopyImageSubData(srcName, srcTarget, srcLevel, srcX, srcY, srcZ, dstName, dstTarget, dstLevel, dstX, dstY, dstZ, srcWidth, srcHeight, srcDepth);
2210     Q_OPENGL_FUNCTIONS_DEBUG
2211 }
2212 
glDebugMessageCallback(GLDEBUGPROC callback,const void * userParam)2213 inline void QOpenGLExtraFunctions::glDebugMessageCallback(GLDEBUGPROC callback, const void * userParam)
2214 {
2215     Q_D(QOpenGLExtraFunctions);
2216     Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
2217     d->f.DebugMessageCallback(callback, userParam);
2218     Q_OPENGL_FUNCTIONS_DEBUG
2219 }
2220 
glDebugMessageControl(GLenum source,GLenum type,GLenum severity,GLsizei count,const GLuint * ids,GLboolean enabled)2221 inline void QOpenGLExtraFunctions::glDebugMessageControl(GLenum source, GLenum type, GLenum severity, GLsizei count, const GLuint * ids, GLboolean enabled)
2222 {
2223     Q_D(QOpenGLExtraFunctions);
2224     Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
2225     d->f.DebugMessageControl(source, type, severity, count, ids, enabled);
2226     Q_OPENGL_FUNCTIONS_DEBUG
2227 }
2228 
glDebugMessageInsert(GLenum source,GLenum type,GLuint id,GLenum severity,GLsizei length,const GLchar * buf)2229 inline void QOpenGLExtraFunctions::glDebugMessageInsert(GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar * buf)
2230 {
2231     Q_D(QOpenGLExtraFunctions);
2232     Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
2233     d->f.DebugMessageInsert(source, type, id, severity, length, buf);
2234     Q_OPENGL_FUNCTIONS_DEBUG
2235 }
2236 
glDisablei(GLenum target,GLuint index)2237 inline void QOpenGLExtraFunctions::glDisablei(GLenum target, GLuint index)
2238 {
2239     Q_D(QOpenGLExtraFunctions);
2240     Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
2241     d->f.Disablei(target, index);
2242     Q_OPENGL_FUNCTIONS_DEBUG
2243 }
2244 
glDrawElementsBaseVertex(GLenum mode,GLsizei count,GLenum type,const void * indices,GLint basevertex)2245 inline void QOpenGLExtraFunctions::glDrawElementsBaseVertex(GLenum mode, GLsizei count, GLenum type, const void * indices, GLint basevertex)
2246 {
2247     Q_D(QOpenGLExtraFunctions);
2248     Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
2249     d->f.DrawElementsBaseVertex(mode, count, type, indices, basevertex);
2250     Q_OPENGL_FUNCTIONS_DEBUG
2251 }
2252 
glDrawElementsInstancedBaseVertex(GLenum mode,GLsizei count,GLenum type,const void * indices,GLsizei instancecount,GLint basevertex)2253 inline void QOpenGLExtraFunctions::glDrawElementsInstancedBaseVertex(GLenum mode, GLsizei count, GLenum type, const void * indices, GLsizei instancecount, GLint basevertex)
2254 {
2255     Q_D(QOpenGLExtraFunctions);
2256     Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
2257     d->f.DrawElementsInstancedBaseVertex(mode, count, type, indices, instancecount, basevertex);
2258     Q_OPENGL_FUNCTIONS_DEBUG
2259 }
2260 
glDrawRangeElementsBaseVertex(GLenum mode,GLuint start,GLuint end,GLsizei count,GLenum type,const void * indices,GLint basevertex)2261 inline void QOpenGLExtraFunctions::glDrawRangeElementsBaseVertex(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void * indices, GLint basevertex)
2262 {
2263     Q_D(QOpenGLExtraFunctions);
2264     Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
2265     d->f.DrawRangeElementsBaseVertex(mode, start, end, count, type, indices, basevertex);
2266     Q_OPENGL_FUNCTIONS_DEBUG
2267 }
2268 
glEnablei(GLenum target,GLuint index)2269 inline void QOpenGLExtraFunctions::glEnablei(GLenum target, GLuint index)
2270 {
2271     Q_D(QOpenGLExtraFunctions);
2272     Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
2273     d->f.Enablei(target, index);
2274     Q_OPENGL_FUNCTIONS_DEBUG
2275 }
2276 
glFramebufferTexture(GLenum target,GLenum attachment,GLuint texture,GLint level)2277 inline void QOpenGLExtraFunctions::glFramebufferTexture(GLenum target, GLenum attachment, GLuint texture, GLint level)
2278 {
2279     Q_D(QOpenGLExtraFunctions);
2280     Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
2281     d->f.FramebufferTexture(target, attachment, texture, level);
2282     Q_OPENGL_FUNCTIONS_DEBUG
2283 }
2284 
glGetDebugMessageLog(GLuint count,GLsizei bufSize,GLenum * sources,GLenum * types,GLuint * ids,GLenum * severities,GLsizei * lengths,GLchar * messageLog)2285 inline GLuint QOpenGLExtraFunctions::glGetDebugMessageLog(GLuint count, GLsizei bufSize, GLenum* sources, GLenum* types, GLuint* ids, GLenum* severities, GLsizei* lengths, GLchar* messageLog)
2286 {
2287     Q_D(QOpenGLExtraFunctions);
2288     Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
2289     GLuint result = d->f.GetDebugMessageLog(count, bufSize, sources, types, ids, severities, lengths, messageLog);
2290     Q_OPENGL_FUNCTIONS_DEBUG
2291     return result;
2292 }
2293 
glGetGraphicsResetStatus()2294 inline GLenum QOpenGLExtraFunctions::glGetGraphicsResetStatus()
2295 {
2296     Q_D(QOpenGLExtraFunctions);
2297     Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
2298     GLenum result = d->f.GetGraphicsResetStatus();
2299     Q_OPENGL_FUNCTIONS_DEBUG
2300     return result;
2301 }
2302 
glGetObjectLabel(GLenum identifier,GLuint name,GLsizei bufSize,GLsizei * length,GLchar * label)2303 inline void QOpenGLExtraFunctions::glGetObjectLabel(GLenum identifier, GLuint name, GLsizei bufSize, GLsizei* length, GLchar* label)
2304 {
2305     Q_D(QOpenGLExtraFunctions);
2306     Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
2307     d->f.GetObjectLabel(identifier, name, bufSize, length, label);
2308     Q_OPENGL_FUNCTIONS_DEBUG
2309 }
2310 
glGetObjectPtrLabel(const void * ptr,GLsizei bufSize,GLsizei * length,GLchar * label)2311 inline void QOpenGLExtraFunctions::glGetObjectPtrLabel(const void * ptr, GLsizei bufSize, GLsizei* length, GLchar* label)
2312 {
2313     Q_D(QOpenGLExtraFunctions);
2314     Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
2315     d->f.GetObjectPtrLabel(ptr, bufSize, length, label);
2316     Q_OPENGL_FUNCTIONS_DEBUG
2317 }
2318 
glGetPointerv(GLenum pname,void ** params)2319 inline void QOpenGLExtraFunctions::glGetPointerv(GLenum pname, void ** params)
2320 {
2321     Q_D(QOpenGLExtraFunctions);
2322     Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
2323     d->f.GetPointerv(pname, params);
2324     Q_OPENGL_FUNCTIONS_DEBUG
2325 }
2326 
glGetSamplerParameterIiv(GLuint sampler,GLenum pname,GLint * params)2327 inline void QOpenGLExtraFunctions::glGetSamplerParameterIiv(GLuint sampler, GLenum pname, GLint* params)
2328 {
2329     Q_D(QOpenGLExtraFunctions);
2330     Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
2331     d->f.GetSamplerParameterIiv(sampler, pname, params);
2332     Q_OPENGL_FUNCTIONS_DEBUG
2333 }
2334 
glGetSamplerParameterIuiv(GLuint sampler,GLenum pname,GLuint * params)2335 inline void QOpenGLExtraFunctions::glGetSamplerParameterIuiv(GLuint sampler, GLenum pname, GLuint* params)
2336 {
2337     Q_D(QOpenGLExtraFunctions);
2338     Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
2339     d->f.GetSamplerParameterIuiv(sampler, pname, params);
2340     Q_OPENGL_FUNCTIONS_DEBUG
2341 }
2342 
glGetTexParameterIiv(GLenum target,GLenum pname,GLint * params)2343 inline void QOpenGLExtraFunctions::glGetTexParameterIiv(GLenum target, GLenum pname, GLint* params)
2344 {
2345     Q_D(QOpenGLExtraFunctions);
2346     Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
2347     d->f.GetTexParameterIiv(target, pname, params);
2348     Q_OPENGL_FUNCTIONS_DEBUG
2349 }
2350 
glGetTexParameterIuiv(GLenum target,GLenum pname,GLuint * params)2351 inline void QOpenGLExtraFunctions::glGetTexParameterIuiv(GLenum target, GLenum pname, GLuint* params)
2352 {
2353     Q_D(QOpenGLExtraFunctions);
2354     Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
2355     d->f.GetTexParameterIuiv(target, pname, params);
2356     Q_OPENGL_FUNCTIONS_DEBUG
2357 }
2358 
glGetnUniformfv(GLuint program,GLint location,GLsizei bufSize,GLfloat * params)2359 inline void QOpenGLExtraFunctions::glGetnUniformfv(GLuint program, GLint location, GLsizei bufSize, GLfloat* params)
2360 {
2361     Q_D(QOpenGLExtraFunctions);
2362     Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
2363     d->f.GetnUniformfv(program, location, bufSize, params);
2364     Q_OPENGL_FUNCTIONS_DEBUG
2365 }
2366 
glGetnUniformiv(GLuint program,GLint location,GLsizei bufSize,GLint * params)2367 inline void QOpenGLExtraFunctions::glGetnUniformiv(GLuint program, GLint location, GLsizei bufSize, GLint* params)
2368 {
2369     Q_D(QOpenGLExtraFunctions);
2370     Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
2371     d->f.GetnUniformiv(program, location, bufSize, params);
2372     Q_OPENGL_FUNCTIONS_DEBUG
2373 }
2374 
glGetnUniformuiv(GLuint program,GLint location,GLsizei bufSize,GLuint * params)2375 inline void QOpenGLExtraFunctions::glGetnUniformuiv(GLuint program, GLint location, GLsizei bufSize, GLuint* params)
2376 {
2377     Q_D(QOpenGLExtraFunctions);
2378     Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
2379     d->f.GetnUniformuiv(program, location, bufSize, params);
2380     Q_OPENGL_FUNCTIONS_DEBUG
2381 }
2382 
glIsEnabledi(GLenum target,GLuint index)2383 inline GLboolean QOpenGLExtraFunctions::glIsEnabledi(GLenum target, GLuint index)
2384 {
2385     Q_D(QOpenGLExtraFunctions);
2386     Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
2387     GLboolean result = d->f.IsEnabledi(target, index);
2388     Q_OPENGL_FUNCTIONS_DEBUG
2389     return result;
2390 }
2391 
glMinSampleShading(GLfloat value)2392 inline void QOpenGLExtraFunctions::glMinSampleShading(GLfloat value)
2393 {
2394     Q_D(QOpenGLExtraFunctions);
2395     Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
2396     d->f.MinSampleShading(value);
2397     Q_OPENGL_FUNCTIONS_DEBUG
2398 }
2399 
glObjectLabel(GLenum identifier,GLuint name,GLsizei length,const GLchar * label)2400 inline void QOpenGLExtraFunctions::glObjectLabel(GLenum identifier, GLuint name, GLsizei length, const GLchar * label)
2401 {
2402     Q_D(QOpenGLExtraFunctions);
2403     Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
2404     d->f.ObjectLabel(identifier, name, length, label);
2405     Q_OPENGL_FUNCTIONS_DEBUG
2406 }
2407 
glObjectPtrLabel(const void * ptr,GLsizei length,const GLchar * label)2408 inline void QOpenGLExtraFunctions::glObjectPtrLabel(const void * ptr, GLsizei length, const GLchar * label)
2409 {
2410     Q_D(QOpenGLExtraFunctions);
2411     Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
2412     d->f.ObjectPtrLabel(ptr, length, label);
2413     Q_OPENGL_FUNCTIONS_DEBUG
2414 }
2415 
glPatchParameteri(GLenum pname,GLint value)2416 inline void QOpenGLExtraFunctions::glPatchParameteri(GLenum pname, GLint value)
2417 {
2418     Q_D(QOpenGLExtraFunctions);
2419     Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
2420     d->f.PatchParameteri(pname, value);
2421     Q_OPENGL_FUNCTIONS_DEBUG
2422 }
2423 
glPopDebugGroup()2424 inline void QOpenGLExtraFunctions::glPopDebugGroup()
2425 {
2426     Q_D(QOpenGLExtraFunctions);
2427     Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
2428     d->f.PopDebugGroup();
2429     Q_OPENGL_FUNCTIONS_DEBUG
2430 }
2431 
glPrimitiveBoundingBox(GLfloat minX,GLfloat minY,GLfloat minZ,GLfloat minW,GLfloat maxX,GLfloat maxY,GLfloat maxZ,GLfloat maxW)2432 inline void QOpenGLExtraFunctions::glPrimitiveBoundingBox(GLfloat minX, GLfloat minY, GLfloat minZ, GLfloat minW, GLfloat maxX, GLfloat maxY, GLfloat maxZ, GLfloat maxW)
2433 {
2434     Q_D(QOpenGLExtraFunctions);
2435     Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
2436     d->f.PrimitiveBoundingBox(minX, minY, minZ, minW, maxX, maxY, maxZ, maxW);
2437     Q_OPENGL_FUNCTIONS_DEBUG
2438 }
2439 
glPushDebugGroup(GLenum source,GLuint id,GLsizei length,const GLchar * message)2440 inline void QOpenGLExtraFunctions::glPushDebugGroup(GLenum source, GLuint id, GLsizei length, const GLchar * message)
2441 {
2442     Q_D(QOpenGLExtraFunctions);
2443     Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
2444     d->f.PushDebugGroup(source, id, length, message);
2445     Q_OPENGL_FUNCTIONS_DEBUG
2446 }
2447 
glReadnPixels(GLint x,GLint y,GLsizei width,GLsizei height,GLenum format,GLenum type,GLsizei bufSize,void * data)2448 inline void QOpenGLExtraFunctions::glReadnPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLsizei bufSize, void * data)
2449 {
2450     Q_D(QOpenGLExtraFunctions);
2451     Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
2452     d->f.ReadnPixels(x, y, width, height, format, type, bufSize, data);
2453     Q_OPENGL_FUNCTIONS_DEBUG
2454 }
2455 
glSamplerParameterIiv(GLuint sampler,GLenum pname,const GLint * param)2456 inline void QOpenGLExtraFunctions::glSamplerParameterIiv(GLuint sampler, GLenum pname, const GLint * param)
2457 {
2458     Q_D(QOpenGLExtraFunctions);
2459     Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
2460     d->f.SamplerParameterIiv(sampler, pname, param);
2461     Q_OPENGL_FUNCTIONS_DEBUG
2462 }
2463 
glSamplerParameterIuiv(GLuint sampler,GLenum pname,const GLuint * param)2464 inline void QOpenGLExtraFunctions::glSamplerParameterIuiv(GLuint sampler, GLenum pname, const GLuint * param)
2465 {
2466     Q_D(QOpenGLExtraFunctions);
2467     Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
2468     d->f.SamplerParameterIuiv(sampler, pname, param);
2469     Q_OPENGL_FUNCTIONS_DEBUG
2470 }
2471 
glTexBuffer(GLenum target,GLenum internalformat,GLuint buffer)2472 inline void QOpenGLExtraFunctions::glTexBuffer(GLenum target, GLenum internalformat, GLuint buffer)
2473 {
2474     Q_D(QOpenGLExtraFunctions);
2475     Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
2476     d->f.TexBuffer(target, internalformat, buffer);
2477     Q_OPENGL_FUNCTIONS_DEBUG
2478 }
2479 
glTexBufferRange(GLenum target,GLenum internalformat,GLuint buffer,GLintptr offset,GLsizeiptr size)2480 inline void QOpenGLExtraFunctions::glTexBufferRange(GLenum target, GLenum internalformat, GLuint buffer, GLintptr offset, GLsizeiptr size)
2481 {
2482     Q_D(QOpenGLExtraFunctions);
2483     Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
2484     d->f.TexBufferRange(target, internalformat, buffer, offset, size);
2485     Q_OPENGL_FUNCTIONS_DEBUG
2486 }
2487 
glTexParameterIiv(GLenum target,GLenum pname,const GLint * params)2488 inline void QOpenGLExtraFunctions::glTexParameterIiv(GLenum target, GLenum pname, const GLint * params)
2489 {
2490     Q_D(QOpenGLExtraFunctions);
2491     Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
2492     d->f.TexParameterIiv(target, pname, params);
2493     Q_OPENGL_FUNCTIONS_DEBUG
2494 }
2495 
glTexParameterIuiv(GLenum target,GLenum pname,const GLuint * params)2496 inline void QOpenGLExtraFunctions::glTexParameterIuiv(GLenum target, GLenum pname, const GLuint * params)
2497 {
2498     Q_D(QOpenGLExtraFunctions);
2499     Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
2500     d->f.TexParameterIuiv(target, pname, params);
2501     Q_OPENGL_FUNCTIONS_DEBUG
2502 }
2503 
glTexStorage3DMultisample(GLenum target,GLsizei samples,GLenum internalformat,GLsizei width,GLsizei height,GLsizei depth,GLboolean fixedsamplelocations)2504 inline void QOpenGLExtraFunctions::glTexStorage3DMultisample(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations)
2505 {
2506     Q_D(QOpenGLExtraFunctions);
2507     Q_ASSERT(QOpenGLExtraFunctions::isInitialized(d));
2508     d->f.TexStorage3DMultisample(target, samples, internalformat, width, height, depth, fixedsamplelocations);
2509     Q_OPENGL_FUNCTIONS_DEBUG
2510 }
2511 
2512 QT_END_NAMESPACE
2513 
2514 #undef QT_OPENGL_DECLARE_FUNCTIONS
2515 #undef QT_OPENGL_COUNT_FUNCTIONS
2516 #undef QT_OPENGL_DECLARE
2517 
2518 #ifdef Q_OS_WIN
2519 #pragma pop_macro("MemoryBarrier")
2520 #endif
2521 
2522 #endif // QT_NO_OPENGL
2523 
2524 #endif
2525