1e8ebe7f6ec21c3e624998d6fc1d10d1dbf6103c9Geoff Lang//
2e8ebe7f6ec21c3e624998d6fc1d10d1dbf6103c9Geoff Lang// Copyright (c) 2013 The ANGLE Project Authors. All rights reserved.
3e8ebe7f6ec21c3e624998d6fc1d10d1dbf6103c9Geoff Lang// Use of this source code is governed by a BSD-style license that can be
4e8ebe7f6ec21c3e624998d6fc1d10d1dbf6103c9Geoff Lang// found in the LICENSE file.
5e8ebe7f6ec21c3e624998d6fc1d10d1dbf6103c9Geoff Lang//
6e8ebe7f6ec21c3e624998d6fc1d10d1dbf6103c9Geoff Lang
7e8ebe7f6ec21c3e624998d6fc1d10d1dbf6103c9Geoff Lang// validationES.h: Validation functions for generic OpenGL ES entry point parameters
8e8ebe7f6ec21c3e624998d6fc1d10d1dbf6103c9Geoff Lang
9e8ebe7f6ec21c3e624998d6fc1d10d1dbf6103c9Geoff Lang#ifndef LIBGLESV2_VALIDATION_ES_H
10e8ebe7f6ec21c3e624998d6fc1d10d1dbf6103c9Geoff Lang#define LIBGLESV2_VALIDATION_ES_H
11e8ebe7f6ec21c3e624998d6fc1d10d1dbf6103c9Geoff Lang
122b97681b9ac01909bc60f5c6caecef3599b2acf9Jamie Madill#include "common/mathutil.h"
132b97681b9ac01909bc60f5c6caecef3599b2acf9Jamie Madill
140b7eef7c469bf717f7e1b57c6273f00d88e8b1d9Geoff Lang#include <GLES2/gl2.h>
150b7eef7c469bf717f7e1b57c6273f00d88e8b1d9Geoff Lang#include <GLES3/gl3.h>
160b7eef7c469bf717f7e1b57c6273f00d88e8b1d9Geoff Lang
17e8ebe7f6ec21c3e624998d6fc1d10d1dbf6103c9Geoff Langnamespace gl
18e8ebe7f6ec21c3e624998d6fc1d10d1dbf6103c9Geoff Lang{
19e8ebe7f6ec21c3e624998d6fc1d10d1dbf6103c9Geoff Lang
20e8ebe7f6ec21c3e624998d6fc1d10d1dbf6103c9Geoff Langclass Context;
21e8ebe7f6ec21c3e624998d6fc1d10d1dbf6103c9Geoff Lang
220550d0389a59a50a1df0df3484ecefc864715e26Geoff Langbool ValidCap(const Context *context, GLenum cap);
231fc7e2c5961207aa2bd1a99978d661b4cbcbf144Jamie Madillbool ValidTextureTarget(const Context *context, GLenum target);
244dfed837cbbdf55d82b2a602d9f5806201f80fa7Shannon Woodsbool ValidTexture2DDestinationTarget(const Context *context, GLenum target);
251fc7e2c5961207aa2bd1a99978d661b4cbcbf144Jamie Madillbool ValidFramebufferTarget(GLenum target);
268c96d58af5a5994c81b81032f775dc7d24cb5661Jamie Madillbool ValidBufferTarget(const Context *context, GLenum target);
2770656a64851b8014a325dd711297054032e466c1Jamie Madillbool ValidBufferParameter(const Context *context, GLenum pname);
281fc7e2c5961207aa2bd1a99978d661b4cbcbf144Jamie Madillbool ValidMipLevel(const Context *context, GLenum target, GLint level);
29b119668772ee960d8fc9e3846617c59530b90d5fGeoff Langbool ValidImageSize(const Context *context, GLenum target, GLint level, GLsizei width, GLsizei height, GLsizei depth);
30b119668772ee960d8fc9e3846617c59530b90d5fGeoff Langbool ValidCompressedImageSize(const Context *context, GLenum internalFormat, GLsizei width, GLsizei height);
31b119668772ee960d8fc9e3846617c59530b90d5fGeoff Langbool ValidQueryType(const Context *context, GLenum queryType);
32b119668772ee960d8fc9e3846617c59530b90d5fGeoff Langbool ValidProgram(Context *context, GLuint id);
33ce6356958ba86c2b09e62e1250cabd6bab16a082Geoff Lang
34b119668772ee960d8fc9e3846617c59530b90d5fGeoff Langbool ValidateAttachmentTarget(Context *context, GLenum attachment);
35b119668772ee960d8fc9e3846617c59530b90d5fGeoff Langbool ValidateRenderbufferStorageParameters(Context *context, GLenum target, GLsizei samples,
36e8ebe7f6ec21c3e624998d6fc1d10d1dbf6103c9Geoff Lang                                           GLenum internalformat, GLsizei width, GLsizei height,
37e8ebe7f6ec21c3e624998d6fc1d10d1dbf6103c9Geoff Lang                                           bool angleExtension);
38b119668772ee960d8fc9e3846617c59530b90d5fGeoff Langbool ValidateFramebufferRenderbufferParameters(Context *context, GLenum target, GLenum attachment,
391fc7e2c5961207aa2bd1a99978d661b4cbcbf144Jamie Madill                                               GLenum renderbuffertarget, GLuint renderbuffer);
40e8ebe7f6ec21c3e624998d6fc1d10d1dbf6103c9Geoff Lang
41b119668772ee960d8fc9e3846617c59530b90d5fGeoff Langbool ValidateBlitFramebufferParameters(Context *context, GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1,
42e8ebe7f6ec21c3e624998d6fc1d10d1dbf6103c9Geoff Lang                                       GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask,
43e8ebe7f6ec21c3e624998d6fc1d10d1dbf6103c9Geoff Lang                                       GLenum filter, bool fromAngleExtension);
44e8ebe7f6ec21c3e624998d6fc1d10d1dbf6103c9Geoff Lang
45b119668772ee960d8fc9e3846617c59530b90d5fGeoff Langbool ValidateGetVertexAttribParameters(Context *context, GLenum pname);
46e8ebe7f6ec21c3e624998d6fc1d10d1dbf6103c9Geoff Lang
47b119668772ee960d8fc9e3846617c59530b90d5fGeoff Langbool ValidateTexParamParameters(Context *context, GLenum pname, GLint param);
48e8ebe7f6ec21c3e624998d6fc1d10d1dbf6103c9Geoff Lang
49b119668772ee960d8fc9e3846617c59530b90d5fGeoff Langbool ValidateSamplerObjectParameter(Context *context, GLenum pname);
50e8ebe7f6ec21c3e624998d6fc1d10d1dbf6103c9Geoff Lang
51b119668772ee960d8fc9e3846617c59530b90d5fGeoff Langbool ValidateReadPixelsParameters(Context *context, GLint x, GLint y, GLsizei width, GLsizei height,
5226e9195fdcf536f07e4760656b063262bda9b60dJamie Madill                                  GLenum format, GLenum type, GLsizei *bufSize, GLvoid *pixels);
5326e9195fdcf536f07e4760656b063262bda9b60dJamie Madill
54b119668772ee960d8fc9e3846617c59530b90d5fGeoff Langbool ValidateBeginQuery(Context *context, GLenum target, GLuint id);
55b119668772ee960d8fc9e3846617c59530b90d5fGeoff Langbool ValidateEndQuery(Context *context, GLenum target);
56db2f14c0b1133507215dd3b7a30155b70885973aJamie Madill
57b119668772ee960d8fc9e3846617c59530b90d5fGeoff Langbool ValidateUniform(Context *context, GLenum uniformType, GLint location, GLsizei count);
58b119668772ee960d8fc9e3846617c59530b90d5fGeoff Langbool ValidateUniformMatrix(Context *context, GLenum matrixType, GLint location, GLsizei count,
59d7c7bb276e532e2e55963cdb07b8091d01fb018dJamie Madill                           GLboolean transpose);
60d7c7bb276e532e2e55963cdb07b8091d01fb018dJamie Madill
61b119668772ee960d8fc9e3846617c59530b90d5fGeoff Langbool ValidateStateQuery(Context *context, GLenum pname, GLenum *nativeType, unsigned int *numParams);
62893ab0878d3358c45ced6a6fb048ea048e1faa97Jamie Madill
63b119668772ee960d8fc9e3846617c59530b90d5fGeoff Langbool ValidateCopyTexImageParametersBase(Context* context, GLenum target, GLint level, GLenum internalformat, bool isSubImage,
64560a8d889b6866d7d29da968971818437e9cde36Jamie Madill                                        GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height,
65560a8d889b6866d7d29da968971818437e9cde36Jamie Madill                                        GLint border, GLenum *textureInternalFormatOut);
66560a8d889b6866d7d29da968971818437e9cde36Jamie Madill
67b119668772ee960d8fc9e3846617c59530b90d5fGeoff Langbool ValidateDrawArrays(Context *context, GLenum mode, GLint first, GLsizei count, GLsizei primcount);
68b119668772ee960d8fc9e3846617c59530b90d5fGeoff Langbool ValidateDrawArraysInstanced(Context *context, GLenum mode, GLint first, GLsizei count, GLsizei primcount);
6987a93308da237626325d13339565d7136125ed0dGeoff Langbool ValidateDrawArraysInstancedANGLE(Context *context, GLenum mode, GLint first, GLsizei count, GLsizei primcount);
702b97681b9ac01909bc60f5c6caecef3599b2acf9Jamie Madill
71b119668772ee960d8fc9e3846617c59530b90d5fGeoff Langbool ValidateDrawElements(Context *context, GLenum mode, GLsizei count, GLenum type,
722b97681b9ac01909bc60f5c6caecef3599b2acf9Jamie Madill                          const GLvoid* indices, GLsizei primcount, rx::RangeUI *indexRangeOut);
732b97681b9ac01909bc60f5c6caecef3599b2acf9Jamie Madill
74b119668772ee960d8fc9e3846617c59530b90d5fGeoff Langbool ValidateDrawElementsInstanced(Context *context, GLenum mode, GLsizei count, GLenum type,
752b97681b9ac01909bc60f5c6caecef3599b2acf9Jamie Madill                                   const GLvoid *indices, GLsizei primcount, rx::RangeUI *indexRangeOut);
7687a93308da237626325d13339565d7136125ed0dGeoff Langbool ValidateDrawElementsInstancedANGLE(Context *context, GLenum mode, GLsizei count, GLenum type,
7787a93308da237626325d13339565d7136125ed0dGeoff Lang                                        const GLvoid *indices, GLsizei primcount, rx::RangeUI *indexRangeOut);
7855ec3b111464887e6e3ab1df848cf73509cde418Jamie Madill
79b119668772ee960d8fc9e3846617c59530b90d5fGeoff Langbool ValidateFramebufferTextureBase(Context *context, GLenum target, GLenum attachment,
8055ec3b111464887e6e3ab1df848cf73509cde418Jamie Madill                                    GLuint texture, GLint level);
81b119668772ee960d8fc9e3846617c59530b90d5fGeoff Langbool ValidateFramebufferTexture2D(Context *context, GLenum target, GLenum attachment,
82570f7c84a7d353c99f7c001af3b7b73e21b316fbJamie Madill                                  GLenum textarget, GLuint texture, GLint level);
83250d33fb25761753061afd70f64aeff4ccecaa5bJamie Madill
84b119668772ee960d8fc9e3846617c59530b90d5fGeoff Langbool ValidateGetUniformBase(Context *context, GLuint program, GLint location);
85b119668772ee960d8fc9e3846617c59530b90d5fGeoff Langbool ValidateGetUniformfv(Context *context, GLuint program, GLint location, GLfloat* params);
86b119668772ee960d8fc9e3846617c59530b90d5fGeoff Langbool ValidateGetUniformiv(Context *context, GLuint program, GLint location, GLint* params);
87b119668772ee960d8fc9e3846617c59530b90d5fGeoff Langbool ValidateGetnUniformfvEXT(Context *context, GLuint program, GLint location, GLsizei bufSize, GLfloat* params);
88b119668772ee960d8fc9e3846617c59530b90d5fGeoff Langbool ValidateGetnUniformivEXT(Context *context, GLuint program, GLint location, GLsizei bufSize, GLint* params);
890063c51742659230ce535eb270acc0f06921d754Jamie Madill
90e8ebe7f6ec21c3e624998d6fc1d10d1dbf6103c9Geoff Lang}
91e8ebe7f6ec21c3e624998d6fc1d10d1dbf6103c9Geoff Lang
92e8ebe7f6ec21c3e624998d6fc1d10d1dbf6103c9Geoff Lang#endif // LIBGLESV2_VALIDATION_ES_H
93