Path: blob/main_old/src/libGL/entry_points_gl_2_autogen.cpp
1693 views
// GENERATED FILE - DO NOT EDIT.1// Generated by generate_entry_points.py using data from gl.xml.2//3// Copyright 2020 The ANGLE Project Authors. All rights reserved.4// Use of this source code is governed by a BSD-style license that can be5// found in the LICENSE file.6//7// entry_points_gl_2_autogen.cpp:8// Defines the Desktop GL 2.x entry points.910#include "libGL/entry_points_gl_2_autogen.h"1112#include "libANGLE/Context.h"13#include "libANGLE/Context.inl.h"14#include "libANGLE/capture/gl_enum_utils.h"15#include "libANGLE/entry_points_utils.h"16#include "libANGLE/validationEGL.h"17#include "libANGLE/validationES.h"18#include "libANGLE/validationES1.h"19#include "libANGLE/validationES2.h"20#include "libANGLE/validationES3.h"21#include "libANGLE/validationES31.h"22#include "libANGLE/validationES32.h"23#include "libANGLE/validationESEXT.h"24#include "libANGLE/validationGL2_autogen.h"25#include "libGLESv2/global_state.h"2627using namespace gl;2829extern "C" {3031// GL 2.032void GL_APIENTRY GL_AttachShader(GLuint program, GLuint shader)33{34Context *context = GetValidGlobalContext();35EVENT(context, GLAttachShader, "context = %d, program = %u, shader = %u", CID(context), program,36shader);3738if (context)39{40ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);41ShaderProgramID shaderPacked = PackParam<ShaderProgramID>(shader);42std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);43bool isCallValid = (context->skipValidation() ||44ValidateAttachShader(context, programPacked, shaderPacked));45if (isCallValid)46{47context->attachShader(programPacked, shaderPacked);48}49ANGLE_CAPTURE(AttachShader, isCallValid, context, programPacked, shaderPacked);50}51else52{53GenerateContextLostErrorOnCurrentGlobalContext();54}55}5657void GL_APIENTRY GL_BindAttribLocation(GLuint program, GLuint index, const GLchar *name)58{59Context *context = GetValidGlobalContext();60EVENT(context, GLBindAttribLocation,61"context = %d, program = %u, index = %u, name = 0x%016" PRIxPTR "", CID(context), program,62index, (uintptr_t)name);6364if (context)65{66ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);67std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);68bool isCallValid = (context->skipValidation() ||69ValidateBindAttribLocation(context, programPacked, index, name));70if (isCallValid)71{72context->bindAttribLocation(programPacked, index, name);73}74ANGLE_CAPTURE(BindAttribLocation, isCallValid, context, programPacked, index, name);75}76else77{78GenerateContextLostErrorOnCurrentGlobalContext();79}80}8182void GL_APIENTRY GL_BlendEquationSeparate(GLenum modeRGB, GLenum modeAlpha)83{84Context *context = GetValidGlobalContext();85EVENT(context, GLBlendEquationSeparate, "context = %d, modeRGB = %s, modeAlpha = %s",86CID(context), GLenumToString(GLenumGroup::BlendEquationModeEXT, modeRGB),87GLenumToString(GLenumGroup::BlendEquationModeEXT, modeAlpha));8889if (context)90{91std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);92bool isCallValid = (context->skipValidation() ||93ValidateBlendEquationSeparate(context, modeRGB, modeAlpha));94if (isCallValid)95{96context->blendEquationSeparate(modeRGB, modeAlpha);97}98ANGLE_CAPTURE(BlendEquationSeparate, isCallValid, context, modeRGB, modeAlpha);99}100else101{102GenerateContextLostErrorOnCurrentGlobalContext();103}104}105106void GL_APIENTRY GL_CompileShader(GLuint shader)107{108Context *context = GetValidGlobalContext();109EVENT(context, GLCompileShader, "context = %d, shader = %u", CID(context), shader);110111if (context)112{113ShaderProgramID shaderPacked = PackParam<ShaderProgramID>(shader);114std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);115bool isCallValid =116(context->skipValidation() || ValidateCompileShader(context, shaderPacked));117if (isCallValid)118{119context->compileShader(shaderPacked);120}121ANGLE_CAPTURE(CompileShader, isCallValid, context, shaderPacked);122}123else124{125GenerateContextLostErrorOnCurrentGlobalContext();126}127}128129GLuint GL_APIENTRY GL_CreateProgram()130{131Context *context = GetValidGlobalContext();132EVENT(context, GLCreateProgram, "context = %d", CID(context));133134GLuint returnValue;135if (context)136{137std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);138bool isCallValid = (context->skipValidation() || ValidateCreateProgram(context));139if (isCallValid)140{141returnValue = context->createProgram();142}143else144{145returnValue = GetDefaultReturnValue<angle::EntryPoint::GLCreateProgram, GLuint>();146}147ANGLE_CAPTURE(CreateProgram, isCallValid, context, returnValue);148}149else150{151GenerateContextLostErrorOnCurrentGlobalContext();152returnValue = GetDefaultReturnValue<angle::EntryPoint::GLCreateProgram, GLuint>();153}154return returnValue;155}156157GLuint GL_APIENTRY GL_CreateShader(GLenum type)158{159Context *context = GetValidGlobalContext();160EVENT(context, GLCreateShader, "context = %d, type = %s", CID(context),161GLenumToString(GLenumGroup::ShaderType, type));162163GLuint returnValue;164if (context)165{166ShaderType typePacked = PackParam<ShaderType>(type);167std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);168bool isCallValid = (context->skipValidation() || ValidateCreateShader(context, typePacked));169if (isCallValid)170{171returnValue = context->createShader(typePacked);172}173else174{175returnValue = GetDefaultReturnValue<angle::EntryPoint::GLCreateShader, GLuint>();176}177ANGLE_CAPTURE(CreateShader, isCallValid, context, typePacked, returnValue);178}179else180{181GenerateContextLostErrorOnCurrentGlobalContext();182returnValue = GetDefaultReturnValue<angle::EntryPoint::GLCreateShader, GLuint>();183}184return returnValue;185}186187void GL_APIENTRY GL_DeleteProgram(GLuint program)188{189Context *context = GetValidGlobalContext();190EVENT(context, GLDeleteProgram, "context = %d, program = %u", CID(context), program);191192if (context)193{194ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);195std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);196bool isCallValid =197(context->skipValidation() || ValidateDeleteProgram(context, programPacked));198if (isCallValid)199{200context->deleteProgram(programPacked);201}202ANGLE_CAPTURE(DeleteProgram, isCallValid, context, programPacked);203}204else205{206GenerateContextLostErrorOnCurrentGlobalContext();207}208}209210void GL_APIENTRY GL_DeleteShader(GLuint shader)211{212Context *context = GetValidGlobalContext();213EVENT(context, GLDeleteShader, "context = %d, shader = %u", CID(context), shader);214215if (context)216{217ShaderProgramID shaderPacked = PackParam<ShaderProgramID>(shader);218std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);219bool isCallValid =220(context->skipValidation() || ValidateDeleteShader(context, shaderPacked));221if (isCallValid)222{223context->deleteShader(shaderPacked);224}225ANGLE_CAPTURE(DeleteShader, isCallValid, context, shaderPacked);226}227else228{229GenerateContextLostErrorOnCurrentGlobalContext();230}231}232233void GL_APIENTRY GL_DetachShader(GLuint program, GLuint shader)234{235Context *context = GetValidGlobalContext();236EVENT(context, GLDetachShader, "context = %d, program = %u, shader = %u", CID(context), program,237shader);238239if (context)240{241ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);242ShaderProgramID shaderPacked = PackParam<ShaderProgramID>(shader);243std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);244bool isCallValid = (context->skipValidation() ||245ValidateDetachShader(context, programPacked, shaderPacked));246if (isCallValid)247{248context->detachShader(programPacked, shaderPacked);249}250ANGLE_CAPTURE(DetachShader, isCallValid, context, programPacked, shaderPacked);251}252else253{254GenerateContextLostErrorOnCurrentGlobalContext();255}256}257258void GL_APIENTRY GL_DisableVertexAttribArray(GLuint index)259{260Context *context = GetValidGlobalContext();261EVENT(context, GLDisableVertexAttribArray, "context = %d, index = %u", CID(context), index);262263if (context)264{265std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);266bool isCallValid =267(context->skipValidation() || ValidateDisableVertexAttribArray(context, index));268if (isCallValid)269{270context->disableVertexAttribArray(index);271}272ANGLE_CAPTURE(DisableVertexAttribArray, isCallValid, context, index);273}274else275{276GenerateContextLostErrorOnCurrentGlobalContext();277}278}279280void GL_APIENTRY GL_DrawBuffers(GLsizei n, const GLenum *bufs)281{282Context *context = GetValidGlobalContext();283EVENT(context, GLDrawBuffers, "context = %d, n = %d, bufs = 0x%016" PRIxPTR "", CID(context), n,284(uintptr_t)bufs);285286if (context)287{288std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);289bool isCallValid = (context->skipValidation() || ValidateDrawBuffers(context, n, bufs));290if (isCallValid)291{292context->drawBuffers(n, bufs);293}294ANGLE_CAPTURE(DrawBuffers, isCallValid, context, n, bufs);295}296else297{298GenerateContextLostErrorOnCurrentGlobalContext();299}300}301302void GL_APIENTRY GL_EnableVertexAttribArray(GLuint index)303{304Context *context = GetValidGlobalContext();305EVENT(context, GLEnableVertexAttribArray, "context = %d, index = %u", CID(context), index);306307if (context)308{309std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);310bool isCallValid =311(context->skipValidation() || ValidateEnableVertexAttribArray(context, index));312if (isCallValid)313{314context->enableVertexAttribArray(index);315}316ANGLE_CAPTURE(EnableVertexAttribArray, isCallValid, context, index);317}318else319{320GenerateContextLostErrorOnCurrentGlobalContext();321}322}323324void GL_APIENTRY GL_GetActiveAttrib(GLuint program,325GLuint index,326GLsizei bufSize,327GLsizei *length,328GLint *size,329GLenum *type,330GLchar *name)331{332Context *context = GetValidGlobalContext();333EVENT(context, GLGetActiveAttrib,334"context = %d, program = %u, index = %u, bufSize = %d, length = 0x%016" PRIxPTR335", size = 0x%016" PRIxPTR ", type = 0x%016" PRIxPTR ", name = 0x%016" PRIxPTR "",336CID(context), program, index, bufSize, (uintptr_t)length, (uintptr_t)size,337(uintptr_t)type, (uintptr_t)name);338339if (context)340{341ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);342std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);343bool isCallValid = (context->skipValidation() ||344ValidateGetActiveAttrib(context, programPacked, index, bufSize, length,345size, type, name));346if (isCallValid)347{348context->getActiveAttrib(programPacked, index, bufSize, length, size, type, name);349}350ANGLE_CAPTURE(GetActiveAttrib, isCallValid, context, programPacked, index, bufSize, length,351size, type, name);352}353else354{355GenerateContextLostErrorOnCurrentGlobalContext();356}357}358359void GL_APIENTRY GL_GetActiveUniform(GLuint program,360GLuint index,361GLsizei bufSize,362GLsizei *length,363GLint *size,364GLenum *type,365GLchar *name)366{367Context *context = GetValidGlobalContext();368EVENT(context, GLGetActiveUniform,369"context = %d, program = %u, index = %u, bufSize = %d, length = 0x%016" PRIxPTR370", size = 0x%016" PRIxPTR ", type = 0x%016" PRIxPTR ", name = 0x%016" PRIxPTR "",371CID(context), program, index, bufSize, (uintptr_t)length, (uintptr_t)size,372(uintptr_t)type, (uintptr_t)name);373374if (context)375{376ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);377std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);378bool isCallValid = (context->skipValidation() ||379ValidateGetActiveUniform(context, programPacked, index, bufSize, length,380size, type, name));381if (isCallValid)382{383context->getActiveUniform(programPacked, index, bufSize, length, size, type, name);384}385ANGLE_CAPTURE(GetActiveUniform, isCallValid, context, programPacked, index, bufSize, length,386size, type, name);387}388else389{390GenerateContextLostErrorOnCurrentGlobalContext();391}392}393394void GL_APIENTRY GL_GetAttachedShaders(GLuint program,395GLsizei maxCount,396GLsizei *count,397GLuint *shaders)398{399Context *context = GetValidGlobalContext();400EVENT(context, GLGetAttachedShaders,401"context = %d, program = %u, maxCount = %d, count = 0x%016" PRIxPTR402", shaders = 0x%016" PRIxPTR "",403CID(context), program, maxCount, (uintptr_t)count, (uintptr_t)shaders);404405if (context)406{407ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);408ShaderProgramID *shadersPacked = PackParam<ShaderProgramID *>(shaders);409std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);410bool isCallValid =411(context->skipValidation() ||412ValidateGetAttachedShaders(context, programPacked, maxCount, count, shadersPacked));413if (isCallValid)414{415context->getAttachedShaders(programPacked, maxCount, count, shadersPacked);416}417ANGLE_CAPTURE(GetAttachedShaders, isCallValid, context, programPacked, maxCount, count,418shadersPacked);419}420else421{422GenerateContextLostErrorOnCurrentGlobalContext();423}424}425426GLint GL_APIENTRY GL_GetAttribLocation(GLuint program, const GLchar *name)427{428Context *context = GetValidGlobalContext();429EVENT(context, GLGetAttribLocation, "context = %d, program = %u, name = 0x%016" PRIxPTR "",430CID(context), program, (uintptr_t)name);431432GLint returnValue;433if (context)434{435ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);436std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);437bool isCallValid =438(context->skipValidation() || ValidateGetAttribLocation(context, programPacked, name));439if (isCallValid)440{441returnValue = context->getAttribLocation(programPacked, name);442}443else444{445returnValue = GetDefaultReturnValue<angle::EntryPoint::GLGetAttribLocation, GLint>();446}447ANGLE_CAPTURE(GetAttribLocation, isCallValid, context, programPacked, name, returnValue);448}449else450{451GenerateContextLostErrorOnCurrentGlobalContext();452returnValue = GetDefaultReturnValue<angle::EntryPoint::GLGetAttribLocation, GLint>();453}454return returnValue;455}456457void GL_APIENTRY GL_GetProgramInfoLog(GLuint program,458GLsizei bufSize,459GLsizei *length,460GLchar *infoLog)461{462Context *context = GetValidGlobalContext();463EVENT(context, GLGetProgramInfoLog,464"context = %d, program = %u, bufSize = %d, length = 0x%016" PRIxPTR465", infoLog = 0x%016" PRIxPTR "",466CID(context), program, bufSize, (uintptr_t)length, (uintptr_t)infoLog);467468if (context)469{470ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);471std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);472bool isCallValid =473(context->skipValidation() ||474ValidateGetProgramInfoLog(context, programPacked, bufSize, length, infoLog));475if (isCallValid)476{477context->getProgramInfoLog(programPacked, bufSize, length, infoLog);478}479ANGLE_CAPTURE(GetProgramInfoLog, isCallValid, context, programPacked, bufSize, length,480infoLog);481}482else483{484GenerateContextLostErrorOnCurrentGlobalContext();485}486}487488void GL_APIENTRY GL_GetProgramiv(GLuint program, GLenum pname, GLint *params)489{490Context *context = GetGlobalContext();491EVENT(context, GLGetProgramiv,492"context = %d, program = %u, pname = %s, params = 0x%016" PRIxPTR "", CID(context),493program, GLenumToString(GLenumGroup::ProgramPropertyARB, pname), (uintptr_t)params);494495if (context)496{497ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);498std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);499bool isCallValid = (context->skipValidation() ||500ValidateGetProgramiv(context, programPacked, pname, params));501if (isCallValid)502{503context->getProgramiv(programPacked, pname, params);504}505ANGLE_CAPTURE(GetProgramiv, isCallValid, context, programPacked, pname, params);506}507else508{}509}510511void GL_APIENTRY GL_GetShaderInfoLog(GLuint shader,512GLsizei bufSize,513GLsizei *length,514GLchar *infoLog)515{516Context *context = GetValidGlobalContext();517EVENT(context, GLGetShaderInfoLog,518"context = %d, shader = %u, bufSize = %d, length = 0x%016" PRIxPTR519", infoLog = 0x%016" PRIxPTR "",520CID(context), shader, bufSize, (uintptr_t)length, (uintptr_t)infoLog);521522if (context)523{524ShaderProgramID shaderPacked = PackParam<ShaderProgramID>(shader);525std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);526bool isCallValid =527(context->skipValidation() ||528ValidateGetShaderInfoLog(context, shaderPacked, bufSize, length, infoLog));529if (isCallValid)530{531context->getShaderInfoLog(shaderPacked, bufSize, length, infoLog);532}533ANGLE_CAPTURE(GetShaderInfoLog, isCallValid, context, shaderPacked, bufSize, length,534infoLog);535}536else537{538GenerateContextLostErrorOnCurrentGlobalContext();539}540}541542void GL_APIENTRY GL_GetShaderSource(GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *source)543{544Context *context = GetValidGlobalContext();545EVENT(context, GLGetShaderSource,546"context = %d, shader = %u, bufSize = %d, length = 0x%016" PRIxPTR547", source = 0x%016" PRIxPTR "",548CID(context), shader, bufSize, (uintptr_t)length, (uintptr_t)source);549550if (context)551{552ShaderProgramID shaderPacked = PackParam<ShaderProgramID>(shader);553std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);554bool isCallValid =555(context->skipValidation() ||556ValidateGetShaderSource(context, shaderPacked, bufSize, length, source));557if (isCallValid)558{559context->getShaderSource(shaderPacked, bufSize, length, source);560}561ANGLE_CAPTURE(GetShaderSource, isCallValid, context, shaderPacked, bufSize, length, source);562}563else564{565GenerateContextLostErrorOnCurrentGlobalContext();566}567}568569void GL_APIENTRY GL_GetShaderiv(GLuint shader, GLenum pname, GLint *params)570{571Context *context = GetGlobalContext();572EVENT(context, GLGetShaderiv,573"context = %d, shader = %u, pname = %s, params = 0x%016" PRIxPTR "", CID(context), shader,574GLenumToString(GLenumGroup::ShaderParameterName, pname), (uintptr_t)params);575576if (context)577{578ShaderProgramID shaderPacked = PackParam<ShaderProgramID>(shader);579std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);580bool isCallValid = (context->skipValidation() ||581ValidateGetShaderiv(context, shaderPacked, pname, params));582if (isCallValid)583{584context->getShaderiv(shaderPacked, pname, params);585}586ANGLE_CAPTURE(GetShaderiv, isCallValid, context, shaderPacked, pname, params);587}588else589{}590}591592GLint GL_APIENTRY GL_GetUniformLocation(GLuint program, const GLchar *name)593{594Context *context = GetValidGlobalContext();595EVENT(context, GLGetUniformLocation, "context = %d, program = %u, name = 0x%016" PRIxPTR "",596CID(context), program, (uintptr_t)name);597598GLint returnValue;599if (context)600{601ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);602std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);603bool isCallValid =604(context->skipValidation() || ValidateGetUniformLocation(context, programPacked, name));605if (isCallValid)606{607returnValue = context->getUniformLocation(programPacked, name);608}609else610{611returnValue = GetDefaultReturnValue<angle::EntryPoint::GLGetUniformLocation, GLint>();612}613ANGLE_CAPTURE(GetUniformLocation, isCallValid, context, programPacked, name, returnValue);614}615else616{617GenerateContextLostErrorOnCurrentGlobalContext();618returnValue = GetDefaultReturnValue<angle::EntryPoint::GLGetUniformLocation, GLint>();619}620return returnValue;621}622623void GL_APIENTRY GL_GetUniformfv(GLuint program, GLint location, GLfloat *params)624{625Context *context = GetValidGlobalContext();626EVENT(context, GLGetUniformfv,627"context = %d, program = %u, location = %d, params = 0x%016" PRIxPTR "", CID(context),628program, location, (uintptr_t)params);629630if (context)631{632ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);633UniformLocation locationPacked = PackParam<UniformLocation>(location);634std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);635bool isCallValid = (context->skipValidation() ||636ValidateGetUniformfv(context, programPacked, locationPacked, params));637if (isCallValid)638{639context->getUniformfv(programPacked, locationPacked, params);640}641ANGLE_CAPTURE(GetUniformfv, isCallValid, context, programPacked, locationPacked, params);642}643else644{645GenerateContextLostErrorOnCurrentGlobalContext();646}647}648649void GL_APIENTRY GL_GetUniformiv(GLuint program, GLint location, GLint *params)650{651Context *context = GetValidGlobalContext();652EVENT(context, GLGetUniformiv,653"context = %d, program = %u, location = %d, params = 0x%016" PRIxPTR "", CID(context),654program, location, (uintptr_t)params);655656if (context)657{658ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);659UniformLocation locationPacked = PackParam<UniformLocation>(location);660std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);661bool isCallValid = (context->skipValidation() ||662ValidateGetUniformiv(context, programPacked, locationPacked, params));663if (isCallValid)664{665context->getUniformiv(programPacked, locationPacked, params);666}667ANGLE_CAPTURE(GetUniformiv, isCallValid, context, programPacked, locationPacked, params);668}669else670{671GenerateContextLostErrorOnCurrentGlobalContext();672}673}674675void GL_APIENTRY GL_GetVertexAttribPointerv(GLuint index, GLenum pname, void **pointer)676{677Context *context = GetValidGlobalContext();678EVENT(context, GLGetVertexAttribPointerv,679"context = %d, index = %u, pname = %s, pointer = 0x%016" PRIxPTR "", CID(context), index,680GLenumToString(GLenumGroup::DefaultGroup, pname), (uintptr_t)pointer);681682if (context)683{684std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);685bool isCallValid = (context->skipValidation() ||686ValidateGetVertexAttribPointerv(context, index, pname, pointer));687if (isCallValid)688{689context->getVertexAttribPointerv(index, pname, pointer);690}691ANGLE_CAPTURE(GetVertexAttribPointerv, isCallValid, context, index, pname, pointer);692}693else694{695GenerateContextLostErrorOnCurrentGlobalContext();696}697}698699void GL_APIENTRY GL_GetVertexAttribdv(GLuint index, GLenum pname, GLdouble *params)700{701Context *context = GetValidGlobalContext();702EVENT(context, GLGetVertexAttribdv,703"context = %d, index = %u, pname = %s, params = 0x%016" PRIxPTR "", CID(context), index,704GLenumToString(GLenumGroup::DefaultGroup, pname), (uintptr_t)params);705706if (context)707{708std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);709bool isCallValid =710(context->skipValidation() || ValidateGetVertexAttribdv(context, index, pname, params));711if (isCallValid)712{713context->getVertexAttribdv(index, pname, params);714}715ANGLE_CAPTURE(GetVertexAttribdv, isCallValid, context, index, pname, params);716}717else718{719GenerateContextLostErrorOnCurrentGlobalContext();720}721}722723void GL_APIENTRY GL_GetVertexAttribfv(GLuint index, GLenum pname, GLfloat *params)724{725Context *context = GetValidGlobalContext();726EVENT(context, GLGetVertexAttribfv,727"context = %d, index = %u, pname = %s, params = 0x%016" PRIxPTR "", CID(context), index,728GLenumToString(GLenumGroup::DefaultGroup, pname), (uintptr_t)params);729730if (context)731{732std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);733bool isCallValid =734(context->skipValidation() || ValidateGetVertexAttribfv(context, index, pname, params));735if (isCallValid)736{737context->getVertexAttribfv(index, pname, params);738}739ANGLE_CAPTURE(GetVertexAttribfv, isCallValid, context, index, pname, params);740}741else742{743GenerateContextLostErrorOnCurrentGlobalContext();744}745}746747void GL_APIENTRY GL_GetVertexAttribiv(GLuint index, GLenum pname, GLint *params)748{749Context *context = GetValidGlobalContext();750EVENT(context, GLGetVertexAttribiv,751"context = %d, index = %u, pname = %s, params = 0x%016" PRIxPTR "", CID(context), index,752GLenumToString(GLenumGroup::DefaultGroup, pname), (uintptr_t)params);753754if (context)755{756std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);757bool isCallValid =758(context->skipValidation() || ValidateGetVertexAttribiv(context, index, pname, params));759if (isCallValid)760{761context->getVertexAttribiv(index, pname, params);762}763ANGLE_CAPTURE(GetVertexAttribiv, isCallValid, context, index, pname, params);764}765else766{767GenerateContextLostErrorOnCurrentGlobalContext();768}769}770771GLboolean GL_APIENTRY GL_IsProgram(GLuint program)772{773Context *context = GetValidGlobalContext();774EVENT(context, GLIsProgram, "context = %d, program = %u", CID(context), program);775776GLboolean returnValue;777if (context)778{779ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);780std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);781bool isCallValid = (context->skipValidation() || ValidateIsProgram(context, programPacked));782if (isCallValid)783{784returnValue = context->isProgram(programPacked);785}786else787{788returnValue = GetDefaultReturnValue<angle::EntryPoint::GLIsProgram, GLboolean>();789}790ANGLE_CAPTURE(IsProgram, isCallValid, context, programPacked, returnValue);791}792else793{794GenerateContextLostErrorOnCurrentGlobalContext();795returnValue = GetDefaultReturnValue<angle::EntryPoint::GLIsProgram, GLboolean>();796}797return returnValue;798}799800GLboolean GL_APIENTRY GL_IsShader(GLuint shader)801{802Context *context = GetValidGlobalContext();803EVENT(context, GLIsShader, "context = %d, shader = %u", CID(context), shader);804805GLboolean returnValue;806if (context)807{808ShaderProgramID shaderPacked = PackParam<ShaderProgramID>(shader);809std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);810bool isCallValid = (context->skipValidation() || ValidateIsShader(context, shaderPacked));811if (isCallValid)812{813returnValue = context->isShader(shaderPacked);814}815else816{817returnValue = GetDefaultReturnValue<angle::EntryPoint::GLIsShader, GLboolean>();818}819ANGLE_CAPTURE(IsShader, isCallValid, context, shaderPacked, returnValue);820}821else822{823GenerateContextLostErrorOnCurrentGlobalContext();824returnValue = GetDefaultReturnValue<angle::EntryPoint::GLIsShader, GLboolean>();825}826return returnValue;827}828829void GL_APIENTRY GL_LinkProgram(GLuint program)830{831Context *context = GetValidGlobalContext();832EVENT(context, GLLinkProgram, "context = %d, program = %u", CID(context), program);833834if (context)835{836ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);837std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);838bool isCallValid =839(context->skipValidation() || ValidateLinkProgram(context, programPacked));840if (isCallValid)841{842context->linkProgram(programPacked);843}844ANGLE_CAPTURE(LinkProgram, isCallValid, context, programPacked);845}846else847{848GenerateContextLostErrorOnCurrentGlobalContext();849}850}851852void GL_APIENTRY GL_ShaderSource(GLuint shader,853GLsizei count,854const GLchar *const *string,855const GLint *length)856{857Context *context = GetValidGlobalContext();858EVENT(context, GLShaderSource,859"context = %d, shader = %u, count = %d, string = 0x%016" PRIxPTR860", length = 0x%016" PRIxPTR "",861CID(context), shader, count, (uintptr_t)string, (uintptr_t)length);862863if (context)864{865ShaderProgramID shaderPacked = PackParam<ShaderProgramID>(shader);866std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);867bool isCallValid = (context->skipValidation() ||868ValidateShaderSource(context, shaderPacked, count, string, length));869if (isCallValid)870{871context->shaderSource(shaderPacked, count, string, length);872}873ANGLE_CAPTURE(ShaderSource, isCallValid, context, shaderPacked, count, string, length);874}875else876{877GenerateContextLostErrorOnCurrentGlobalContext();878}879}880881void GL_APIENTRY GL_StencilFuncSeparate(GLenum face, GLenum func, GLint ref, GLuint mask)882{883Context *context = GetValidGlobalContext();884EVENT(context, GLStencilFuncSeparate, "context = %d, face = %s, func = %s, ref = %d, mask = %u",885CID(context), GLenumToString(GLenumGroup::StencilFaceDirection, face),886GLenumToString(GLenumGroup::StencilFunction, func), ref, mask);887888if (context)889{890std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);891bool isCallValid = (context->skipValidation() ||892ValidateStencilFuncSeparate(context, face, func, ref, mask));893if (isCallValid)894{895context->stencilFuncSeparate(face, func, ref, mask);896}897ANGLE_CAPTURE(StencilFuncSeparate, isCallValid, context, face, func, ref, mask);898}899else900{901GenerateContextLostErrorOnCurrentGlobalContext();902}903}904905void GL_APIENTRY GL_StencilMaskSeparate(GLenum face, GLuint mask)906{907Context *context = GetValidGlobalContext();908EVENT(context, GLStencilMaskSeparate, "context = %d, face = %s, mask = %u", CID(context),909GLenumToString(GLenumGroup::StencilFaceDirection, face), mask);910911if (context)912{913std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);914bool isCallValid =915(context->skipValidation() || ValidateStencilMaskSeparate(context, face, mask));916if (isCallValid)917{918context->stencilMaskSeparate(face, mask);919}920ANGLE_CAPTURE(StencilMaskSeparate, isCallValid, context, face, mask);921}922else923{924GenerateContextLostErrorOnCurrentGlobalContext();925}926}927928void GL_APIENTRY GL_StencilOpSeparate(GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass)929{930Context *context = GetValidGlobalContext();931EVENT(context, GLStencilOpSeparate,932"context = %d, face = %s, sfail = %s, dpfail = %s, dppass = %s", CID(context),933GLenumToString(GLenumGroup::StencilFaceDirection, face),934GLenumToString(GLenumGroup::StencilOp, sfail),935GLenumToString(GLenumGroup::StencilOp, dpfail),936GLenumToString(GLenumGroup::StencilOp, dppass));937938if (context)939{940std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);941bool isCallValid = (context->skipValidation() ||942ValidateStencilOpSeparate(context, face, sfail, dpfail, dppass));943if (isCallValid)944{945context->stencilOpSeparate(face, sfail, dpfail, dppass);946}947ANGLE_CAPTURE(StencilOpSeparate, isCallValid, context, face, sfail, dpfail, dppass);948}949else950{951GenerateContextLostErrorOnCurrentGlobalContext();952}953}954955void GL_APIENTRY GL_Uniform1f(GLint location, GLfloat v0)956{957Context *context = GetValidGlobalContext();958EVENT(context, GLUniform1f, "context = %d, location = %d, v0 = %f", CID(context), location, v0);959960if (context)961{962UniformLocation locationPacked = PackParam<UniformLocation>(location);963std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);964bool isCallValid =965(context->skipValidation() || ValidateUniform1f(context, locationPacked, v0));966if (isCallValid)967{968context->uniform1f(locationPacked, v0);969}970ANGLE_CAPTURE(Uniform1f, isCallValid, context, locationPacked, v0);971}972else973{974GenerateContextLostErrorOnCurrentGlobalContext();975}976}977978void GL_APIENTRY GL_Uniform1fv(GLint location, GLsizei count, const GLfloat *value)979{980Context *context = GetValidGlobalContext();981EVENT(context, GLUniform1fv,982"context = %d, location = %d, count = %d, value = 0x%016" PRIxPTR "", CID(context),983location, count, (uintptr_t)value);984985if (context)986{987UniformLocation locationPacked = PackParam<UniformLocation>(location);988std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);989bool isCallValid = (context->skipValidation() ||990ValidateUniform1fv(context, locationPacked, count, value));991if (isCallValid)992{993context->uniform1fv(locationPacked, count, value);994}995ANGLE_CAPTURE(Uniform1fv, isCallValid, context, locationPacked, count, value);996}997else998{999GenerateContextLostErrorOnCurrentGlobalContext();1000}1001}10021003void GL_APIENTRY GL_Uniform1i(GLint location, GLint v0)1004{1005Context *context = GetValidGlobalContext();1006EVENT(context, GLUniform1i, "context = %d, location = %d, v0 = %d", CID(context), location, v0);10071008if (context)1009{1010UniformLocation locationPacked = PackParam<UniformLocation>(location);1011std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);1012bool isCallValid =1013(context->skipValidation() || ValidateUniform1i(context, locationPacked, v0));1014if (isCallValid)1015{1016context->uniform1i(locationPacked, v0);1017}1018ANGLE_CAPTURE(Uniform1i, isCallValid, context, locationPacked, v0);1019}1020else1021{1022GenerateContextLostErrorOnCurrentGlobalContext();1023}1024}10251026void GL_APIENTRY GL_Uniform1iv(GLint location, GLsizei count, const GLint *value)1027{1028Context *context = GetValidGlobalContext();1029EVENT(context, GLUniform1iv,1030"context = %d, location = %d, count = %d, value = 0x%016" PRIxPTR "", CID(context),1031location, count, (uintptr_t)value);10321033if (context)1034{1035UniformLocation locationPacked = PackParam<UniformLocation>(location);1036std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);1037bool isCallValid = (context->skipValidation() ||1038ValidateUniform1iv(context, locationPacked, count, value));1039if (isCallValid)1040{1041context->uniform1iv(locationPacked, count, value);1042}1043ANGLE_CAPTURE(Uniform1iv, isCallValid, context, locationPacked, count, value);1044}1045else1046{1047GenerateContextLostErrorOnCurrentGlobalContext();1048}1049}10501051void GL_APIENTRY GL_Uniform2f(GLint location, GLfloat v0, GLfloat v1)1052{1053Context *context = GetValidGlobalContext();1054EVENT(context, GLUniform2f, "context = %d, location = %d, v0 = %f, v1 = %f", CID(context),1055location, v0, v1);10561057if (context)1058{1059UniformLocation locationPacked = PackParam<UniformLocation>(location);1060std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);1061bool isCallValid =1062(context->skipValidation() || ValidateUniform2f(context, locationPacked, v0, v1));1063if (isCallValid)1064{1065context->uniform2f(locationPacked, v0, v1);1066}1067ANGLE_CAPTURE(Uniform2f, isCallValid, context, locationPacked, v0, v1);1068}1069else1070{1071GenerateContextLostErrorOnCurrentGlobalContext();1072}1073}10741075void GL_APIENTRY GL_Uniform2fv(GLint location, GLsizei count, const GLfloat *value)1076{1077Context *context = GetValidGlobalContext();1078EVENT(context, GLUniform2fv,1079"context = %d, location = %d, count = %d, value = 0x%016" PRIxPTR "", CID(context),1080location, count, (uintptr_t)value);10811082if (context)1083{1084UniformLocation locationPacked = PackParam<UniformLocation>(location);1085std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);1086bool isCallValid = (context->skipValidation() ||1087ValidateUniform2fv(context, locationPacked, count, value));1088if (isCallValid)1089{1090context->uniform2fv(locationPacked, count, value);1091}1092ANGLE_CAPTURE(Uniform2fv, isCallValid, context, locationPacked, count, value);1093}1094else1095{1096GenerateContextLostErrorOnCurrentGlobalContext();1097}1098}10991100void GL_APIENTRY GL_Uniform2i(GLint location, GLint v0, GLint v1)1101{1102Context *context = GetValidGlobalContext();1103EVENT(context, GLUniform2i, "context = %d, location = %d, v0 = %d, v1 = %d", CID(context),1104location, v0, v1);11051106if (context)1107{1108UniformLocation locationPacked = PackParam<UniformLocation>(location);1109std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);1110bool isCallValid =1111(context->skipValidation() || ValidateUniform2i(context, locationPacked, v0, v1));1112if (isCallValid)1113{1114context->uniform2i(locationPacked, v0, v1);1115}1116ANGLE_CAPTURE(Uniform2i, isCallValid, context, locationPacked, v0, v1);1117}1118else1119{1120GenerateContextLostErrorOnCurrentGlobalContext();1121}1122}11231124void GL_APIENTRY GL_Uniform2iv(GLint location, GLsizei count, const GLint *value)1125{1126Context *context = GetValidGlobalContext();1127EVENT(context, GLUniform2iv,1128"context = %d, location = %d, count = %d, value = 0x%016" PRIxPTR "", CID(context),1129location, count, (uintptr_t)value);11301131if (context)1132{1133UniformLocation locationPacked = PackParam<UniformLocation>(location);1134std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);1135bool isCallValid = (context->skipValidation() ||1136ValidateUniform2iv(context, locationPacked, count, value));1137if (isCallValid)1138{1139context->uniform2iv(locationPacked, count, value);1140}1141ANGLE_CAPTURE(Uniform2iv, isCallValid, context, locationPacked, count, value);1142}1143else1144{1145GenerateContextLostErrorOnCurrentGlobalContext();1146}1147}11481149void GL_APIENTRY GL_Uniform3f(GLint location, GLfloat v0, GLfloat v1, GLfloat v2)1150{1151Context *context = GetValidGlobalContext();1152EVENT(context, GLUniform3f, "context = %d, location = %d, v0 = %f, v1 = %f, v2 = %f",1153CID(context), location, v0, v1, v2);11541155if (context)1156{1157UniformLocation locationPacked = PackParam<UniformLocation>(location);1158std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);1159bool isCallValid =1160(context->skipValidation() || ValidateUniform3f(context, locationPacked, v0, v1, v2));1161if (isCallValid)1162{1163context->uniform3f(locationPacked, v0, v1, v2);1164}1165ANGLE_CAPTURE(Uniform3f, isCallValid, context, locationPacked, v0, v1, v2);1166}1167else1168{1169GenerateContextLostErrorOnCurrentGlobalContext();1170}1171}11721173void GL_APIENTRY GL_Uniform3fv(GLint location, GLsizei count, const GLfloat *value)1174{1175Context *context = GetValidGlobalContext();1176EVENT(context, GLUniform3fv,1177"context = %d, location = %d, count = %d, value = 0x%016" PRIxPTR "", CID(context),1178location, count, (uintptr_t)value);11791180if (context)1181{1182UniformLocation locationPacked = PackParam<UniformLocation>(location);1183std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);1184bool isCallValid = (context->skipValidation() ||1185ValidateUniform3fv(context, locationPacked, count, value));1186if (isCallValid)1187{1188context->uniform3fv(locationPacked, count, value);1189}1190ANGLE_CAPTURE(Uniform3fv, isCallValid, context, locationPacked, count, value);1191}1192else1193{1194GenerateContextLostErrorOnCurrentGlobalContext();1195}1196}11971198void GL_APIENTRY GL_Uniform3i(GLint location, GLint v0, GLint v1, GLint v2)1199{1200Context *context = GetValidGlobalContext();1201EVENT(context, GLUniform3i, "context = %d, location = %d, v0 = %d, v1 = %d, v2 = %d",1202CID(context), location, v0, v1, v2);12031204if (context)1205{1206UniformLocation locationPacked = PackParam<UniformLocation>(location);1207std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);1208bool isCallValid =1209(context->skipValidation() || ValidateUniform3i(context, locationPacked, v0, v1, v2));1210if (isCallValid)1211{1212context->uniform3i(locationPacked, v0, v1, v2);1213}1214ANGLE_CAPTURE(Uniform3i, isCallValid, context, locationPacked, v0, v1, v2);1215}1216else1217{1218GenerateContextLostErrorOnCurrentGlobalContext();1219}1220}12211222void GL_APIENTRY GL_Uniform3iv(GLint location, GLsizei count, const GLint *value)1223{1224Context *context = GetValidGlobalContext();1225EVENT(context, GLUniform3iv,1226"context = %d, location = %d, count = %d, value = 0x%016" PRIxPTR "", CID(context),1227location, count, (uintptr_t)value);12281229if (context)1230{1231UniformLocation locationPacked = PackParam<UniformLocation>(location);1232std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);1233bool isCallValid = (context->skipValidation() ||1234ValidateUniform3iv(context, locationPacked, count, value));1235if (isCallValid)1236{1237context->uniform3iv(locationPacked, count, value);1238}1239ANGLE_CAPTURE(Uniform3iv, isCallValid, context, locationPacked, count, value);1240}1241else1242{1243GenerateContextLostErrorOnCurrentGlobalContext();1244}1245}12461247void GL_APIENTRY GL_Uniform4f(GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3)1248{1249Context *context = GetValidGlobalContext();1250EVENT(context, GLUniform4f, "context = %d, location = %d, v0 = %f, v1 = %f, v2 = %f, v3 = %f",1251CID(context), location, v0, v1, v2, v3);12521253if (context)1254{1255UniformLocation locationPacked = PackParam<UniformLocation>(location);1256std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);1257bool isCallValid = (context->skipValidation() ||1258ValidateUniform4f(context, locationPacked, v0, v1, v2, v3));1259if (isCallValid)1260{1261context->uniform4f(locationPacked, v0, v1, v2, v3);1262}1263ANGLE_CAPTURE(Uniform4f, isCallValid, context, locationPacked, v0, v1, v2, v3);1264}1265else1266{1267GenerateContextLostErrorOnCurrentGlobalContext();1268}1269}12701271void GL_APIENTRY GL_Uniform4fv(GLint location, GLsizei count, const GLfloat *value)1272{1273Context *context = GetValidGlobalContext();1274EVENT(context, GLUniform4fv,1275"context = %d, location = %d, count = %d, value = 0x%016" PRIxPTR "", CID(context),1276location, count, (uintptr_t)value);12771278if (context)1279{1280UniformLocation locationPacked = PackParam<UniformLocation>(location);1281std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);1282bool isCallValid = (context->skipValidation() ||1283ValidateUniform4fv(context, locationPacked, count, value));1284if (isCallValid)1285{1286context->uniform4fv(locationPacked, count, value);1287}1288ANGLE_CAPTURE(Uniform4fv, isCallValid, context, locationPacked, count, value);1289}1290else1291{1292GenerateContextLostErrorOnCurrentGlobalContext();1293}1294}12951296void GL_APIENTRY GL_Uniform4i(GLint location, GLint v0, GLint v1, GLint v2, GLint v3)1297{1298Context *context = GetValidGlobalContext();1299EVENT(context, GLUniform4i, "context = %d, location = %d, v0 = %d, v1 = %d, v2 = %d, v3 = %d",1300CID(context), location, v0, v1, v2, v3);13011302if (context)1303{1304UniformLocation locationPacked = PackParam<UniformLocation>(location);1305std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);1306bool isCallValid = (context->skipValidation() ||1307ValidateUniform4i(context, locationPacked, v0, v1, v2, v3));1308if (isCallValid)1309{1310context->uniform4i(locationPacked, v0, v1, v2, v3);1311}1312ANGLE_CAPTURE(Uniform4i, isCallValid, context, locationPacked, v0, v1, v2, v3);1313}1314else1315{1316GenerateContextLostErrorOnCurrentGlobalContext();1317}1318}13191320void GL_APIENTRY GL_Uniform4iv(GLint location, GLsizei count, const GLint *value)1321{1322Context *context = GetValidGlobalContext();1323EVENT(context, GLUniform4iv,1324"context = %d, location = %d, count = %d, value = 0x%016" PRIxPTR "", CID(context),1325location, count, (uintptr_t)value);13261327if (context)1328{1329UniformLocation locationPacked = PackParam<UniformLocation>(location);1330std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);1331bool isCallValid = (context->skipValidation() ||1332ValidateUniform4iv(context, locationPacked, count, value));1333if (isCallValid)1334{1335context->uniform4iv(locationPacked, count, value);1336}1337ANGLE_CAPTURE(Uniform4iv, isCallValid, context, locationPacked, count, value);1338}1339else1340{1341GenerateContextLostErrorOnCurrentGlobalContext();1342}1343}13441345void GL_APIENTRY GL_UniformMatrix2fv(GLint location,1346GLsizei count,1347GLboolean transpose,1348const GLfloat *value)1349{1350Context *context = GetValidGlobalContext();1351EVENT(context, GLUniformMatrix2fv,1352"context = %d, location = %d, count = %d, transpose = %s, value = 0x%016" PRIxPTR "",1353CID(context), location, count, GLbooleanToString(transpose), (uintptr_t)value);13541355if (context)1356{1357UniformLocation locationPacked = PackParam<UniformLocation>(location);1358std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);1359bool isCallValid =1360(context->skipValidation() ||1361ValidateUniformMatrix2fv(context, locationPacked, count, transpose, value));1362if (isCallValid)1363{1364context->uniformMatrix2fv(locationPacked, count, transpose, value);1365}1366ANGLE_CAPTURE(UniformMatrix2fv, isCallValid, context, locationPacked, count, transpose,1367value);1368}1369else1370{1371GenerateContextLostErrorOnCurrentGlobalContext();1372}1373}13741375void GL_APIENTRY GL_UniformMatrix3fv(GLint location,1376GLsizei count,1377GLboolean transpose,1378const GLfloat *value)1379{1380Context *context = GetValidGlobalContext();1381EVENT(context, GLUniformMatrix3fv,1382"context = %d, location = %d, count = %d, transpose = %s, value = 0x%016" PRIxPTR "",1383CID(context), location, count, GLbooleanToString(transpose), (uintptr_t)value);13841385if (context)1386{1387UniformLocation locationPacked = PackParam<UniformLocation>(location);1388std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);1389bool isCallValid =1390(context->skipValidation() ||1391ValidateUniformMatrix3fv(context, locationPacked, count, transpose, value));1392if (isCallValid)1393{1394context->uniformMatrix3fv(locationPacked, count, transpose, value);1395}1396ANGLE_CAPTURE(UniformMatrix3fv, isCallValid, context, locationPacked, count, transpose,1397value);1398}1399else1400{1401GenerateContextLostErrorOnCurrentGlobalContext();1402}1403}14041405void GL_APIENTRY GL_UniformMatrix4fv(GLint location,1406GLsizei count,1407GLboolean transpose,1408const GLfloat *value)1409{1410Context *context = GetValidGlobalContext();1411EVENT(context, GLUniformMatrix4fv,1412"context = %d, location = %d, count = %d, transpose = %s, value = 0x%016" PRIxPTR "",1413CID(context), location, count, GLbooleanToString(transpose), (uintptr_t)value);14141415if (context)1416{1417UniformLocation locationPacked = PackParam<UniformLocation>(location);1418std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);1419bool isCallValid =1420(context->skipValidation() ||1421ValidateUniformMatrix4fv(context, locationPacked, count, transpose, value));1422if (isCallValid)1423{1424context->uniformMatrix4fv(locationPacked, count, transpose, value);1425}1426ANGLE_CAPTURE(UniformMatrix4fv, isCallValid, context, locationPacked, count, transpose,1427value);1428}1429else1430{1431GenerateContextLostErrorOnCurrentGlobalContext();1432}1433}14341435void GL_APIENTRY GL_UseProgram(GLuint program)1436{1437Context *context = GetValidGlobalContext();1438EVENT(context, GLUseProgram, "context = %d, program = %u", CID(context), program);14391440if (context)1441{1442ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);1443std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);1444bool isCallValid =1445(context->skipValidation() || ValidateUseProgram(context, programPacked));1446if (isCallValid)1447{1448context->useProgram(programPacked);1449}1450ANGLE_CAPTURE(UseProgram, isCallValid, context, programPacked);1451}1452else1453{1454GenerateContextLostErrorOnCurrentGlobalContext();1455}1456}14571458void GL_APIENTRY GL_ValidateProgram(GLuint program)1459{1460Context *context = GetValidGlobalContext();1461EVENT(context, GLValidateProgram, "context = %d, program = %u", CID(context), program);14621463if (context)1464{1465ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);1466std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);1467bool isCallValid =1468(context->skipValidation() || ValidateValidateProgram(context, programPacked));1469if (isCallValid)1470{1471context->validateProgram(programPacked);1472}1473ANGLE_CAPTURE(ValidateProgram, isCallValid, context, programPacked);1474}1475else1476{1477GenerateContextLostErrorOnCurrentGlobalContext();1478}1479}14801481void GL_APIENTRY GL_VertexAttrib1d(GLuint index, GLdouble x)1482{1483Context *context = GetValidGlobalContext();1484EVENT(context, GLVertexAttrib1d, "context = %d, index = %u, x = %f", CID(context), index, x);14851486if (context)1487{1488std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);1489bool isCallValid = (context->skipValidation() || ValidateVertexAttrib1d(context, index, x));1490if (isCallValid)1491{1492context->vertexAttrib1d(index, x);1493}1494ANGLE_CAPTURE(VertexAttrib1d, isCallValid, context, index, x);1495}1496else1497{1498GenerateContextLostErrorOnCurrentGlobalContext();1499}1500}15011502void GL_APIENTRY GL_VertexAttrib1dv(GLuint index, const GLdouble *v)1503{1504Context *context = GetValidGlobalContext();1505EVENT(context, GLVertexAttrib1dv, "context = %d, index = %u, v = 0x%016" PRIxPTR "",1506CID(context), index, (uintptr_t)v);15071508if (context)1509{1510std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);1511bool isCallValid =1512(context->skipValidation() || ValidateVertexAttrib1dv(context, index, v));1513if (isCallValid)1514{1515context->vertexAttrib1dv(index, v);1516}1517ANGLE_CAPTURE(VertexAttrib1dv, isCallValid, context, index, v);1518}1519else1520{1521GenerateContextLostErrorOnCurrentGlobalContext();1522}1523}15241525void GL_APIENTRY GL_VertexAttrib1f(GLuint index, GLfloat x)1526{1527Context *context = GetValidGlobalContext();1528EVENT(context, GLVertexAttrib1f, "context = %d, index = %u, x = %f", CID(context), index, x);15291530if (context)1531{1532std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);1533bool isCallValid = (context->skipValidation() || ValidateVertexAttrib1f(context, index, x));1534if (isCallValid)1535{1536context->vertexAttrib1f(index, x);1537}1538ANGLE_CAPTURE(VertexAttrib1f, isCallValid, context, index, x);1539}1540else1541{1542GenerateContextLostErrorOnCurrentGlobalContext();1543}1544}15451546void GL_APIENTRY GL_VertexAttrib1fv(GLuint index, const GLfloat *v)1547{1548Context *context = GetValidGlobalContext();1549EVENT(context, GLVertexAttrib1fv, "context = %d, index = %u, v = 0x%016" PRIxPTR "",1550CID(context), index, (uintptr_t)v);15511552if (context)1553{1554std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);1555bool isCallValid =1556(context->skipValidation() || ValidateVertexAttrib1fv(context, index, v));1557if (isCallValid)1558{1559context->vertexAttrib1fv(index, v);1560}1561ANGLE_CAPTURE(VertexAttrib1fv, isCallValid, context, index, v);1562}1563else1564{1565GenerateContextLostErrorOnCurrentGlobalContext();1566}1567}15681569void GL_APIENTRY GL_VertexAttrib1s(GLuint index, GLshort x)1570{1571Context *context = GetValidGlobalContext();1572EVENT(context, GLVertexAttrib1s, "context = %d, index = %u, x = %d", CID(context), index, x);15731574if (context)1575{1576std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);1577bool isCallValid = (context->skipValidation() || ValidateVertexAttrib1s(context, index, x));1578if (isCallValid)1579{1580context->vertexAttrib1s(index, x);1581}1582ANGLE_CAPTURE(VertexAttrib1s, isCallValid, context, index, x);1583}1584else1585{1586GenerateContextLostErrorOnCurrentGlobalContext();1587}1588}15891590void GL_APIENTRY GL_VertexAttrib1sv(GLuint index, const GLshort *v)1591{1592Context *context = GetValidGlobalContext();1593EVENT(context, GLVertexAttrib1sv, "context = %d, index = %u, v = 0x%016" PRIxPTR "",1594CID(context), index, (uintptr_t)v);15951596if (context)1597{1598std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);1599bool isCallValid =1600(context->skipValidation() || ValidateVertexAttrib1sv(context, index, v));1601if (isCallValid)1602{1603context->vertexAttrib1sv(index, v);1604}1605ANGLE_CAPTURE(VertexAttrib1sv, isCallValid, context, index, v);1606}1607else1608{1609GenerateContextLostErrorOnCurrentGlobalContext();1610}1611}16121613void GL_APIENTRY GL_VertexAttrib2d(GLuint index, GLdouble x, GLdouble y)1614{1615Context *context = GetValidGlobalContext();1616EVENT(context, GLVertexAttrib2d, "context = %d, index = %u, x = %f, y = %f", CID(context),1617index, x, y);16181619if (context)1620{1621std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);1622bool isCallValid =1623(context->skipValidation() || ValidateVertexAttrib2d(context, index, x, y));1624if (isCallValid)1625{1626context->vertexAttrib2d(index, x, y);1627}1628ANGLE_CAPTURE(VertexAttrib2d, isCallValid, context, index, x, y);1629}1630else1631{1632GenerateContextLostErrorOnCurrentGlobalContext();1633}1634}16351636void GL_APIENTRY GL_VertexAttrib2dv(GLuint index, const GLdouble *v)1637{1638Context *context = GetValidGlobalContext();1639EVENT(context, GLVertexAttrib2dv, "context = %d, index = %u, v = 0x%016" PRIxPTR "",1640CID(context), index, (uintptr_t)v);16411642if (context)1643{1644std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);1645bool isCallValid =1646(context->skipValidation() || ValidateVertexAttrib2dv(context, index, v));1647if (isCallValid)1648{1649context->vertexAttrib2dv(index, v);1650}1651ANGLE_CAPTURE(VertexAttrib2dv, isCallValid, context, index, v);1652}1653else1654{1655GenerateContextLostErrorOnCurrentGlobalContext();1656}1657}16581659void GL_APIENTRY GL_VertexAttrib2f(GLuint index, GLfloat x, GLfloat y)1660{1661Context *context = GetValidGlobalContext();1662EVENT(context, GLVertexAttrib2f, "context = %d, index = %u, x = %f, y = %f", CID(context),1663index, x, y);16641665if (context)1666{1667std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);1668bool isCallValid =1669(context->skipValidation() || ValidateVertexAttrib2f(context, index, x, y));1670if (isCallValid)1671{1672context->vertexAttrib2f(index, x, y);1673}1674ANGLE_CAPTURE(VertexAttrib2f, isCallValid, context, index, x, y);1675}1676else1677{1678GenerateContextLostErrorOnCurrentGlobalContext();1679}1680}16811682void GL_APIENTRY GL_VertexAttrib2fv(GLuint index, const GLfloat *v)1683{1684Context *context = GetValidGlobalContext();1685EVENT(context, GLVertexAttrib2fv, "context = %d, index = %u, v = 0x%016" PRIxPTR "",1686CID(context), index, (uintptr_t)v);16871688if (context)1689{1690std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);1691bool isCallValid =1692(context->skipValidation() || ValidateVertexAttrib2fv(context, index, v));1693if (isCallValid)1694{1695context->vertexAttrib2fv(index, v);1696}1697ANGLE_CAPTURE(VertexAttrib2fv, isCallValid, context, index, v);1698}1699else1700{1701GenerateContextLostErrorOnCurrentGlobalContext();1702}1703}17041705void GL_APIENTRY GL_VertexAttrib2s(GLuint index, GLshort x, GLshort y)1706{1707Context *context = GetValidGlobalContext();1708EVENT(context, GLVertexAttrib2s, "context = %d, index = %u, x = %d, y = %d", CID(context),1709index, x, y);17101711if (context)1712{1713std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);1714bool isCallValid =1715(context->skipValidation() || ValidateVertexAttrib2s(context, index, x, y));1716if (isCallValid)1717{1718context->vertexAttrib2s(index, x, y);1719}1720ANGLE_CAPTURE(VertexAttrib2s, isCallValid, context, index, x, y);1721}1722else1723{1724GenerateContextLostErrorOnCurrentGlobalContext();1725}1726}17271728void GL_APIENTRY GL_VertexAttrib2sv(GLuint index, const GLshort *v)1729{1730Context *context = GetValidGlobalContext();1731EVENT(context, GLVertexAttrib2sv, "context = %d, index = %u, v = 0x%016" PRIxPTR "",1732CID(context), index, (uintptr_t)v);17331734if (context)1735{1736std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);1737bool isCallValid =1738(context->skipValidation() || ValidateVertexAttrib2sv(context, index, v));1739if (isCallValid)1740{1741context->vertexAttrib2sv(index, v);1742}1743ANGLE_CAPTURE(VertexAttrib2sv, isCallValid, context, index, v);1744}1745else1746{1747GenerateContextLostErrorOnCurrentGlobalContext();1748}1749}17501751void GL_APIENTRY GL_VertexAttrib3d(GLuint index, GLdouble x, GLdouble y, GLdouble z)1752{1753Context *context = GetValidGlobalContext();1754EVENT(context, GLVertexAttrib3d, "context = %d, index = %u, x = %f, y = %f, z = %f",1755CID(context), index, x, y, z);17561757if (context)1758{1759std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);1760bool isCallValid =1761(context->skipValidation() || ValidateVertexAttrib3d(context, index, x, y, z));1762if (isCallValid)1763{1764context->vertexAttrib3d(index, x, y, z);1765}1766ANGLE_CAPTURE(VertexAttrib3d, isCallValid, context, index, x, y, z);1767}1768else1769{1770GenerateContextLostErrorOnCurrentGlobalContext();1771}1772}17731774void GL_APIENTRY GL_VertexAttrib3dv(GLuint index, const GLdouble *v)1775{1776Context *context = GetValidGlobalContext();1777EVENT(context, GLVertexAttrib3dv, "context = %d, index = %u, v = 0x%016" PRIxPTR "",1778CID(context), index, (uintptr_t)v);17791780if (context)1781{1782std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);1783bool isCallValid =1784(context->skipValidation() || ValidateVertexAttrib3dv(context, index, v));1785if (isCallValid)1786{1787context->vertexAttrib3dv(index, v);1788}1789ANGLE_CAPTURE(VertexAttrib3dv, isCallValid, context, index, v);1790}1791else1792{1793GenerateContextLostErrorOnCurrentGlobalContext();1794}1795}17961797void GL_APIENTRY GL_VertexAttrib3f(GLuint index, GLfloat x, GLfloat y, GLfloat z)1798{1799Context *context = GetValidGlobalContext();1800EVENT(context, GLVertexAttrib3f, "context = %d, index = %u, x = %f, y = %f, z = %f",1801CID(context), index, x, y, z);18021803if (context)1804{1805std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);1806bool isCallValid =1807(context->skipValidation() || ValidateVertexAttrib3f(context, index, x, y, z));1808if (isCallValid)1809{1810context->vertexAttrib3f(index, x, y, z);1811}1812ANGLE_CAPTURE(VertexAttrib3f, isCallValid, context, index, x, y, z);1813}1814else1815{1816GenerateContextLostErrorOnCurrentGlobalContext();1817}1818}18191820void GL_APIENTRY GL_VertexAttrib3fv(GLuint index, const GLfloat *v)1821{1822Context *context = GetValidGlobalContext();1823EVENT(context, GLVertexAttrib3fv, "context = %d, index = %u, v = 0x%016" PRIxPTR "",1824CID(context), index, (uintptr_t)v);18251826if (context)1827{1828std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);1829bool isCallValid =1830(context->skipValidation() || ValidateVertexAttrib3fv(context, index, v));1831if (isCallValid)1832{1833context->vertexAttrib3fv(index, v);1834}1835ANGLE_CAPTURE(VertexAttrib3fv, isCallValid, context, index, v);1836}1837else1838{1839GenerateContextLostErrorOnCurrentGlobalContext();1840}1841}18421843void GL_APIENTRY GL_VertexAttrib3s(GLuint index, GLshort x, GLshort y, GLshort z)1844{1845Context *context = GetValidGlobalContext();1846EVENT(context, GLVertexAttrib3s, "context = %d, index = %u, x = %d, y = %d, z = %d",1847CID(context), index, x, y, z);18481849if (context)1850{1851std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);1852bool isCallValid =1853(context->skipValidation() || ValidateVertexAttrib3s(context, index, x, y, z));1854if (isCallValid)1855{1856context->vertexAttrib3s(index, x, y, z);1857}1858ANGLE_CAPTURE(VertexAttrib3s, isCallValid, context, index, x, y, z);1859}1860else1861{1862GenerateContextLostErrorOnCurrentGlobalContext();1863}1864}18651866void GL_APIENTRY GL_VertexAttrib3sv(GLuint index, const GLshort *v)1867{1868Context *context = GetValidGlobalContext();1869EVENT(context, GLVertexAttrib3sv, "context = %d, index = %u, v = 0x%016" PRIxPTR "",1870CID(context), index, (uintptr_t)v);18711872if (context)1873{1874std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);1875bool isCallValid =1876(context->skipValidation() || ValidateVertexAttrib3sv(context, index, v));1877if (isCallValid)1878{1879context->vertexAttrib3sv(index, v);1880}1881ANGLE_CAPTURE(VertexAttrib3sv, isCallValid, context, index, v);1882}1883else1884{1885GenerateContextLostErrorOnCurrentGlobalContext();1886}1887}18881889void GL_APIENTRY GL_VertexAttrib4Nbv(GLuint index, const GLbyte *v)1890{1891Context *context = GetValidGlobalContext();1892EVENT(context, GLVertexAttrib4Nbv, "context = %d, index = %u, v = 0x%016" PRIxPTR "",1893CID(context), index, (uintptr_t)v);18941895if (context)1896{1897std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);1898bool isCallValid =1899(context->skipValidation() || ValidateVertexAttrib4Nbv(context, index, v));1900if (isCallValid)1901{1902context->vertexAttrib4Nbv(index, v);1903}1904ANGLE_CAPTURE(VertexAttrib4Nbv, isCallValid, context, index, v);1905}1906else1907{1908GenerateContextLostErrorOnCurrentGlobalContext();1909}1910}19111912void GL_APIENTRY GL_VertexAttrib4Niv(GLuint index, const GLint *v)1913{1914Context *context = GetValidGlobalContext();1915EVENT(context, GLVertexAttrib4Niv, "context = %d, index = %u, v = 0x%016" PRIxPTR "",1916CID(context), index, (uintptr_t)v);19171918if (context)1919{1920std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);1921bool isCallValid =1922(context->skipValidation() || ValidateVertexAttrib4Niv(context, index, v));1923if (isCallValid)1924{1925context->vertexAttrib4Niv(index, v);1926}1927ANGLE_CAPTURE(VertexAttrib4Niv, isCallValid, context, index, v);1928}1929else1930{1931GenerateContextLostErrorOnCurrentGlobalContext();1932}1933}19341935void GL_APIENTRY GL_VertexAttrib4Nsv(GLuint index, const GLshort *v)1936{1937Context *context = GetValidGlobalContext();1938EVENT(context, GLVertexAttrib4Nsv, "context = %d, index = %u, v = 0x%016" PRIxPTR "",1939CID(context), index, (uintptr_t)v);19401941if (context)1942{1943std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);1944bool isCallValid =1945(context->skipValidation() || ValidateVertexAttrib4Nsv(context, index, v));1946if (isCallValid)1947{1948context->vertexAttrib4Nsv(index, v);1949}1950ANGLE_CAPTURE(VertexAttrib4Nsv, isCallValid, context, index, v);1951}1952else1953{1954GenerateContextLostErrorOnCurrentGlobalContext();1955}1956}19571958void GL_APIENTRY GL_VertexAttrib4Nub(GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w)1959{1960Context *context = GetValidGlobalContext();1961EVENT(context, GLVertexAttrib4Nub, "context = %d, index = %u, x = %d, y = %d, z = %d, w = %d",1962CID(context), index, x, y, z, w);19631964if (context)1965{1966std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);1967bool isCallValid =1968(context->skipValidation() || ValidateVertexAttrib4Nub(context, index, x, y, z, w));1969if (isCallValid)1970{1971context->vertexAttrib4Nub(index, x, y, z, w);1972}1973ANGLE_CAPTURE(VertexAttrib4Nub, isCallValid, context, index, x, y, z, w);1974}1975else1976{1977GenerateContextLostErrorOnCurrentGlobalContext();1978}1979}19801981void GL_APIENTRY GL_VertexAttrib4Nubv(GLuint index, const GLubyte *v)1982{1983Context *context = GetValidGlobalContext();1984EVENT(context, GLVertexAttrib4Nubv, "context = %d, index = %u, v = 0x%016" PRIxPTR "",1985CID(context), index, (uintptr_t)v);19861987if (context)1988{1989std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);1990bool isCallValid =1991(context->skipValidation() || ValidateVertexAttrib4Nubv(context, index, v));1992if (isCallValid)1993{1994context->vertexAttrib4Nubv(index, v);1995}1996ANGLE_CAPTURE(VertexAttrib4Nubv, isCallValid, context, index, v);1997}1998else1999{2000GenerateContextLostErrorOnCurrentGlobalContext();2001}2002}20032004void GL_APIENTRY GL_VertexAttrib4Nuiv(GLuint index, const GLuint *v)2005{2006Context *context = GetValidGlobalContext();2007EVENT(context, GLVertexAttrib4Nuiv, "context = %d, index = %u, v = 0x%016" PRIxPTR "",2008CID(context), index, (uintptr_t)v);20092010if (context)2011{2012std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);2013bool isCallValid =2014(context->skipValidation() || ValidateVertexAttrib4Nuiv(context, index, v));2015if (isCallValid)2016{2017context->vertexAttrib4Nuiv(index, v);2018}2019ANGLE_CAPTURE(VertexAttrib4Nuiv, isCallValid, context, index, v);2020}2021else2022{2023GenerateContextLostErrorOnCurrentGlobalContext();2024}2025}20262027void GL_APIENTRY GL_VertexAttrib4Nusv(GLuint index, const GLushort *v)2028{2029Context *context = GetValidGlobalContext();2030EVENT(context, GLVertexAttrib4Nusv, "context = %d, index = %u, v = 0x%016" PRIxPTR "",2031CID(context), index, (uintptr_t)v);20322033if (context)2034{2035std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);2036bool isCallValid =2037(context->skipValidation() || ValidateVertexAttrib4Nusv(context, index, v));2038if (isCallValid)2039{2040context->vertexAttrib4Nusv(index, v);2041}2042ANGLE_CAPTURE(VertexAttrib4Nusv, isCallValid, context, index, v);2043}2044else2045{2046GenerateContextLostErrorOnCurrentGlobalContext();2047}2048}20492050void GL_APIENTRY GL_VertexAttrib4bv(GLuint index, const GLbyte *v)2051{2052Context *context = GetValidGlobalContext();2053EVENT(context, GLVertexAttrib4bv, "context = %d, index = %u, v = 0x%016" PRIxPTR "",2054CID(context), index, (uintptr_t)v);20552056if (context)2057{2058std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);2059bool isCallValid =2060(context->skipValidation() || ValidateVertexAttrib4bv(context, index, v));2061if (isCallValid)2062{2063context->vertexAttrib4bv(index, v);2064}2065ANGLE_CAPTURE(VertexAttrib4bv, isCallValid, context, index, v);2066}2067else2068{2069GenerateContextLostErrorOnCurrentGlobalContext();2070}2071}20722073void GL_APIENTRY GL_VertexAttrib4d(GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w)2074{2075Context *context = GetValidGlobalContext();2076EVENT(context, GLVertexAttrib4d, "context = %d, index = %u, x = %f, y = %f, z = %f, w = %f",2077CID(context), index, x, y, z, w);20782079if (context)2080{2081std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);2082bool isCallValid =2083(context->skipValidation() || ValidateVertexAttrib4d(context, index, x, y, z, w));2084if (isCallValid)2085{2086context->vertexAttrib4d(index, x, y, z, w);2087}2088ANGLE_CAPTURE(VertexAttrib4d, isCallValid, context, index, x, y, z, w);2089}2090else2091{2092GenerateContextLostErrorOnCurrentGlobalContext();2093}2094}20952096void GL_APIENTRY GL_VertexAttrib4dv(GLuint index, const GLdouble *v)2097{2098Context *context = GetValidGlobalContext();2099EVENT(context, GLVertexAttrib4dv, "context = %d, index = %u, v = 0x%016" PRIxPTR "",2100CID(context), index, (uintptr_t)v);21012102if (context)2103{2104std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);2105bool isCallValid =2106(context->skipValidation() || ValidateVertexAttrib4dv(context, index, v));2107if (isCallValid)2108{2109context->vertexAttrib4dv(index, v);2110}2111ANGLE_CAPTURE(VertexAttrib4dv, isCallValid, context, index, v);2112}2113else2114{2115GenerateContextLostErrorOnCurrentGlobalContext();2116}2117}21182119void GL_APIENTRY GL_VertexAttrib4f(GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w)2120{2121Context *context = GetValidGlobalContext();2122EVENT(context, GLVertexAttrib4f, "context = %d, index = %u, x = %f, y = %f, z = %f, w = %f",2123CID(context), index, x, y, z, w);21242125if (context)2126{2127std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);2128bool isCallValid =2129(context->skipValidation() || ValidateVertexAttrib4f(context, index, x, y, z, w));2130if (isCallValid)2131{2132context->vertexAttrib4f(index, x, y, z, w);2133}2134ANGLE_CAPTURE(VertexAttrib4f, isCallValid, context, index, x, y, z, w);2135}2136else2137{2138GenerateContextLostErrorOnCurrentGlobalContext();2139}2140}21412142void GL_APIENTRY GL_VertexAttrib4fv(GLuint index, const GLfloat *v)2143{2144Context *context = GetValidGlobalContext();2145EVENT(context, GLVertexAttrib4fv, "context = %d, index = %u, v = 0x%016" PRIxPTR "",2146CID(context), index, (uintptr_t)v);21472148if (context)2149{2150std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);2151bool isCallValid =2152(context->skipValidation() || ValidateVertexAttrib4fv(context, index, v));2153if (isCallValid)2154{2155context->vertexAttrib4fv(index, v);2156}2157ANGLE_CAPTURE(VertexAttrib4fv, isCallValid, context, index, v);2158}2159else2160{2161GenerateContextLostErrorOnCurrentGlobalContext();2162}2163}21642165void GL_APIENTRY GL_VertexAttrib4iv(GLuint index, const GLint *v)2166{2167Context *context = GetValidGlobalContext();2168EVENT(context, GLVertexAttrib4iv, "context = %d, index = %u, v = 0x%016" PRIxPTR "",2169CID(context), index, (uintptr_t)v);21702171if (context)2172{2173std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);2174bool isCallValid =2175(context->skipValidation() || ValidateVertexAttrib4iv(context, index, v));2176if (isCallValid)2177{2178context->vertexAttrib4iv(index, v);2179}2180ANGLE_CAPTURE(VertexAttrib4iv, isCallValid, context, index, v);2181}2182else2183{2184GenerateContextLostErrorOnCurrentGlobalContext();2185}2186}21872188void GL_APIENTRY GL_VertexAttrib4s(GLuint index, GLshort x, GLshort y, GLshort z, GLshort w)2189{2190Context *context = GetValidGlobalContext();2191EVENT(context, GLVertexAttrib4s, "context = %d, index = %u, x = %d, y = %d, z = %d, w = %d",2192CID(context), index, x, y, z, w);21932194if (context)2195{2196std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);2197bool isCallValid =2198(context->skipValidation() || ValidateVertexAttrib4s(context, index, x, y, z, w));2199if (isCallValid)2200{2201context->vertexAttrib4s(index, x, y, z, w);2202}2203ANGLE_CAPTURE(VertexAttrib4s, isCallValid, context, index, x, y, z, w);2204}2205else2206{2207GenerateContextLostErrorOnCurrentGlobalContext();2208}2209}22102211void GL_APIENTRY GL_VertexAttrib4sv(GLuint index, const GLshort *v)2212{2213Context *context = GetValidGlobalContext();2214EVENT(context, GLVertexAttrib4sv, "context = %d, index = %u, v = 0x%016" PRIxPTR "",2215CID(context), index, (uintptr_t)v);22162217if (context)2218{2219std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);2220bool isCallValid =2221(context->skipValidation() || ValidateVertexAttrib4sv(context, index, v));2222if (isCallValid)2223{2224context->vertexAttrib4sv(index, v);2225}2226ANGLE_CAPTURE(VertexAttrib4sv, isCallValid, context, index, v);2227}2228else2229{2230GenerateContextLostErrorOnCurrentGlobalContext();2231}2232}22332234void GL_APIENTRY GL_VertexAttrib4ubv(GLuint index, const GLubyte *v)2235{2236Context *context = GetValidGlobalContext();2237EVENT(context, GLVertexAttrib4ubv, "context = %d, index = %u, v = 0x%016" PRIxPTR "",2238CID(context), index, (uintptr_t)v);22392240if (context)2241{2242std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);2243bool isCallValid =2244(context->skipValidation() || ValidateVertexAttrib4ubv(context, index, v));2245if (isCallValid)2246{2247context->vertexAttrib4ubv(index, v);2248}2249ANGLE_CAPTURE(VertexAttrib4ubv, isCallValid, context, index, v);2250}2251else2252{2253GenerateContextLostErrorOnCurrentGlobalContext();2254}2255}22562257void GL_APIENTRY GL_VertexAttrib4uiv(GLuint index, const GLuint *v)2258{2259Context *context = GetValidGlobalContext();2260EVENT(context, GLVertexAttrib4uiv, "context = %d, index = %u, v = 0x%016" PRIxPTR "",2261CID(context), index, (uintptr_t)v);22622263if (context)2264{2265std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);2266bool isCallValid =2267(context->skipValidation() || ValidateVertexAttrib4uiv(context, index, v));2268if (isCallValid)2269{2270context->vertexAttrib4uiv(index, v);2271}2272ANGLE_CAPTURE(VertexAttrib4uiv, isCallValid, context, index, v);2273}2274else2275{2276GenerateContextLostErrorOnCurrentGlobalContext();2277}2278}22792280void GL_APIENTRY GL_VertexAttrib4usv(GLuint index, const GLushort *v)2281{2282Context *context = GetValidGlobalContext();2283EVENT(context, GLVertexAttrib4usv, "context = %d, index = %u, v = 0x%016" PRIxPTR "",2284CID(context), index, (uintptr_t)v);22852286if (context)2287{2288std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);2289bool isCallValid =2290(context->skipValidation() || ValidateVertexAttrib4usv(context, index, v));2291if (isCallValid)2292{2293context->vertexAttrib4usv(index, v);2294}2295ANGLE_CAPTURE(VertexAttrib4usv, isCallValid, context, index, v);2296}2297else2298{2299GenerateContextLostErrorOnCurrentGlobalContext();2300}2301}23022303void GL_APIENTRY GL_VertexAttribPointer(GLuint index,2304GLint size,2305GLenum type,2306GLboolean normalized,2307GLsizei stride,2308const void *pointer)2309{2310Context *context = GetValidGlobalContext();2311EVENT(context, GLVertexAttribPointer,2312"context = %d, index = %u, size = %d, type = %s, normalized = %s, stride = %d, pointer = "2313"0x%016" PRIxPTR "",2314CID(context), index, size, GLenumToString(GLenumGroup::VertexAttribPointerType, type),2315GLbooleanToString(normalized), stride, (uintptr_t)pointer);23162317if (context)2318{2319VertexAttribType typePacked = PackParam<VertexAttribType>(type);2320std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);2321bool isCallValid = (context->skipValidation() ||2322ValidateVertexAttribPointer(context, index, size, typePacked,2323normalized, stride, pointer));2324if (isCallValid)2325{2326context->vertexAttribPointer(index, size, typePacked, normalized, stride, pointer);2327}2328ANGLE_CAPTURE(VertexAttribPointer, isCallValid, context, index, size, typePacked,2329normalized, stride, pointer);2330}2331else2332{2333GenerateContextLostErrorOnCurrentGlobalContext();2334}2335}23362337// GL 2.12338void GL_APIENTRY GL_UniformMatrix2x3fv(GLint location,2339GLsizei count,2340GLboolean transpose,2341const GLfloat *value)2342{2343Context *context = GetValidGlobalContext();2344EVENT(context, GLUniformMatrix2x3fv,2345"context = %d, location = %d, count = %d, transpose = %s, value = 0x%016" PRIxPTR "",2346CID(context), location, count, GLbooleanToString(transpose), (uintptr_t)value);23472348if (context)2349{2350UniformLocation locationPacked = PackParam<UniformLocation>(location);2351std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);2352bool isCallValid =2353(context->skipValidation() ||2354ValidateUniformMatrix2x3fv(context, locationPacked, count, transpose, value));2355if (isCallValid)2356{2357context->uniformMatrix2x3fv(locationPacked, count, transpose, value);2358}2359ANGLE_CAPTURE(UniformMatrix2x3fv, isCallValid, context, locationPacked, count, transpose,2360value);2361}2362else2363{2364GenerateContextLostErrorOnCurrentGlobalContext();2365}2366}23672368void GL_APIENTRY GL_UniformMatrix2x4fv(GLint location,2369GLsizei count,2370GLboolean transpose,2371const GLfloat *value)2372{2373Context *context = GetValidGlobalContext();2374EVENT(context, GLUniformMatrix2x4fv,2375"context = %d, location = %d, count = %d, transpose = %s, value = 0x%016" PRIxPTR "",2376CID(context), location, count, GLbooleanToString(transpose), (uintptr_t)value);23772378if (context)2379{2380UniformLocation locationPacked = PackParam<UniformLocation>(location);2381std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);2382bool isCallValid =2383(context->skipValidation() ||2384ValidateUniformMatrix2x4fv(context, locationPacked, count, transpose, value));2385if (isCallValid)2386{2387context->uniformMatrix2x4fv(locationPacked, count, transpose, value);2388}2389ANGLE_CAPTURE(UniformMatrix2x4fv, isCallValid, context, locationPacked, count, transpose,2390value);2391}2392else2393{2394GenerateContextLostErrorOnCurrentGlobalContext();2395}2396}23972398void GL_APIENTRY GL_UniformMatrix3x2fv(GLint location,2399GLsizei count,2400GLboolean transpose,2401const GLfloat *value)2402{2403Context *context = GetValidGlobalContext();2404EVENT(context, GLUniformMatrix3x2fv,2405"context = %d, location = %d, count = %d, transpose = %s, value = 0x%016" PRIxPTR "",2406CID(context), location, count, GLbooleanToString(transpose), (uintptr_t)value);24072408if (context)2409{2410UniformLocation locationPacked = PackParam<UniformLocation>(location);2411std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);2412bool isCallValid =2413(context->skipValidation() ||2414ValidateUniformMatrix3x2fv(context, locationPacked, count, transpose, value));2415if (isCallValid)2416{2417context->uniformMatrix3x2fv(locationPacked, count, transpose, value);2418}2419ANGLE_CAPTURE(UniformMatrix3x2fv, isCallValid, context, locationPacked, count, transpose,2420value);2421}2422else2423{2424GenerateContextLostErrorOnCurrentGlobalContext();2425}2426}24272428void GL_APIENTRY GL_UniformMatrix3x4fv(GLint location,2429GLsizei count,2430GLboolean transpose,2431const GLfloat *value)2432{2433Context *context = GetValidGlobalContext();2434EVENT(context, GLUniformMatrix3x4fv,2435"context = %d, location = %d, count = %d, transpose = %s, value = 0x%016" PRIxPTR "",2436CID(context), location, count, GLbooleanToString(transpose), (uintptr_t)value);24372438if (context)2439{2440UniformLocation locationPacked = PackParam<UniformLocation>(location);2441std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);2442bool isCallValid =2443(context->skipValidation() ||2444ValidateUniformMatrix3x4fv(context, locationPacked, count, transpose, value));2445if (isCallValid)2446{2447context->uniformMatrix3x4fv(locationPacked, count, transpose, value);2448}2449ANGLE_CAPTURE(UniformMatrix3x4fv, isCallValid, context, locationPacked, count, transpose,2450value);2451}2452else2453{2454GenerateContextLostErrorOnCurrentGlobalContext();2455}2456}24572458void GL_APIENTRY GL_UniformMatrix4x2fv(GLint location,2459GLsizei count,2460GLboolean transpose,2461const GLfloat *value)2462{2463Context *context = GetValidGlobalContext();2464EVENT(context, GLUniformMatrix4x2fv,2465"context = %d, location = %d, count = %d, transpose = %s, value = 0x%016" PRIxPTR "",2466CID(context), location, count, GLbooleanToString(transpose), (uintptr_t)value);24672468if (context)2469{2470UniformLocation locationPacked = PackParam<UniformLocation>(location);2471std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);2472bool isCallValid =2473(context->skipValidation() ||2474ValidateUniformMatrix4x2fv(context, locationPacked, count, transpose, value));2475if (isCallValid)2476{2477context->uniformMatrix4x2fv(locationPacked, count, transpose, value);2478}2479ANGLE_CAPTURE(UniformMatrix4x2fv, isCallValid, context, locationPacked, count, transpose,2480value);2481}2482else2483{2484GenerateContextLostErrorOnCurrentGlobalContext();2485}2486}24872488void GL_APIENTRY GL_UniformMatrix4x3fv(GLint location,2489GLsizei count,2490GLboolean transpose,2491const GLfloat *value)2492{2493Context *context = GetValidGlobalContext();2494EVENT(context, GLUniformMatrix4x3fv,2495"context = %d, location = %d, count = %d, transpose = %s, value = 0x%016" PRIxPTR "",2496CID(context), location, count, GLbooleanToString(transpose), (uintptr_t)value);24972498if (context)2499{2500UniformLocation locationPacked = PackParam<UniformLocation>(location);2501std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);2502bool isCallValid =2503(context->skipValidation() ||2504ValidateUniformMatrix4x3fv(context, locationPacked, count, transpose, value));2505if (isCallValid)2506{2507context->uniformMatrix4x3fv(locationPacked, count, transpose, value);2508}2509ANGLE_CAPTURE(UniformMatrix4x3fv, isCallValid, context, locationPacked, count, transpose,2510value);2511}2512else2513{2514GenerateContextLostErrorOnCurrentGlobalContext();2515}2516}25172518} // extern "C"251925202521