/*
 * Copyright (c) 2017 ARM Limited.
 *
 * SPDX-License-Identifier: MIT
 *
 * Permission is hereby granted, free of charge, to any person obtaining a copy
 * of this software and associated documentation files (the "Software"), to
 * deal in the Software without restriction, including without limitation the
 * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
 * sell copies of the Software, and to permit persons to whom the Software is
 * furnished to do so, subject to the following conditions:
 *
 * The above copyright notice and this permission notice shall be included in all
 * copies or substantial portions of the Software.
 *
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
 * SOFTWARE.
 */

GL_ENTRY(glAttachShader)
GL_ENTRY(glCompileShader)
GL_ENTRY(glCreateProgram)
GL_ENTRY(glCreateShader)
GL_ENTRY(glDeleteProgram)
GL_ENTRY(glDeleteShader)
GL_ENTRY(glDetachShader)
GL_ENTRY(glGetProgramInfoLog)
GL_ENTRY(glGetProgramiv)
GL_ENTRY(glGetShaderInfoLog)
GL_ENTRY(glGetShaderiv)
GL_ENTRY(glLinkProgram)
GL_ENTRY(glShaderSource)
GL_ENTRY(glUseProgram)
GL_ENTRY(glBindBuffer)
GL_ENTRY(glBindBufferBase)
GL_ENTRY(glBufferData)
GL_ENTRY(glDeleteBuffers)
GL_ENTRY(glDispatchCompute)
GL_ENTRY(glFlush)
GL_ENTRY(glGenBuffers)
GL_ENTRY(glGetProgramResourceIndex)
GL_ENTRY(glGetUniformLocation)
GL_ENTRY(glMapBufferRange)
GL_ENTRY(glMemoryBarrier)
GL_ENTRY(glUniform1ui)
GL_ENTRY(glUnmapBuffer)
GL_ENTRY(glGetError)
GL_ENTRY(glGetActiveUniformBlockiv)
GL_ENTRY(glUniformBlockBinding)
GL_ENTRY(glGetUniformBlockIndex)
GL_ENTRY(glGenTextures)
GL_ENTRY(glDeleteTextures)
GL_ENTRY(glBindTexture)
GL_ENTRY(glTexImage2D)
GL_ENTRY(glGenFramebuffers)
GL_ENTRY(glDeleteFramebuffers)
GL_ENTRY(glBindFramebuffer)
GL_ENTRY(glFramebufferTexture2D)
