Path: blob/main_old/src/libGLESv2/entry_points_gles_3_1_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_gles_3_1_autogen.cpp:8// Defines the GLES 3.1 entry points.910#include "libGLESv2/entry_points_gles_3_1_autogen.h"1112#include "common/entry_points_enum_autogen.h"13#include "libANGLE/Context.h"14#include "libANGLE/Context.inl.h"15#include "libANGLE/capture/capture_gles_3_1_autogen.h"16#include "libANGLE/capture/gl_enum_utils.h"17#include "libANGLE/entry_points_utils.h"18#include "libANGLE/validationES31.h"19#include "libGLESv2/global_state.h"2021using namespace gl;2223extern "C" {24void GL_APIENTRY GL_ActiveShaderProgram(GLuint pipeline, GLuint program)25{26Context *context = GetValidGlobalContext();27EVENT(context, GLActiveShaderProgram, "context = %d, pipeline = %u, program = %u", CID(context),28pipeline, program);2930if (context)31{32ProgramPipelineID pipelinePacked = PackParam<ProgramPipelineID>(pipeline);33ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);34std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);35bool isCallValid = (context->skipValidation() ||36ValidateActiveShaderProgram(context, pipelinePacked, programPacked));37if (isCallValid)38{39context->activeShaderProgram(pipelinePacked, programPacked);40}41ANGLE_CAPTURE(ActiveShaderProgram, isCallValid, context, pipelinePacked, programPacked);42}43else44{45GenerateContextLostErrorOnCurrentGlobalContext();46}47}4849void GL_APIENTRY GL_BindImageTexture(GLuint unit,50GLuint texture,51GLint level,52GLboolean layered,53GLint layer,54GLenum access,55GLenum format)56{57Context *context = GetValidGlobalContext();58EVENT(context, GLBindImageTexture,59"context = %d, unit = %u, texture = %u, level = %d, layered = %s, layer = %d, access = "60"%s, format = %s",61CID(context), unit, texture, level, GLbooleanToString(layered), layer,62GLenumToString(GLenumGroup::BufferAccessARB, access),63GLenumToString(GLenumGroup::InternalFormat, format));6465if (context)66{67TextureID texturePacked = PackParam<TextureID>(texture);68std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);69bool isCallValid = (context->skipValidation() ||70ValidateBindImageTexture(context, unit, texturePacked, level, layered,71layer, access, format));72if (isCallValid)73{74context->bindImageTexture(unit, texturePacked, level, layered, layer, access, format);75}76ANGLE_CAPTURE(BindImageTexture, isCallValid, context, unit, texturePacked, level, layered,77layer, access, format);78}79else80{81GenerateContextLostErrorOnCurrentGlobalContext();82}83}8485void GL_APIENTRY GL_BindProgramPipeline(GLuint pipeline)86{87Context *context = GetValidGlobalContext();88EVENT(context, GLBindProgramPipeline, "context = %d, pipeline = %u", CID(context), pipeline);8990if (context)91{92ProgramPipelineID pipelinePacked = PackParam<ProgramPipelineID>(pipeline);93std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);94bool isCallValid =95(context->skipValidation() || ValidateBindProgramPipeline(context, pipelinePacked));96if (isCallValid)97{98context->bindProgramPipeline(pipelinePacked);99}100ANGLE_CAPTURE(BindProgramPipeline, isCallValid, context, pipelinePacked);101}102else103{104GenerateContextLostErrorOnCurrentGlobalContext();105}106}107108void GL_APIENTRY GL_BindVertexBuffer(GLuint bindingindex,109GLuint buffer,110GLintptr offset,111GLsizei stride)112{113Context *context = GetValidGlobalContext();114EVENT(context, GLBindVertexBuffer,115"context = %d, bindingindex = %u, buffer = %u, offset = %llu, stride = %d", CID(context),116bindingindex, buffer, static_cast<unsigned long long>(offset), stride);117118if (context)119{120BufferID bufferPacked = PackParam<BufferID>(buffer);121std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);122bool isCallValid =123(context->skipValidation() ||124ValidateBindVertexBuffer(context, bindingindex, bufferPacked, offset, stride));125if (isCallValid)126{127context->bindVertexBuffer(bindingindex, bufferPacked, offset, stride);128}129ANGLE_CAPTURE(BindVertexBuffer, isCallValid, context, bindingindex, bufferPacked, offset,130stride);131}132else133{134GenerateContextLostErrorOnCurrentGlobalContext();135}136}137138GLuint GL_APIENTRY GL_CreateShaderProgramv(GLenum type, GLsizei count, const GLchar *const *strings)139{140Context *context = GetValidGlobalContext();141EVENT(context, GLCreateShaderProgramv,142"context = %d, type = %s, count = %d, strings = 0x%016" PRIxPTR "", CID(context),143GLenumToString(GLenumGroup::ShaderType, type), count, (uintptr_t)strings);144145GLuint returnValue;146if (context)147{148ShaderType typePacked = PackParam<ShaderType>(type);149std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);150bool isCallValid = (context->skipValidation() ||151ValidateCreateShaderProgramv(context, typePacked, count, strings));152if (isCallValid)153{154returnValue = context->createShaderProgramv(typePacked, count, strings);155}156else157{158returnValue =159GetDefaultReturnValue<angle::EntryPoint::GLCreateShaderProgramv, GLuint>();160}161ANGLE_CAPTURE(CreateShaderProgramv, isCallValid, context, typePacked, count, strings,162returnValue);163}164else165{166GenerateContextLostErrorOnCurrentGlobalContext();167returnValue = GetDefaultReturnValue<angle::EntryPoint::GLCreateShaderProgramv, GLuint>();168}169return returnValue;170}171172void GL_APIENTRY GL_DeleteProgramPipelines(GLsizei n, const GLuint *pipelines)173{174Context *context = GetValidGlobalContext();175EVENT(context, GLDeleteProgramPipelines, "context = %d, n = %d, pipelines = 0x%016" PRIxPTR "",176CID(context), n, (uintptr_t)pipelines);177178if (context)179{180const ProgramPipelineID *pipelinesPacked = PackParam<const ProgramPipelineID *>(pipelines);181std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);182bool isCallValid = (context->skipValidation() ||183ValidateDeleteProgramPipelines(context, n, pipelinesPacked));184if (isCallValid)185{186context->deleteProgramPipelines(n, pipelinesPacked);187}188ANGLE_CAPTURE(DeleteProgramPipelines, isCallValid, context, n, pipelinesPacked);189}190else191{192GenerateContextLostErrorOnCurrentGlobalContext();193}194}195196void GL_APIENTRY GL_DispatchCompute(GLuint num_groups_x, GLuint num_groups_y, GLuint num_groups_z)197{198Context *context = GetValidGlobalContext();199EVENT(context, GLDispatchCompute,200"context = %d, num_groups_x = %u, num_groups_y = %u, num_groups_z = %u", CID(context),201num_groups_x, num_groups_y, num_groups_z);202203if (context)204{205std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);206bool isCallValid =207(context->skipValidation() ||208ValidateDispatchCompute(context, num_groups_x, num_groups_y, num_groups_z));209if (isCallValid)210{211context->dispatchCompute(num_groups_x, num_groups_y, num_groups_z);212}213ANGLE_CAPTURE(DispatchCompute, isCallValid, context, num_groups_x, num_groups_y,214num_groups_z);215}216else217{218GenerateContextLostErrorOnCurrentGlobalContext();219}220}221222void GL_APIENTRY GL_DispatchComputeIndirect(GLintptr indirect)223{224Context *context = GetValidGlobalContext();225EVENT(context, GLDispatchComputeIndirect, "context = %d, indirect = %llu", CID(context),226static_cast<unsigned long long>(indirect));227228if (context)229{230std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);231bool isCallValid =232(context->skipValidation() || ValidateDispatchComputeIndirect(context, indirect));233if (isCallValid)234{235context->dispatchComputeIndirect(indirect);236}237ANGLE_CAPTURE(DispatchComputeIndirect, isCallValid, context, indirect);238}239else240{241GenerateContextLostErrorOnCurrentGlobalContext();242}243}244245void GL_APIENTRY GL_DrawArraysIndirect(GLenum mode, const void *indirect)246{247Context *context = GetValidGlobalContext();248EVENT(context, GLDrawArraysIndirect, "context = %d, mode = %s, indirect = 0x%016" PRIxPTR "",249CID(context), GLenumToString(GLenumGroup::PrimitiveType, mode), (uintptr_t)indirect);250251if (context)252{253PrimitiveMode modePacked = PackParam<PrimitiveMode>(mode);254std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);255bool isCallValid = (context->skipValidation() ||256ValidateDrawArraysIndirect(context, modePacked, indirect));257if (isCallValid)258{259context->drawArraysIndirect(modePacked, indirect);260}261ANGLE_CAPTURE(DrawArraysIndirect, isCallValid, context, modePacked, indirect);262}263else264{265GenerateContextLostErrorOnCurrentGlobalContext();266}267}268269void GL_APIENTRY GL_DrawElementsIndirect(GLenum mode, GLenum type, const void *indirect)270{271Context *context = GetValidGlobalContext();272EVENT(context, GLDrawElementsIndirect,273"context = %d, mode = %s, type = %s, indirect = 0x%016" PRIxPTR "", CID(context),274GLenumToString(GLenumGroup::PrimitiveType, mode),275GLenumToString(GLenumGroup::DrawElementsType, type), (uintptr_t)indirect);276277if (context)278{279PrimitiveMode modePacked = PackParam<PrimitiveMode>(mode);280DrawElementsType typePacked = PackParam<DrawElementsType>(type);281std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);282bool isCallValid =283(context->skipValidation() ||284ValidateDrawElementsIndirect(context, modePacked, typePacked, indirect));285if (isCallValid)286{287context->drawElementsIndirect(modePacked, typePacked, indirect);288}289ANGLE_CAPTURE(DrawElementsIndirect, isCallValid, context, modePacked, typePacked, indirect);290}291else292{293GenerateContextLostErrorOnCurrentGlobalContext();294}295}296297void GL_APIENTRY GL_FramebufferParameteri(GLenum target, GLenum pname, GLint param)298{299Context *context = GetValidGlobalContext();300EVENT(context, GLFramebufferParameteri, "context = %d, target = %s, pname = %s, param = %d",301CID(context), GLenumToString(GLenumGroup::FramebufferTarget, target),302GLenumToString(GLenumGroup::FramebufferParameterName, pname), param);303304if (context)305{306std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);307bool isCallValid = (context->skipValidation() ||308ValidateFramebufferParameteri(context, target, pname, param));309if (isCallValid)310{311context->framebufferParameteri(target, pname, param);312}313ANGLE_CAPTURE(FramebufferParameteri, isCallValid, context, target, pname, param);314}315else316{317GenerateContextLostErrorOnCurrentGlobalContext();318}319}320321void GL_APIENTRY GL_GenProgramPipelines(GLsizei n, GLuint *pipelines)322{323Context *context = GetValidGlobalContext();324EVENT(context, GLGenProgramPipelines, "context = %d, n = %d, pipelines = 0x%016" PRIxPTR "",325CID(context), n, (uintptr_t)pipelines);326327if (context)328{329ProgramPipelineID *pipelinesPacked = PackParam<ProgramPipelineID *>(pipelines);330std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);331bool isCallValid =332(context->skipValidation() || ValidateGenProgramPipelines(context, n, pipelinesPacked));333if (isCallValid)334{335context->genProgramPipelines(n, pipelinesPacked);336}337ANGLE_CAPTURE(GenProgramPipelines, isCallValid, context, n, pipelinesPacked);338}339else340{341GenerateContextLostErrorOnCurrentGlobalContext();342}343}344345void GL_APIENTRY GL_GetBooleani_v(GLenum target, GLuint index, GLboolean *data)346{347Context *context = GetValidGlobalContext();348EVENT(context, GLGetBooleani_v,349"context = %d, target = %s, index = %u, data = 0x%016" PRIxPTR "", CID(context),350GLenumToString(GLenumGroup::BufferTargetARB, target), index, (uintptr_t)data);351352if (context)353{354std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);355bool isCallValid =356(context->skipValidation() || ValidateGetBooleani_v(context, target, index, data));357if (isCallValid)358{359context->getBooleani_v(target, index, data);360}361ANGLE_CAPTURE(GetBooleani_v, isCallValid, context, target, index, data);362}363else364{365GenerateContextLostErrorOnCurrentGlobalContext();366}367}368369void GL_APIENTRY GL_GetFramebufferParameteriv(GLenum target, GLenum pname, GLint *params)370{371Context *context = GetValidGlobalContext();372EVENT(context, GLGetFramebufferParameteriv,373"context = %d, target = %s, pname = %s, params = 0x%016" PRIxPTR "", CID(context),374GLenumToString(GLenumGroup::FramebufferTarget, target),375GLenumToString(GLenumGroup::FramebufferAttachmentParameterName, pname),376(uintptr_t)params);377378if (context)379{380std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);381bool isCallValid = (context->skipValidation() ||382ValidateGetFramebufferParameteriv(context, target, pname, params));383if (isCallValid)384{385context->getFramebufferParameteriv(target, pname, params);386}387ANGLE_CAPTURE(GetFramebufferParameteriv, isCallValid, context, target, pname, params);388}389else390{391GenerateContextLostErrorOnCurrentGlobalContext();392}393}394395void GL_APIENTRY GL_GetMultisamplefv(GLenum pname, GLuint index, GLfloat *val)396{397Context *context = GetValidGlobalContext();398EVENT(context, GLGetMultisamplefv,399"context = %d, pname = %s, index = %u, val = 0x%016" PRIxPTR "", CID(context),400GLenumToString(GLenumGroup::DefaultGroup, pname), index, (uintptr_t)val);401402if (context)403{404std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);405bool isCallValid =406(context->skipValidation() || ValidateGetMultisamplefv(context, pname, index, val));407if (isCallValid)408{409context->getMultisamplefv(pname, index, val);410}411ANGLE_CAPTURE(GetMultisamplefv, isCallValid, context, pname, index, val);412}413else414{415GenerateContextLostErrorOnCurrentGlobalContext();416}417}418419void GL_APIENTRY GL_GetProgramInterfaceiv(GLuint program,420GLenum programInterface,421GLenum pname,422GLint *params)423{424Context *context = GetValidGlobalContext();425EVENT(context, GLGetProgramInterfaceiv,426"context = %d, program = %u, programInterface = %s, pname = %s, params = 0x%016" PRIxPTR427"",428CID(context), program, GLenumToString(GLenumGroup::ProgramInterface, programInterface),429GLenumToString(GLenumGroup::ProgramInterfacePName, pname), (uintptr_t)params);430431if (context)432{433ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);434std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);435bool isCallValid = (context->skipValidation() ||436ValidateGetProgramInterfaceiv(context, programPacked, programInterface,437pname, params));438if (isCallValid)439{440context->getProgramInterfaceiv(programPacked, programInterface, pname, params);441}442ANGLE_CAPTURE(GetProgramInterfaceiv, isCallValid, context, programPacked, programInterface,443pname, params);444}445else446{447GenerateContextLostErrorOnCurrentGlobalContext();448}449}450451void GL_APIENTRY GL_GetProgramPipelineInfoLog(GLuint pipeline,452GLsizei bufSize,453GLsizei *length,454GLchar *infoLog)455{456Context *context = GetValidGlobalContext();457EVENT(context, GLGetProgramPipelineInfoLog,458"context = %d, pipeline = %u, bufSize = %d, length = 0x%016" PRIxPTR459", infoLog = 0x%016" PRIxPTR "",460CID(context), pipeline, bufSize, (uintptr_t)length, (uintptr_t)infoLog);461462if (context)463{464ProgramPipelineID pipelinePacked = PackParam<ProgramPipelineID>(pipeline);465std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);466bool isCallValid =467(context->skipValidation() ||468ValidateGetProgramPipelineInfoLog(context, pipelinePacked, bufSize, length, infoLog));469if (isCallValid)470{471context->getProgramPipelineInfoLog(pipelinePacked, bufSize, length, infoLog);472}473ANGLE_CAPTURE(GetProgramPipelineInfoLog, isCallValid, context, pipelinePacked, bufSize,474length, infoLog);475}476else477{478GenerateContextLostErrorOnCurrentGlobalContext();479}480}481482void GL_APIENTRY GL_GetProgramPipelineiv(GLuint pipeline, GLenum pname, GLint *params)483{484Context *context = GetValidGlobalContext();485EVENT(context, GLGetProgramPipelineiv,486"context = %d, pipeline = %u, pname = %s, params = 0x%016" PRIxPTR "", CID(context),487pipeline, GLenumToString(GLenumGroup::PipelineParameterName, pname), (uintptr_t)params);488489if (context)490{491ProgramPipelineID pipelinePacked = PackParam<ProgramPipelineID>(pipeline);492std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);493bool isCallValid = (context->skipValidation() ||494ValidateGetProgramPipelineiv(context, pipelinePacked, pname, params));495if (isCallValid)496{497context->getProgramPipelineiv(pipelinePacked, pname, params);498}499ANGLE_CAPTURE(GetProgramPipelineiv, isCallValid, context, pipelinePacked, pname, params);500}501else502{503GenerateContextLostErrorOnCurrentGlobalContext();504}505}506507GLuint GL_APIENTRY GL_GetProgramResourceIndex(GLuint program,508GLenum programInterface,509const GLchar *name)510{511Context *context = GetValidGlobalContext();512EVENT(context, GLGetProgramResourceIndex,513"context = %d, program = %u, programInterface = %s, name = 0x%016" PRIxPTR "",514CID(context), program, GLenumToString(GLenumGroup::ProgramInterface, programInterface),515(uintptr_t)name);516517GLuint returnValue;518if (context)519{520ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);521std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);522bool isCallValid =523(context->skipValidation() ||524ValidateGetProgramResourceIndex(context, programPacked, programInterface, name));525if (isCallValid)526{527returnValue = context->getProgramResourceIndex(programPacked, programInterface, name);528}529else530{531returnValue =532GetDefaultReturnValue<angle::EntryPoint::GLGetProgramResourceIndex, GLuint>();533}534ANGLE_CAPTURE(GetProgramResourceIndex, isCallValid, context, programPacked,535programInterface, name, returnValue);536}537else538{539GenerateContextLostErrorOnCurrentGlobalContext();540returnValue = GetDefaultReturnValue<angle::EntryPoint::GLGetProgramResourceIndex, GLuint>();541}542return returnValue;543}544545GLint GL_APIENTRY GL_GetProgramResourceLocation(GLuint program,546GLenum programInterface,547const GLchar *name)548{549Context *context = GetValidGlobalContext();550EVENT(context, GLGetProgramResourceLocation,551"context = %d, program = %u, programInterface = %s, name = 0x%016" PRIxPTR "",552CID(context), program, GLenumToString(GLenumGroup::ProgramInterface, programInterface),553(uintptr_t)name);554555GLint returnValue;556if (context)557{558ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);559std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);560bool isCallValid =561(context->skipValidation() ||562ValidateGetProgramResourceLocation(context, programPacked, programInterface, name));563if (isCallValid)564{565returnValue =566context->getProgramResourceLocation(programPacked, programInterface, name);567}568else569{570returnValue =571GetDefaultReturnValue<angle::EntryPoint::GLGetProgramResourceLocation, GLint>();572}573ANGLE_CAPTURE(GetProgramResourceLocation, isCallValid, context, programPacked,574programInterface, name, returnValue);575}576else577{578GenerateContextLostErrorOnCurrentGlobalContext();579returnValue =580GetDefaultReturnValue<angle::EntryPoint::GLGetProgramResourceLocation, GLint>();581}582return returnValue;583}584585void GL_APIENTRY GL_GetProgramResourceName(GLuint program,586GLenum programInterface,587GLuint index,588GLsizei bufSize,589GLsizei *length,590GLchar *name)591{592Context *context = GetValidGlobalContext();593EVENT(context, GLGetProgramResourceName,594"context = %d, program = %u, programInterface = %s, index = %u, bufSize = %d, length = "595"0x%016" PRIxPTR ", name = 0x%016" PRIxPTR "",596CID(context), program, GLenumToString(GLenumGroup::ProgramInterface, programInterface),597index, bufSize, (uintptr_t)length, (uintptr_t)name);598599if (context)600{601ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);602std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);603bool isCallValid = (context->skipValidation() ||604ValidateGetProgramResourceName(context, programPacked, programInterface,605index, bufSize, length, name));606if (isCallValid)607{608context->getProgramResourceName(programPacked, programInterface, index, bufSize, length,609name);610}611ANGLE_CAPTURE(GetProgramResourceName, isCallValid, context, programPacked, programInterface,612index, bufSize, length, name);613}614else615{616GenerateContextLostErrorOnCurrentGlobalContext();617}618}619620void GL_APIENTRY GL_GetProgramResourceiv(GLuint program,621GLenum programInterface,622GLuint index,623GLsizei propCount,624const GLenum *props,625GLsizei bufSize,626GLsizei *length,627GLint *params)628{629Context *context = GetValidGlobalContext();630EVENT(context, GLGetProgramResourceiv,631"context = %d, program = %u, programInterface = %s, index = %u, propCount = %d, props = "632"0x%016" PRIxPTR ", bufSize = %d, length = 0x%016" PRIxPTR ", params = 0x%016" PRIxPTR "",633CID(context), program, GLenumToString(GLenumGroup::ProgramInterface, programInterface),634index, propCount, (uintptr_t)props, bufSize, (uintptr_t)length, (uintptr_t)params);635636if (context)637{638ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);639std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);640bool isCallValid =641(context->skipValidation() ||642ValidateGetProgramResourceiv(context, programPacked, programInterface, index,643propCount, props, bufSize, length, params));644if (isCallValid)645{646context->getProgramResourceiv(programPacked, programInterface, index, propCount, props,647bufSize, length, params);648}649ANGLE_CAPTURE(GetProgramResourceiv, isCallValid, context, programPacked, programInterface,650index, propCount, props, bufSize, length, params);651}652else653{654GenerateContextLostErrorOnCurrentGlobalContext();655}656}657658void GL_APIENTRY GL_GetTexLevelParameterfv(GLenum target,659GLint level,660GLenum pname,661GLfloat *params)662{663Context *context = GetValidGlobalContext();664EVENT(context, GLGetTexLevelParameterfv,665"context = %d, target = %s, level = %d, pname = %s, params = 0x%016" PRIxPTR "",666CID(context), GLenumToString(GLenumGroup::TextureTarget, target), level,667GLenumToString(GLenumGroup::GetTextureParameter, pname), (uintptr_t)params);668669if (context)670{671TextureTarget targetPacked = PackParam<TextureTarget>(target);672std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);673bool isCallValid =674(context->skipValidation() ||675ValidateGetTexLevelParameterfv(context, targetPacked, level, pname, params));676if (isCallValid)677{678context->getTexLevelParameterfv(targetPacked, level, pname, params);679}680ANGLE_CAPTURE(GetTexLevelParameterfv, isCallValid, context, targetPacked, level, pname,681params);682}683else684{685GenerateContextLostErrorOnCurrentGlobalContext();686}687}688689void GL_APIENTRY GL_GetTexLevelParameteriv(GLenum target, GLint level, GLenum pname, GLint *params)690{691Context *context = GetValidGlobalContext();692EVENT(context, GLGetTexLevelParameteriv,693"context = %d, target = %s, level = %d, pname = %s, params = 0x%016" PRIxPTR "",694CID(context), GLenumToString(GLenumGroup::TextureTarget, target), level,695GLenumToString(GLenumGroup::GetTextureParameter, pname), (uintptr_t)params);696697if (context)698{699TextureTarget targetPacked = PackParam<TextureTarget>(target);700std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);701bool isCallValid =702(context->skipValidation() ||703ValidateGetTexLevelParameteriv(context, targetPacked, level, pname, params));704if (isCallValid)705{706context->getTexLevelParameteriv(targetPacked, level, pname, params);707}708ANGLE_CAPTURE(GetTexLevelParameteriv, isCallValid, context, targetPacked, level, pname,709params);710}711else712{713GenerateContextLostErrorOnCurrentGlobalContext();714}715}716717GLboolean GL_APIENTRY GL_IsProgramPipeline(GLuint pipeline)718{719Context *context = GetValidGlobalContext();720EVENT(context, GLIsProgramPipeline, "context = %d, pipeline = %u", CID(context), pipeline);721722GLboolean returnValue;723if (context)724{725ProgramPipelineID pipelinePacked = PackParam<ProgramPipelineID>(pipeline);726std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);727bool isCallValid =728(context->skipValidation() || ValidateIsProgramPipeline(context, pipelinePacked));729if (isCallValid)730{731returnValue = context->isProgramPipeline(pipelinePacked);732}733else734{735returnValue =736GetDefaultReturnValue<angle::EntryPoint::GLIsProgramPipeline, GLboolean>();737}738ANGLE_CAPTURE(IsProgramPipeline, isCallValid, context, pipelinePacked, returnValue);739}740else741{742GenerateContextLostErrorOnCurrentGlobalContext();743returnValue = GetDefaultReturnValue<angle::EntryPoint::GLIsProgramPipeline, GLboolean>();744}745return returnValue;746}747748void GL_APIENTRY GL_MemoryBarrier(GLbitfield barriers)749{750Context *context = GetValidGlobalContext();751EVENT(context, GLMemoryBarrier, "context = %d, barriers = %s", CID(context),752GLbitfieldToString(GLenumGroup::MemoryBarrierMask, barriers).c_str());753754if (context)755{756std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);757bool isCallValid = (context->skipValidation() || ValidateMemoryBarrier(context, barriers));758if (isCallValid)759{760context->memoryBarrier(barriers);761}762ANGLE_CAPTURE(MemoryBarrier, isCallValid, context, barriers);763}764else765{766GenerateContextLostErrorOnCurrentGlobalContext();767}768}769770void GL_APIENTRY GL_MemoryBarrierByRegion(GLbitfield barriers)771{772Context *context = GetValidGlobalContext();773EVENT(context, GLMemoryBarrierByRegion, "context = %d, barriers = %s", CID(context),774GLbitfieldToString(GLenumGroup::MemoryBarrierMask, barriers).c_str());775776if (context)777{778std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);779bool isCallValid =780(context->skipValidation() || ValidateMemoryBarrierByRegion(context, barriers));781if (isCallValid)782{783context->memoryBarrierByRegion(barriers);784}785ANGLE_CAPTURE(MemoryBarrierByRegion, isCallValid, context, barriers);786}787else788{789GenerateContextLostErrorOnCurrentGlobalContext();790}791}792793void GL_APIENTRY GL_ProgramUniform1f(GLuint program, GLint location, GLfloat v0)794{795Context *context = GetValidGlobalContext();796EVENT(context, GLProgramUniform1f, "context = %d, program = %u, location = %d, v0 = %f",797CID(context), program, location, v0);798799if (context)800{801ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);802UniformLocation locationPacked = PackParam<UniformLocation>(location);803std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);804bool isCallValid = (context->skipValidation() ||805ValidateProgramUniform1f(context, programPacked, locationPacked, v0));806if (isCallValid)807{808context->programUniform1f(programPacked, locationPacked, v0);809}810ANGLE_CAPTURE(ProgramUniform1f, isCallValid, context, programPacked, locationPacked, v0);811}812else813{814GenerateContextLostErrorOnCurrentGlobalContext();815}816}817818void GL_APIENTRY GL_ProgramUniform1fv(GLuint program,819GLint location,820GLsizei count,821const GLfloat *value)822{823Context *context = GetValidGlobalContext();824EVENT(context, GLProgramUniform1fv,825"context = %d, program = %u, location = %d, count = %d, value = 0x%016" PRIxPTR "",826CID(context), program, location, count, (uintptr_t)value);827828if (context)829{830ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);831UniformLocation locationPacked = PackParam<UniformLocation>(location);832std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);833bool isCallValid =834(context->skipValidation() ||835ValidateProgramUniform1fv(context, programPacked, locationPacked, count, value));836if (isCallValid)837{838context->programUniform1fv(programPacked, locationPacked, count, value);839}840ANGLE_CAPTURE(ProgramUniform1fv, isCallValid, context, programPacked, locationPacked, count,841value);842}843else844{845GenerateContextLostErrorOnCurrentGlobalContext();846}847}848849void GL_APIENTRY GL_ProgramUniform1i(GLuint program, GLint location, GLint v0)850{851Context *context = GetValidGlobalContext();852EVENT(context, GLProgramUniform1i, "context = %d, program = %u, location = %d, v0 = %d",853CID(context), program, location, v0);854855if (context)856{857ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);858UniformLocation locationPacked = PackParam<UniformLocation>(location);859std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);860bool isCallValid = (context->skipValidation() ||861ValidateProgramUniform1i(context, programPacked, locationPacked, v0));862if (isCallValid)863{864context->programUniform1i(programPacked, locationPacked, v0);865}866ANGLE_CAPTURE(ProgramUniform1i, isCallValid, context, programPacked, locationPacked, v0);867}868else869{870GenerateContextLostErrorOnCurrentGlobalContext();871}872}873874void GL_APIENTRY GL_ProgramUniform1iv(GLuint program,875GLint location,876GLsizei count,877const GLint *value)878{879Context *context = GetValidGlobalContext();880EVENT(context, GLProgramUniform1iv,881"context = %d, program = %u, location = %d, count = %d, value = 0x%016" PRIxPTR "",882CID(context), program, location, count, (uintptr_t)value);883884if (context)885{886ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);887UniformLocation locationPacked = PackParam<UniformLocation>(location);888std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);889bool isCallValid =890(context->skipValidation() ||891ValidateProgramUniform1iv(context, programPacked, locationPacked, count, value));892if (isCallValid)893{894context->programUniform1iv(programPacked, locationPacked, count, value);895}896ANGLE_CAPTURE(ProgramUniform1iv, isCallValid, context, programPacked, locationPacked, count,897value);898}899else900{901GenerateContextLostErrorOnCurrentGlobalContext();902}903}904905void GL_APIENTRY GL_ProgramUniform1ui(GLuint program, GLint location, GLuint v0)906{907Context *context = GetValidGlobalContext();908EVENT(context, GLProgramUniform1ui, "context = %d, program = %u, location = %d, v0 = %u",909CID(context), program, location, v0);910911if (context)912{913ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);914UniformLocation locationPacked = PackParam<UniformLocation>(location);915std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);916bool isCallValid = (context->skipValidation() ||917ValidateProgramUniform1ui(context, programPacked, locationPacked, v0));918if (isCallValid)919{920context->programUniform1ui(programPacked, locationPacked, v0);921}922ANGLE_CAPTURE(ProgramUniform1ui, isCallValid, context, programPacked, locationPacked, v0);923}924else925{926GenerateContextLostErrorOnCurrentGlobalContext();927}928}929930void GL_APIENTRY GL_ProgramUniform1uiv(GLuint program,931GLint location,932GLsizei count,933const GLuint *value)934{935Context *context = GetValidGlobalContext();936EVENT(context, GLProgramUniform1uiv,937"context = %d, program = %u, location = %d, count = %d, value = 0x%016" PRIxPTR "",938CID(context), program, location, count, (uintptr_t)value);939940if (context)941{942ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);943UniformLocation locationPacked = PackParam<UniformLocation>(location);944std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);945bool isCallValid =946(context->skipValidation() ||947ValidateProgramUniform1uiv(context, programPacked, locationPacked, count, value));948if (isCallValid)949{950context->programUniform1uiv(programPacked, locationPacked, count, value);951}952ANGLE_CAPTURE(ProgramUniform1uiv, isCallValid, context, programPacked, locationPacked,953count, value);954}955else956{957GenerateContextLostErrorOnCurrentGlobalContext();958}959}960961void GL_APIENTRY GL_ProgramUniform2f(GLuint program, GLint location, GLfloat v0, GLfloat v1)962{963Context *context = GetValidGlobalContext();964EVENT(context, GLProgramUniform2f,965"context = %d, program = %u, location = %d, v0 = %f, v1 = %f", CID(context), program,966location, v0, v1);967968if (context)969{970ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);971UniformLocation locationPacked = PackParam<UniformLocation>(location);972std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);973bool isCallValid =974(context->skipValidation() ||975ValidateProgramUniform2f(context, programPacked, locationPacked, v0, v1));976if (isCallValid)977{978context->programUniform2f(programPacked, locationPacked, v0, v1);979}980ANGLE_CAPTURE(ProgramUniform2f, isCallValid, context, programPacked, locationPacked, v0,981v1);982}983else984{985GenerateContextLostErrorOnCurrentGlobalContext();986}987}988989void GL_APIENTRY GL_ProgramUniform2fv(GLuint program,990GLint location,991GLsizei count,992const GLfloat *value)993{994Context *context = GetValidGlobalContext();995EVENT(context, GLProgramUniform2fv,996"context = %d, program = %u, location = %d, count = %d, value = 0x%016" PRIxPTR "",997CID(context), program, location, count, (uintptr_t)value);998999if (context)1000{1001ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);1002UniformLocation locationPacked = PackParam<UniformLocation>(location);1003std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);1004bool isCallValid =1005(context->skipValidation() ||1006ValidateProgramUniform2fv(context, programPacked, locationPacked, count, value));1007if (isCallValid)1008{1009context->programUniform2fv(programPacked, locationPacked, count, value);1010}1011ANGLE_CAPTURE(ProgramUniform2fv, isCallValid, context, programPacked, locationPacked, count,1012value);1013}1014else1015{1016GenerateContextLostErrorOnCurrentGlobalContext();1017}1018}10191020void GL_APIENTRY GL_ProgramUniform2i(GLuint program, GLint location, GLint v0, GLint v1)1021{1022Context *context = GetValidGlobalContext();1023EVENT(context, GLProgramUniform2i,1024"context = %d, program = %u, location = %d, v0 = %d, v1 = %d", CID(context), program,1025location, v0, v1);10261027if (context)1028{1029ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);1030UniformLocation locationPacked = PackParam<UniformLocation>(location);1031std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);1032bool isCallValid =1033(context->skipValidation() ||1034ValidateProgramUniform2i(context, programPacked, locationPacked, v0, v1));1035if (isCallValid)1036{1037context->programUniform2i(programPacked, locationPacked, v0, v1);1038}1039ANGLE_CAPTURE(ProgramUniform2i, isCallValid, context, programPacked, locationPacked, v0,1040v1);1041}1042else1043{1044GenerateContextLostErrorOnCurrentGlobalContext();1045}1046}10471048void GL_APIENTRY GL_ProgramUniform2iv(GLuint program,1049GLint location,1050GLsizei count,1051const GLint *value)1052{1053Context *context = GetValidGlobalContext();1054EVENT(context, GLProgramUniform2iv,1055"context = %d, program = %u, location = %d, count = %d, value = 0x%016" PRIxPTR "",1056CID(context), program, location, count, (uintptr_t)value);10571058if (context)1059{1060ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);1061UniformLocation locationPacked = PackParam<UniformLocation>(location);1062std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);1063bool isCallValid =1064(context->skipValidation() ||1065ValidateProgramUniform2iv(context, programPacked, locationPacked, count, value));1066if (isCallValid)1067{1068context->programUniform2iv(programPacked, locationPacked, count, value);1069}1070ANGLE_CAPTURE(ProgramUniform2iv, isCallValid, context, programPacked, locationPacked, count,1071value);1072}1073else1074{1075GenerateContextLostErrorOnCurrentGlobalContext();1076}1077}10781079void GL_APIENTRY GL_ProgramUniform2ui(GLuint program, GLint location, GLuint v0, GLuint v1)1080{1081Context *context = GetValidGlobalContext();1082EVENT(context, GLProgramUniform2ui,1083"context = %d, program = %u, location = %d, v0 = %u, v1 = %u", CID(context), program,1084location, v0, v1);10851086if (context)1087{1088ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);1089UniformLocation locationPacked = PackParam<UniformLocation>(location);1090std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);1091bool isCallValid =1092(context->skipValidation() ||1093ValidateProgramUniform2ui(context, programPacked, locationPacked, v0, v1));1094if (isCallValid)1095{1096context->programUniform2ui(programPacked, locationPacked, v0, v1);1097}1098ANGLE_CAPTURE(ProgramUniform2ui, isCallValid, context, programPacked, locationPacked, v0,1099v1);1100}1101else1102{1103GenerateContextLostErrorOnCurrentGlobalContext();1104}1105}11061107void GL_APIENTRY GL_ProgramUniform2uiv(GLuint program,1108GLint location,1109GLsizei count,1110const GLuint *value)1111{1112Context *context = GetValidGlobalContext();1113EVENT(context, GLProgramUniform2uiv,1114"context = %d, program = %u, location = %d, count = %d, value = 0x%016" PRIxPTR "",1115CID(context), program, location, count, (uintptr_t)value);11161117if (context)1118{1119ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);1120UniformLocation locationPacked = PackParam<UniformLocation>(location);1121std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);1122bool isCallValid =1123(context->skipValidation() ||1124ValidateProgramUniform2uiv(context, programPacked, locationPacked, count, value));1125if (isCallValid)1126{1127context->programUniform2uiv(programPacked, locationPacked, count, value);1128}1129ANGLE_CAPTURE(ProgramUniform2uiv, isCallValid, context, programPacked, locationPacked,1130count, value);1131}1132else1133{1134GenerateContextLostErrorOnCurrentGlobalContext();1135}1136}11371138void GL_APIENTRY1139GL_ProgramUniform3f(GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2)1140{1141Context *context = GetValidGlobalContext();1142EVENT(context, GLProgramUniform3f,1143"context = %d, program = %u, location = %d, v0 = %f, v1 = %f, v2 = %f", CID(context),1144program, location, v0, v1, v2);11451146if (context)1147{1148ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);1149UniformLocation locationPacked = PackParam<UniformLocation>(location);1150std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);1151bool isCallValid =1152(context->skipValidation() ||1153ValidateProgramUniform3f(context, programPacked, locationPacked, v0, v1, v2));1154if (isCallValid)1155{1156context->programUniform3f(programPacked, locationPacked, v0, v1, v2);1157}1158ANGLE_CAPTURE(ProgramUniform3f, isCallValid, context, programPacked, locationPacked, v0, v1,1159v2);1160}1161else1162{1163GenerateContextLostErrorOnCurrentGlobalContext();1164}1165}11661167void GL_APIENTRY GL_ProgramUniform3fv(GLuint program,1168GLint location,1169GLsizei count,1170const GLfloat *value)1171{1172Context *context = GetValidGlobalContext();1173EVENT(context, GLProgramUniform3fv,1174"context = %d, program = %u, location = %d, count = %d, value = 0x%016" PRIxPTR "",1175CID(context), program, location, count, (uintptr_t)value);11761177if (context)1178{1179ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);1180UniformLocation locationPacked = PackParam<UniformLocation>(location);1181std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);1182bool isCallValid =1183(context->skipValidation() ||1184ValidateProgramUniform3fv(context, programPacked, locationPacked, count, value));1185if (isCallValid)1186{1187context->programUniform3fv(programPacked, locationPacked, count, value);1188}1189ANGLE_CAPTURE(ProgramUniform3fv, isCallValid, context, programPacked, locationPacked, count,1190value);1191}1192else1193{1194GenerateContextLostErrorOnCurrentGlobalContext();1195}1196}11971198void GL_APIENTRY GL_ProgramUniform3i(GLuint program, GLint location, GLint v0, GLint v1, GLint v2)1199{1200Context *context = GetValidGlobalContext();1201EVENT(context, GLProgramUniform3i,1202"context = %d, program = %u, location = %d, v0 = %d, v1 = %d, v2 = %d", CID(context),1203program, location, v0, v1, v2);12041205if (context)1206{1207ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);1208UniformLocation locationPacked = PackParam<UniformLocation>(location);1209std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);1210bool isCallValid =1211(context->skipValidation() ||1212ValidateProgramUniform3i(context, programPacked, locationPacked, v0, v1, v2));1213if (isCallValid)1214{1215context->programUniform3i(programPacked, locationPacked, v0, v1, v2);1216}1217ANGLE_CAPTURE(ProgramUniform3i, isCallValid, context, programPacked, locationPacked, v0, v1,1218v2);1219}1220else1221{1222GenerateContextLostErrorOnCurrentGlobalContext();1223}1224}12251226void GL_APIENTRY GL_ProgramUniform3iv(GLuint program,1227GLint location,1228GLsizei count,1229const GLint *value)1230{1231Context *context = GetValidGlobalContext();1232EVENT(context, GLProgramUniform3iv,1233"context = %d, program = %u, location = %d, count = %d, value = 0x%016" PRIxPTR "",1234CID(context), program, location, count, (uintptr_t)value);12351236if (context)1237{1238ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);1239UniformLocation locationPacked = PackParam<UniformLocation>(location);1240std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);1241bool isCallValid =1242(context->skipValidation() ||1243ValidateProgramUniform3iv(context, programPacked, locationPacked, count, value));1244if (isCallValid)1245{1246context->programUniform3iv(programPacked, locationPacked, count, value);1247}1248ANGLE_CAPTURE(ProgramUniform3iv, isCallValid, context, programPacked, locationPacked, count,1249value);1250}1251else1252{1253GenerateContextLostErrorOnCurrentGlobalContext();1254}1255}12561257void GL_APIENTRY1258GL_ProgramUniform3ui(GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2)1259{1260Context *context = GetValidGlobalContext();1261EVENT(context, GLProgramUniform3ui,1262"context = %d, program = %u, location = %d, v0 = %u, v1 = %u, v2 = %u", CID(context),1263program, location, v0, v1, v2);12641265if (context)1266{1267ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);1268UniformLocation locationPacked = PackParam<UniformLocation>(location);1269std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);1270bool isCallValid =1271(context->skipValidation() ||1272ValidateProgramUniform3ui(context, programPacked, locationPacked, v0, v1, v2));1273if (isCallValid)1274{1275context->programUniform3ui(programPacked, locationPacked, v0, v1, v2);1276}1277ANGLE_CAPTURE(ProgramUniform3ui, isCallValid, context, programPacked, locationPacked, v0,1278v1, v2);1279}1280else1281{1282GenerateContextLostErrorOnCurrentGlobalContext();1283}1284}12851286void GL_APIENTRY GL_ProgramUniform3uiv(GLuint program,1287GLint location,1288GLsizei count,1289const GLuint *value)1290{1291Context *context = GetValidGlobalContext();1292EVENT(context, GLProgramUniform3uiv,1293"context = %d, program = %u, location = %d, count = %d, value = 0x%016" PRIxPTR "",1294CID(context), program, location, count, (uintptr_t)value);12951296if (context)1297{1298ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);1299UniformLocation locationPacked = PackParam<UniformLocation>(location);1300std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);1301bool isCallValid =1302(context->skipValidation() ||1303ValidateProgramUniform3uiv(context, programPacked, locationPacked, count, value));1304if (isCallValid)1305{1306context->programUniform3uiv(programPacked, locationPacked, count, value);1307}1308ANGLE_CAPTURE(ProgramUniform3uiv, isCallValid, context, programPacked, locationPacked,1309count, value);1310}1311else1312{1313GenerateContextLostErrorOnCurrentGlobalContext();1314}1315}13161317void GL_APIENTRY1318GL_ProgramUniform4f(GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3)1319{1320Context *context = GetValidGlobalContext();1321EVENT(context, GLProgramUniform4f,1322"context = %d, program = %u, location = %d, v0 = %f, v1 = %f, v2 = %f, v3 = %f",1323CID(context), program, location, v0, v1, v2, v3);13241325if (context)1326{1327ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);1328UniformLocation locationPacked = PackParam<UniformLocation>(location);1329std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);1330bool isCallValid =1331(context->skipValidation() ||1332ValidateProgramUniform4f(context, programPacked, locationPacked, v0, v1, v2, v3));1333if (isCallValid)1334{1335context->programUniform4f(programPacked, locationPacked, v0, v1, v2, v3);1336}1337ANGLE_CAPTURE(ProgramUniform4f, isCallValid, context, programPacked, locationPacked, v0, v1,1338v2, v3);1339}1340else1341{1342GenerateContextLostErrorOnCurrentGlobalContext();1343}1344}13451346void GL_APIENTRY GL_ProgramUniform4fv(GLuint program,1347GLint location,1348GLsizei count,1349const GLfloat *value)1350{1351Context *context = GetValidGlobalContext();1352EVENT(context, GLProgramUniform4fv,1353"context = %d, program = %u, location = %d, count = %d, value = 0x%016" PRIxPTR "",1354CID(context), program, location, count, (uintptr_t)value);13551356if (context)1357{1358ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);1359UniformLocation locationPacked = PackParam<UniformLocation>(location);1360std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);1361bool isCallValid =1362(context->skipValidation() ||1363ValidateProgramUniform4fv(context, programPacked, locationPacked, count, value));1364if (isCallValid)1365{1366context->programUniform4fv(programPacked, locationPacked, count, value);1367}1368ANGLE_CAPTURE(ProgramUniform4fv, isCallValid, context, programPacked, locationPacked, count,1369value);1370}1371else1372{1373GenerateContextLostErrorOnCurrentGlobalContext();1374}1375}13761377void GL_APIENTRY1378GL_ProgramUniform4i(GLuint program, GLint location, GLint v0, GLint v1, GLint v2, GLint v3)1379{1380Context *context = GetValidGlobalContext();1381EVENT(context, GLProgramUniform4i,1382"context = %d, program = %u, location = %d, v0 = %d, v1 = %d, v2 = %d, v3 = %d",1383CID(context), program, location, v0, v1, v2, v3);13841385if (context)1386{1387ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);1388UniformLocation locationPacked = PackParam<UniformLocation>(location);1389std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);1390bool isCallValid =1391(context->skipValidation() ||1392ValidateProgramUniform4i(context, programPacked, locationPacked, v0, v1, v2, v3));1393if (isCallValid)1394{1395context->programUniform4i(programPacked, locationPacked, v0, v1, v2, v3);1396}1397ANGLE_CAPTURE(ProgramUniform4i, isCallValid, context, programPacked, locationPacked, v0, v1,1398v2, v3);1399}1400else1401{1402GenerateContextLostErrorOnCurrentGlobalContext();1403}1404}14051406void GL_APIENTRY GL_ProgramUniform4iv(GLuint program,1407GLint location,1408GLsizei count,1409const GLint *value)1410{1411Context *context = GetValidGlobalContext();1412EVENT(context, GLProgramUniform4iv,1413"context = %d, program = %u, location = %d, count = %d, value = 0x%016" PRIxPTR "",1414CID(context), program, location, count, (uintptr_t)value);14151416if (context)1417{1418ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);1419UniformLocation locationPacked = PackParam<UniformLocation>(location);1420std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);1421bool isCallValid =1422(context->skipValidation() ||1423ValidateProgramUniform4iv(context, programPacked, locationPacked, count, value));1424if (isCallValid)1425{1426context->programUniform4iv(programPacked, locationPacked, count, value);1427}1428ANGLE_CAPTURE(ProgramUniform4iv, isCallValid, context, programPacked, locationPacked, count,1429value);1430}1431else1432{1433GenerateContextLostErrorOnCurrentGlobalContext();1434}1435}14361437void GL_APIENTRY1438GL_ProgramUniform4ui(GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3)1439{1440Context *context = GetValidGlobalContext();1441EVENT(context, GLProgramUniform4ui,1442"context = %d, program = %u, location = %d, v0 = %u, v1 = %u, v2 = %u, v3 = %u",1443CID(context), program, location, v0, v1, v2, v3);14441445if (context)1446{1447ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);1448UniformLocation locationPacked = PackParam<UniformLocation>(location);1449std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);1450bool isCallValid =1451(context->skipValidation() ||1452ValidateProgramUniform4ui(context, programPacked, locationPacked, v0, v1, v2, v3));1453if (isCallValid)1454{1455context->programUniform4ui(programPacked, locationPacked, v0, v1, v2, v3);1456}1457ANGLE_CAPTURE(ProgramUniform4ui, isCallValid, context, programPacked, locationPacked, v0,1458v1, v2, v3);1459}1460else1461{1462GenerateContextLostErrorOnCurrentGlobalContext();1463}1464}14651466void GL_APIENTRY GL_ProgramUniform4uiv(GLuint program,1467GLint location,1468GLsizei count,1469const GLuint *value)1470{1471Context *context = GetValidGlobalContext();1472EVENT(context, GLProgramUniform4uiv,1473"context = %d, program = %u, location = %d, count = %d, value = 0x%016" PRIxPTR "",1474CID(context), program, location, count, (uintptr_t)value);14751476if (context)1477{1478ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);1479UniformLocation locationPacked = PackParam<UniformLocation>(location);1480std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);1481bool isCallValid =1482(context->skipValidation() ||1483ValidateProgramUniform4uiv(context, programPacked, locationPacked, count, value));1484if (isCallValid)1485{1486context->programUniform4uiv(programPacked, locationPacked, count, value);1487}1488ANGLE_CAPTURE(ProgramUniform4uiv, isCallValid, context, programPacked, locationPacked,1489count, value);1490}1491else1492{1493GenerateContextLostErrorOnCurrentGlobalContext();1494}1495}14961497void GL_APIENTRY GL_ProgramUniformMatrix2fv(GLuint program,1498GLint location,1499GLsizei count,1500GLboolean transpose,1501const GLfloat *value)1502{1503Context *context = GetValidGlobalContext();1504EVENT(context, GLProgramUniformMatrix2fv,1505"context = %d, program = %u, location = %d, count = %d, transpose = %s, value = "1506"0x%016" PRIxPTR "",1507CID(context), program, location, count, GLbooleanToString(transpose), (uintptr_t)value);15081509if (context)1510{1511ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);1512UniformLocation locationPacked = PackParam<UniformLocation>(location);1513std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);1514bool isCallValid = (context->skipValidation() ||1515ValidateProgramUniformMatrix2fv(context, programPacked, locationPacked,1516count, transpose, value));1517if (isCallValid)1518{1519context->programUniformMatrix2fv(programPacked, locationPacked, count, transpose,1520value);1521}1522ANGLE_CAPTURE(ProgramUniformMatrix2fv, isCallValid, context, programPacked, locationPacked,1523count, transpose, value);1524}1525else1526{1527GenerateContextLostErrorOnCurrentGlobalContext();1528}1529}15301531void GL_APIENTRY GL_ProgramUniformMatrix2x3fv(GLuint program,1532GLint location,1533GLsizei count,1534GLboolean transpose,1535const GLfloat *value)1536{1537Context *context = GetValidGlobalContext();1538EVENT(context, GLProgramUniformMatrix2x3fv,1539"context = %d, program = %u, location = %d, count = %d, transpose = %s, value = "1540"0x%016" PRIxPTR "",1541CID(context), program, location, count, GLbooleanToString(transpose), (uintptr_t)value);15421543if (context)1544{1545ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);1546UniformLocation locationPacked = PackParam<UniformLocation>(location);1547std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);1548bool isCallValid = (context->skipValidation() ||1549ValidateProgramUniformMatrix2x3fv(1550context, programPacked, locationPacked, count, transpose, value));1551if (isCallValid)1552{1553context->programUniformMatrix2x3fv(programPacked, locationPacked, count, transpose,1554value);1555}1556ANGLE_CAPTURE(ProgramUniformMatrix2x3fv, isCallValid, context, programPacked,1557locationPacked, count, transpose, value);1558}1559else1560{1561GenerateContextLostErrorOnCurrentGlobalContext();1562}1563}15641565void GL_APIENTRY GL_ProgramUniformMatrix2x4fv(GLuint program,1566GLint location,1567GLsizei count,1568GLboolean transpose,1569const GLfloat *value)1570{1571Context *context = GetValidGlobalContext();1572EVENT(context, GLProgramUniformMatrix2x4fv,1573"context = %d, program = %u, location = %d, count = %d, transpose = %s, value = "1574"0x%016" PRIxPTR "",1575CID(context), program, location, count, GLbooleanToString(transpose), (uintptr_t)value);15761577if (context)1578{1579ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);1580UniformLocation locationPacked = PackParam<UniformLocation>(location);1581std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);1582bool isCallValid = (context->skipValidation() ||1583ValidateProgramUniformMatrix2x4fv(1584context, programPacked, locationPacked, count, transpose, value));1585if (isCallValid)1586{1587context->programUniformMatrix2x4fv(programPacked, locationPacked, count, transpose,1588value);1589}1590ANGLE_CAPTURE(ProgramUniformMatrix2x4fv, isCallValid, context, programPacked,1591locationPacked, count, transpose, value);1592}1593else1594{1595GenerateContextLostErrorOnCurrentGlobalContext();1596}1597}15981599void GL_APIENTRY GL_ProgramUniformMatrix3fv(GLuint program,1600GLint location,1601GLsizei count,1602GLboolean transpose,1603const GLfloat *value)1604{1605Context *context = GetValidGlobalContext();1606EVENT(context, GLProgramUniformMatrix3fv,1607"context = %d, program = %u, location = %d, count = %d, transpose = %s, value = "1608"0x%016" PRIxPTR "",1609CID(context), program, location, count, GLbooleanToString(transpose), (uintptr_t)value);16101611if (context)1612{1613ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);1614UniformLocation locationPacked = PackParam<UniformLocation>(location);1615std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);1616bool isCallValid = (context->skipValidation() ||1617ValidateProgramUniformMatrix3fv(context, programPacked, locationPacked,1618count, transpose, value));1619if (isCallValid)1620{1621context->programUniformMatrix3fv(programPacked, locationPacked, count, transpose,1622value);1623}1624ANGLE_CAPTURE(ProgramUniformMatrix3fv, isCallValid, context, programPacked, locationPacked,1625count, transpose, value);1626}1627else1628{1629GenerateContextLostErrorOnCurrentGlobalContext();1630}1631}16321633void GL_APIENTRY GL_ProgramUniformMatrix3x2fv(GLuint program,1634GLint location,1635GLsizei count,1636GLboolean transpose,1637const GLfloat *value)1638{1639Context *context = GetValidGlobalContext();1640EVENT(context, GLProgramUniformMatrix3x2fv,1641"context = %d, program = %u, location = %d, count = %d, transpose = %s, value = "1642"0x%016" PRIxPTR "",1643CID(context), program, location, count, GLbooleanToString(transpose), (uintptr_t)value);16441645if (context)1646{1647ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);1648UniformLocation locationPacked = PackParam<UniformLocation>(location);1649std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);1650bool isCallValid = (context->skipValidation() ||1651ValidateProgramUniformMatrix3x2fv(1652context, programPacked, locationPacked, count, transpose, value));1653if (isCallValid)1654{1655context->programUniformMatrix3x2fv(programPacked, locationPacked, count, transpose,1656value);1657}1658ANGLE_CAPTURE(ProgramUniformMatrix3x2fv, isCallValid, context, programPacked,1659locationPacked, count, transpose, value);1660}1661else1662{1663GenerateContextLostErrorOnCurrentGlobalContext();1664}1665}16661667void GL_APIENTRY GL_ProgramUniformMatrix3x4fv(GLuint program,1668GLint location,1669GLsizei count,1670GLboolean transpose,1671const GLfloat *value)1672{1673Context *context = GetValidGlobalContext();1674EVENT(context, GLProgramUniformMatrix3x4fv,1675"context = %d, program = %u, location = %d, count = %d, transpose = %s, value = "1676"0x%016" PRIxPTR "",1677CID(context), program, location, count, GLbooleanToString(transpose), (uintptr_t)value);16781679if (context)1680{1681ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);1682UniformLocation locationPacked = PackParam<UniformLocation>(location);1683std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);1684bool isCallValid = (context->skipValidation() ||1685ValidateProgramUniformMatrix3x4fv(1686context, programPacked, locationPacked, count, transpose, value));1687if (isCallValid)1688{1689context->programUniformMatrix3x4fv(programPacked, locationPacked, count, transpose,1690value);1691}1692ANGLE_CAPTURE(ProgramUniformMatrix3x4fv, isCallValid, context, programPacked,1693locationPacked, count, transpose, value);1694}1695else1696{1697GenerateContextLostErrorOnCurrentGlobalContext();1698}1699}17001701void GL_APIENTRY GL_ProgramUniformMatrix4fv(GLuint program,1702GLint location,1703GLsizei count,1704GLboolean transpose,1705const GLfloat *value)1706{1707Context *context = GetValidGlobalContext();1708EVENT(context, GLProgramUniformMatrix4fv,1709"context = %d, program = %u, location = %d, count = %d, transpose = %s, value = "1710"0x%016" PRIxPTR "",1711CID(context), program, location, count, GLbooleanToString(transpose), (uintptr_t)value);17121713if (context)1714{1715ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);1716UniformLocation locationPacked = PackParam<UniformLocation>(location);1717std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);1718bool isCallValid = (context->skipValidation() ||1719ValidateProgramUniformMatrix4fv(context, programPacked, locationPacked,1720count, transpose, value));1721if (isCallValid)1722{1723context->programUniformMatrix4fv(programPacked, locationPacked, count, transpose,1724value);1725}1726ANGLE_CAPTURE(ProgramUniformMatrix4fv, isCallValid, context, programPacked, locationPacked,1727count, transpose, value);1728}1729else1730{1731GenerateContextLostErrorOnCurrentGlobalContext();1732}1733}17341735void GL_APIENTRY GL_ProgramUniformMatrix4x2fv(GLuint program,1736GLint location,1737GLsizei count,1738GLboolean transpose,1739const GLfloat *value)1740{1741Context *context = GetValidGlobalContext();1742EVENT(context, GLProgramUniformMatrix4x2fv,1743"context = %d, program = %u, location = %d, count = %d, transpose = %s, value = "1744"0x%016" PRIxPTR "",1745CID(context), program, location, count, GLbooleanToString(transpose), (uintptr_t)value);17461747if (context)1748{1749ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);1750UniformLocation locationPacked = PackParam<UniformLocation>(location);1751std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);1752bool isCallValid = (context->skipValidation() ||1753ValidateProgramUniformMatrix4x2fv(1754context, programPacked, locationPacked, count, transpose, value));1755if (isCallValid)1756{1757context->programUniformMatrix4x2fv(programPacked, locationPacked, count, transpose,1758value);1759}1760ANGLE_CAPTURE(ProgramUniformMatrix4x2fv, isCallValid, context, programPacked,1761locationPacked, count, transpose, value);1762}1763else1764{1765GenerateContextLostErrorOnCurrentGlobalContext();1766}1767}17681769void GL_APIENTRY GL_ProgramUniformMatrix4x3fv(GLuint program,1770GLint location,1771GLsizei count,1772GLboolean transpose,1773const GLfloat *value)1774{1775Context *context = GetValidGlobalContext();1776EVENT(context, GLProgramUniformMatrix4x3fv,1777"context = %d, program = %u, location = %d, count = %d, transpose = %s, value = "1778"0x%016" PRIxPTR "",1779CID(context), program, location, count, GLbooleanToString(transpose), (uintptr_t)value);17801781if (context)1782{1783ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);1784UniformLocation locationPacked = PackParam<UniformLocation>(location);1785std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);1786bool isCallValid = (context->skipValidation() ||1787ValidateProgramUniformMatrix4x3fv(1788context, programPacked, locationPacked, count, transpose, value));1789if (isCallValid)1790{1791context->programUniformMatrix4x3fv(programPacked, locationPacked, count, transpose,1792value);1793}1794ANGLE_CAPTURE(ProgramUniformMatrix4x3fv, isCallValid, context, programPacked,1795locationPacked, count, transpose, value);1796}1797else1798{1799GenerateContextLostErrorOnCurrentGlobalContext();1800}1801}18021803void GL_APIENTRY GL_SampleMaski(GLuint maskNumber, GLbitfield mask)1804{1805Context *context = GetValidGlobalContext();1806EVENT(context, GLSampleMaski, "context = %d, maskNumber = %u, mask = %s", CID(context),1807maskNumber, GLbitfieldToString(GLenumGroup::DefaultGroup, mask).c_str());18081809if (context)1810{1811std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);1812bool isCallValid =1813(context->skipValidation() || ValidateSampleMaski(context, maskNumber, mask));1814if (isCallValid)1815{1816context->sampleMaski(maskNumber, mask);1817}1818ANGLE_CAPTURE(SampleMaski, isCallValid, context, maskNumber, mask);1819}1820else1821{1822GenerateContextLostErrorOnCurrentGlobalContext();1823}1824}18251826void GL_APIENTRY GL_TexStorage2DMultisample(GLenum target,1827GLsizei samples,1828GLenum internalformat,1829GLsizei width,1830GLsizei height,1831GLboolean fixedsamplelocations)1832{1833Context *context = GetValidGlobalContext();1834EVENT(context, GLTexStorage2DMultisample,1835"context = %d, target = %s, samples = %d, internalformat = %s, width = %d, height = %d, "1836"fixedsamplelocations = %s",1837CID(context), GLenumToString(GLenumGroup::TextureTarget, target), samples,1838GLenumToString(GLenumGroup::InternalFormat, internalformat), width, height,1839GLbooleanToString(fixedsamplelocations));18401841if (context)1842{1843TextureType targetPacked = PackParam<TextureType>(target);1844std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);1845bool isCallValid =1846(context->skipValidation() ||1847ValidateTexStorage2DMultisample(context, targetPacked, samples, internalformat, width,1848height, fixedsamplelocations));1849if (isCallValid)1850{1851context->texStorage2DMultisample(targetPacked, samples, internalformat, width, height,1852fixedsamplelocations);1853}1854ANGLE_CAPTURE(TexStorage2DMultisample, isCallValid, context, targetPacked, samples,1855internalformat, width, height, fixedsamplelocations);1856}1857else1858{1859GenerateContextLostErrorOnCurrentGlobalContext();1860}1861}18621863void GL_APIENTRY GL_UseProgramStages(GLuint pipeline, GLbitfield stages, GLuint program)1864{1865Context *context = GetValidGlobalContext();1866EVENT(context, GLUseProgramStages, "context = %d, pipeline = %u, stages = %s, program = %u",1867CID(context), pipeline,1868GLbitfieldToString(GLenumGroup::UseProgramStageMask, stages).c_str(), program);18691870if (context)1871{1872ProgramPipelineID pipelinePacked = PackParam<ProgramPipelineID>(pipeline);1873ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);1874std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);1875bool isCallValid =1876(context->skipValidation() ||1877ValidateUseProgramStages(context, pipelinePacked, stages, programPacked));1878if (isCallValid)1879{1880context->useProgramStages(pipelinePacked, stages, programPacked);1881}1882ANGLE_CAPTURE(UseProgramStages, isCallValid, context, pipelinePacked, stages,1883programPacked);1884}1885else1886{1887GenerateContextLostErrorOnCurrentGlobalContext();1888}1889}18901891void GL_APIENTRY GL_ValidateProgramPipeline(GLuint pipeline)1892{1893Context *context = GetValidGlobalContext();1894EVENT(context, GLValidateProgramPipeline, "context = %d, pipeline = %u", CID(context),1895pipeline);18961897if (context)1898{1899ProgramPipelineID pipelinePacked = PackParam<ProgramPipelineID>(pipeline);1900std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);1901bool isCallValid =1902(context->skipValidation() || ValidateValidateProgramPipeline(context, pipelinePacked));1903if (isCallValid)1904{1905context->validateProgramPipeline(pipelinePacked);1906}1907ANGLE_CAPTURE(ValidateProgramPipeline, isCallValid, context, pipelinePacked);1908}1909else1910{1911GenerateContextLostErrorOnCurrentGlobalContext();1912}1913}19141915void GL_APIENTRY GL_VertexAttribBinding(GLuint attribindex, GLuint bindingindex)1916{1917Context *context = GetValidGlobalContext();1918EVENT(context, GLVertexAttribBinding, "context = %d, attribindex = %u, bindingindex = %u",1919CID(context), attribindex, bindingindex);19201921if (context)1922{1923std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);1924bool isCallValid = (context->skipValidation() ||1925ValidateVertexAttribBinding(context, attribindex, bindingindex));1926if (isCallValid)1927{1928context->vertexAttribBinding(attribindex, bindingindex);1929}1930ANGLE_CAPTURE(VertexAttribBinding, isCallValid, context, attribindex, bindingindex);1931}1932else1933{1934GenerateContextLostErrorOnCurrentGlobalContext();1935}1936}19371938void GL_APIENTRY GL_VertexAttribFormat(GLuint attribindex,1939GLint size,1940GLenum type,1941GLboolean normalized,1942GLuint relativeoffset)1943{1944Context *context = GetValidGlobalContext();1945EVENT(context, GLVertexAttribFormat,1946"context = %d, attribindex = %u, size = %d, type = %s, normalized = %s, relativeoffset = "1947"%u",1948CID(context), attribindex, size, GLenumToString(GLenumGroup::DefaultGroup, type),1949GLbooleanToString(normalized), relativeoffset);19501951if (context)1952{1953VertexAttribType typePacked = PackParam<VertexAttribType>(type);1954std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);1955bool isCallValid = (context->skipValidation() ||1956ValidateVertexAttribFormat(context, attribindex, size, typePacked,1957normalized, relativeoffset));1958if (isCallValid)1959{1960context->vertexAttribFormat(attribindex, size, typePacked, normalized, relativeoffset);1961}1962ANGLE_CAPTURE(VertexAttribFormat, isCallValid, context, attribindex, size, typePacked,1963normalized, relativeoffset);1964}1965else1966{1967GenerateContextLostErrorOnCurrentGlobalContext();1968}1969}19701971void GL_APIENTRY GL_VertexAttribIFormat(GLuint attribindex,1972GLint size,1973GLenum type,1974GLuint relativeoffset)1975{1976Context *context = GetValidGlobalContext();1977EVENT(context, GLVertexAttribIFormat,1978"context = %d, attribindex = %u, size = %d, type = %s, relativeoffset = %u", CID(context),1979attribindex, size, GLenumToString(GLenumGroup::DefaultGroup, type), relativeoffset);19801981if (context)1982{1983VertexAttribType typePacked = PackParam<VertexAttribType>(type);1984std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);1985bool isCallValid =1986(context->skipValidation() ||1987ValidateVertexAttribIFormat(context, attribindex, size, typePacked, relativeoffset));1988if (isCallValid)1989{1990context->vertexAttribIFormat(attribindex, size, typePacked, relativeoffset);1991}1992ANGLE_CAPTURE(VertexAttribIFormat, isCallValid, context, attribindex, size, typePacked,1993relativeoffset);1994}1995else1996{1997GenerateContextLostErrorOnCurrentGlobalContext();1998}1999}20002001void GL_APIENTRY GL_VertexBindingDivisor(GLuint bindingindex, GLuint divisor)2002{2003Context *context = GetValidGlobalContext();2004EVENT(context, GLVertexBindingDivisor, "context = %d, bindingindex = %u, divisor = %u",2005CID(context), bindingindex, divisor);20062007if (context)2008{2009std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);2010bool isCallValid = (context->skipValidation() ||2011ValidateVertexBindingDivisor(context, bindingindex, divisor));2012if (isCallValid)2013{2014context->vertexBindingDivisor(bindingindex, divisor);2015}2016ANGLE_CAPTURE(VertexBindingDivisor, isCallValid, context, bindingindex, divisor);2017}2018else2019{2020GenerateContextLostErrorOnCurrentGlobalContext();2021}2022}20232024} // extern "C"202520262027