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