Hash :
d8dc3cc2
Author :
Date :
2025-08-02T12:02:20
Remove shared context lock from glVertexAttrib{I}Format
This CL removes shared context lock from glVertexAttribFormat() and
glVertexAttribIFormat() APIs, since they no longer access anything
outside VertexArrayPrivate. The main problem I had run into is
validation code. Before this CL, ValidateIntegerVertexFormat() needs
context's mStateCache for mCachedVertexAttribTypesValidation and
mCachedIntegerVertexAttribTypesValidation. Given these two cached value
are constant after initialization, in this CL, I have moved them to
PrivateStateCache. PrivateStateCache argument is added to
ValidateVertexAttribFormat() and ValidateVertexAttribIFormat() to get
them access to mCachedIntegerVertexAttribTypesValidation.
Bug: b/433331119
Change-Id: Ifc3fbed32b4d3722c335dd2c393bc6519ed0b544
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6822032
Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Charlie Lao <cclao@google.com>
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126
// GENERATED FILE - DO NOT EDIT.
// Generated by generate_entry_points.py using data from gl.xml.
//
// Copyright 2020 The ANGLE Project Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
//
// Context_gles_3_1_autogen.h: Creates a macro for interfaces in Context.
#ifndef ANGLE_CONTEXT_GLES_3_1_AUTOGEN_H_
#define ANGLE_CONTEXT_GLES_3_1_AUTOGEN_H_
#define ANGLE_GLES_3_1_CONTEXT_API \
void activeShaderProgram(ProgramPipelineID pipelinePacked, ShaderProgramID programPacked); \
void bindImageTexture(GLuint unit, TextureID texturePacked, GLint level, GLboolean layered, \
GLint layer, GLenum access, GLenum format); \
void bindProgramPipeline(ProgramPipelineID pipelinePacked); \
void bindVertexBuffer(GLuint bindingindex, BufferID bufferPacked, GLintptr offset, \
GLsizei stride); \
GLuint createShaderProgramv(ShaderType typePacked, GLsizei count, \
const GLchar *const *strings); \
void deleteProgramPipelines(GLsizei n, const ProgramPipelineID *pipelinesPacked); \
void dispatchCompute(GLuint num_groups_x, GLuint num_groups_y, GLuint num_groups_z); \
void dispatchComputeIndirect(GLintptr indirect); \
void drawArraysIndirect(PrimitiveMode modePacked, const void *indirect); \
void drawElementsIndirect(PrimitiveMode modePacked, DrawElementsType typePacked, \
const void *indirect); \
void framebufferParameteri(GLenum target, GLenum pname, GLint param); \
void genProgramPipelines(GLsizei n, ProgramPipelineID *pipelinesPacked); \
void getBooleani_v(GLenum target, GLuint index, GLboolean *data); \
void getFramebufferParameteriv(GLenum target, GLenum pname, GLint *params); \
void getMultisamplefv(GLenum pname, GLuint index, GLfloat *val); \
void getProgramInterfaceiv(ShaderProgramID programPacked, GLenum programInterface, \
GLenum pname, GLint *params); \
void getProgramPipelineInfoLog(ProgramPipelineID pipelinePacked, GLsizei bufSize, \
GLsizei *length, GLchar *infoLog); \
void getProgramPipelineiv(ProgramPipelineID pipelinePacked, GLenum pname, GLint *params); \
GLuint getProgramResourceIndex(ShaderProgramID programPacked, GLenum programInterface, \
const GLchar *name); \
GLint getProgramResourceLocation(ShaderProgramID programPacked, GLenum programInterface, \
const GLchar *name); \
void getProgramResourceName(ShaderProgramID programPacked, GLenum programInterface, \
GLuint index, GLsizei bufSize, GLsizei *length, GLchar *name); \
void getProgramResourceiv(ShaderProgramID programPacked, GLenum programInterface, \
GLuint index, GLsizei propCount, const GLenum *props, GLsizei count, \
GLsizei *length, GLint *params); \
void getTexLevelParameterfv(TextureTarget targetPacked, GLint level, GLenum pname, \
GLfloat *params); \
void getTexLevelParameteriv(TextureTarget targetPacked, GLint level, GLenum pname, \
GLint *params); \
GLboolean isProgramPipeline(ProgramPipelineID pipelinePacked) const; \
void memoryBarrier(GLbitfield barriers); \
void memoryBarrierByRegion(GLbitfield barriers); \
void programUniform1f(ShaderProgramID programPacked, UniformLocation locationPacked, \
GLfloat v0); \
void programUniform1fv(ShaderProgramID programPacked, UniformLocation locationPacked, \
GLsizei count, const GLfloat *value); \
void programUniform1i(ShaderProgramID programPacked, UniformLocation locationPacked, \
GLint v0); \
void programUniform1iv(ShaderProgramID programPacked, UniformLocation locationPacked, \
GLsizei count, const GLint *value); \
void programUniform1ui(ShaderProgramID programPacked, UniformLocation locationPacked, \
GLuint v0); \
void programUniform1uiv(ShaderProgramID programPacked, UniformLocation locationPacked, \
GLsizei count, const GLuint *value); \
void programUniform2f(ShaderProgramID programPacked, UniformLocation locationPacked, \
GLfloat v0, GLfloat v1); \
void programUniform2fv(ShaderProgramID programPacked, UniformLocation locationPacked, \
GLsizei count, const GLfloat *value); \
void programUniform2i(ShaderProgramID programPacked, UniformLocation locationPacked, GLint v0, \
GLint v1); \
void programUniform2iv(ShaderProgramID programPacked, UniformLocation locationPacked, \
GLsizei count, const GLint *value); \
void programUniform2ui(ShaderProgramID programPacked, UniformLocation locationPacked, \
GLuint v0, GLuint v1); \
void programUniform2uiv(ShaderProgramID programPacked, UniformLocation locationPacked, \
GLsizei count, const GLuint *value); \
void programUniform3f(ShaderProgramID programPacked, UniformLocation locationPacked, \
GLfloat v0, GLfloat v1, GLfloat v2); \
void programUniform3fv(ShaderProgramID programPacked, UniformLocation locationPacked, \
GLsizei count, const GLfloat *value); \
void programUniform3i(ShaderProgramID programPacked, UniformLocation locationPacked, GLint v0, \
GLint v1, GLint v2); \
void programUniform3iv(ShaderProgramID programPacked, UniformLocation locationPacked, \
GLsizei count, const GLint *value); \
void programUniform3ui(ShaderProgramID programPacked, UniformLocation locationPacked, \
GLuint v0, GLuint v1, GLuint v2); \
void programUniform3uiv(ShaderProgramID programPacked, UniformLocation locationPacked, \
GLsizei count, const GLuint *value); \
void programUniform4f(ShaderProgramID programPacked, UniformLocation locationPacked, \
GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3); \
void programUniform4fv(ShaderProgramID programPacked, UniformLocation locationPacked, \
GLsizei count, const GLfloat *value); \
void programUniform4i(ShaderProgramID programPacked, UniformLocation locationPacked, GLint v0, \
GLint v1, GLint v2, GLint v3); \
void programUniform4iv(ShaderProgramID programPacked, UniformLocation locationPacked, \
GLsizei count, const GLint *value); \
void programUniform4ui(ShaderProgramID programPacked, UniformLocation locationPacked, \
GLuint v0, GLuint v1, GLuint v2, GLuint v3); \
void programUniform4uiv(ShaderProgramID programPacked, UniformLocation locationPacked, \
GLsizei count, const GLuint *value); \
void programUniformMatrix2fv(ShaderProgramID programPacked, UniformLocation locationPacked, \
GLsizei count, GLboolean transpose, const GLfloat *value); \
void programUniformMatrix2x3fv(ShaderProgramID programPacked, UniformLocation locationPacked, \
GLsizei count, GLboolean transpose, const GLfloat *value); \
void programUniformMatrix2x4fv(ShaderProgramID programPacked, UniformLocation locationPacked, \
GLsizei count, GLboolean transpose, const GLfloat *value); \
void programUniformMatrix3fv(ShaderProgramID programPacked, UniformLocation locationPacked, \
GLsizei count, GLboolean transpose, const GLfloat *value); \
void programUniformMatrix3x2fv(ShaderProgramID programPacked, UniformLocation locationPacked, \
GLsizei count, GLboolean transpose, const GLfloat *value); \
void programUniformMatrix3x4fv(ShaderProgramID programPacked, UniformLocation locationPacked, \
GLsizei count, GLboolean transpose, const GLfloat *value); \
void programUniformMatrix4fv(ShaderProgramID programPacked, UniformLocation locationPacked, \
GLsizei count, GLboolean transpose, const GLfloat *value); \
void programUniformMatrix4x2fv(ShaderProgramID programPacked, UniformLocation locationPacked, \
GLsizei count, GLboolean transpose, const GLfloat *value); \
void programUniformMatrix4x3fv(ShaderProgramID programPacked, UniformLocation locationPacked, \
GLsizei count, GLboolean transpose, const GLfloat *value); \
void texStorage2DMultisample(TextureType targetPacked, GLsizei samples, GLenum internalformat, \
GLsizei width, GLsizei height, GLboolean fixedsamplelocations); \
void useProgramStages(ProgramPipelineID pipelinePacked, GLbitfield stages, \
ShaderProgramID programPacked); \
void validateProgramPipeline(ProgramPipelineID pipelinePacked);
#endif // ANGLE_CONTEXT_API_3_1_AUTOGEN_H_