1 /*
2 * Copyright (C) 2016 The Android Open Source Project
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16 
17 #ifndef GLES_VALIDATION_H
18 #define GLES_VALIDATION_H
19 
20 #include <GLES2/gl2.h>
21 #include <GLES2/gl2ext.h>
22 #include <GLES2/gl2platform.h>
23 
24 #include <GLES3/gl3.h>
25 #include <GLES3/gl31.h>
26 
27 #include "GL2Encoder.h"
28 
29 #include <string>
30 
31 namespace GLESv2Validation {
32 
33 extern GLbitfield allBufferMapAccessFlags;
34 bool bufferTarget(GL2Encoder* ctx, GLenum target);
35 bool bufferParam(GL2Encoder* ctx, GLenum param);
36 
37 bool pixelStoreParam(GL2Encoder* ctx, GLenum param);
38 bool pixelStoreValue(GLenum param, GLint value);
39 
40 bool rboFormat(GL2Encoder* ctx, GLenum internalformat);
41 
42 bool framebufferTarget(GL2Encoder* ctx, GLenum target);
43 bool framebufferAttachment(GL2Encoder* ctx, GLenum attachment);
44 
45 bool readPixelsFormat(GLenum format);
46 bool readPixelsType(GLenum type);
47 
48 bool vertexAttribType(GL2Encoder* ctx, GLenum type);
49 
50 bool readPixelsFboFormatMatch(GLenum format, GLenum type, GLenum fboTexType);
51 bool blitFramebufferFormat(GLenum readFormat, GLenum drawFormat);
52 
53 bool textureTarget(GL2Encoder* ctx, GLenum target);
54 
55 GLsizei compressedTexImageSize(GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth);
56 
57 bool isCompressedFormat(GLenum internalformat);
58 bool supportedCompressedFormat(GL2Encoder* ctx, GLenum internalformat);
59 
60 bool unsizedFormat(GLenum format);
61 
62 bool filterableTexFormat(GL2Encoder* ctx, GLenum internalformat);
63 bool colorRenderableFormat(GL2Encoder* ctx, GLenum internalformat);
64 bool depthRenderableFormat(GL2Encoder* ctx, GLenum internalformat);
65 bool stencilRenderableFormat(GL2Encoder* ctx, GLenum internalformat);
66 
67 bool isCubeMapTarget(GLenum target);
68 
69 bool pixelType(GL2Encoder* ctx, GLenum type);
70 bool pixelFormat(GL2Encoder* ctx, GLenum format);
71 
72 bool pixelInternalFormat(GLenum internalformat);
73 
74 bool shaderType(GL2Encoder* ctx, GLenum type);
75 
76 bool internalFormatTarget(GL2Encoder* ctx, GLenum target);
77 
78 std::string vertexAttribIndexRangeErrorMsg(GL2Encoder* ctx, GLuint index);
79 
80 } // namespace GLESv2Validation
81 
82 #endif
83