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 QT_CONFIG(opengles2) && !QT_CONFIG(opengles32)
57typedef void (QOPENGLF_APIENTRY *GLDEBUGPROC)(GLenum source,GLenum type,GLuint id,GLenum severity,GLsizei length,const GLchar *message,const void *userParam);
58#endif
59
60QT_BEGIN_NAMESPACE
61
62class 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
282class Q_GUI_EXPORT QOpenGLExtraFunctions : public QOpenGLFunctions
283{
284 Q_DECLARE_PRIVATE(QOpenGLExtraFunctions)
285
286public:
287 QOpenGLExtraFunctions();
288 QOpenGLExtraFunctions(QOpenGLContext *context);
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
513private:
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) \
523public: \
524 struct Functions { \
525 FUNCTIONS(QT_OPENGL_DECLARE_FUNCTIONS) \
526 }; \
527 union { \
528 QFunctionPointer functions[FUNCTIONS(QT_OPENGL_COUNT_FUNCTIONS)]; \
529 Functions f; \
530 }; \
531private: \
532 void init(QOpenGLContext *context);
533
534class QOpenGLExtraFunctionsPrivate : public QOpenGLFunctionsPrivate
535{
536public:
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
763inline 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
771inline 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
779inline 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
787inline 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
795inline 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
803inline 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
811inline 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
819inline 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
827inline 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
835inline 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
843inline 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
851inline 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
859inline 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
868inline 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
876inline 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
884inline 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
892inline 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
900inline 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
908inline 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
916inline 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
924inline 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
932inline 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
940inline 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
948inline 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
956inline 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
964inline 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
972inline 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
980inline 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
988inline 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
997inline 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
1005inline 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
1013inline 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
1021inline 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
1029inline 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
1037inline 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
1045inline 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
1053inline 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
1061inline 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
1069inline 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
1077inline 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
1085inline 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
1094inline 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
1102inline 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
1110inline 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
1118inline 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
1126inline 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
1134inline 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
1142inline 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
1150inline 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
1158inline 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
1166inline 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
1175inline 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
1183inline 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
1191inline 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
1200inline 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
1208inline 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
1216inline 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
1224inline 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
1232inline 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
1240inline 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
1248inline 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
1257inline 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
1266inline 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
1275inline 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
1284inline 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
1293inline 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
1302inline 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
1310inline 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
1318inline 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
1326inline 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
1334inline 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
1342inline 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
1350inline 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
1358inline 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
1366inline 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
1374inline 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
1382inline 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
1390inline 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
1398inline 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
1406inline 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
1414inline 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
1422inline 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
1430inline 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
1438inline 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
1446inline 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
1454inline 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
1462inline 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
1470inline 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
1478inline 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
1486inline 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
1494inline 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
1502inline 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
1510inline 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
1518inline 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
1526inline 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
1534inline 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
1542inline 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
1551inline 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
1559inline 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
1567inline 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
1575inline 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
1583inline 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
1591inline 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
1599inline 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
1607inline 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
1615inline 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
1623inline 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
1631inline 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
1639inline 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
1648inline 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
1656inline 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
1664inline 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
1672inline 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
1680inline 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
1688inline 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
1696inline 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
1704inline 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
1712inline 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
1720inline 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
1728inline 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
1736inline 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
1744inline 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
1752inline 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
1761inline 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
1770inline 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
1778inline 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
1786inline 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
1794inline 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
1802inline 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
1811inline 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
1819inline 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
1827inline 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
1835inline 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
1843inline 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
1851inline 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
1859inline 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
1867inline 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
1875inline 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
1883inline 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
1891inline 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
1899inline 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
1907inline 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
1915inline 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
1923inline 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
1931inline 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
1939inline 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
1947inline 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
1955inline 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
1963inline 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
1971inline 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
1979inline 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
1987inline 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
1995inline 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
2003inline 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
2011inline 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
2019inline 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
2027inline 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
2035inline 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
2043inline 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
2051inline 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
2059inline 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
2067inline 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
2075inline 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
2083inline 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
2091inline 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
2099inline 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
2107inline 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
2115inline 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
2123inline 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
2131inline 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
2139inline 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
2147inline 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
2157inline 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
2165inline 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
2173inline 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
2181inline 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
2189inline 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
2197inline 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
2205inline 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
2213inline 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
2221inline 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
2229inline 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
2237inline 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
2245inline 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
2253inline 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
2261inline 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
2269inline 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
2277inline 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
2285inline 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
2294inline 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
2303inline 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
2311inline 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
2319inline 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
2327inline 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
2335inline 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
2343inline 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
2351inline 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
2359inline 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
2367inline 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
2375inline 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
2383inline 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
2392inline 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
2400inline 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
2408inline 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
2416inline 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
2424inline 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
2432inline 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
2440inline 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
2448inline 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
2456inline 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
2464inline 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
2472inline 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
2480inline 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
2488inline 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
2496inline 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
2504inline 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
2512QT_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