18bf80f4bSopenharmony_ci/*
28bf80f4bSopenharmony_ci * Copyright (c) 2024 Huawei Device Co., Ltd.
38bf80f4bSopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License");
48bf80f4bSopenharmony_ci * you may not use this file except in compliance with the License.
58bf80f4bSopenharmony_ci * You may obtain a copy of the License at
68bf80f4bSopenharmony_ci *
78bf80f4bSopenharmony_ci *     http://www.apache.org/licenses/LICENSE-2.0
88bf80f4bSopenharmony_ci *
98bf80f4bSopenharmony_ci * Unless required by applicable law or agreed to in writing, software
108bf80f4bSopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS,
118bf80f4bSopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
128bf80f4bSopenharmony_ci * See the License for the specific language governing permissions and
138bf80f4bSopenharmony_ci * limitations under the License.
148bf80f4bSopenharmony_ci */
158bf80f4bSopenharmony_ci
168bf80f4bSopenharmony_ci#if RENDER_HAS_GLES_BACKEND
178bf80f4bSopenharmony_ci
188bf80f4bSopenharmony_ci#ifndef declare
198bf80f4bSopenharmony_ci// clang-format off
208bf80f4bSopenharmony_ci#include <GLES3/gl3.h>
218bf80f4bSopenharmony_ci#include <GLES3/gl31.h>
228bf80f4bSopenharmony_ci#include <GLES3/gl32.h>
238bf80f4bSopenharmony_ci#include <GLES2/gl2ext.h>
248bf80f4bSopenharmony_ci// clang-format on
258bf80f4bSopenharmony_ci#define declare(a, b) extern a b;
268bf80f4bSopenharmony_ci#endif
278bf80f4bSopenharmony_ci
288bf80f4bSopenharmony_ci#if defined(_WIN32)
298bf80f4bSopenharmony_ci// The following are gles 3.2 core, but need to be fetched with eglGetProcAddress on PowerVR and MALI simulators.
308bf80f4bSopenharmony_cideclare(PFNGLDRAWELEMENTSBASEVERTEXPROC, glDrawElementsBaseVertex);
318bf80f4bSopenharmony_cideclare(PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXPROC, glDrawElementsInstancedBaseVertex);
328bf80f4bSopenharmony_cideclare(PFNGLDEBUGMESSAGECALLBACKPROC, glDebugMessageCallback);
338bf80f4bSopenharmony_cideclare(PFNGLDEBUGMESSAGECONTROLPROC, glDebugMessageControl);
348bf80f4bSopenharmony_cideclare(PFNGLPUSHDEBUGGROUPPROC, glPushDebugGroup);
358bf80f4bSopenharmony_cideclare(PFNGLPOPDEBUGGROUPPROC, glPopDebugGroup);
368bf80f4bSopenharmony_cideclare(PFNGLCOLORMASKIPROC, glColorMaski);
378bf80f4bSopenharmony_cideclare(PFNGLENABLEIPROC, glEnablei);
388bf80f4bSopenharmony_cideclare(PFNGLDISABLEIPROC, glDisablei);
398bf80f4bSopenharmony_cideclare(PFNGLBLENDFUNCSEPARATEIPROC, glBlendFuncSeparatei);
408bf80f4bSopenharmony_cideclare(PFNGLBLENDEQUATIONSEPARATEIPROC, glBlendEquationSeparatei);
418bf80f4bSopenharmony_cideclare(PFNGLREADNPIXELSPROC, glReadnPixels)
428bf80f4bSopenharmony_ci#endif
438bf80f4bSopenharmony_ci
448bf80f4bSopenharmony_ci    declare(PFNGLBUFFERSTORAGEEXTPROC, glBufferStorageEXT);
458bf80f4bSopenharmony_ci
468bf80f4bSopenharmony_cideclare(PFNGLEGLIMAGETARGETTEXTURE2DOESPROC, glEGLImageTargetTexture2DOES);
478bf80f4bSopenharmony_ci
488bf80f4bSopenharmony_ci#ifndef GL_EXT_multisampled_render_to_texture
498bf80f4bSopenharmony_ci#define GL_EXT_multisampled_render_to_texture
508bf80f4bSopenharmony_ciconst unsigned int GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_SAMPLES_EXT = 0x8D6C;
518bf80f4bSopenharmony_ciconst unsigned int GL_RENDERBUFFER_SAMPLES_EXT = 0x8CAB;
528bf80f4bSopenharmony_ciconst unsigned int GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_EXT = 0x8D56;
538bf80f4bSopenharmony_ciconst unsigned int GL_MAX_SAMPLES_EXT 0x8D57;
548bf80f4bSopenharmony_ciusing PFNGLRENDERBUFFERSTORAGEMULTISAMPLEEXTPROC = void(GL_APIENTRYP)(
558bf80f4bSopenharmony_ci    GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height);
568bf80f4bSopenharmony_ciusing PFNGLFRAMEBUFFERTEXTURE2DMULTISAMPLEEXTPROC = void(GL_APIENTRYP)(
578bf80f4bSopenharmony_ci    GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLsizei samples);
588bf80f4bSopenharmony_ci#endif /* GL_EXT_multisampled_render_to_texture */
598bf80f4bSopenharmony_ci
608bf80f4bSopenharmony_cideclare(PFNGLRENDERBUFFERSTORAGEMULTISAMPLEEXTPROC, glRenderbufferStorageMultisampleEXT);
618bf80f4bSopenharmony_cideclare(PFNGLFRAMEBUFFERTEXTURE2DMULTISAMPLEEXTPROC, glFramebufferTexture2DMultisampleEXT);
628bf80f4bSopenharmony_ci
638bf80f4bSopenharmony_cideclare(PFNGLFRAMEBUFFERTEXTUREMULTIVIEWOVRPROC, glFramebufferTextureMultiviewOVR);
648bf80f4bSopenharmony_ci
658bf80f4bSopenharmony_cideclare(PFNGLFRAMEBUFFERTEXTUREMULTISAMPLEMULTIVIEWOVRPROC, glFramebufferTextureMultisampleMultiviewOVR);
668bf80f4bSopenharmony_ci
678bf80f4bSopenharmony_cideclare(PFNGLGETQUERYOBJECTUI64VEXTPROC, glGetQueryObjectui64vEXT);
688bf80f4bSopenharmony_ci#elif RENDER_HAS_GL_BACKEND
698bf80f4bSopenharmony_ci
708bf80f4bSopenharmony_ci#ifndef declare
718bf80f4bSopenharmony_ci#include <gl/glcorearb.h>
728bf80f4bSopenharmony_ci#include <gl/glext.h>
738bf80f4bSopenharmony_ci#define declare(a, b) extern a b;
748bf80f4bSopenharmony_ci#endif
758bf80f4bSopenharmony_ci
768bf80f4bSopenharmony_cideclare(PFNGLDRAWBUFFERSPROC, glDrawBuffers);
778bf80f4bSopenharmony_cideclare(PFNGLPUSHDEBUGGROUPPROC, glPushDebugGroup);
788bf80f4bSopenharmony_cideclare(PFNGLPOPDEBUGGROUPPROC, glPopDebugGroup);
798bf80f4bSopenharmony_cideclare(PFNGLACTIVETEXTUREPROC, glActiveTexture);
808bf80f4bSopenharmony_cideclare(PFNGLATTACHSHADERPROC, glAttachShader);
818bf80f4bSopenharmony_cideclare(PFNGLBINDBUFFERPROC, glBindBuffer);
828bf80f4bSopenharmony_cideclare(PFNGLBINDBUFFERRANGEPROC, glBindBufferRange);
838bf80f4bSopenharmony_cideclare(PFNGLBINDFRAMEBUFFERPROC, glBindFramebuffer);
848bf80f4bSopenharmony_cideclare(PFNGLBINDIMAGETEXTUREPROC, glBindImageTexture);
858bf80f4bSopenharmony_cideclare(PFNGLBINDSAMPLERPROC, glBindSampler);
868bf80f4bSopenharmony_cideclare(PFNGLBINDTEXTUREPROC, glBindTexture);
878bf80f4bSopenharmony_cideclare(PFNGLBINDVERTEXARRAYPROC, glBindVertexArray);
888bf80f4bSopenharmony_cideclare(PFNGLBINDVERTEXBUFFERPROC, glBindVertexBuffer);
898bf80f4bSopenharmony_cideclare(PFNGLVERTEXBINDINGDIVISORPROC, glVertexBindingDivisor);
908bf80f4bSopenharmony_cideclare(PFNGLBLENDCOLORPROC, glBlendColor);
918bf80f4bSopenharmony_cideclare(PFNGLBLENDEQUATIONSEPARATEPROC, glBlendEquationSeparate);
928bf80f4bSopenharmony_cideclare(PFNGLBLENDEQUATIONSEPARATEIPROC, glBlendEquationSeparatei);
938bf80f4bSopenharmony_cideclare(PFNGLBLENDFUNCSEPARATEPROC, glBlendFuncSeparate);
948bf80f4bSopenharmony_cideclare(PFNGLBLENDFUNCSEPARATEIPROC, glBlendFuncSeparatei);
958bf80f4bSopenharmony_cideclare(PFNGLBLITFRAMEBUFFERPROC, glBlitFramebuffer);
968bf80f4bSopenharmony_cideclare(PFNGLBUFFERDATAPROC, glBufferData);
978bf80f4bSopenharmony_cideclare(PFNGLCHECKFRAMEBUFFERSTATUSPROC, glCheckFramebufferStatus);
988bf80f4bSopenharmony_cideclare(PFNGLCLEARBUFFERFIPROC, glClearBufferfi);
998bf80f4bSopenharmony_cideclare(PFNGLCLEARBUFFERFVPROC, glClearBufferfv);
1008bf80f4bSopenharmony_cideclare(PFNGLCLEARBUFFERIVPROC, glClearBufferiv);
1018bf80f4bSopenharmony_cideclare(PFNGLCLEARTEXIMAGEPROC, glClearTexImage);
1028bf80f4bSopenharmony_cideclare(PFNGLCOLORMASKPROC, glColorMask);
1038bf80f4bSopenharmony_cideclare(PFNGLCOLORMASKIPROC, glColorMaski);
1048bf80f4bSopenharmony_cideclare(PFNGLCOMPILESHADERPROC, glCompileShader);
1058bf80f4bSopenharmony_cideclare(PFNGLREADPIXELSPROC, glReadPixels);
1068bf80f4bSopenharmony_cideclare(PFNGLREADNPIXELSPROC, glReadnPixels);
1078bf80f4bSopenharmony_cideclare(PFNGLCOPYBUFFERSUBDATAPROC, glCopyBufferSubData);
1088bf80f4bSopenharmony_cideclare(PFNGLCREATEPROGRAMPROC, glCreateProgram);
1098bf80f4bSopenharmony_cideclare(PFNGLCREATESHADERPROC, glCreateShader);
1108bf80f4bSopenharmony_cideclare(PFNGLPROGRAMUNIFORM1IPROC, glProgramUniform1i);
1118bf80f4bSopenharmony_cideclare(PFNGLPROGRAMUNIFORM1IVPROC, glProgramUniform1iv);
1128bf80f4bSopenharmony_cideclare(PFNGLPROGRAMUNIFORM1UIVPROC, glProgramUniform1uiv);
1138bf80f4bSopenharmony_cideclare(PFNGLPROGRAMUNIFORM4UIVPROC, glProgramUniform4uiv);
1148bf80f4bSopenharmony_cideclare(PFNGLPROGRAMUNIFORM1FVPROC, glProgramUniform1fv);
1158bf80f4bSopenharmony_cideclare(PFNGLPROGRAMUNIFORM2FVPROC, glProgramUniform2fv);
1168bf80f4bSopenharmony_cideclare(PFNGLPROGRAMUNIFORM4FVPROC, glProgramUniform4fv);
1178bf80f4bSopenharmony_cideclare(PFNGLPROGRAMUNIFORMMATRIX4FVPROC, glProgramUniformMatrix4fv);
1188bf80f4bSopenharmony_cideclare(PFNGLCULLFACEPROC, glCullFace);
1198bf80f4bSopenharmony_cideclare(PFNGLDEBUGMESSAGECALLBACKPROC, glDebugMessageCallback);
1208bf80f4bSopenharmony_cideclare(PFNGLDEBUGMESSAGECONTROLPROC, glDebugMessageControl);
1218bf80f4bSopenharmony_cideclare(PFNGLDELETEBUFFERSPROC, glDeleteBuffers);
1228bf80f4bSopenharmony_cideclare(PFNGLDELETEFRAMEBUFFERSPROC, glDeleteFramebuffers);
1238bf80f4bSopenharmony_cideclare(PFNGLDELETEPROGRAMPROC, glDeleteProgram);
1248bf80f4bSopenharmony_cideclare(PFNGLDELETESAMPLERSPROC, glDeleteSamplers);
1258bf80f4bSopenharmony_cideclare(PFNGLDELETESHADERPROC, glDeleteShader);
1268bf80f4bSopenharmony_cideclare(PFNGLDELETETEXTURESPROC, glDeleteTextures);
1278bf80f4bSopenharmony_cideclare(PFNGLDELETEVERTEXARRAYSPROC, glDeleteVertexArrays);
1288bf80f4bSopenharmony_cideclare(PFNGLDEPTHFUNCPROC, glDepthFunc);
1298bf80f4bSopenharmony_cideclare(PFNGLDEPTHMASKPROC, glDepthMask);
1308bf80f4bSopenharmony_cideclare(PFNGLDEPTHRANGEFPROC, glDepthRangef);
1318bf80f4bSopenharmony_cideclare(PFNGLDISABLEPROC, glDisable);
1328bf80f4bSopenharmony_cideclare(PFNGLDISABLEIPROC, glDisablei);
1338bf80f4bSopenharmony_cideclare(PFNGLDISPATCHCOMPUTEPROC, glDispatchCompute);
1348bf80f4bSopenharmony_cideclare(PFNGLDISPATCHCOMPUTEINDIRECTPROC, glDispatchComputeIndirect);
1358bf80f4bSopenharmony_cideclare(PFNGLDRAWARRAYSINSTANCEDPROC, glDrawArraysInstanced);
1368bf80f4bSopenharmony_cideclare(PFNGLDRAWARRAYSINDIRECTPROC, glDrawArraysIndirect);
1378bf80f4bSopenharmony_cideclare(PFNGLDRAWARRAYSPROC, glDrawArrays);
1388bf80f4bSopenharmony_cideclare(PFNGLDRAWELEMENTSBASEVERTEXPROC, glDrawElementsBaseVertex);
1398bf80f4bSopenharmony_cideclare(PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXPROC, glDrawElementsInstancedBaseVertex);
1408bf80f4bSopenharmony_cideclare(PFNGLDRAWELEMENTSINSTANCEDPROC, glDrawElementsInstanced);
1418bf80f4bSopenharmony_cideclare(PFNGLDRAWELEMENTSINDIRECTPROC, glDrawElementsIndirect);
1428bf80f4bSopenharmony_cideclare(PFNGLDRAWELEMENTSPROC, glDrawElements);
1438bf80f4bSopenharmony_cideclare(PFNGLENABLEPROC, glEnable);
1448bf80f4bSopenharmony_cideclare(PFNGLENABLEIPROC, glEnablei);
1458bf80f4bSopenharmony_cideclare(PFNGLENABLEVERTEXATTRIBARRAYPROC, glEnableVertexAttribArray);
1468bf80f4bSopenharmony_cideclare(PFNGLDISABLEVERTEXATTRIBARRAYPROC, glDisableVertexAttribArray);
1478bf80f4bSopenharmony_cideclare(PFNGLFRAMEBUFFERTEXTURELAYERPROC, glFramebufferTextureLayer);
1488bf80f4bSopenharmony_cideclare(PFNGLFRAMEBUFFERTEXTURE2DPROC, glFramebufferTexture2D);
1498bf80f4bSopenharmony_cideclare(PFNGLFRONTFACEPROC, glFrontFace);
1508bf80f4bSopenharmony_cideclare(PFNGLGENBUFFERSPROC, glGenBuffers);
1518bf80f4bSopenharmony_cideclare(PFNGLGENFRAMEBUFFERSPROC, glGenFramebuffers);
1528bf80f4bSopenharmony_cideclare(PFNGLGENSAMPLERSPROC, glGenSamplers);
1538bf80f4bSopenharmony_cideclare(PFNGLGENTEXTURESPROC, glGenTextures);
1548bf80f4bSopenharmony_cideclare(PFNGLGENVERTEXARRAYSPROC, glGenVertexArrays);
1558bf80f4bSopenharmony_cideclare(PFNGLGETSTRINGPROC, glGetString);
1568bf80f4bSopenharmony_cideclare(PFNGLGETSTRINGIPROC, glGetStringi);
1578bf80f4bSopenharmony_cideclare(PFNGLGETFLOATVPROC, glGetFloatv);
1588bf80f4bSopenharmony_cideclare(PFNGLGETFLOATI_VPROC, glGetFloati_v);
1598bf80f4bSopenharmony_cideclare(PFNGLGETINTEGERVPROC, glGetIntegerv);
1608bf80f4bSopenharmony_cideclare(PFNGLGETINTEGER64VPROC, glGetInteger64v);
1618bf80f4bSopenharmony_cideclare(PFNGLGETINTEGERI_VPROC, glGetIntegeri_v);
1628bf80f4bSopenharmony_cideclare(PFNGLGETPROGRAMINFOLOGPROC, glGetProgramInfoLog);
1638bf80f4bSopenharmony_cideclare(PFNGLGETPROGRAMIVPROC, glGetProgramiv);
1648bf80f4bSopenharmony_cideclare(PFNGLGETACTIVEUNIFORMBLOCKIVPROC, glGetActiveUniformBlockiv);
1658bf80f4bSopenharmony_cideclare(PFNGLGETACTIVEUNIFORMBLOCKNAMEPROC, glGetActiveUniformBlockName);
1668bf80f4bSopenharmony_cideclare(PFNGLUNIFORMBLOCKBINDINGPROC, glUniformBlockBinding);
1678bf80f4bSopenharmony_cideclare(PFNGLGETSHADERINFOLOGPROC, glGetShaderInfoLog);
1688bf80f4bSopenharmony_cideclare(PFNGLGETSHADERIVPROC, glGetShaderiv);
1698bf80f4bSopenharmony_cideclare(PFNGLGETUNIFORMIVPROC, glGetUniformiv);
1708bf80f4bSopenharmony_cideclare(PFNGLGETUNIFORMLOCATIONPROC, glGetUniformLocation);
1718bf80f4bSopenharmony_cideclare(PFNGLGETACTIVEUNIFORMPROC, glGetActiveUniform);
1728bf80f4bSopenharmony_cideclare(PFNGLGETPROGRAMINTERFACEIVPROC, glGetProgramInterfaceiv);
1738bf80f4bSopenharmony_cideclare(PFNGLGETPROGRAMRESOURCENAMEPROC, glGetProgramResourceName);
1748bf80f4bSopenharmony_cideclare(PFNGLGETPROGRAMRESOURCEINDEXPROC, glGetProgramResourceIndex);
1758bf80f4bSopenharmony_cideclare(PFNGLGETPROGRAMRESOURCEIVPROC, glGetProgramResourceiv);
1768bf80f4bSopenharmony_cideclare(PFNGLLINEWIDTHPROC, glLineWidth);
1778bf80f4bSopenharmony_cideclare(PFNGLLINKPROGRAMPROC, glLinkProgram);
1788bf80f4bSopenharmony_cideclare(PFNGLMAPBUFFERRANGEPROC, glMapBufferRange);
1798bf80f4bSopenharmony_cideclare(PFNGLMEMORYBARRIERPROC, glMemoryBarrier);
1808bf80f4bSopenharmony_cideclare(PFNGLMEMORYBARRIERBYREGIONPROC, glMemoryBarrierByRegion);
1818bf80f4bSopenharmony_cideclare(PFNGLPIXELSTOREIPROC, glPixelStorei);
1828bf80f4bSopenharmony_cideclare(PFNGLPOLYGONMODEPROC, glPolygonMode);
1838bf80f4bSopenharmony_cideclare(PFNGLPOLYGONOFFSETPROC, glPolygonOffset);
1848bf80f4bSopenharmony_cideclare(PFNGLSAMPLERPARAMETERFPROC, glSamplerParameterf);
1858bf80f4bSopenharmony_cideclare(PFNGLSAMPLERPARAMETERFVPROC, glSamplerParameterfv);
1868bf80f4bSopenharmony_cideclare(PFNGLSAMPLERPARAMETERIPROC, glSamplerParameteri);
1878bf80f4bSopenharmony_cideclare(PFNGLSCISSORPROC, glScissor);
1888bf80f4bSopenharmony_cideclare(PFNGLSHADERSOURCEPROC, glShaderSource);
1898bf80f4bSopenharmony_cideclare(PFNGLSTENCILFUNCSEPARATEPROC, glStencilFuncSeparate);
1908bf80f4bSopenharmony_cideclare(PFNGLSTENCILMASKSEPARATEPROC, glStencilMaskSeparate);
1918bf80f4bSopenharmony_cideclare(PFNGLSTENCILOPSEPARATEPROC, glStencilOpSeparate);
1928bf80f4bSopenharmony_cideclare(PFNGLTEXPARAMETERIPROC, glTexParameteri);
1938bf80f4bSopenharmony_cideclare(PFNGLTEXSTORAGE2DPROC, glTexStorage2D);
1948bf80f4bSopenharmony_cideclare(PFNGLTEXSTORAGE3DPROC, glTexStorage3D);
1958bf80f4bSopenharmony_cideclare(PFNGLTEXSUBIMAGE2DPROC, glTexSubImage2D);
1968bf80f4bSopenharmony_cideclare(PFNGLTEXSUBIMAGE3DPROC, glTexSubImage3D);
1978bf80f4bSopenharmony_cideclare(PFNGLCOMPRESSEDTEXSUBIMAGE2DPROC, glCompressedTexSubImage2D);
1988bf80f4bSopenharmony_cideclare(PFNGLCOMPRESSEDTEXSUBIMAGE3DPROC, glCompressedTexSubImage3D);
1998bf80f4bSopenharmony_cideclare(PFNGLUNMAPBUFFERPROC, glUnmapBuffer);
2008bf80f4bSopenharmony_cideclare(PFNGLUSEPROGRAMPROC, glUseProgram);
2018bf80f4bSopenharmony_cideclare(PFNGLVERTEXATTRIBBINDINGPROC, glVertexAttribBinding);
2028bf80f4bSopenharmony_cideclare(PFNGLVERTEXATTRIBFORMATPROC, glVertexAttribFormat);
2038bf80f4bSopenharmony_cideclare(PFNGLVERTEXATTRIBIFORMATPROC, glVertexAttribIFormat);
2048bf80f4bSopenharmony_cideclare(PFNGLVIEWPORTPROC, glViewport);
2058bf80f4bSopenharmony_cideclare(PFNGLCLIENTWAITSYNCPROC, glClientWaitSync);
2068bf80f4bSopenharmony_cideclare(PFNGLDELETESYNCPROC, glDeleteSync);
2078bf80f4bSopenharmony_cideclare(PFNGLFENCESYNCPROC, glFenceSync);
2088bf80f4bSopenharmony_cideclare(PFNGLBUFFERSTORAGEPROC, glBufferStorage);
2098bf80f4bSopenharmony_cideclare(PFNGLCOPYIMAGESUBDATAPROC, glCopyImageSubData);
2108bf80f4bSopenharmony_ci
2118bf80f4bSopenharmony_cideclare(PFNGLTEXSTORAGE2DMULTISAMPLEPROC, glTexStorage2DMultisample);
2128bf80f4bSopenharmony_ci
2138bf80f4bSopenharmony_cideclare(PFNGLGENQUERIESPROC, glGenQueries);
2148bf80f4bSopenharmony_cideclare(PFNGLDELETEQUERIESPROC, glDeleteQueries);
2158bf80f4bSopenharmony_cideclare(PFNGLBEGINQUERYPROC, glBeginQuery);
2168bf80f4bSopenharmony_cideclare(PFNGLENDQUERYPROC, glEndQuery);
2178bf80f4bSopenharmony_cideclare(PFNGLGETQUERYOBJECTUIVPROC, glGetQueryObjectuiv);
2188bf80f4bSopenharmony_cideclare(PFNGLGETQUERYOBJECTUI64VPROC, glGetQueryObjectui64v);
2198bf80f4bSopenharmony_ci
2208bf80f4bSopenharmony_cideclare(PFNGLINVALIDATEFRAMEBUFFERPROC, glInvalidateFramebuffer);
2218bf80f4bSopenharmony_cideclare(PFNGLINVALIDATESUBFRAMEBUFFERPROC, glInvalidateSubFramebuffer);
2228bf80f4bSopenharmony_cideclare(PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVPROC, glGetFramebufferAttachmentParameteriv);
2238bf80f4bSopenharmony_ci
2248bf80f4bSopenharmony_cideclare(PFNGLFINISHPROC, glFinish);
2258bf80f4bSopenharmony_cideclare(PFNGLFLUSHPROC, glFlush);
2268bf80f4bSopenharmony_ci
2278bf80f4bSopenharmony_cideclare(PFNGLGENPROGRAMPIPELINESPROC, glGenProgramPipelines);
2288bf80f4bSopenharmony_cideclare(PFNGLBINDPROGRAMPIPELINEPROC, glBindProgramPipeline);
2298bf80f4bSopenharmony_cideclare(PFNGLUSEPROGRAMSTAGESPROC, glUseProgramStages);
2308bf80f4bSopenharmony_cideclare(PFNGLDELETEPROGRAMPIPELINESPROC, glDeleteProgramPipelines);
2318bf80f4bSopenharmony_cideclare(PFNGLPROGRAMPARAMETERIPROC, glProgramParameteri);
2328bf80f4bSopenharmony_cideclare(PFNGLCREATESHADERPROGRAMVPROC, glCreateShaderProgramv);
2338bf80f4bSopenharmony_ci
2348bf80f4bSopenharmony_cideclare(PFNGLGETBUFFERPARAMETERIVPROC, glGetBufferParameteriv);
2358bf80f4bSopenharmony_cideclare(PFNGLGETBUFFERPARAMETERI64VPROC, glGetBufferParameteri64v);
2368bf80f4bSopenharmony_cideclare(PFNGLGETBUFFERPOINTERVPROC, glGetBufferPointerv);
2378bf80f4bSopenharmony_ci
2388bf80f4bSopenharmony_cideclare(PFNGLOBJECTLABELPROC, glObjectLabel);
2398bf80f4bSopenharmony_ci
2408bf80f4bSopenharmony_ci// Define the EXT versions, to match GLES.
2418bf80f4bSopenharmony_ci#define glBufferStorageEXT glBufferStorage
2428bf80f4bSopenharmony_ci#define GL_MAP_PERSISTENT_BIT_EXT GL_MAP_PERSISTENT_BIT
2438bf80f4bSopenharmony_ci#define GL_MAP_COHERENT_BIT_EXT GL_MAP_COHERENT_BIT
2448bf80f4bSopenharmony_ci#define GL_DYNAMIC_STORAGE_BIT_EXT GL_DYNAMIC_STORAGE_BIT
2458bf80f4bSopenharmony_ci#define GL_CLIENT_STORAGE_BIT_EXT GL_CLIENT_STORAGE_BIT
2468bf80f4bSopenharmony_ci
2478bf80f4bSopenharmony_ci#ifndef GL_EXT_timer_query
2488bf80f4bSopenharmony_ci// GL_GPU_DISJOINT_EXT does not exist and is ignored.
2498bf80f4bSopenharmony_ci#define GL_TIME_ELAPSED_EXT GL_TIME_ELAPSED
2508bf80f4bSopenharmony_ci#endif
2518bf80f4bSopenharmony_ci
2528bf80f4bSopenharmony_cideclare(PFNGLFRAMEBUFFERRENDERBUFFERPROC, glFramebufferRenderbuffer);
2538bf80f4bSopenharmony_cideclare(PFNGLGENRENDERBUFFERSPROC, glGenRenderbuffers);
2548bf80f4bSopenharmony_cideclare(PFNGLBINDRENDERBUFFERPROC, glBindRenderbuffer);
2558bf80f4bSopenharmony_cideclare(PFNGLRENDERBUFFERSTORAGEPROC, glRenderbufferStorage);
2568bf80f4bSopenharmony_cideclare(PFNGLRENDERBUFFERSTORAGEMULTISAMPLEPROC, glRenderbufferStorageMultisample);
2578bf80f4bSopenharmony_cideclare(PFNGLDELETERENDERBUFFERSPROC, glDeleteRenderbuffers);
2588bf80f4bSopenharmony_ci
2598bf80f4bSopenharmony_cideclare(PFNGLFRAMEBUFFERTEXTUREMULTIVIEWOVRPROC, glFramebufferTextureMultiviewOVR);
2608bf80f4bSopenharmony_ci#else
2618bf80f4bSopenharmony_ci#pragma(error, "Neither GL or GLES is enabled in GLFunctions.h")
2628bf80f4bSopenharmony_ci#endif
2638bf80f4bSopenharmony_ci#undef declare