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