1 // 2 // Copyright 2018 The ANGLE Project Authors. All rights reserved. 3 // Use of this source code is governed by a BSD-style license that can be 4 // found in the LICENSE file. 5 // 6 // validationES31.h: 7 // Inlined validation functions for OpenGL ES 3.1 entry points. 8 9 #ifndef LIBANGLE_VALIDATION_ES31_H_ 10 #define LIBANGLE_VALIDATION_ES31_H_ 11 12 #include "libANGLE/ErrorStrings.h" 13 #include "libANGLE/validationES31_autogen.h" 14 15 namespace gl 16 { 17 18 bool ValidateTexBufferBase(const Context *context, 19 angle::EntryPoint entryPoint, 20 TextureType target, 21 GLenum internalformat, 22 BufferID bufferPacked); 23 bool ValidateTexBufferRangeBase(const Context *context, 24 angle::EntryPoint entryPoint, 25 TextureType target, 26 GLenum internalformat, 27 BufferID bufferPacked, 28 GLintptr offset, 29 GLsizeiptr size); 30 31 // GL_EXT_geometry_shader 32 bool ValidateFramebufferTextureCommon(const Context *context, 33 angle::EntryPoint entryPoint, 34 GLenum target, 35 GLenum attachment, 36 TextureID texture, 37 GLint level); 38 39 // GL_EXT_multi_draw_indirect 40 bool ValidateMultiDrawIndirectBase(const Context *context, 41 angle::EntryPoint entryPoint, 42 GLsizei drawcount, 43 GLsizei stride); 44 45 // GL_EXT_separate_shader_objects 46 bool ValidateActiveShaderProgramBase(const Context *context, 47 angle::EntryPoint entryPoint, 48 ProgramPipelineID pipelinePacked, 49 ShaderProgramID programPacked); 50 bool ValidateBindProgramPipelineBase(const Context *context, 51 angle::EntryPoint entryPoint, 52 ProgramPipelineID pipelinePacked); 53 bool ValidateCreateShaderProgramvBase(const Context *context, 54 angle::EntryPoint entryPoint, 55 ShaderType typePacked, 56 GLsizei count, 57 const GLchar **strings); 58 bool ValidateDeleteProgramPipelinesBase(const Context *context, 59 angle::EntryPoint entryPoint, 60 GLsizei n, 61 const ProgramPipelineID *pipelinesPacked); 62 bool ValidateGenProgramPipelinesBase(const Context *context, 63 angle::EntryPoint entryPoint, 64 GLsizei n, 65 const ProgramPipelineID *pipelinesPacked); 66 bool ValidateGetProgramPipelineInfoLogBase(const Context *context, 67 angle::EntryPoint entryPoint, 68 ProgramPipelineID pipelinePacked, 69 GLsizei bufSize, 70 const GLsizei *length, 71 const GLchar *infoLog); 72 bool ValidateGetProgramPipelineivBase(const Context *context, 73 angle::EntryPoint entryPoint, 74 ProgramPipelineID pipelinePacked, 75 GLenum pname, 76 const GLint *params); 77 bool ValidateIsProgramPipelineBase(const Context *context, 78 angle::EntryPoint entryPoint, 79 ProgramPipelineID pipelinePacked); 80 bool ValidateProgramParameteriBase(const Context *context, 81 angle::EntryPoint entryPoint, 82 ShaderProgramID programPacked, 83 GLenum pname, 84 GLint value); 85 bool ValidateProgramUniform1fBase(const Context *context, 86 angle::EntryPoint entryPoint, 87 ShaderProgramID programPacked, 88 UniformLocation locationPacked, 89 GLfloat v0); 90 bool ValidateProgramUniform1fvBase(const Context *context, 91 angle::EntryPoint entryPoint, 92 ShaderProgramID programPacked, 93 UniformLocation locationPacked, 94 GLsizei count, 95 const GLfloat *value); 96 bool ValidateProgramUniform1iBase(const Context *context, 97 angle::EntryPoint entryPoint, 98 ShaderProgramID programPacked, 99 UniformLocation locationPacked, 100 GLint v0); 101 bool ValidateProgramUniform1ivBase(const Context *context, 102 angle::EntryPoint entryPoint, 103 ShaderProgramID programPacked, 104 UniformLocation locationPacked, 105 GLsizei count, 106 const GLint *value); 107 bool ValidateProgramUniform1uiBase(const Context *context, 108 angle::EntryPoint entryPoint, 109 ShaderProgramID programPacked, 110 UniformLocation locationPacked, 111 GLuint v0); 112 bool ValidateProgramUniform1uivBase(const Context *context, 113 angle::EntryPoint entryPoint, 114 ShaderProgramID programPacked, 115 UniformLocation locationPacked, 116 GLsizei count, 117 const GLuint *value); 118 bool ValidateProgramUniform2fBase(const Context *context, 119 angle::EntryPoint entryPoint, 120 ShaderProgramID programPacked, 121 UniformLocation locationPacked, 122 GLfloat v0, 123 GLfloat v1); 124 bool ValidateProgramUniform2fvBase(const Context *context, 125 angle::EntryPoint entryPoint, 126 ShaderProgramID programPacked, 127 UniformLocation locationPacked, 128 GLsizei count, 129 const GLfloat *value); 130 bool ValidateProgramUniform2iBase(const Context *context, 131 angle::EntryPoint entryPoint, 132 ShaderProgramID programPacked, 133 UniformLocation locationPacked, 134 GLint v0, 135 GLint v1); 136 bool ValidateProgramUniform2ivBase(const Context *context, 137 angle::EntryPoint entryPoint, 138 ShaderProgramID programPacked, 139 UniformLocation locationPacked, 140 GLsizei count, 141 const GLint *value); 142 bool ValidateProgramUniform2uiBase(const Context *context, 143 angle::EntryPoint entryPoint, 144 ShaderProgramID programPacked, 145 UniformLocation locationPacked, 146 GLuint v0, 147 GLuint v1); 148 bool ValidateProgramUniform2uivBase(const Context *context, 149 angle::EntryPoint entryPoint, 150 ShaderProgramID programPacked, 151 UniformLocation locationPacked, 152 GLsizei count, 153 const GLuint *value); 154 bool ValidateProgramUniform3fBase(const Context *context, 155 angle::EntryPoint entryPoint, 156 ShaderProgramID programPacked, 157 UniformLocation locationPacked, 158 GLfloat v0, 159 GLfloat v1, 160 GLfloat v2); 161 bool ValidateProgramUniform3fvBase(const Context *context, 162 angle::EntryPoint entryPoint, 163 ShaderProgramID programPacked, 164 UniformLocation locationPacked, 165 GLsizei count, 166 const GLfloat *value); 167 bool ValidateProgramUniform3iBase(const Context *context, 168 angle::EntryPoint entryPoint, 169 ShaderProgramID programPacked, 170 UniformLocation locationPacked, 171 GLint v0, 172 GLint v1, 173 GLint v2); 174 bool ValidateProgramUniform3ivBase(const Context *context, 175 angle::EntryPoint entryPoint, 176 ShaderProgramID programPacked, 177 UniformLocation locationPacked, 178 GLsizei count, 179 const GLint *value); 180 bool ValidateProgramUniform3uiBase(const Context *context, 181 angle::EntryPoint entryPoint, 182 ShaderProgramID programPacked, 183 UniformLocation locationPacked, 184 GLuint v0, 185 GLuint v1, 186 GLuint v2); 187 bool ValidateProgramUniform3uivBase(const Context *context, 188 angle::EntryPoint entryPoint, 189 ShaderProgramID programPacked, 190 UniformLocation locationPacked, 191 GLsizei count, 192 const GLuint *value); 193 bool ValidateProgramUniform4fBase(const Context *context, 194 angle::EntryPoint entryPoint, 195 ShaderProgramID programPacked, 196 UniformLocation locationPacked, 197 GLfloat v0, 198 GLfloat v1, 199 GLfloat v2, 200 GLfloat v3); 201 bool ValidateProgramUniform4fvBase(const Context *context, 202 angle::EntryPoint entryPoint, 203 ShaderProgramID programPacked, 204 UniformLocation locationPacked, 205 GLsizei count, 206 const GLfloat *value); 207 bool ValidateProgramUniform4iBase(const Context *context, 208 angle::EntryPoint entryPoint, 209 ShaderProgramID programPacked, 210 UniformLocation locationPacked, 211 GLint v0, 212 GLint v1, 213 GLint v2, 214 GLint v3); 215 bool ValidateProgramUniform4ivBase(const Context *context, 216 angle::EntryPoint entryPoint, 217 ShaderProgramID programPacked, 218 UniformLocation locationPacked, 219 GLsizei count, 220 const GLint *value); 221 bool ValidateProgramUniform4uiBase(const Context *context, 222 angle::EntryPoint entryPoint, 223 ShaderProgramID programPacked, 224 UniformLocation locationPacked, 225 GLuint v0, 226 GLuint v1, 227 GLuint v2, 228 GLuint v3); 229 bool ValidateProgramUniform4uivBase(const Context *context, 230 angle::EntryPoint entryPoint, 231 ShaderProgramID programPacked, 232 UniformLocation locationPacked, 233 GLsizei count, 234 const GLuint *value); 235 bool ValidateProgramUniformMatrix2fvBase(const Context *context, 236 angle::EntryPoint entryPoint, 237 ShaderProgramID programPacked, 238 UniformLocation locationPacked, 239 GLsizei count, 240 GLboolean transpose, 241 const GLfloat *value); 242 bool ValidateProgramUniformMatrix2x3fvBase(const Context *context, 243 angle::EntryPoint entryPoint, 244 ShaderProgramID programPacked, 245 UniformLocation locationPacked, 246 GLsizei count, 247 GLboolean transpose, 248 const GLfloat *value); 249 bool ValidateProgramUniformMatrix2x4fvBase(const Context *context, 250 angle::EntryPoint entryPoint, 251 ShaderProgramID programPacked, 252 UniformLocation locationPacked, 253 GLsizei count, 254 GLboolean transpose, 255 const GLfloat *value); 256 bool ValidateProgramUniformMatrix3fvBase(const Context *context, 257 angle::EntryPoint entryPoint, 258 ShaderProgramID programPacked, 259 UniformLocation locationPacked, 260 GLsizei count, 261 GLboolean transpose, 262 const GLfloat *value); 263 bool ValidateProgramUniformMatrix3x2fvBase(const Context *context, 264 angle::EntryPoint entryPoint, 265 ShaderProgramID programPacked, 266 UniformLocation locationPacked, 267 GLsizei count, 268 GLboolean transpose, 269 const GLfloat *value); 270 bool ValidateProgramUniformMatrix3x4fvBase(const Context *context, 271 angle::EntryPoint entryPoint, 272 ShaderProgramID programPacked, 273 UniformLocation locationPacked, 274 GLsizei count, 275 GLboolean transpose, 276 const GLfloat *value); 277 bool ValidateProgramUniformMatrix4fvBase(const Context *context, 278 angle::EntryPoint entryPoint, 279 ShaderProgramID programPacked, 280 UniformLocation locationPacked, 281 GLsizei count, 282 GLboolean transpose, 283 const GLfloat *value); 284 bool ValidateProgramUniformMatrix4x2fvBase(const Context *context, 285 angle::EntryPoint entryPoint, 286 ShaderProgramID programPacked, 287 UniformLocation locationPacked, 288 GLsizei count, 289 GLboolean transpose, 290 const GLfloat *value); 291 bool ValidateProgramUniformMatrix4x3fvBase(const Context *context, 292 angle::EntryPoint entryPoint, 293 ShaderProgramID programPacked, 294 UniformLocation locationPacked, 295 GLsizei count, 296 GLboolean transpose, 297 const GLfloat *value); 298 bool ValidateUseProgramStagesBase(const Context *context, 299 angle::EntryPoint entryPoint, 300 ProgramPipelineID pipelinePacked, 301 GLbitfield stages, 302 ShaderProgramID programPacked); 303 bool ValidateValidateProgramPipelineBase(const Context *context, 304 angle::EntryPoint entryPoint, 305 ProgramPipelineID pipelinePacked); 306 307 // GL_EXT_tessellation_shader 308 bool ValidatePatchParameteriBase(const PrivateState &state, 309 ErrorSet *errors, 310 angle::EntryPoint entryPoint, 311 GLenum pname, 312 GLint value); 313 } // namespace gl 314 315 #endif // LIBANGLE_VALIDATION_ES31_H_ 316