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

source code of qtbase/src/gui/opengl/qopenglextrafunctions.h