/*
* Copyright (C) 2016 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#ifndef GLES_VALIDATION_H
#define GLES_VALIDATION_H
#include <GLES2/gl2.h>
#include <GLES2/gl2ext.h>
#include <GLES2/gl2platform.h>
#include <GLES3/gl3.h>
#include <GLES3/gl31.h>
#include "GL2Encoder.h"
#include <string>
namespace GLESv2Validation {
extern GLbitfield allBufferMapAccessFlags;
bool bufferTarget(GL2Encoder* ctx, GLenum target);
bool bufferParam(GL2Encoder* ctx, GLenum param);
bool pixelStoreParam(GL2Encoder* ctx, GLenum param);
bool pixelStoreValue(GLenum param, GLint value);
bool rboFormat(GL2Encoder* ctx, GLenum internalformat);
bool framebufferTarget(GL2Encoder* ctx, GLenum target);
bool framebufferAttachment(GL2Encoder* ctx, GLenum attachment);
bool readPixelsFormat(GLenum format);
bool readPixelsType(GLenum type);
bool vertexAttribType(GL2Encoder* ctx, GLenum type);
bool readPixelsFboFormatMatch(GLenum format, GLenum type, GLenum fboTexType);
bool blitFramebufferFormat(GLenum readFormat, GLenum drawFormat);
bool textureTarget(GL2Encoder* ctx, GLenum target);
GLsizei compressedTexImageSize(GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth);
bool isCompressedFormat(GLenum internalformat);
bool supportedCompressedFormat(GL2Encoder* ctx, GLenum internalformat);
bool unsizedFormat(GLenum format);
bool filterableTexFormat(GL2Encoder* ctx, GLenum internalformat);
bool colorRenderableFormat(GL2Encoder* ctx, GLenum internalformat);
bool depthRenderableFormat(GL2Encoder* ctx, GLenum internalformat);
bool stencilRenderableFormat(GL2Encoder* ctx, GLenum internalformat);
bool isCubeMapTarget(GLenum target);
bool pixelType(GL2Encoder* ctx, GLenum type);
bool pixelFormat(GL2Encoder* ctx, GLenum format);
bool pixelInternalFormat(GLenum internalformat);
bool shaderType(GL2Encoder* ctx, GLenum type);
bool internalFormatTarget(GL2Encoder* ctx, GLenum target);
std::string vertexAttribIndexRangeErrorMsg(GL2Encoder* ctx, GLuint index);
} // namespace GLESv2Validation
#endif