// GENERATED FILE - DO NOT EDIT.
// Generated by generate_entry_points.py using data from gl.xml and gl_angle_ext.xml.
//
// Copyright 2019 The ANGLE Project Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
//
// validationES3_autogen.h:
//   Validation functions for the OpenGL ES 3.0 entry points.

#ifndef LIBANGLE_VALIDATION_ES3_AUTOGEN_H_
#define LIBANGLE_VALIDATION_ES3_AUTOGEN_H_

#include "common/PackedEnums.h"

namespace gl
{
class Context;

bool ValidateBeginQuery(Context *context, QueryType targetPacked, GLuint id);
bool ValidateBeginTransformFeedback(Context *context, PrimitiveMode primitiveModePacked);
bool ValidateBindBufferBase(Context *context,
                            BufferBinding targetPacked,
                            GLuint index,
                            GLuint buffer);
bool ValidateBindBufferRange(Context *context,
                             BufferBinding targetPacked,
                             GLuint index,
                             GLuint buffer,
                             GLintptr offset,
                             GLsizeiptr size);
bool ValidateBindSampler(Context *context, GLuint unit, GLuint sampler);
bool ValidateBindTransformFeedback(Context *context, GLenum target, GLuint id);
bool ValidateBindVertexArray(Context *context, GLuint array);
bool ValidateBlitFramebuffer(Context *context,
                             GLint srcX0,
                             GLint srcY0,
                             GLint srcX1,
                             GLint srcY1,
                             GLint dstX0,
                             GLint dstY0,
                             GLint dstX1,
                             GLint dstY1,
                             GLbitfield mask,
                             GLenum filter);
bool ValidateClearBufferfi(Context *context,
                           GLenum buffer,
                           GLint drawbuffer,
                           GLfloat depth,
                           GLint stencil);
bool ValidateClearBufferfv(Context *context, GLenum buffer, GLint drawbuffer, const GLfloat *value);
bool ValidateClearBufferiv(Context *context, GLenum buffer, GLint drawbuffer, const GLint *value);
bool ValidateClearBufferuiv(Context *context, GLenum buffer, GLint drawbuffer, const GLuint *value);
bool ValidateClientWaitSync(Context *context, GLsync sync, GLbitfield flags, GLuint64 timeout);
bool ValidateCompressedTexImage3D(Context *context,
                                  TextureTarget targetPacked,
                                  GLint level,
                                  GLenum internalformat,
                                  GLsizei width,
                                  GLsizei height,
                                  GLsizei depth,
                                  GLint border,
                                  GLsizei imageSize,
                                  const void *data);
bool ValidateCompressedTexSubImage3D(Context *context,
                                     TextureTarget targetPacked,
                                     GLint level,
                                     GLint xoffset,
                                     GLint yoffset,
                                     GLint zoffset,
                                     GLsizei width,
                                     GLsizei height,
                                     GLsizei depth,
                                     GLenum format,
                                     GLsizei imageSize,
                                     const void *data);
bool ValidateCopyBufferSubData(Context *context,
                               BufferBinding readTargetPacked,
                               BufferBinding writeTargetPacked,
                               GLintptr readOffset,
                               GLintptr writeOffset,
                               GLsizeiptr size);
bool ValidateCopyTexSubImage3D(Context *context,
                               TextureTarget targetPacked,
                               GLint level,
                               GLint xoffset,
                               GLint yoffset,
                               GLint zoffset,
                               GLint x,
                               GLint y,
                               GLsizei width,
                               GLsizei height);
bool ValidateDeleteQueries(Context *context, GLsizei n, const GLuint *ids);
bool ValidateDeleteSamplers(Context *context, GLsizei count, const GLuint *samplers);
bool ValidateDeleteSync(Context *context, GLsync sync);
bool ValidateDeleteTransformFeedbacks(Context *context, GLsizei n, const GLuint *ids);
bool ValidateDeleteVertexArrays(Context *context, GLsizei n, const GLuint *arrays);
bool ValidateDrawArraysInstanced(Context *context,
                                 PrimitiveMode modePacked,
                                 GLint first,
                                 GLsizei count,
                                 GLsizei instancecount);
bool ValidateDrawBuffers(Context *context, GLsizei n, const GLenum *bufs);
bool ValidateDrawElementsInstanced(Context *context,
                                   PrimitiveMode modePacked,
                                   GLsizei count,
                                   DrawElementsType typePacked,
                                   const void *indices,
                                   GLsizei instancecount);
bool ValidateDrawRangeElements(Context *context,
                               PrimitiveMode modePacked,
                               GLuint start,
                               GLuint end,
                               GLsizei count,
                               DrawElementsType typePacked,
                               const void *indices);
bool ValidateEndQuery(Context *context, QueryType targetPacked);
bool ValidateEndTransformFeedback(Context *context);
bool ValidateFenceSync(Context *context, GLenum condition, GLbitfield flags);
bool ValidateFlushMappedBufferRange(Context *context,
                                    BufferBinding targetPacked,
                                    GLintptr offset,
                                    GLsizeiptr length);
bool ValidateFramebufferTextureLayer(Context *context,
                                     GLenum target,
                                     GLenum attachment,
                                     GLuint texture,
                                     GLint level,
                                     GLint layer);
bool ValidateGenQueries(Context *context, GLsizei n, GLuint *ids);
bool ValidateGenSamplers(Context *context, GLsizei count, GLuint *samplers);
bool ValidateGenTransformFeedbacks(Context *context, GLsizei n, GLuint *ids);
bool ValidateGenVertexArrays(Context *context, GLsizei n, GLuint *arrays);
bool ValidateGetActiveUniformBlockName(Context *context,
                                       GLuint program,
                                       GLuint uniformBlockIndex,
                                       GLsizei bufSize,
                                       GLsizei *length,
                                       GLchar *uniformBlockName);
bool ValidateGetActiveUniformBlockiv(Context *context,
                                     GLuint program,
                                     GLuint uniformBlockIndex,
                                     GLenum pname,
                                     GLint *params);
bool ValidateGetActiveUniformsiv(Context *context,
                                 GLuint program,
                                 GLsizei uniformCount,
                                 const GLuint *uniformIndices,
                                 GLenum pname,
                                 GLint *params);
bool ValidateGetBufferParameteri64v(Context *context,
                                    BufferBinding targetPacked,
                                    GLenum pname,
                                    GLint64 *params);
bool ValidateGetBufferPointerv(Context *context,
                               BufferBinding targetPacked,
                               GLenum pname,
                               void **params);
bool ValidateGetFragDataLocation(Context *context, GLuint program, const GLchar *name);
bool ValidateGetInteger64i_v(Context *context, GLenum target, GLuint index, GLint64 *data);
bool ValidateGetInteger64v(Context *context, GLenum pname, GLint64 *data);
bool ValidateGetIntegeri_v(Context *context, GLenum target, GLuint index, GLint *data);
bool ValidateGetInternalformativ(Context *context,
                                 GLenum target,
                                 GLenum internalformat,
                                 GLenum pname,
                                 GLsizei bufSize,
                                 GLint *params);
bool ValidateGetProgramBinary(Context *context,
                              GLuint program,
                              GLsizei bufSize,
                              GLsizei *length,
                              GLenum *binaryFormat,
                              void *binary);
bool ValidateGetQueryObjectuiv(Context *context, GLuint id, GLenum pname, GLuint *params);
bool ValidateGetQueryiv(Context *context, QueryType targetPacked, GLenum pname, GLint *params);
bool ValidateGetSamplerParameterfv(Context *context, GLuint sampler, GLenum pname, GLfloat *params);
bool ValidateGetSamplerParameteriv(Context *context, GLuint sampler, GLenum pname, GLint *params);
bool ValidateGetStringi(Context *context, GLenum name, GLuint index);
bool ValidateGetSynciv(Context *context,
                       GLsync sync,
                       GLenum pname,
                       GLsizei bufSize,
                       GLsizei *length,
                       GLint *values);
bool ValidateGetTransformFeedbackVarying(Context *context,
                                         GLuint program,
                                         GLuint index,
                                         GLsizei bufSize,
                                         GLsizei *length,
                                         GLsizei *size,
                                         GLenum *type,
                                         GLchar *name);
bool ValidateGetUniformBlockIndex(Context *context, GLuint program, const GLchar *uniformBlockName);
bool ValidateGetUniformIndices(Context *context,
                               GLuint program,
                               GLsizei uniformCount,
                               const GLchar *const *uniformNames,
                               GLuint *uniformIndices);
bool ValidateGetUniformuiv(Context *context, GLuint program, GLint location, GLuint *params);
bool ValidateGetVertexAttribIiv(Context *context, GLuint index, GLenum pname, GLint *params);
bool ValidateGetVertexAttribIuiv(Context *context, GLuint index, GLenum pname, GLuint *params);
bool ValidateInvalidateFramebuffer(Context *context,
                                   GLenum target,
                                   GLsizei numAttachments,
                                   const GLenum *attachments);
bool ValidateInvalidateSubFramebuffer(Context *context,
                                      GLenum target,
                                      GLsizei numAttachments,
                                      const GLenum *attachments,
                                      GLint x,
                                      GLint y,
                                      GLsizei width,
                                      GLsizei height);
bool ValidateIsQuery(Context *context, GLuint id);
bool ValidateIsSampler(Context *context, GLuint sampler);
bool ValidateIsSync(Context *context, GLsync sync);
bool ValidateIsTransformFeedback(Context *context, GLuint id);
bool ValidateIsVertexArray(Context *context, GLuint array);
bool ValidateMapBufferRange(Context *context,
                            BufferBinding targetPacked,
                            GLintptr offset,
                            GLsizeiptr length,
                            GLbitfield access);
bool ValidatePauseTransformFeedback(Context *context);
bool ValidateProgramBinary(Context *context,
                           GLuint program,
                           GLenum binaryFormat,
                           const void *binary,
                           GLsizei length);
bool ValidateProgramParameteri(Context *context, GLuint program, GLenum pname, GLint value);
bool ValidateReadBuffer(Context *context, GLenum src);
bool ValidateRenderbufferStorageMultisample(Context *context,
                                            GLenum target,
                                            GLsizei samples,
                                            GLenum internalformat,
                                            GLsizei width,
                                            GLsizei height);
bool ValidateResumeTransformFeedback(Context *context);
bool ValidateSamplerParameterf(Context *context, GLuint sampler, GLenum pname, GLfloat param);
bool ValidateSamplerParameterfv(Context *context,
                                GLuint sampler,
                                GLenum pname,
                                const GLfloat *param);
bool ValidateSamplerParameteri(Context *context, GLuint sampler, GLenum pname, GLint param);
bool ValidateSamplerParameteriv(Context *context, GLuint sampler, GLenum pname, const GLint *param);
bool ValidateTexImage3D(Context *context,
                        TextureTarget targetPacked,
                        GLint level,
                        GLint internalformat,
                        GLsizei width,
                        GLsizei height,
                        GLsizei depth,
                        GLint border,
                        GLenum format,
                        GLenum type,
                        const void *pixels);
bool ValidateTexStorage2D(Context *context,
                          TextureType targetPacked,
                          GLsizei levels,
                          GLenum internalformat,
                          GLsizei width,
                          GLsizei height);
bool ValidateTexStorage3D(Context *context,
                          TextureType targetPacked,
                          GLsizei levels,
                          GLenum internalformat,
                          GLsizei width,
                          GLsizei height,
                          GLsizei depth);
bool ValidateTexSubImage3D(Context *context,
                           TextureTarget targetPacked,
                           GLint level,
                           GLint xoffset,
                           GLint yoffset,
                           GLint zoffset,
                           GLsizei width,
                           GLsizei height,
                           GLsizei depth,
                           GLenum format,
                           GLenum type,
                           const void *pixels);
bool ValidateTransformFeedbackVaryings(Context *context,
                                       GLuint program,
                                       GLsizei count,
                                       const GLchar *const *varyings,
                                       GLenum bufferMode);
bool ValidateUniform1ui(Context *context, GLint location, GLuint v0);
bool ValidateUniform1uiv(Context *context, GLint location, GLsizei count, const GLuint *value);
bool ValidateUniform2ui(Context *context, GLint location, GLuint v0, GLuint v1);
bool ValidateUniform2uiv(Context *context, GLint location, GLsizei count, const GLuint *value);
bool ValidateUniform3ui(Context *context, GLint location, GLuint v0, GLuint v1, GLuint v2);
bool ValidateUniform3uiv(Context *context, GLint location, GLsizei count, const GLuint *value);
bool ValidateUniform4ui(Context *context,
                        GLint location,
                        GLuint v0,
                        GLuint v1,
                        GLuint v2,
                        GLuint v3);
bool ValidateUniform4uiv(Context *context, GLint location, GLsizei count, const GLuint *value);
bool ValidateUniformBlockBinding(Context *context,
                                 GLuint program,
                                 GLuint uniformBlockIndex,
                                 GLuint uniformBlockBinding);
bool ValidateUniformMatrix2x3fv(Context *context,
                                GLint location,
                                GLsizei count,
                                GLboolean transpose,
                                const GLfloat *value);
bool ValidateUniformMatrix2x4fv(Context *context,
                                GLint location,
                                GLsizei count,
                                GLboolean transpose,
                                const GLfloat *value);
bool ValidateUniformMatrix3x2fv(Context *context,
                                GLint location,
                                GLsizei count,
                                GLboolean transpose,
                                const GLfloat *value);
bool ValidateUniformMatrix3x4fv(Context *context,
                                GLint location,
                                GLsizei count,
                                GLboolean transpose,
                                const GLfloat *value);
bool ValidateUniformMatrix4x2fv(Context *context,
                                GLint location,
                                GLsizei count,
                                GLboolean transpose,
                                const GLfloat *value);
bool ValidateUniformMatrix4x3fv(Context *context,
                                GLint location,
                                GLsizei count,
                                GLboolean transpose,
                                const GLfloat *value);
bool ValidateUnmapBuffer(Context *context, BufferBinding targetPacked);
bool ValidateVertexAttribDivisor(Context *context, GLuint index, GLuint divisor);
bool ValidateVertexAttribI4i(Context *context, GLuint index, GLint x, GLint y, GLint z, GLint w);
bool ValidateVertexAttribI4iv(Context *context, GLuint index, const GLint *v);
bool ValidateVertexAttribI4ui(Context *context,
                              GLuint index,
                              GLuint x,
                              GLuint y,
                              GLuint z,
                              GLuint w);
bool ValidateVertexAttribI4uiv(Context *context, GLuint index, const GLuint *v);
bool ValidateVertexAttribIPointer(Context *context,
                                  GLuint index,
                                  GLint size,
                                  VertexAttribType typePacked,
                                  GLsizei stride,
                                  const void *pointer);
bool ValidateWaitSync(Context *context, GLsync sync, GLbitfield flags, GLuint64 timeout);
}  // namespace gl

#endif  // LIBANGLE_VALIDATION_ES3_AUTOGEN_H_
