Path: blob/main_old/src/libGL/entry_points_gl_4_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_4_autogen.cpp:8// Defines the Desktop GL 4.x entry points.910#include "libGL/entry_points_gl_4_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/validationGL4_autogen.h"25#include "libGLESv2/global_state.h"2627using namespace gl;2829extern "C" {3031// GL 4.032void GL_APIENTRY GL_BeginQueryIndexed(GLenum target, GLuint index, GLuint id)33{34Context *context = GetValidGlobalContext();35EVENT(context, GLBeginQueryIndexed, "context = %d, target = %s, index = %u, id = %u",36CID(context), GLenumToString(GLenumGroup::QueryTarget, target), index, id);3738if (context)39{40QueryID idPacked = PackParam<QueryID>(id);41std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);42bool isCallValid = (context->skipValidation() ||43ValidateBeginQueryIndexed(context, target, index, idPacked));44if (isCallValid)45{46context->beginQueryIndexed(target, index, idPacked);47}48ANGLE_CAPTURE(BeginQueryIndexed, isCallValid, context, target, index, idPacked);49}50else51{52GenerateContextLostErrorOnCurrentGlobalContext();53}54}5556void GL_APIENTRY GL_BindTransformFeedback(GLenum target, GLuint id)57{58Context *context = GetValidGlobalContext();59EVENT(context, GLBindTransformFeedback, "context = %d, target = %s, id = %u", CID(context),60GLenumToString(GLenumGroup::BindTransformFeedbackTarget, target), id);6162if (context)63{64TransformFeedbackID idPacked = PackParam<TransformFeedbackID>(id);65std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);66bool isCallValid =67(context->skipValidation() || ValidateBindTransformFeedback(context, target, idPacked));68if (isCallValid)69{70context->bindTransformFeedback(target, idPacked);71}72ANGLE_CAPTURE(BindTransformFeedback, isCallValid, context, target, idPacked);73}74else75{76GenerateContextLostErrorOnCurrentGlobalContext();77}78}7980void GL_APIENTRY GL_BlendEquationSeparatei(GLuint buf, GLenum modeRGB, GLenum modeAlpha)81{82Context *context = GetValidGlobalContext();83EVENT(context, GLBlendEquationSeparatei, "context = %d, buf = %u, modeRGB = %s, modeAlpha = %s",84CID(context), buf, GLenumToString(GLenumGroup::BlendEquationModeEXT, modeRGB),85GLenumToString(GLenumGroup::BlendEquationModeEXT, modeAlpha));8687if (context)88{89std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);90bool isCallValid = (context->skipValidation() ||91ValidateBlendEquationSeparatei(context, buf, modeRGB, modeAlpha));92if (isCallValid)93{94context->blendEquationSeparatei(buf, modeRGB, modeAlpha);95}96ANGLE_CAPTURE(BlendEquationSeparatei, isCallValid, context, buf, modeRGB, modeAlpha);97}98else99{100GenerateContextLostErrorOnCurrentGlobalContext();101}102}103104void GL_APIENTRY GL_BlendEquationi(GLuint buf, GLenum mode)105{106Context *context = GetValidGlobalContext();107EVENT(context, GLBlendEquationi, "context = %d, buf = %u, mode = %s", CID(context), buf,108GLenumToString(GLenumGroup::BlendEquationModeEXT, mode));109110if (context)111{112std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);113bool isCallValid =114(context->skipValidation() || ValidateBlendEquationi(context, buf, mode));115if (isCallValid)116{117context->blendEquationi(buf, mode);118}119ANGLE_CAPTURE(BlendEquationi, isCallValid, context, buf, mode);120}121else122{123GenerateContextLostErrorOnCurrentGlobalContext();124}125}126127void GL_APIENTRY128GL_BlendFuncSeparatei(GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha)129{130Context *context = GetValidGlobalContext();131EVENT(context, GLBlendFuncSeparatei,132"context = %d, buf = %u, srcRGB = %s, dstRGB = %s, srcAlpha = %s, dstAlpha = %s",133CID(context), buf, GLenumToString(GLenumGroup::BlendingFactor, srcRGB),134GLenumToString(GLenumGroup::BlendingFactor, dstRGB),135GLenumToString(GLenumGroup::BlendingFactor, srcAlpha),136GLenumToString(GLenumGroup::BlendingFactor, dstAlpha));137138if (context)139{140std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);141bool isCallValid =142(context->skipValidation() ||143ValidateBlendFuncSeparatei(context, buf, srcRGB, dstRGB, srcAlpha, dstAlpha));144if (isCallValid)145{146context->blendFuncSeparatei(buf, srcRGB, dstRGB, srcAlpha, dstAlpha);147}148ANGLE_CAPTURE(BlendFuncSeparatei, isCallValid, context, buf, srcRGB, dstRGB, srcAlpha,149dstAlpha);150}151else152{153GenerateContextLostErrorOnCurrentGlobalContext();154}155}156157void GL_APIENTRY GL_BlendFunci(GLuint buf, GLenum src, GLenum dst)158{159Context *context = GetValidGlobalContext();160EVENT(context, GLBlendFunci, "context = %d, buf = %u, src = %s, dst = %s", CID(context), buf,161GLenumToString(GLenumGroup::BlendingFactor, src),162GLenumToString(GLenumGroup::BlendingFactor, dst));163164if (context)165{166std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);167bool isCallValid =168(context->skipValidation() || ValidateBlendFunci(context, buf, src, dst));169if (isCallValid)170{171context->blendFunci(buf, src, dst);172}173ANGLE_CAPTURE(BlendFunci, isCallValid, context, buf, src, dst);174}175else176{177GenerateContextLostErrorOnCurrentGlobalContext();178}179}180181void GL_APIENTRY GL_DeleteTransformFeedbacks(GLsizei n, const GLuint *ids)182{183Context *context = GetValidGlobalContext();184EVENT(context, GLDeleteTransformFeedbacks, "context = %d, n = %d, ids = 0x%016" PRIxPTR "",185CID(context), n, (uintptr_t)ids);186187if (context)188{189const TransformFeedbackID *idsPacked = PackParam<const TransformFeedbackID *>(ids);190std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);191bool isCallValid =192(context->skipValidation() || ValidateDeleteTransformFeedbacks(context, n, idsPacked));193if (isCallValid)194{195context->deleteTransformFeedbacks(n, idsPacked);196}197ANGLE_CAPTURE(DeleteTransformFeedbacks, isCallValid, context, n, idsPacked);198}199else200{201GenerateContextLostErrorOnCurrentGlobalContext();202}203}204205void GL_APIENTRY GL_DrawArraysIndirect(GLenum mode, const void *indirect)206{207Context *context = GetValidGlobalContext();208EVENT(context, GLDrawArraysIndirect, "context = %d, mode = %s, indirect = 0x%016" PRIxPTR "",209CID(context), GLenumToString(GLenumGroup::PrimitiveType, mode), (uintptr_t)indirect);210211if (context)212{213PrimitiveMode modePacked = PackParam<PrimitiveMode>(mode);214std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);215bool isCallValid = (context->skipValidation() ||216ValidateDrawArraysIndirect(context, modePacked, indirect));217if (isCallValid)218{219context->drawArraysIndirect(modePacked, indirect);220}221ANGLE_CAPTURE(DrawArraysIndirect, isCallValid, context, modePacked, indirect);222}223else224{225GenerateContextLostErrorOnCurrentGlobalContext();226}227}228229void GL_APIENTRY GL_DrawElementsIndirect(GLenum mode, GLenum type, const void *indirect)230{231Context *context = GetValidGlobalContext();232EVENT(context, GLDrawElementsIndirect,233"context = %d, mode = %s, type = %s, indirect = 0x%016" PRIxPTR "", CID(context),234GLenumToString(GLenumGroup::PrimitiveType, mode),235GLenumToString(GLenumGroup::DrawElementsType, type), (uintptr_t)indirect);236237if (context)238{239PrimitiveMode modePacked = PackParam<PrimitiveMode>(mode);240DrawElementsType typePacked = PackParam<DrawElementsType>(type);241std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);242bool isCallValid =243(context->skipValidation() ||244ValidateDrawElementsIndirect(context, modePacked, typePacked, indirect));245if (isCallValid)246{247context->drawElementsIndirect(modePacked, typePacked, indirect);248}249ANGLE_CAPTURE(DrawElementsIndirect, isCallValid, context, modePacked, typePacked, indirect);250}251else252{253GenerateContextLostErrorOnCurrentGlobalContext();254}255}256257void GL_APIENTRY GL_DrawTransformFeedback(GLenum mode, GLuint id)258{259Context *context = GetValidGlobalContext();260EVENT(context, GLDrawTransformFeedback, "context = %d, mode = %s, id = %u", CID(context),261GLenumToString(GLenumGroup::PrimitiveType, mode), id);262263if (context)264{265TransformFeedbackID idPacked = PackParam<TransformFeedbackID>(id);266std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);267bool isCallValid =268(context->skipValidation() || ValidateDrawTransformFeedback(context, mode, idPacked));269if (isCallValid)270{271context->drawTransformFeedback(mode, idPacked);272}273ANGLE_CAPTURE(DrawTransformFeedback, isCallValid, context, mode, idPacked);274}275else276{277GenerateContextLostErrorOnCurrentGlobalContext();278}279}280281void GL_APIENTRY GL_DrawTransformFeedbackStream(GLenum mode, GLuint id, GLuint stream)282{283Context *context = GetValidGlobalContext();284EVENT(context, GLDrawTransformFeedbackStream, "context = %d, mode = %s, id = %u, stream = %u",285CID(context), GLenumToString(GLenumGroup::PrimitiveType, mode), id, stream);286287if (context)288{289TransformFeedbackID idPacked = PackParam<TransformFeedbackID>(id);290std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);291bool isCallValid = (context->skipValidation() ||292ValidateDrawTransformFeedbackStream(context, mode, idPacked, stream));293if (isCallValid)294{295context->drawTransformFeedbackStream(mode, idPacked, stream);296}297ANGLE_CAPTURE(DrawTransformFeedbackStream, isCallValid, context, mode, idPacked, stream);298}299else300{301GenerateContextLostErrorOnCurrentGlobalContext();302}303}304305void GL_APIENTRY GL_EndQueryIndexed(GLenum target, GLuint index)306{307Context *context = GetValidGlobalContext();308EVENT(context, GLEndQueryIndexed, "context = %d, target = %s, index = %u", CID(context),309GLenumToString(GLenumGroup::QueryTarget, target), index);310311if (context)312{313std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);314bool isCallValid =315(context->skipValidation() || ValidateEndQueryIndexed(context, target, index));316if (isCallValid)317{318context->endQueryIndexed(target, index);319}320ANGLE_CAPTURE(EndQueryIndexed, isCallValid, context, target, index);321}322else323{324GenerateContextLostErrorOnCurrentGlobalContext();325}326}327328void GL_APIENTRY GL_GenTransformFeedbacks(GLsizei n, GLuint *ids)329{330Context *context = GetValidGlobalContext();331EVENT(context, GLGenTransformFeedbacks, "context = %d, n = %d, ids = 0x%016" PRIxPTR "",332CID(context), n, (uintptr_t)ids);333334if (context)335{336TransformFeedbackID *idsPacked = PackParam<TransformFeedbackID *>(ids);337std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);338bool isCallValid =339(context->skipValidation() || ValidateGenTransformFeedbacks(context, n, idsPacked));340if (isCallValid)341{342context->genTransformFeedbacks(n, idsPacked);343}344ANGLE_CAPTURE(GenTransformFeedbacks, isCallValid, context, n, idsPacked);345}346else347{348GenerateContextLostErrorOnCurrentGlobalContext();349}350}351352void GL_APIENTRY GL_GetActiveSubroutineName(GLuint program,353GLenum shadertype,354GLuint index,355GLsizei bufsize,356GLsizei *length,357GLchar *name)358{359Context *context = GetValidGlobalContext();360EVENT(context, GLGetActiveSubroutineName,361"context = %d, program = %u, shadertype = %s, index = %u, bufsize = %d, length = "362"0x%016" PRIxPTR ", name = 0x%016" PRIxPTR "",363CID(context), program, GLenumToString(GLenumGroup::ShaderType, shadertype), index,364bufsize, (uintptr_t)length, (uintptr_t)name);365366if (context)367{368ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);369std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);370bool isCallValid = (context->skipValidation() ||371ValidateGetActiveSubroutineName(context, programPacked, shadertype,372index, bufsize, length, name));373if (isCallValid)374{375context->getActiveSubroutineName(programPacked, shadertype, index, bufsize, length,376name);377}378ANGLE_CAPTURE(GetActiveSubroutineName, isCallValid, context, programPacked, shadertype,379index, bufsize, length, name);380}381else382{383GenerateContextLostErrorOnCurrentGlobalContext();384}385}386387void GL_APIENTRY GL_GetActiveSubroutineUniformName(GLuint program,388GLenum shadertype,389GLuint index,390GLsizei bufsize,391GLsizei *length,392GLchar *name)393{394Context *context = GetValidGlobalContext();395EVENT(context, GLGetActiveSubroutineUniformName,396"context = %d, program = %u, shadertype = %s, index = %u, bufsize = %d, length = "397"0x%016" PRIxPTR ", name = 0x%016" PRIxPTR "",398CID(context), program, GLenumToString(GLenumGroup::ShaderType, shadertype), index,399bufsize, (uintptr_t)length, (uintptr_t)name);400401if (context)402{403ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);404std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);405bool isCallValid = (context->skipValidation() ||406ValidateGetActiveSubroutineUniformName(407context, programPacked, shadertype, index, bufsize, length, name));408if (isCallValid)409{410context->getActiveSubroutineUniformName(programPacked, shadertype, index, bufsize,411length, name);412}413ANGLE_CAPTURE(GetActiveSubroutineUniformName, isCallValid, context, programPacked,414shadertype, index, bufsize, length, name);415}416else417{418GenerateContextLostErrorOnCurrentGlobalContext();419}420}421422void GL_APIENTRY GL_GetActiveSubroutineUniformiv(GLuint program,423GLenum shadertype,424GLuint index,425GLenum pname,426GLint *values)427{428Context *context = GetValidGlobalContext();429EVENT(context, GLGetActiveSubroutineUniformiv,430"context = %d, program = %u, shadertype = %s, index = %u, pname = %s, values = "431"0x%016" PRIxPTR "",432CID(context), program, GLenumToString(GLenumGroup::ShaderType, shadertype), index,433GLenumToString(GLenumGroup::SubroutineParameterName, pname), (uintptr_t)values);434435if (context)436{437ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);438std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);439bool isCallValid = (context->skipValidation() ||440ValidateGetActiveSubroutineUniformiv(context, programPacked, shadertype,441index, pname, values));442if (isCallValid)443{444context->getActiveSubroutineUniformiv(programPacked, shadertype, index, pname, values);445}446ANGLE_CAPTURE(GetActiveSubroutineUniformiv, isCallValid, context, programPacked, shadertype,447index, pname, values);448}449else450{451GenerateContextLostErrorOnCurrentGlobalContext();452}453}454455void GL_APIENTRY GL_GetProgramStageiv(GLuint program,456GLenum shadertype,457GLenum pname,458GLint *values)459{460Context *context = GetValidGlobalContext();461EVENT(context, GLGetProgramStageiv,462"context = %d, program = %u, shadertype = %s, pname = %s, values = 0x%016" PRIxPTR "",463CID(context), program, GLenumToString(GLenumGroup::ShaderType, shadertype),464GLenumToString(GLenumGroup::ProgramStagePName, pname), (uintptr_t)values);465466if (context)467{468ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);469std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);470bool isCallValid =471(context->skipValidation() ||472ValidateGetProgramStageiv(context, programPacked, shadertype, pname, values));473if (isCallValid)474{475context->getProgramStageiv(programPacked, shadertype, pname, values);476}477ANGLE_CAPTURE(GetProgramStageiv, isCallValid, context, programPacked, shadertype, pname,478values);479}480else481{482GenerateContextLostErrorOnCurrentGlobalContext();483}484}485486void GL_APIENTRY GL_GetQueryIndexediv(GLenum target, GLuint index, GLenum pname, GLint *params)487{488Context *context = GetValidGlobalContext();489EVENT(context, GLGetQueryIndexediv,490"context = %d, target = %s, index = %u, pname = %s, params = 0x%016" PRIxPTR "",491CID(context), GLenumToString(GLenumGroup::DefaultGroup, target), index,492GLenumToString(GLenumGroup::QueryParameterName, pname), (uintptr_t)params);493494if (context)495{496std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);497bool isCallValid = (context->skipValidation() ||498ValidateGetQueryIndexediv(context, target, index, pname, params));499if (isCallValid)500{501context->getQueryIndexediv(target, index, pname, params);502}503ANGLE_CAPTURE(GetQueryIndexediv, isCallValid, context, target, index, pname, params);504}505else506{507GenerateContextLostErrorOnCurrentGlobalContext();508}509}510511GLuint GL_APIENTRY GL_GetSubroutineIndex(GLuint program, GLenum shadertype, const GLchar *name)512{513Context *context = GetValidGlobalContext();514EVENT(context, GLGetSubroutineIndex,515"context = %d, program = %u, shadertype = %s, name = 0x%016" PRIxPTR "", CID(context),516program, GLenumToString(GLenumGroup::ShaderType, shadertype), (uintptr_t)name);517518GLuint returnValue;519if (context)520{521ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);522std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);523bool isCallValid = (context->skipValidation() ||524ValidateGetSubroutineIndex(context, programPacked, shadertype, name));525if (isCallValid)526{527returnValue = context->getSubroutineIndex(programPacked, shadertype, name);528}529else530{531returnValue = GetDefaultReturnValue<angle::EntryPoint::GLGetSubroutineIndex, GLuint>();532}533ANGLE_CAPTURE(GetSubroutineIndex, isCallValid, context, programPacked, shadertype, name,534returnValue);535}536else537{538GenerateContextLostErrorOnCurrentGlobalContext();539returnValue = GetDefaultReturnValue<angle::EntryPoint::GLGetSubroutineIndex, GLuint>();540}541return returnValue;542}543544GLint GL_APIENTRY GL_GetSubroutineUniformLocation(GLuint program,545GLenum shadertype,546const GLchar *name)547{548Context *context = GetValidGlobalContext();549EVENT(context, GLGetSubroutineUniformLocation,550"context = %d, program = %u, shadertype = %s, name = 0x%016" PRIxPTR "", CID(context),551program, GLenumToString(GLenumGroup::ShaderType, shadertype), (uintptr_t)name);552553GLint returnValue;554if (context)555{556ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);557std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);558bool isCallValid =559(context->skipValidation() ||560ValidateGetSubroutineUniformLocation(context, programPacked, shadertype, name));561if (isCallValid)562{563returnValue = context->getSubroutineUniformLocation(programPacked, shadertype, name);564}565else566{567returnValue =568GetDefaultReturnValue<angle::EntryPoint::GLGetSubroutineUniformLocation, GLint>();569}570ANGLE_CAPTURE(GetSubroutineUniformLocation, isCallValid, context, programPacked, shadertype,571name, returnValue);572}573else574{575GenerateContextLostErrorOnCurrentGlobalContext();576returnValue =577GetDefaultReturnValue<angle::EntryPoint::GLGetSubroutineUniformLocation, GLint>();578}579return returnValue;580}581582void GL_APIENTRY GL_GetUniformSubroutineuiv(GLenum shadertype, GLint location, GLuint *params)583{584Context *context = GetValidGlobalContext();585EVENT(context, GLGetUniformSubroutineuiv,586"context = %d, shadertype = %s, location = %d, params = 0x%016" PRIxPTR "", CID(context),587GLenumToString(GLenumGroup::ShaderType, shadertype), location, (uintptr_t)params);588589if (context)590{591std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);592bool isCallValid = (context->skipValidation() ||593ValidateGetUniformSubroutineuiv(context, shadertype, location, params));594if (isCallValid)595{596context->getUniformSubroutineuiv(shadertype, location, params);597}598ANGLE_CAPTURE(GetUniformSubroutineuiv, isCallValid, context, shadertype, location, params);599}600else601{602GenerateContextLostErrorOnCurrentGlobalContext();603}604}605606void GL_APIENTRY GL_GetUniformdv(GLuint program, GLint location, GLdouble *params)607{608Context *context = GetValidGlobalContext();609EVENT(context, GLGetUniformdv,610"context = %d, program = %u, location = %d, params = 0x%016" PRIxPTR "", CID(context),611program, location, (uintptr_t)params);612613if (context)614{615ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);616UniformLocation locationPacked = PackParam<UniformLocation>(location);617std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);618bool isCallValid = (context->skipValidation() ||619ValidateGetUniformdv(context, programPacked, locationPacked, params));620if (isCallValid)621{622context->getUniformdv(programPacked, locationPacked, params);623}624ANGLE_CAPTURE(GetUniformdv, isCallValid, context, programPacked, locationPacked, params);625}626else627{628GenerateContextLostErrorOnCurrentGlobalContext();629}630}631632GLboolean GL_APIENTRY GL_IsTransformFeedback(GLuint id)633{634Context *context = GetValidGlobalContext();635EVENT(context, GLIsTransformFeedback, "context = %d, id = %u", CID(context), id);636637GLboolean returnValue;638if (context)639{640TransformFeedbackID idPacked = PackParam<TransformFeedbackID>(id);641std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);642bool isCallValid =643(context->skipValidation() || ValidateIsTransformFeedback(context, idPacked));644if (isCallValid)645{646returnValue = context->isTransformFeedback(idPacked);647}648else649{650returnValue =651GetDefaultReturnValue<angle::EntryPoint::GLIsTransformFeedback, GLboolean>();652}653ANGLE_CAPTURE(IsTransformFeedback, isCallValid, context, idPacked, returnValue);654}655else656{657GenerateContextLostErrorOnCurrentGlobalContext();658returnValue = GetDefaultReturnValue<angle::EntryPoint::GLIsTransformFeedback, GLboolean>();659}660return returnValue;661}662663void GL_APIENTRY GL_MinSampleShading(GLfloat value)664{665Context *context = GetValidGlobalContext();666EVENT(context, GLMinSampleShading, "context = %d, value = %f", CID(context), value);667668if (context)669{670std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);671bool isCallValid = (context->skipValidation() || ValidateMinSampleShading(context, value));672if (isCallValid)673{674context->minSampleShading(value);675}676ANGLE_CAPTURE(MinSampleShading, isCallValid, context, value);677}678else679{680GenerateContextLostErrorOnCurrentGlobalContext();681}682}683684void GL_APIENTRY GL_PatchParameterfv(GLenum pname, const GLfloat *values)685{686Context *context = GetValidGlobalContext();687EVENT(context, GLPatchParameterfv, "context = %d, pname = %s, values = 0x%016" PRIxPTR "",688CID(context), GLenumToString(GLenumGroup::PatchParameterName, pname), (uintptr_t)values);689690if (context)691{692std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);693bool isCallValid =694(context->skipValidation() || ValidatePatchParameterfv(context, pname, values));695if (isCallValid)696{697context->patchParameterfv(pname, values);698}699ANGLE_CAPTURE(PatchParameterfv, isCallValid, context, pname, values);700}701else702{703GenerateContextLostErrorOnCurrentGlobalContext();704}705}706707void GL_APIENTRY GL_PatchParameteri(GLenum pname, GLint value)708{709Context *context = GetValidGlobalContext();710EVENT(context, GLPatchParameteri, "context = %d, pname = %s, value = %d", CID(context),711GLenumToString(GLenumGroup::PatchParameterName, pname), value);712713if (context)714{715std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);716bool isCallValid =717(context->skipValidation() || ValidatePatchParameteri(context, pname, value));718if (isCallValid)719{720context->patchParameteri(pname, value);721}722ANGLE_CAPTURE(PatchParameteri, isCallValid, context, pname, value);723}724else725{726GenerateContextLostErrorOnCurrentGlobalContext();727}728}729730void GL_APIENTRY GL_PauseTransformFeedback()731{732Context *context = GetValidGlobalContext();733EVENT(context, GLPauseTransformFeedback, "context = %d", CID(context));734735if (context)736{737std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);738bool isCallValid = (context->skipValidation() || ValidatePauseTransformFeedback(context));739if (isCallValid)740{741context->pauseTransformFeedback();742}743ANGLE_CAPTURE(PauseTransformFeedback, isCallValid, context);744}745else746{747GenerateContextLostErrorOnCurrentGlobalContext();748}749}750751void GL_APIENTRY GL_ResumeTransformFeedback()752{753Context *context = GetValidGlobalContext();754EVENT(context, GLResumeTransformFeedback, "context = %d", CID(context));755756if (context)757{758std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);759bool isCallValid = (context->skipValidation() || ValidateResumeTransformFeedback(context));760if (isCallValid)761{762context->resumeTransformFeedback();763}764ANGLE_CAPTURE(ResumeTransformFeedback, isCallValid, context);765}766else767{768GenerateContextLostErrorOnCurrentGlobalContext();769}770}771772void GL_APIENTRY GL_Uniform1d(GLint location, GLdouble x)773{774Context *context = GetValidGlobalContext();775EVENT(context, GLUniform1d, "context = %d, location = %d, x = %f", CID(context), location, x);776777if (context)778{779UniformLocation locationPacked = PackParam<UniformLocation>(location);780std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);781bool isCallValid =782(context->skipValidation() || ValidateUniform1d(context, locationPacked, x));783if (isCallValid)784{785context->uniform1d(locationPacked, x);786}787ANGLE_CAPTURE(Uniform1d, isCallValid, context, locationPacked, x);788}789else790{791GenerateContextLostErrorOnCurrentGlobalContext();792}793}794795void GL_APIENTRY GL_Uniform1dv(GLint location, GLsizei count, const GLdouble *value)796{797Context *context = GetValidGlobalContext();798EVENT(context, GLUniform1dv,799"context = %d, location = %d, count = %d, value = 0x%016" PRIxPTR "", CID(context),800location, count, (uintptr_t)value);801802if (context)803{804UniformLocation locationPacked = PackParam<UniformLocation>(location);805std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);806bool isCallValid = (context->skipValidation() ||807ValidateUniform1dv(context, locationPacked, count, value));808if (isCallValid)809{810context->uniform1dv(locationPacked, count, value);811}812ANGLE_CAPTURE(Uniform1dv, isCallValid, context, locationPacked, count, value);813}814else815{816GenerateContextLostErrorOnCurrentGlobalContext();817}818}819820void GL_APIENTRY GL_Uniform2d(GLint location, GLdouble x, GLdouble y)821{822Context *context = GetValidGlobalContext();823EVENT(context, GLUniform2d, "context = %d, location = %d, x = %f, y = %f", CID(context),824location, x, y);825826if (context)827{828UniformLocation locationPacked = PackParam<UniformLocation>(location);829std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);830bool isCallValid =831(context->skipValidation() || ValidateUniform2d(context, locationPacked, x, y));832if (isCallValid)833{834context->uniform2d(locationPacked, x, y);835}836ANGLE_CAPTURE(Uniform2d, isCallValid, context, locationPacked, x, y);837}838else839{840GenerateContextLostErrorOnCurrentGlobalContext();841}842}843844void GL_APIENTRY GL_Uniform2dv(GLint location, GLsizei count, const GLdouble *value)845{846Context *context = GetValidGlobalContext();847EVENT(context, GLUniform2dv,848"context = %d, location = %d, count = %d, value = 0x%016" PRIxPTR "", CID(context),849location, count, (uintptr_t)value);850851if (context)852{853UniformLocation locationPacked = PackParam<UniformLocation>(location);854std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);855bool isCallValid = (context->skipValidation() ||856ValidateUniform2dv(context, locationPacked, count, value));857if (isCallValid)858{859context->uniform2dv(locationPacked, count, value);860}861ANGLE_CAPTURE(Uniform2dv, isCallValid, context, locationPacked, count, value);862}863else864{865GenerateContextLostErrorOnCurrentGlobalContext();866}867}868869void GL_APIENTRY GL_Uniform3d(GLint location, GLdouble x, GLdouble y, GLdouble z)870{871Context *context = GetValidGlobalContext();872EVENT(context, GLUniform3d, "context = %d, location = %d, x = %f, y = %f, z = %f", CID(context),873location, x, y, z);874875if (context)876{877UniformLocation locationPacked = PackParam<UniformLocation>(location);878std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);879bool isCallValid =880(context->skipValidation() || ValidateUniform3d(context, locationPacked, x, y, z));881if (isCallValid)882{883context->uniform3d(locationPacked, x, y, z);884}885ANGLE_CAPTURE(Uniform3d, isCallValid, context, locationPacked, x, y, z);886}887else888{889GenerateContextLostErrorOnCurrentGlobalContext();890}891}892893void GL_APIENTRY GL_Uniform3dv(GLint location, GLsizei count, const GLdouble *value)894{895Context *context = GetValidGlobalContext();896EVENT(context, GLUniform3dv,897"context = %d, location = %d, count = %d, value = 0x%016" PRIxPTR "", CID(context),898location, count, (uintptr_t)value);899900if (context)901{902UniformLocation locationPacked = PackParam<UniformLocation>(location);903std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);904bool isCallValid = (context->skipValidation() ||905ValidateUniform3dv(context, locationPacked, count, value));906if (isCallValid)907{908context->uniform3dv(locationPacked, count, value);909}910ANGLE_CAPTURE(Uniform3dv, isCallValid, context, locationPacked, count, value);911}912else913{914GenerateContextLostErrorOnCurrentGlobalContext();915}916}917918void GL_APIENTRY GL_Uniform4d(GLint location, GLdouble x, GLdouble y, GLdouble z, GLdouble w)919{920Context *context = GetValidGlobalContext();921EVENT(context, GLUniform4d, "context = %d, location = %d, x = %f, y = %f, z = %f, w = %f",922CID(context), location, x, y, z, w);923924if (context)925{926UniformLocation locationPacked = PackParam<UniformLocation>(location);927std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);928bool isCallValid =929(context->skipValidation() || ValidateUniform4d(context, locationPacked, x, y, z, w));930if (isCallValid)931{932context->uniform4d(locationPacked, x, y, z, w);933}934ANGLE_CAPTURE(Uniform4d, isCallValid, context, locationPacked, x, y, z, w);935}936else937{938GenerateContextLostErrorOnCurrentGlobalContext();939}940}941942void GL_APIENTRY GL_Uniform4dv(GLint location, GLsizei count, const GLdouble *value)943{944Context *context = GetValidGlobalContext();945EVENT(context, GLUniform4dv,946"context = %d, location = %d, count = %d, value = 0x%016" PRIxPTR "", CID(context),947location, count, (uintptr_t)value);948949if (context)950{951UniformLocation locationPacked = PackParam<UniformLocation>(location);952std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);953bool isCallValid = (context->skipValidation() ||954ValidateUniform4dv(context, locationPacked, count, value));955if (isCallValid)956{957context->uniform4dv(locationPacked, count, value);958}959ANGLE_CAPTURE(Uniform4dv, isCallValid, context, locationPacked, count, value);960}961else962{963GenerateContextLostErrorOnCurrentGlobalContext();964}965}966967void GL_APIENTRY GL_UniformMatrix2dv(GLint location,968GLsizei count,969GLboolean transpose,970const GLdouble *value)971{972Context *context = GetValidGlobalContext();973EVENT(context, GLUniformMatrix2dv,974"context = %d, location = %d, count = %d, transpose = %s, value = 0x%016" PRIxPTR "",975CID(context), location, count, GLbooleanToString(transpose), (uintptr_t)value);976977if (context)978{979UniformLocation locationPacked = PackParam<UniformLocation>(location);980std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);981bool isCallValid =982(context->skipValidation() ||983ValidateUniformMatrix2dv(context, locationPacked, count, transpose, value));984if (isCallValid)985{986context->uniformMatrix2dv(locationPacked, count, transpose, value);987}988ANGLE_CAPTURE(UniformMatrix2dv, isCallValid, context, locationPacked, count, transpose,989value);990}991else992{993GenerateContextLostErrorOnCurrentGlobalContext();994}995}996997void GL_APIENTRY GL_UniformMatrix2x3dv(GLint location,998GLsizei count,999GLboolean transpose,1000const GLdouble *value)1001{1002Context *context = GetValidGlobalContext();1003EVENT(context, GLUniformMatrix2x3dv,1004"context = %d, location = %d, count = %d, transpose = %s, value = 0x%016" PRIxPTR "",1005CID(context), location, count, GLbooleanToString(transpose), (uintptr_t)value);10061007if (context)1008{1009UniformLocation locationPacked = PackParam<UniformLocation>(location);1010std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);1011bool isCallValid =1012(context->skipValidation() ||1013ValidateUniformMatrix2x3dv(context, locationPacked, count, transpose, value));1014if (isCallValid)1015{1016context->uniformMatrix2x3dv(locationPacked, count, transpose, value);1017}1018ANGLE_CAPTURE(UniformMatrix2x3dv, isCallValid, context, locationPacked, count, transpose,1019value);1020}1021else1022{1023GenerateContextLostErrorOnCurrentGlobalContext();1024}1025}10261027void GL_APIENTRY GL_UniformMatrix2x4dv(GLint location,1028GLsizei count,1029GLboolean transpose,1030const GLdouble *value)1031{1032Context *context = GetValidGlobalContext();1033EVENT(context, GLUniformMatrix2x4dv,1034"context = %d, location = %d, count = %d, transpose = %s, value = 0x%016" PRIxPTR "",1035CID(context), location, count, GLbooleanToString(transpose), (uintptr_t)value);10361037if (context)1038{1039UniformLocation locationPacked = PackParam<UniformLocation>(location);1040std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);1041bool isCallValid =1042(context->skipValidation() ||1043ValidateUniformMatrix2x4dv(context, locationPacked, count, transpose, value));1044if (isCallValid)1045{1046context->uniformMatrix2x4dv(locationPacked, count, transpose, value);1047}1048ANGLE_CAPTURE(UniformMatrix2x4dv, isCallValid, context, locationPacked, count, transpose,1049value);1050}1051else1052{1053GenerateContextLostErrorOnCurrentGlobalContext();1054}1055}10561057void GL_APIENTRY GL_UniformMatrix3dv(GLint location,1058GLsizei count,1059GLboolean transpose,1060const GLdouble *value)1061{1062Context *context = GetValidGlobalContext();1063EVENT(context, GLUniformMatrix3dv,1064"context = %d, location = %d, count = %d, transpose = %s, value = 0x%016" PRIxPTR "",1065CID(context), location, count, GLbooleanToString(transpose), (uintptr_t)value);10661067if (context)1068{1069UniformLocation locationPacked = PackParam<UniformLocation>(location);1070std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);1071bool isCallValid =1072(context->skipValidation() ||1073ValidateUniformMatrix3dv(context, locationPacked, count, transpose, value));1074if (isCallValid)1075{1076context->uniformMatrix3dv(locationPacked, count, transpose, value);1077}1078ANGLE_CAPTURE(UniformMatrix3dv, isCallValid, context, locationPacked, count, transpose,1079value);1080}1081else1082{1083GenerateContextLostErrorOnCurrentGlobalContext();1084}1085}10861087void GL_APIENTRY GL_UniformMatrix3x2dv(GLint location,1088GLsizei count,1089GLboolean transpose,1090const GLdouble *value)1091{1092Context *context = GetValidGlobalContext();1093EVENT(context, GLUniformMatrix3x2dv,1094"context = %d, location = %d, count = %d, transpose = %s, value = 0x%016" PRIxPTR "",1095CID(context), location, count, GLbooleanToString(transpose), (uintptr_t)value);10961097if (context)1098{1099UniformLocation locationPacked = PackParam<UniformLocation>(location);1100std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);1101bool isCallValid =1102(context->skipValidation() ||1103ValidateUniformMatrix3x2dv(context, locationPacked, count, transpose, value));1104if (isCallValid)1105{1106context->uniformMatrix3x2dv(locationPacked, count, transpose, value);1107}1108ANGLE_CAPTURE(UniformMatrix3x2dv, isCallValid, context, locationPacked, count, transpose,1109value);1110}1111else1112{1113GenerateContextLostErrorOnCurrentGlobalContext();1114}1115}11161117void GL_APIENTRY GL_UniformMatrix3x4dv(GLint location,1118GLsizei count,1119GLboolean transpose,1120const GLdouble *value)1121{1122Context *context = GetValidGlobalContext();1123EVENT(context, GLUniformMatrix3x4dv,1124"context = %d, location = %d, count = %d, transpose = %s, value = 0x%016" PRIxPTR "",1125CID(context), location, count, GLbooleanToString(transpose), (uintptr_t)value);11261127if (context)1128{1129UniformLocation locationPacked = PackParam<UniformLocation>(location);1130std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);1131bool isCallValid =1132(context->skipValidation() ||1133ValidateUniformMatrix3x4dv(context, locationPacked, count, transpose, value));1134if (isCallValid)1135{1136context->uniformMatrix3x4dv(locationPacked, count, transpose, value);1137}1138ANGLE_CAPTURE(UniformMatrix3x4dv, isCallValid, context, locationPacked, count, transpose,1139value);1140}1141else1142{1143GenerateContextLostErrorOnCurrentGlobalContext();1144}1145}11461147void GL_APIENTRY GL_UniformMatrix4dv(GLint location,1148GLsizei count,1149GLboolean transpose,1150const GLdouble *value)1151{1152Context *context = GetValidGlobalContext();1153EVENT(context, GLUniformMatrix4dv,1154"context = %d, location = %d, count = %d, transpose = %s, value = 0x%016" PRIxPTR "",1155CID(context), location, count, GLbooleanToString(transpose), (uintptr_t)value);11561157if (context)1158{1159UniformLocation locationPacked = PackParam<UniformLocation>(location);1160std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);1161bool isCallValid =1162(context->skipValidation() ||1163ValidateUniformMatrix4dv(context, locationPacked, count, transpose, value));1164if (isCallValid)1165{1166context->uniformMatrix4dv(locationPacked, count, transpose, value);1167}1168ANGLE_CAPTURE(UniformMatrix4dv, isCallValid, context, locationPacked, count, transpose,1169value);1170}1171else1172{1173GenerateContextLostErrorOnCurrentGlobalContext();1174}1175}11761177void GL_APIENTRY GL_UniformMatrix4x2dv(GLint location,1178GLsizei count,1179GLboolean transpose,1180const GLdouble *value)1181{1182Context *context = GetValidGlobalContext();1183EVENT(context, GLUniformMatrix4x2dv,1184"context = %d, location = %d, count = %d, transpose = %s, value = 0x%016" PRIxPTR "",1185CID(context), location, count, GLbooleanToString(transpose), (uintptr_t)value);11861187if (context)1188{1189UniformLocation locationPacked = PackParam<UniformLocation>(location);1190std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);1191bool isCallValid =1192(context->skipValidation() ||1193ValidateUniformMatrix4x2dv(context, locationPacked, count, transpose, value));1194if (isCallValid)1195{1196context->uniformMatrix4x2dv(locationPacked, count, transpose, value);1197}1198ANGLE_CAPTURE(UniformMatrix4x2dv, isCallValid, context, locationPacked, count, transpose,1199value);1200}1201else1202{1203GenerateContextLostErrorOnCurrentGlobalContext();1204}1205}12061207void GL_APIENTRY GL_UniformMatrix4x3dv(GLint location,1208GLsizei count,1209GLboolean transpose,1210const GLdouble *value)1211{1212Context *context = GetValidGlobalContext();1213EVENT(context, GLUniformMatrix4x3dv,1214"context = %d, location = %d, count = %d, transpose = %s, value = 0x%016" PRIxPTR "",1215CID(context), location, count, GLbooleanToString(transpose), (uintptr_t)value);12161217if (context)1218{1219UniformLocation locationPacked = PackParam<UniformLocation>(location);1220std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);1221bool isCallValid =1222(context->skipValidation() ||1223ValidateUniformMatrix4x3dv(context, locationPacked, count, transpose, value));1224if (isCallValid)1225{1226context->uniformMatrix4x3dv(locationPacked, count, transpose, value);1227}1228ANGLE_CAPTURE(UniformMatrix4x3dv, isCallValid, context, locationPacked, count, transpose,1229value);1230}1231else1232{1233GenerateContextLostErrorOnCurrentGlobalContext();1234}1235}12361237void GL_APIENTRY GL_UniformSubroutinesuiv(GLenum shadertype, GLsizei count, const GLuint *indices)1238{1239Context *context = GetValidGlobalContext();1240EVENT(context, GLUniformSubroutinesuiv,1241"context = %d, shadertype = %s, count = %d, indices = 0x%016" PRIxPTR "", CID(context),1242GLenumToString(GLenumGroup::ShaderType, shadertype), count, (uintptr_t)indices);12431244if (context)1245{1246std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);1247bool isCallValid = (context->skipValidation() ||1248ValidateUniformSubroutinesuiv(context, shadertype, count, indices));1249if (isCallValid)1250{1251context->uniformSubroutinesuiv(shadertype, count, indices);1252}1253ANGLE_CAPTURE(UniformSubroutinesuiv, isCallValid, context, shadertype, count, indices);1254}1255else1256{1257GenerateContextLostErrorOnCurrentGlobalContext();1258}1259}12601261// GL 4.11262void GL_APIENTRY GL_ActiveShaderProgram(GLuint pipeline, GLuint program)1263{1264Context *context = GetValidGlobalContext();1265EVENT(context, GLActiveShaderProgram, "context = %d, pipeline = %u, program = %u", CID(context),1266pipeline, program);12671268if (context)1269{1270ProgramPipelineID pipelinePacked = PackParam<ProgramPipelineID>(pipeline);1271ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);1272std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);1273bool isCallValid = (context->skipValidation() ||1274ValidateActiveShaderProgram(context, pipelinePacked, programPacked));1275if (isCallValid)1276{1277context->activeShaderProgram(pipelinePacked, programPacked);1278}1279ANGLE_CAPTURE(ActiveShaderProgram, isCallValid, context, pipelinePacked, programPacked);1280}1281else1282{1283GenerateContextLostErrorOnCurrentGlobalContext();1284}1285}12861287void GL_APIENTRY GL_BindProgramPipeline(GLuint pipeline)1288{1289Context *context = GetValidGlobalContext();1290EVENT(context, GLBindProgramPipeline, "context = %d, pipeline = %u", CID(context), pipeline);12911292if (context)1293{1294ProgramPipelineID pipelinePacked = PackParam<ProgramPipelineID>(pipeline);1295std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);1296bool isCallValid =1297(context->skipValidation() || ValidateBindProgramPipeline(context, pipelinePacked));1298if (isCallValid)1299{1300context->bindProgramPipeline(pipelinePacked);1301}1302ANGLE_CAPTURE(BindProgramPipeline, isCallValid, context, pipelinePacked);1303}1304else1305{1306GenerateContextLostErrorOnCurrentGlobalContext();1307}1308}13091310void GL_APIENTRY GL_ClearDepthf(GLfloat d)1311{1312Context *context = GetValidGlobalContext();1313EVENT(context, GLClearDepthf, "context = %d, d = %f", CID(context), d);13141315if (context)1316{1317std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);1318bool isCallValid = (context->skipValidation() || ValidateClearDepthf(context, d));1319if (isCallValid)1320{1321context->clearDepthf(d);1322}1323ANGLE_CAPTURE(ClearDepthf, isCallValid, context, d);1324}1325else1326{1327GenerateContextLostErrorOnCurrentGlobalContext();1328}1329}13301331GLuint GL_APIENTRY GL_CreateShaderProgramv(GLenum type, GLsizei count, const GLchar *const *strings)1332{1333Context *context = GetValidGlobalContext();1334EVENT(context, GLCreateShaderProgramv,1335"context = %d, type = %s, count = %d, strings = 0x%016" PRIxPTR "", CID(context),1336GLenumToString(GLenumGroup::ShaderType, type), count, (uintptr_t)strings);13371338GLuint returnValue;1339if (context)1340{1341ShaderType typePacked = PackParam<ShaderType>(type);1342std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);1343bool isCallValid = (context->skipValidation() ||1344ValidateCreateShaderProgramv(context, typePacked, count, strings));1345if (isCallValid)1346{1347returnValue = context->createShaderProgramv(typePacked, count, strings);1348}1349else1350{1351returnValue =1352GetDefaultReturnValue<angle::EntryPoint::GLCreateShaderProgramv, GLuint>();1353}1354ANGLE_CAPTURE(CreateShaderProgramv, isCallValid, context, typePacked, count, strings,1355returnValue);1356}1357else1358{1359GenerateContextLostErrorOnCurrentGlobalContext();1360returnValue = GetDefaultReturnValue<angle::EntryPoint::GLCreateShaderProgramv, GLuint>();1361}1362return returnValue;1363}13641365void GL_APIENTRY GL_DeleteProgramPipelines(GLsizei n, const GLuint *pipelines)1366{1367Context *context = GetValidGlobalContext();1368EVENT(context, GLDeleteProgramPipelines, "context = %d, n = %d, pipelines = 0x%016" PRIxPTR "",1369CID(context), n, (uintptr_t)pipelines);13701371if (context)1372{1373const ProgramPipelineID *pipelinesPacked = PackParam<const ProgramPipelineID *>(pipelines);1374std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);1375bool isCallValid = (context->skipValidation() ||1376ValidateDeleteProgramPipelines(context, n, pipelinesPacked));1377if (isCallValid)1378{1379context->deleteProgramPipelines(n, pipelinesPacked);1380}1381ANGLE_CAPTURE(DeleteProgramPipelines, isCallValid, context, n, pipelinesPacked);1382}1383else1384{1385GenerateContextLostErrorOnCurrentGlobalContext();1386}1387}13881389void GL_APIENTRY GL_DepthRangeArrayv(GLuint first, GLsizei count, const GLdouble *v)1390{1391Context *context = GetValidGlobalContext();1392EVENT(context, GLDepthRangeArrayv,1393"context = %d, first = %u, count = %d, v = 0x%016" PRIxPTR "", CID(context), first, count,1394(uintptr_t)v);13951396if (context)1397{1398std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);1399bool isCallValid =1400(context->skipValidation() || ValidateDepthRangeArrayv(context, first, count, v));1401if (isCallValid)1402{1403context->depthRangeArrayv(first, count, v);1404}1405ANGLE_CAPTURE(DepthRangeArrayv, isCallValid, context, first, count, v);1406}1407else1408{1409GenerateContextLostErrorOnCurrentGlobalContext();1410}1411}14121413void GL_APIENTRY GL_DepthRangeIndexed(GLuint index, GLdouble n, GLdouble f)1414{1415Context *context = GetValidGlobalContext();1416EVENT(context, GLDepthRangeIndexed, "context = %d, index = %u, n = %f, f = %f", CID(context),1417index, n, f);14181419if (context)1420{1421std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);1422bool isCallValid =1423(context->skipValidation() || ValidateDepthRangeIndexed(context, index, n, f));1424if (isCallValid)1425{1426context->depthRangeIndexed(index, n, f);1427}1428ANGLE_CAPTURE(DepthRangeIndexed, isCallValid, context, index, n, f);1429}1430else1431{1432GenerateContextLostErrorOnCurrentGlobalContext();1433}1434}14351436void GL_APIENTRY GL_DepthRangef(GLfloat n, GLfloat f)1437{1438Context *context = GetValidGlobalContext();1439EVENT(context, GLDepthRangef, "context = %d, n = %f, f = %f", CID(context), n, f);14401441if (context)1442{1443std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);1444bool isCallValid = (context->skipValidation() || ValidateDepthRangef(context, n, f));1445if (isCallValid)1446{1447context->depthRangef(n, f);1448}1449ANGLE_CAPTURE(DepthRangef, isCallValid, context, n, f);1450}1451else1452{1453GenerateContextLostErrorOnCurrentGlobalContext();1454}1455}14561457void GL_APIENTRY GL_GenProgramPipelines(GLsizei n, GLuint *pipelines)1458{1459Context *context = GetValidGlobalContext();1460EVENT(context, GLGenProgramPipelines, "context = %d, n = %d, pipelines = 0x%016" PRIxPTR "",1461CID(context), n, (uintptr_t)pipelines);14621463if (context)1464{1465ProgramPipelineID *pipelinesPacked = PackParam<ProgramPipelineID *>(pipelines);1466std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);1467bool isCallValid =1468(context->skipValidation() || ValidateGenProgramPipelines(context, n, pipelinesPacked));1469if (isCallValid)1470{1471context->genProgramPipelines(n, pipelinesPacked);1472}1473ANGLE_CAPTURE(GenProgramPipelines, isCallValid, context, n, pipelinesPacked);1474}1475else1476{1477GenerateContextLostErrorOnCurrentGlobalContext();1478}1479}14801481void GL_APIENTRY GL_GetDoublei_v(GLenum target, GLuint index, GLdouble *data)1482{1483Context *context = GetValidGlobalContext();1484EVENT(context, GLGetDoublei_v,1485"context = %d, target = %s, index = %u, data = 0x%016" PRIxPTR "", CID(context),1486GLenumToString(GLenumGroup::TypeEnum, target), index, (uintptr_t)data);14871488if (context)1489{1490std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);1491bool isCallValid =1492(context->skipValidation() || ValidateGetDoublei_v(context, target, index, data));1493if (isCallValid)1494{1495context->getDoublei_v(target, index, data);1496}1497ANGLE_CAPTURE(GetDoublei_v, isCallValid, context, target, index, data);1498}1499else1500{1501GenerateContextLostErrorOnCurrentGlobalContext();1502}1503}15041505void GL_APIENTRY GL_GetFloati_v(GLenum target, GLuint index, GLfloat *data)1506{1507Context *context = GetValidGlobalContext();1508EVENT(context, GLGetFloati_v, "context = %d, target = %s, index = %u, data = 0x%016" PRIxPTR "",1509CID(context), GLenumToString(GLenumGroup::TypeEnum, target), index, (uintptr_t)data);15101511if (context)1512{1513std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);1514bool isCallValid =1515(context->skipValidation() || ValidateGetFloati_v(context, target, index, data));1516if (isCallValid)1517{1518context->getFloati_v(target, index, data);1519}1520ANGLE_CAPTURE(GetFloati_v, isCallValid, context, target, index, data);1521}1522else1523{1524GenerateContextLostErrorOnCurrentGlobalContext();1525}1526}15271528void GL_APIENTRY GL_GetProgramBinary(GLuint program,1529GLsizei bufSize,1530GLsizei *length,1531GLenum *binaryFormat,1532void *binary)1533{1534Context *context = GetValidGlobalContext();1535EVENT(context, GLGetProgramBinary,1536"context = %d, program = %u, bufSize = %d, length = 0x%016" PRIxPTR1537", binaryFormat = 0x%016" PRIxPTR ", binary = 0x%016" PRIxPTR "",1538CID(context), program, bufSize, (uintptr_t)length, (uintptr_t)binaryFormat,1539(uintptr_t)binary);15401541if (context)1542{1543ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);1544std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);1545bool isCallValid =1546(context->skipValidation() || ValidateGetProgramBinary(context, programPacked, bufSize,1547length, binaryFormat, binary));1548if (isCallValid)1549{1550context->getProgramBinary(programPacked, bufSize, length, binaryFormat, binary);1551}1552ANGLE_CAPTURE(GetProgramBinary, isCallValid, context, programPacked, bufSize, length,1553binaryFormat, binary);1554}1555else1556{1557GenerateContextLostErrorOnCurrentGlobalContext();1558}1559}15601561void GL_APIENTRY GL_GetProgramPipelineInfoLog(GLuint pipeline,1562GLsizei bufSize,1563GLsizei *length,1564GLchar *infoLog)1565{1566Context *context = GetValidGlobalContext();1567EVENT(context, GLGetProgramPipelineInfoLog,1568"context = %d, pipeline = %u, bufSize = %d, length = 0x%016" PRIxPTR1569", infoLog = 0x%016" PRIxPTR "",1570CID(context), pipeline, bufSize, (uintptr_t)length, (uintptr_t)infoLog);15711572if (context)1573{1574ProgramPipelineID pipelinePacked = PackParam<ProgramPipelineID>(pipeline);1575std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);1576bool isCallValid =1577(context->skipValidation() ||1578ValidateGetProgramPipelineInfoLog(context, pipelinePacked, bufSize, length, infoLog));1579if (isCallValid)1580{1581context->getProgramPipelineInfoLog(pipelinePacked, bufSize, length, infoLog);1582}1583ANGLE_CAPTURE(GetProgramPipelineInfoLog, isCallValid, context, pipelinePacked, bufSize,1584length, infoLog);1585}1586else1587{1588GenerateContextLostErrorOnCurrentGlobalContext();1589}1590}15911592void GL_APIENTRY GL_GetProgramPipelineiv(GLuint pipeline, GLenum pname, GLint *params)1593{1594Context *context = GetValidGlobalContext();1595EVENT(context, GLGetProgramPipelineiv,1596"context = %d, pipeline = %u, pname = %s, params = 0x%016" PRIxPTR "", CID(context),1597pipeline, GLenumToString(GLenumGroup::PipelineParameterName, pname), (uintptr_t)params);15981599if (context)1600{1601ProgramPipelineID pipelinePacked = PackParam<ProgramPipelineID>(pipeline);1602std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);1603bool isCallValid = (context->skipValidation() ||1604ValidateGetProgramPipelineiv(context, pipelinePacked, pname, params));1605if (isCallValid)1606{1607context->getProgramPipelineiv(pipelinePacked, pname, params);1608}1609ANGLE_CAPTURE(GetProgramPipelineiv, isCallValid, context, pipelinePacked, pname, params);1610}1611else1612{1613GenerateContextLostErrorOnCurrentGlobalContext();1614}1615}16161617void GL_APIENTRY GL_GetShaderPrecisionFormat(GLenum shadertype,1618GLenum precisiontype,1619GLint *range,1620GLint *precision)1621{1622Context *context = GetValidGlobalContext();1623EVENT(context, GLGetShaderPrecisionFormat,1624"context = %d, shadertype = %s, precisiontype = %s, range = 0x%016" PRIxPTR1625", precision = 0x%016" PRIxPTR "",1626CID(context), GLenumToString(GLenumGroup::ShaderType, shadertype),1627GLenumToString(GLenumGroup::PrecisionType, precisiontype), (uintptr_t)range,1628(uintptr_t)precision);16291630if (context)1631{1632std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);1633bool isCallValid = (context->skipValidation() ||1634ValidateGetShaderPrecisionFormat(context, shadertype, precisiontype,1635range, precision));1636if (isCallValid)1637{1638context->getShaderPrecisionFormat(shadertype, precisiontype, range, precision);1639}1640ANGLE_CAPTURE(GetShaderPrecisionFormat, isCallValid, context, shadertype, precisiontype,1641range, precision);1642}1643else1644{1645GenerateContextLostErrorOnCurrentGlobalContext();1646}1647}16481649void GL_APIENTRY GL_GetVertexAttribLdv(GLuint index, GLenum pname, GLdouble *params)1650{1651Context *context = GetValidGlobalContext();1652EVENT(context, GLGetVertexAttribLdv,1653"context = %d, index = %u, pname = %s, params = 0x%016" PRIxPTR "", CID(context), index,1654GLenumToString(GLenumGroup::VertexAttribEnum, pname), (uintptr_t)params);16551656if (context)1657{1658std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);1659bool isCallValid = (context->skipValidation() ||1660ValidateGetVertexAttribLdv(context, index, pname, params));1661if (isCallValid)1662{1663context->getVertexAttribLdv(index, pname, params);1664}1665ANGLE_CAPTURE(GetVertexAttribLdv, isCallValid, context, index, pname, params);1666}1667else1668{1669GenerateContextLostErrorOnCurrentGlobalContext();1670}1671}16721673GLboolean GL_APIENTRY GL_IsProgramPipeline(GLuint pipeline)1674{1675Context *context = GetValidGlobalContext();1676EVENT(context, GLIsProgramPipeline, "context = %d, pipeline = %u", CID(context), pipeline);16771678GLboolean returnValue;1679if (context)1680{1681ProgramPipelineID pipelinePacked = PackParam<ProgramPipelineID>(pipeline);1682std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);1683bool isCallValid =1684(context->skipValidation() || ValidateIsProgramPipeline(context, pipelinePacked));1685if (isCallValid)1686{1687returnValue = context->isProgramPipeline(pipelinePacked);1688}1689else1690{1691returnValue =1692GetDefaultReturnValue<angle::EntryPoint::GLIsProgramPipeline, GLboolean>();1693}1694ANGLE_CAPTURE(IsProgramPipeline, isCallValid, context, pipelinePacked, returnValue);1695}1696else1697{1698GenerateContextLostErrorOnCurrentGlobalContext();1699returnValue = GetDefaultReturnValue<angle::EntryPoint::GLIsProgramPipeline, GLboolean>();1700}1701return returnValue;1702}17031704void GL_APIENTRY GL_ProgramBinary(GLuint program,1705GLenum binaryFormat,1706const void *binary,1707GLsizei length)1708{1709Context *context = GetValidGlobalContext();1710EVENT(context, GLProgramBinary,1711"context = %d, program = %u, binaryFormat = %s, binary = 0x%016" PRIxPTR ", length = %d",1712CID(context), program, GLenumToString(GLenumGroup::DefaultGroup, binaryFormat),1713(uintptr_t)binary, length);17141715if (context)1716{1717ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);1718std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);1719bool isCallValid =1720(context->skipValidation() ||1721ValidateProgramBinary(context, programPacked, binaryFormat, binary, length));1722if (isCallValid)1723{1724context->programBinary(programPacked, binaryFormat, binary, length);1725}1726ANGLE_CAPTURE(ProgramBinary, isCallValid, context, programPacked, binaryFormat, binary,1727length);1728}1729else1730{1731GenerateContextLostErrorOnCurrentGlobalContext();1732}1733}17341735void GL_APIENTRY GL_ProgramParameteri(GLuint program, GLenum pname, GLint value)1736{1737Context *context = GetValidGlobalContext();1738EVENT(context, GLProgramParameteri, "context = %d, program = %u, pname = %s, value = %d",1739CID(context), program, GLenumToString(GLenumGroup::ProgramParameterPName, pname), value);17401741if (context)1742{1743ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);1744std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);1745bool isCallValid = (context->skipValidation() ||1746ValidateProgramParameteri(context, programPacked, pname, value));1747if (isCallValid)1748{1749context->programParameteri(programPacked, pname, value);1750}1751ANGLE_CAPTURE(ProgramParameteri, isCallValid, context, programPacked, pname, value);1752}1753else1754{1755GenerateContextLostErrorOnCurrentGlobalContext();1756}1757}17581759void GL_APIENTRY GL_ProgramUniform1d(GLuint program, GLint location, GLdouble v0)1760{1761Context *context = GetValidGlobalContext();1762EVENT(context, GLProgramUniform1d, "context = %d, program = %u, location = %d, v0 = %f",1763CID(context), program, location, v0);17641765if (context)1766{1767ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);1768UniformLocation locationPacked = PackParam<UniformLocation>(location);1769std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);1770bool isCallValid = (context->skipValidation() ||1771ValidateProgramUniform1d(context, programPacked, locationPacked, v0));1772if (isCallValid)1773{1774context->programUniform1d(programPacked, locationPacked, v0);1775}1776ANGLE_CAPTURE(ProgramUniform1d, isCallValid, context, programPacked, locationPacked, v0);1777}1778else1779{1780GenerateContextLostErrorOnCurrentGlobalContext();1781}1782}17831784void GL_APIENTRY GL_ProgramUniform1dv(GLuint program,1785GLint location,1786GLsizei count,1787const GLdouble *value)1788{1789Context *context = GetValidGlobalContext();1790EVENT(context, GLProgramUniform1dv,1791"context = %d, program = %u, location = %d, count = %d, value = 0x%016" PRIxPTR "",1792CID(context), program, location, count, (uintptr_t)value);17931794if (context)1795{1796ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);1797UniformLocation locationPacked = PackParam<UniformLocation>(location);1798std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);1799bool isCallValid =1800(context->skipValidation() ||1801ValidateProgramUniform1dv(context, programPacked, locationPacked, count, value));1802if (isCallValid)1803{1804context->programUniform1dv(programPacked, locationPacked, count, value);1805}1806ANGLE_CAPTURE(ProgramUniform1dv, isCallValid, context, programPacked, locationPacked, count,1807value);1808}1809else1810{1811GenerateContextLostErrorOnCurrentGlobalContext();1812}1813}18141815void GL_APIENTRY GL_ProgramUniform1f(GLuint program, GLint location, GLfloat v0)1816{1817Context *context = GetValidGlobalContext();1818EVENT(context, GLProgramUniform1f, "context = %d, program = %u, location = %d, v0 = %f",1819CID(context), program, location, v0);18201821if (context)1822{1823ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);1824UniformLocation locationPacked = PackParam<UniformLocation>(location);1825std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);1826bool isCallValid = (context->skipValidation() ||1827ValidateProgramUniform1f(context, programPacked, locationPacked, v0));1828if (isCallValid)1829{1830context->programUniform1f(programPacked, locationPacked, v0);1831}1832ANGLE_CAPTURE(ProgramUniform1f, isCallValid, context, programPacked, locationPacked, v0);1833}1834else1835{1836GenerateContextLostErrorOnCurrentGlobalContext();1837}1838}18391840void GL_APIENTRY GL_ProgramUniform1fv(GLuint program,1841GLint location,1842GLsizei count,1843const GLfloat *value)1844{1845Context *context = GetValidGlobalContext();1846EVENT(context, GLProgramUniform1fv,1847"context = %d, program = %u, location = %d, count = %d, value = 0x%016" PRIxPTR "",1848CID(context), program, location, count, (uintptr_t)value);18491850if (context)1851{1852ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);1853UniformLocation locationPacked = PackParam<UniformLocation>(location);1854std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);1855bool isCallValid =1856(context->skipValidation() ||1857ValidateProgramUniform1fv(context, programPacked, locationPacked, count, value));1858if (isCallValid)1859{1860context->programUniform1fv(programPacked, locationPacked, count, value);1861}1862ANGLE_CAPTURE(ProgramUniform1fv, isCallValid, context, programPacked, locationPacked, count,1863value);1864}1865else1866{1867GenerateContextLostErrorOnCurrentGlobalContext();1868}1869}18701871void GL_APIENTRY GL_ProgramUniform1i(GLuint program, GLint location, GLint v0)1872{1873Context *context = GetValidGlobalContext();1874EVENT(context, GLProgramUniform1i, "context = %d, program = %u, location = %d, v0 = %d",1875CID(context), program, location, v0);18761877if (context)1878{1879ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);1880UniformLocation locationPacked = PackParam<UniformLocation>(location);1881std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);1882bool isCallValid = (context->skipValidation() ||1883ValidateProgramUniform1i(context, programPacked, locationPacked, v0));1884if (isCallValid)1885{1886context->programUniform1i(programPacked, locationPacked, v0);1887}1888ANGLE_CAPTURE(ProgramUniform1i, isCallValid, context, programPacked, locationPacked, v0);1889}1890else1891{1892GenerateContextLostErrorOnCurrentGlobalContext();1893}1894}18951896void GL_APIENTRY GL_ProgramUniform1iv(GLuint program,1897GLint location,1898GLsizei count,1899const GLint *value)1900{1901Context *context = GetValidGlobalContext();1902EVENT(context, GLProgramUniform1iv,1903"context = %d, program = %u, location = %d, count = %d, value = 0x%016" PRIxPTR "",1904CID(context), program, location, count, (uintptr_t)value);19051906if (context)1907{1908ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);1909UniformLocation locationPacked = PackParam<UniformLocation>(location);1910std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);1911bool isCallValid =1912(context->skipValidation() ||1913ValidateProgramUniform1iv(context, programPacked, locationPacked, count, value));1914if (isCallValid)1915{1916context->programUniform1iv(programPacked, locationPacked, count, value);1917}1918ANGLE_CAPTURE(ProgramUniform1iv, isCallValid, context, programPacked, locationPacked, count,1919value);1920}1921else1922{1923GenerateContextLostErrorOnCurrentGlobalContext();1924}1925}19261927void GL_APIENTRY GL_ProgramUniform1ui(GLuint program, GLint location, GLuint v0)1928{1929Context *context = GetValidGlobalContext();1930EVENT(context, GLProgramUniform1ui, "context = %d, program = %u, location = %d, v0 = %u",1931CID(context), program, location, v0);19321933if (context)1934{1935ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);1936UniformLocation locationPacked = PackParam<UniformLocation>(location);1937std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);1938bool isCallValid = (context->skipValidation() ||1939ValidateProgramUniform1ui(context, programPacked, locationPacked, v0));1940if (isCallValid)1941{1942context->programUniform1ui(programPacked, locationPacked, v0);1943}1944ANGLE_CAPTURE(ProgramUniform1ui, isCallValid, context, programPacked, locationPacked, v0);1945}1946else1947{1948GenerateContextLostErrorOnCurrentGlobalContext();1949}1950}19511952void GL_APIENTRY GL_ProgramUniform1uiv(GLuint program,1953GLint location,1954GLsizei count,1955const GLuint *value)1956{1957Context *context = GetValidGlobalContext();1958EVENT(context, GLProgramUniform1uiv,1959"context = %d, program = %u, location = %d, count = %d, value = 0x%016" PRIxPTR "",1960CID(context), program, location, count, (uintptr_t)value);19611962if (context)1963{1964ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);1965UniformLocation locationPacked = PackParam<UniformLocation>(location);1966std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);1967bool isCallValid =1968(context->skipValidation() ||1969ValidateProgramUniform1uiv(context, programPacked, locationPacked, count, value));1970if (isCallValid)1971{1972context->programUniform1uiv(programPacked, locationPacked, count, value);1973}1974ANGLE_CAPTURE(ProgramUniform1uiv, isCallValid, context, programPacked, locationPacked,1975count, value);1976}1977else1978{1979GenerateContextLostErrorOnCurrentGlobalContext();1980}1981}19821983void GL_APIENTRY GL_ProgramUniform2d(GLuint program, GLint location, GLdouble v0, GLdouble v1)1984{1985Context *context = GetValidGlobalContext();1986EVENT(context, GLProgramUniform2d,1987"context = %d, program = %u, location = %d, v0 = %f, v1 = %f", CID(context), program,1988location, v0, v1);19891990if (context)1991{1992ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);1993UniformLocation locationPacked = PackParam<UniformLocation>(location);1994std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);1995bool isCallValid =1996(context->skipValidation() ||1997ValidateProgramUniform2d(context, programPacked, locationPacked, v0, v1));1998if (isCallValid)1999{2000context->programUniform2d(programPacked, locationPacked, v0, v1);2001}2002ANGLE_CAPTURE(ProgramUniform2d, isCallValid, context, programPacked, locationPacked, v0,2003v1);2004}2005else2006{2007GenerateContextLostErrorOnCurrentGlobalContext();2008}2009}20102011void GL_APIENTRY GL_ProgramUniform2dv(GLuint program,2012GLint location,2013GLsizei count,2014const GLdouble *value)2015{2016Context *context = GetValidGlobalContext();2017EVENT(context, GLProgramUniform2dv,2018"context = %d, program = %u, location = %d, count = %d, value = 0x%016" PRIxPTR "",2019CID(context), program, location, count, (uintptr_t)value);20202021if (context)2022{2023ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);2024UniformLocation locationPacked = PackParam<UniformLocation>(location);2025std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);2026bool isCallValid =2027(context->skipValidation() ||2028ValidateProgramUniform2dv(context, programPacked, locationPacked, count, value));2029if (isCallValid)2030{2031context->programUniform2dv(programPacked, locationPacked, count, value);2032}2033ANGLE_CAPTURE(ProgramUniform2dv, isCallValid, context, programPacked, locationPacked, count,2034value);2035}2036else2037{2038GenerateContextLostErrorOnCurrentGlobalContext();2039}2040}20412042void GL_APIENTRY GL_ProgramUniform2f(GLuint program, GLint location, GLfloat v0, GLfloat v1)2043{2044Context *context = GetValidGlobalContext();2045EVENT(context, GLProgramUniform2f,2046"context = %d, program = %u, location = %d, v0 = %f, v1 = %f", CID(context), program,2047location, v0, v1);20482049if (context)2050{2051ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);2052UniformLocation locationPacked = PackParam<UniformLocation>(location);2053std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);2054bool isCallValid =2055(context->skipValidation() ||2056ValidateProgramUniform2f(context, programPacked, locationPacked, v0, v1));2057if (isCallValid)2058{2059context->programUniform2f(programPacked, locationPacked, v0, v1);2060}2061ANGLE_CAPTURE(ProgramUniform2f, isCallValid, context, programPacked, locationPacked, v0,2062v1);2063}2064else2065{2066GenerateContextLostErrorOnCurrentGlobalContext();2067}2068}20692070void GL_APIENTRY GL_ProgramUniform2fv(GLuint program,2071GLint location,2072GLsizei count,2073const GLfloat *value)2074{2075Context *context = GetValidGlobalContext();2076EVENT(context, GLProgramUniform2fv,2077"context = %d, program = %u, location = %d, count = %d, value = 0x%016" PRIxPTR "",2078CID(context), program, location, count, (uintptr_t)value);20792080if (context)2081{2082ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);2083UniformLocation locationPacked = PackParam<UniformLocation>(location);2084std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);2085bool isCallValid =2086(context->skipValidation() ||2087ValidateProgramUniform2fv(context, programPacked, locationPacked, count, value));2088if (isCallValid)2089{2090context->programUniform2fv(programPacked, locationPacked, count, value);2091}2092ANGLE_CAPTURE(ProgramUniform2fv, isCallValid, context, programPacked, locationPacked, count,2093value);2094}2095else2096{2097GenerateContextLostErrorOnCurrentGlobalContext();2098}2099}21002101void GL_APIENTRY GL_ProgramUniform2i(GLuint program, GLint location, GLint v0, GLint v1)2102{2103Context *context = GetValidGlobalContext();2104EVENT(context, GLProgramUniform2i,2105"context = %d, program = %u, location = %d, v0 = %d, v1 = %d", CID(context), program,2106location, v0, v1);21072108if (context)2109{2110ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);2111UniformLocation locationPacked = PackParam<UniformLocation>(location);2112std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);2113bool isCallValid =2114(context->skipValidation() ||2115ValidateProgramUniform2i(context, programPacked, locationPacked, v0, v1));2116if (isCallValid)2117{2118context->programUniform2i(programPacked, locationPacked, v0, v1);2119}2120ANGLE_CAPTURE(ProgramUniform2i, isCallValid, context, programPacked, locationPacked, v0,2121v1);2122}2123else2124{2125GenerateContextLostErrorOnCurrentGlobalContext();2126}2127}21282129void GL_APIENTRY GL_ProgramUniform2iv(GLuint program,2130GLint location,2131GLsizei count,2132const GLint *value)2133{2134Context *context = GetValidGlobalContext();2135EVENT(context, GLProgramUniform2iv,2136"context = %d, program = %u, location = %d, count = %d, value = 0x%016" PRIxPTR "",2137CID(context), program, location, count, (uintptr_t)value);21382139if (context)2140{2141ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);2142UniformLocation locationPacked = PackParam<UniformLocation>(location);2143std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);2144bool isCallValid =2145(context->skipValidation() ||2146ValidateProgramUniform2iv(context, programPacked, locationPacked, count, value));2147if (isCallValid)2148{2149context->programUniform2iv(programPacked, locationPacked, count, value);2150}2151ANGLE_CAPTURE(ProgramUniform2iv, isCallValid, context, programPacked, locationPacked, count,2152value);2153}2154else2155{2156GenerateContextLostErrorOnCurrentGlobalContext();2157}2158}21592160void GL_APIENTRY GL_ProgramUniform2ui(GLuint program, GLint location, GLuint v0, GLuint v1)2161{2162Context *context = GetValidGlobalContext();2163EVENT(context, GLProgramUniform2ui,2164"context = %d, program = %u, location = %d, v0 = %u, v1 = %u", CID(context), program,2165location, v0, v1);21662167if (context)2168{2169ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);2170UniformLocation locationPacked = PackParam<UniformLocation>(location);2171std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);2172bool isCallValid =2173(context->skipValidation() ||2174ValidateProgramUniform2ui(context, programPacked, locationPacked, v0, v1));2175if (isCallValid)2176{2177context->programUniform2ui(programPacked, locationPacked, v0, v1);2178}2179ANGLE_CAPTURE(ProgramUniform2ui, isCallValid, context, programPacked, locationPacked, v0,2180v1);2181}2182else2183{2184GenerateContextLostErrorOnCurrentGlobalContext();2185}2186}21872188void GL_APIENTRY GL_ProgramUniform2uiv(GLuint program,2189GLint location,2190GLsizei count,2191const GLuint *value)2192{2193Context *context = GetValidGlobalContext();2194EVENT(context, GLProgramUniform2uiv,2195"context = %d, program = %u, location = %d, count = %d, value = 0x%016" PRIxPTR "",2196CID(context), program, location, count, (uintptr_t)value);21972198if (context)2199{2200ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);2201UniformLocation locationPacked = PackParam<UniformLocation>(location);2202std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);2203bool isCallValid =2204(context->skipValidation() ||2205ValidateProgramUniform2uiv(context, programPacked, locationPacked, count, value));2206if (isCallValid)2207{2208context->programUniform2uiv(programPacked, locationPacked, count, value);2209}2210ANGLE_CAPTURE(ProgramUniform2uiv, isCallValid, context, programPacked, locationPacked,2211count, value);2212}2213else2214{2215GenerateContextLostErrorOnCurrentGlobalContext();2216}2217}22182219void GL_APIENTRY2220GL_ProgramUniform3d(GLuint program, GLint location, GLdouble v0, GLdouble v1, GLdouble v2)2221{2222Context *context = GetValidGlobalContext();2223EVENT(context, GLProgramUniform3d,2224"context = %d, program = %u, location = %d, v0 = %f, v1 = %f, v2 = %f", CID(context),2225program, location, v0, v1, v2);22262227if (context)2228{2229ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);2230UniformLocation locationPacked = PackParam<UniformLocation>(location);2231std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);2232bool isCallValid =2233(context->skipValidation() ||2234ValidateProgramUniform3d(context, programPacked, locationPacked, v0, v1, v2));2235if (isCallValid)2236{2237context->programUniform3d(programPacked, locationPacked, v0, v1, v2);2238}2239ANGLE_CAPTURE(ProgramUniform3d, isCallValid, context, programPacked, locationPacked, v0, v1,2240v2);2241}2242else2243{2244GenerateContextLostErrorOnCurrentGlobalContext();2245}2246}22472248void GL_APIENTRY GL_ProgramUniform3dv(GLuint program,2249GLint location,2250GLsizei count,2251const GLdouble *value)2252{2253Context *context = GetValidGlobalContext();2254EVENT(context, GLProgramUniform3dv,2255"context = %d, program = %u, location = %d, count = %d, value = 0x%016" PRIxPTR "",2256CID(context), program, location, count, (uintptr_t)value);22572258if (context)2259{2260ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);2261UniformLocation locationPacked = PackParam<UniformLocation>(location);2262std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);2263bool isCallValid =2264(context->skipValidation() ||2265ValidateProgramUniform3dv(context, programPacked, locationPacked, count, value));2266if (isCallValid)2267{2268context->programUniform3dv(programPacked, locationPacked, count, value);2269}2270ANGLE_CAPTURE(ProgramUniform3dv, isCallValid, context, programPacked, locationPacked, count,2271value);2272}2273else2274{2275GenerateContextLostErrorOnCurrentGlobalContext();2276}2277}22782279void GL_APIENTRY2280GL_ProgramUniform3f(GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2)2281{2282Context *context = GetValidGlobalContext();2283EVENT(context, GLProgramUniform3f,2284"context = %d, program = %u, location = %d, v0 = %f, v1 = %f, v2 = %f", CID(context),2285program, location, v0, v1, v2);22862287if (context)2288{2289ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);2290UniformLocation locationPacked = PackParam<UniformLocation>(location);2291std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);2292bool isCallValid =2293(context->skipValidation() ||2294ValidateProgramUniform3f(context, programPacked, locationPacked, v0, v1, v2));2295if (isCallValid)2296{2297context->programUniform3f(programPacked, locationPacked, v0, v1, v2);2298}2299ANGLE_CAPTURE(ProgramUniform3f, isCallValid, context, programPacked, locationPacked, v0, v1,2300v2);2301}2302else2303{2304GenerateContextLostErrorOnCurrentGlobalContext();2305}2306}23072308void GL_APIENTRY GL_ProgramUniform3fv(GLuint program,2309GLint location,2310GLsizei count,2311const GLfloat *value)2312{2313Context *context = GetValidGlobalContext();2314EVENT(context, GLProgramUniform3fv,2315"context = %d, program = %u, location = %d, count = %d, value = 0x%016" PRIxPTR "",2316CID(context), program, location, count, (uintptr_t)value);23172318if (context)2319{2320ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);2321UniformLocation locationPacked = PackParam<UniformLocation>(location);2322std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);2323bool isCallValid =2324(context->skipValidation() ||2325ValidateProgramUniform3fv(context, programPacked, locationPacked, count, value));2326if (isCallValid)2327{2328context->programUniform3fv(programPacked, locationPacked, count, value);2329}2330ANGLE_CAPTURE(ProgramUniform3fv, isCallValid, context, programPacked, locationPacked, count,2331value);2332}2333else2334{2335GenerateContextLostErrorOnCurrentGlobalContext();2336}2337}23382339void GL_APIENTRY GL_ProgramUniform3i(GLuint program, GLint location, GLint v0, GLint v1, GLint v2)2340{2341Context *context = GetValidGlobalContext();2342EVENT(context, GLProgramUniform3i,2343"context = %d, program = %u, location = %d, v0 = %d, v1 = %d, v2 = %d", CID(context),2344program, location, v0, v1, v2);23452346if (context)2347{2348ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);2349UniformLocation locationPacked = PackParam<UniformLocation>(location);2350std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);2351bool isCallValid =2352(context->skipValidation() ||2353ValidateProgramUniform3i(context, programPacked, locationPacked, v0, v1, v2));2354if (isCallValid)2355{2356context->programUniform3i(programPacked, locationPacked, v0, v1, v2);2357}2358ANGLE_CAPTURE(ProgramUniform3i, isCallValid, context, programPacked, locationPacked, v0, v1,2359v2);2360}2361else2362{2363GenerateContextLostErrorOnCurrentGlobalContext();2364}2365}23662367void GL_APIENTRY GL_ProgramUniform3iv(GLuint program,2368GLint location,2369GLsizei count,2370const GLint *value)2371{2372Context *context = GetValidGlobalContext();2373EVENT(context, GLProgramUniform3iv,2374"context = %d, program = %u, location = %d, count = %d, value = 0x%016" PRIxPTR "",2375CID(context), program, location, count, (uintptr_t)value);23762377if (context)2378{2379ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);2380UniformLocation locationPacked = PackParam<UniformLocation>(location);2381std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);2382bool isCallValid =2383(context->skipValidation() ||2384ValidateProgramUniform3iv(context, programPacked, locationPacked, count, value));2385if (isCallValid)2386{2387context->programUniform3iv(programPacked, locationPacked, count, value);2388}2389ANGLE_CAPTURE(ProgramUniform3iv, isCallValid, context, programPacked, locationPacked, count,2390value);2391}2392else2393{2394GenerateContextLostErrorOnCurrentGlobalContext();2395}2396}23972398void GL_APIENTRY2399GL_ProgramUniform3ui(GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2)2400{2401Context *context = GetValidGlobalContext();2402EVENT(context, GLProgramUniform3ui,2403"context = %d, program = %u, location = %d, v0 = %u, v1 = %u, v2 = %u", CID(context),2404program, location, v0, v1, v2);24052406if (context)2407{2408ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);2409UniformLocation locationPacked = PackParam<UniformLocation>(location);2410std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);2411bool isCallValid =2412(context->skipValidation() ||2413ValidateProgramUniform3ui(context, programPacked, locationPacked, v0, v1, v2));2414if (isCallValid)2415{2416context->programUniform3ui(programPacked, locationPacked, v0, v1, v2);2417}2418ANGLE_CAPTURE(ProgramUniform3ui, isCallValid, context, programPacked, locationPacked, v0,2419v1, v2);2420}2421else2422{2423GenerateContextLostErrorOnCurrentGlobalContext();2424}2425}24262427void GL_APIENTRY GL_ProgramUniform3uiv(GLuint program,2428GLint location,2429GLsizei count,2430const GLuint *value)2431{2432Context *context = GetValidGlobalContext();2433EVENT(context, GLProgramUniform3uiv,2434"context = %d, program = %u, location = %d, count = %d, value = 0x%016" PRIxPTR "",2435CID(context), program, location, count, (uintptr_t)value);24362437if (context)2438{2439ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);2440UniformLocation locationPacked = PackParam<UniformLocation>(location);2441std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);2442bool isCallValid =2443(context->skipValidation() ||2444ValidateProgramUniform3uiv(context, programPacked, locationPacked, count, value));2445if (isCallValid)2446{2447context->programUniform3uiv(programPacked, locationPacked, count, value);2448}2449ANGLE_CAPTURE(ProgramUniform3uiv, isCallValid, context, programPacked, locationPacked,2450count, value);2451}2452else2453{2454GenerateContextLostErrorOnCurrentGlobalContext();2455}2456}24572458void GL_APIENTRY GL_ProgramUniform4d(GLuint program,2459GLint location,2460GLdouble v0,2461GLdouble v1,2462GLdouble v2,2463GLdouble v3)2464{2465Context *context = GetValidGlobalContext();2466EVENT(context, GLProgramUniform4d,2467"context = %d, program = %u, location = %d, v0 = %f, v1 = %f, v2 = %f, v3 = %f",2468CID(context), program, location, v0, v1, v2, v3);24692470if (context)2471{2472ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);2473UniformLocation locationPacked = PackParam<UniformLocation>(location);2474std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);2475bool isCallValid =2476(context->skipValidation() ||2477ValidateProgramUniform4d(context, programPacked, locationPacked, v0, v1, v2, v3));2478if (isCallValid)2479{2480context->programUniform4d(programPacked, locationPacked, v0, v1, v2, v3);2481}2482ANGLE_CAPTURE(ProgramUniform4d, isCallValid, context, programPacked, locationPacked, v0, v1,2483v2, v3);2484}2485else2486{2487GenerateContextLostErrorOnCurrentGlobalContext();2488}2489}24902491void GL_APIENTRY GL_ProgramUniform4dv(GLuint program,2492GLint location,2493GLsizei count,2494const GLdouble *value)2495{2496Context *context = GetValidGlobalContext();2497EVENT(context, GLProgramUniform4dv,2498"context = %d, program = %u, location = %d, count = %d, value = 0x%016" PRIxPTR "",2499CID(context), program, location, count, (uintptr_t)value);25002501if (context)2502{2503ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);2504UniformLocation locationPacked = PackParam<UniformLocation>(location);2505std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);2506bool isCallValid =2507(context->skipValidation() ||2508ValidateProgramUniform4dv(context, programPacked, locationPacked, count, value));2509if (isCallValid)2510{2511context->programUniform4dv(programPacked, locationPacked, count, value);2512}2513ANGLE_CAPTURE(ProgramUniform4dv, isCallValid, context, programPacked, locationPacked, count,2514value);2515}2516else2517{2518GenerateContextLostErrorOnCurrentGlobalContext();2519}2520}25212522void GL_APIENTRY2523GL_ProgramUniform4f(GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3)2524{2525Context *context = GetValidGlobalContext();2526EVENT(context, GLProgramUniform4f,2527"context = %d, program = %u, location = %d, v0 = %f, v1 = %f, v2 = %f, v3 = %f",2528CID(context), program, location, v0, v1, v2, v3);25292530if (context)2531{2532ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);2533UniformLocation locationPacked = PackParam<UniformLocation>(location);2534std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);2535bool isCallValid =2536(context->skipValidation() ||2537ValidateProgramUniform4f(context, programPacked, locationPacked, v0, v1, v2, v3));2538if (isCallValid)2539{2540context->programUniform4f(programPacked, locationPacked, v0, v1, v2, v3);2541}2542ANGLE_CAPTURE(ProgramUniform4f, isCallValid, context, programPacked, locationPacked, v0, v1,2543v2, v3);2544}2545else2546{2547GenerateContextLostErrorOnCurrentGlobalContext();2548}2549}25502551void GL_APIENTRY GL_ProgramUniform4fv(GLuint program,2552GLint location,2553GLsizei count,2554const GLfloat *value)2555{2556Context *context = GetValidGlobalContext();2557EVENT(context, GLProgramUniform4fv,2558"context = %d, program = %u, location = %d, count = %d, value = 0x%016" PRIxPTR "",2559CID(context), program, location, count, (uintptr_t)value);25602561if (context)2562{2563ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);2564UniformLocation locationPacked = PackParam<UniformLocation>(location);2565std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);2566bool isCallValid =2567(context->skipValidation() ||2568ValidateProgramUniform4fv(context, programPacked, locationPacked, count, value));2569if (isCallValid)2570{2571context->programUniform4fv(programPacked, locationPacked, count, value);2572}2573ANGLE_CAPTURE(ProgramUniform4fv, isCallValid, context, programPacked, locationPacked, count,2574value);2575}2576else2577{2578GenerateContextLostErrorOnCurrentGlobalContext();2579}2580}25812582void GL_APIENTRY2583GL_ProgramUniform4i(GLuint program, GLint location, GLint v0, GLint v1, GLint v2, GLint v3)2584{2585Context *context = GetValidGlobalContext();2586EVENT(context, GLProgramUniform4i,2587"context = %d, program = %u, location = %d, v0 = %d, v1 = %d, v2 = %d, v3 = %d",2588CID(context), program, location, v0, v1, v2, v3);25892590if (context)2591{2592ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);2593UniformLocation locationPacked = PackParam<UniformLocation>(location);2594std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);2595bool isCallValid =2596(context->skipValidation() ||2597ValidateProgramUniform4i(context, programPacked, locationPacked, v0, v1, v2, v3));2598if (isCallValid)2599{2600context->programUniform4i(programPacked, locationPacked, v0, v1, v2, v3);2601}2602ANGLE_CAPTURE(ProgramUniform4i, isCallValid, context, programPacked, locationPacked, v0, v1,2603v2, v3);2604}2605else2606{2607GenerateContextLostErrorOnCurrentGlobalContext();2608}2609}26102611void GL_APIENTRY GL_ProgramUniform4iv(GLuint program,2612GLint location,2613GLsizei count,2614const GLint *value)2615{2616Context *context = GetValidGlobalContext();2617EVENT(context, GLProgramUniform4iv,2618"context = %d, program = %u, location = %d, count = %d, value = 0x%016" PRIxPTR "",2619CID(context), program, location, count, (uintptr_t)value);26202621if (context)2622{2623ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);2624UniformLocation locationPacked = PackParam<UniformLocation>(location);2625std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);2626bool isCallValid =2627(context->skipValidation() ||2628ValidateProgramUniform4iv(context, programPacked, locationPacked, count, value));2629if (isCallValid)2630{2631context->programUniform4iv(programPacked, locationPacked, count, value);2632}2633ANGLE_CAPTURE(ProgramUniform4iv, isCallValid, context, programPacked, locationPacked, count,2634value);2635}2636else2637{2638GenerateContextLostErrorOnCurrentGlobalContext();2639}2640}26412642void GL_APIENTRY2643GL_ProgramUniform4ui(GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3)2644{2645Context *context = GetValidGlobalContext();2646EVENT(context, GLProgramUniform4ui,2647"context = %d, program = %u, location = %d, v0 = %u, v1 = %u, v2 = %u, v3 = %u",2648CID(context), program, location, v0, v1, v2, v3);26492650if (context)2651{2652ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);2653UniformLocation locationPacked = PackParam<UniformLocation>(location);2654std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);2655bool isCallValid =2656(context->skipValidation() ||2657ValidateProgramUniform4ui(context, programPacked, locationPacked, v0, v1, v2, v3));2658if (isCallValid)2659{2660context->programUniform4ui(programPacked, locationPacked, v0, v1, v2, v3);2661}2662ANGLE_CAPTURE(ProgramUniform4ui, isCallValid, context, programPacked, locationPacked, v0,2663v1, v2, v3);2664}2665else2666{2667GenerateContextLostErrorOnCurrentGlobalContext();2668}2669}26702671void GL_APIENTRY GL_ProgramUniform4uiv(GLuint program,2672GLint location,2673GLsizei count,2674const GLuint *value)2675{2676Context *context = GetValidGlobalContext();2677EVENT(context, GLProgramUniform4uiv,2678"context = %d, program = %u, location = %d, count = %d, value = 0x%016" PRIxPTR "",2679CID(context), program, location, count, (uintptr_t)value);26802681if (context)2682{2683ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);2684UniformLocation locationPacked = PackParam<UniformLocation>(location);2685std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);2686bool isCallValid =2687(context->skipValidation() ||2688ValidateProgramUniform4uiv(context, programPacked, locationPacked, count, value));2689if (isCallValid)2690{2691context->programUniform4uiv(programPacked, locationPacked, count, value);2692}2693ANGLE_CAPTURE(ProgramUniform4uiv, isCallValid, context, programPacked, locationPacked,2694count, value);2695}2696else2697{2698GenerateContextLostErrorOnCurrentGlobalContext();2699}2700}27012702void GL_APIENTRY GL_ProgramUniformMatrix2dv(GLuint program,2703GLint location,2704GLsizei count,2705GLboolean transpose,2706const GLdouble *value)2707{2708Context *context = GetValidGlobalContext();2709EVENT(context, GLProgramUniformMatrix2dv,2710"context = %d, program = %u, location = %d, count = %d, transpose = %s, value = "2711"0x%016" PRIxPTR "",2712CID(context), program, location, count, GLbooleanToString(transpose), (uintptr_t)value);27132714if (context)2715{2716ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);2717UniformLocation locationPacked = PackParam<UniformLocation>(location);2718std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);2719bool isCallValid = (context->skipValidation() ||2720ValidateProgramUniformMatrix2dv(context, programPacked, locationPacked,2721count, transpose, value));2722if (isCallValid)2723{2724context->programUniformMatrix2dv(programPacked, locationPacked, count, transpose,2725value);2726}2727ANGLE_CAPTURE(ProgramUniformMatrix2dv, isCallValid, context, programPacked, locationPacked,2728count, transpose, value);2729}2730else2731{2732GenerateContextLostErrorOnCurrentGlobalContext();2733}2734}27352736void GL_APIENTRY GL_ProgramUniformMatrix2fv(GLuint program,2737GLint location,2738GLsizei count,2739GLboolean transpose,2740const GLfloat *value)2741{2742Context *context = GetValidGlobalContext();2743EVENT(context, GLProgramUniformMatrix2fv,2744"context = %d, program = %u, location = %d, count = %d, transpose = %s, value = "2745"0x%016" PRIxPTR "",2746CID(context), program, location, count, GLbooleanToString(transpose), (uintptr_t)value);27472748if (context)2749{2750ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);2751UniformLocation locationPacked = PackParam<UniformLocation>(location);2752std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);2753bool isCallValid = (context->skipValidation() ||2754ValidateProgramUniformMatrix2fv(context, programPacked, locationPacked,2755count, transpose, value));2756if (isCallValid)2757{2758context->programUniformMatrix2fv(programPacked, locationPacked, count, transpose,2759value);2760}2761ANGLE_CAPTURE(ProgramUniformMatrix2fv, isCallValid, context, programPacked, locationPacked,2762count, transpose, value);2763}2764else2765{2766GenerateContextLostErrorOnCurrentGlobalContext();2767}2768}27692770void GL_APIENTRY GL_ProgramUniformMatrix2x3dv(GLuint program,2771GLint location,2772GLsizei count,2773GLboolean transpose,2774const GLdouble *value)2775{2776Context *context = GetValidGlobalContext();2777EVENT(context, GLProgramUniformMatrix2x3dv,2778"context = %d, program = %u, location = %d, count = %d, transpose = %s, value = "2779"0x%016" PRIxPTR "",2780CID(context), program, location, count, GLbooleanToString(transpose), (uintptr_t)value);27812782if (context)2783{2784ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);2785UniformLocation locationPacked = PackParam<UniformLocation>(location);2786std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);2787bool isCallValid = (context->skipValidation() ||2788ValidateProgramUniformMatrix2x3dv(2789context, programPacked, locationPacked, count, transpose, value));2790if (isCallValid)2791{2792context->programUniformMatrix2x3dv(programPacked, locationPacked, count, transpose,2793value);2794}2795ANGLE_CAPTURE(ProgramUniformMatrix2x3dv, isCallValid, context, programPacked,2796locationPacked, count, transpose, value);2797}2798else2799{2800GenerateContextLostErrorOnCurrentGlobalContext();2801}2802}28032804void GL_APIENTRY GL_ProgramUniformMatrix2x3fv(GLuint program,2805GLint location,2806GLsizei count,2807GLboolean transpose,2808const GLfloat *value)2809{2810Context *context = GetValidGlobalContext();2811EVENT(context, GLProgramUniformMatrix2x3fv,2812"context = %d, program = %u, location = %d, count = %d, transpose = %s, value = "2813"0x%016" PRIxPTR "",2814CID(context), program, location, count, GLbooleanToString(transpose), (uintptr_t)value);28152816if (context)2817{2818ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);2819UniformLocation locationPacked = PackParam<UniformLocation>(location);2820std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);2821bool isCallValid = (context->skipValidation() ||2822ValidateProgramUniformMatrix2x3fv(2823context, programPacked, locationPacked, count, transpose, value));2824if (isCallValid)2825{2826context->programUniformMatrix2x3fv(programPacked, locationPacked, count, transpose,2827value);2828}2829ANGLE_CAPTURE(ProgramUniformMatrix2x3fv, isCallValid, context, programPacked,2830locationPacked, count, transpose, value);2831}2832else2833{2834GenerateContextLostErrorOnCurrentGlobalContext();2835}2836}28372838void GL_APIENTRY GL_ProgramUniformMatrix2x4dv(GLuint program,2839GLint location,2840GLsizei count,2841GLboolean transpose,2842const GLdouble *value)2843{2844Context *context = GetValidGlobalContext();2845EVENT(context, GLProgramUniformMatrix2x4dv,2846"context = %d, program = %u, location = %d, count = %d, transpose = %s, value = "2847"0x%016" PRIxPTR "",2848CID(context), program, location, count, GLbooleanToString(transpose), (uintptr_t)value);28492850if (context)2851{2852ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);2853UniformLocation locationPacked = PackParam<UniformLocation>(location);2854std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);2855bool isCallValid = (context->skipValidation() ||2856ValidateProgramUniformMatrix2x4dv(2857context, programPacked, locationPacked, count, transpose, value));2858if (isCallValid)2859{2860context->programUniformMatrix2x4dv(programPacked, locationPacked, count, transpose,2861value);2862}2863ANGLE_CAPTURE(ProgramUniformMatrix2x4dv, isCallValid, context, programPacked,2864locationPacked, count, transpose, value);2865}2866else2867{2868GenerateContextLostErrorOnCurrentGlobalContext();2869}2870}28712872void GL_APIENTRY GL_ProgramUniformMatrix2x4fv(GLuint program,2873GLint location,2874GLsizei count,2875GLboolean transpose,2876const GLfloat *value)2877{2878Context *context = GetValidGlobalContext();2879EVENT(context, GLProgramUniformMatrix2x4fv,2880"context = %d, program = %u, location = %d, count = %d, transpose = %s, value = "2881"0x%016" PRIxPTR "",2882CID(context), program, location, count, GLbooleanToString(transpose), (uintptr_t)value);28832884if (context)2885{2886ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);2887UniformLocation locationPacked = PackParam<UniformLocation>(location);2888std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);2889bool isCallValid = (context->skipValidation() ||2890ValidateProgramUniformMatrix2x4fv(2891context, programPacked, locationPacked, count, transpose, value));2892if (isCallValid)2893{2894context->programUniformMatrix2x4fv(programPacked, locationPacked, count, transpose,2895value);2896}2897ANGLE_CAPTURE(ProgramUniformMatrix2x4fv, isCallValid, context, programPacked,2898locationPacked, count, transpose, value);2899}2900else2901{2902GenerateContextLostErrorOnCurrentGlobalContext();2903}2904}29052906void GL_APIENTRY GL_ProgramUniformMatrix3dv(GLuint program,2907GLint location,2908GLsizei count,2909GLboolean transpose,2910const GLdouble *value)2911{2912Context *context = GetValidGlobalContext();2913EVENT(context, GLProgramUniformMatrix3dv,2914"context = %d, program = %u, location = %d, count = %d, transpose = %s, value = "2915"0x%016" PRIxPTR "",2916CID(context), program, location, count, GLbooleanToString(transpose), (uintptr_t)value);29172918if (context)2919{2920ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);2921UniformLocation locationPacked = PackParam<UniformLocation>(location);2922std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);2923bool isCallValid = (context->skipValidation() ||2924ValidateProgramUniformMatrix3dv(context, programPacked, locationPacked,2925count, transpose, value));2926if (isCallValid)2927{2928context->programUniformMatrix3dv(programPacked, locationPacked, count, transpose,2929value);2930}2931ANGLE_CAPTURE(ProgramUniformMatrix3dv, isCallValid, context, programPacked, locationPacked,2932count, transpose, value);2933}2934else2935{2936GenerateContextLostErrorOnCurrentGlobalContext();2937}2938}29392940void GL_APIENTRY GL_ProgramUniformMatrix3fv(GLuint program,2941GLint location,2942GLsizei count,2943GLboolean transpose,2944const GLfloat *value)2945{2946Context *context = GetValidGlobalContext();2947EVENT(context, GLProgramUniformMatrix3fv,2948"context = %d, program = %u, location = %d, count = %d, transpose = %s, value = "2949"0x%016" PRIxPTR "",2950CID(context), program, location, count, GLbooleanToString(transpose), (uintptr_t)value);29512952if (context)2953{2954ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);2955UniformLocation locationPacked = PackParam<UniformLocation>(location);2956std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);2957bool isCallValid = (context->skipValidation() ||2958ValidateProgramUniformMatrix3fv(context, programPacked, locationPacked,2959count, transpose, value));2960if (isCallValid)2961{2962context->programUniformMatrix3fv(programPacked, locationPacked, count, transpose,2963value);2964}2965ANGLE_CAPTURE(ProgramUniformMatrix3fv, isCallValid, context, programPacked, locationPacked,2966count, transpose, value);2967}2968else2969{2970GenerateContextLostErrorOnCurrentGlobalContext();2971}2972}29732974void GL_APIENTRY GL_ProgramUniformMatrix3x2dv(GLuint program,2975GLint location,2976GLsizei count,2977GLboolean transpose,2978const GLdouble *value)2979{2980Context *context = GetValidGlobalContext();2981EVENT(context, GLProgramUniformMatrix3x2dv,2982"context = %d, program = %u, location = %d, count = %d, transpose = %s, value = "2983"0x%016" PRIxPTR "",2984CID(context), program, location, count, GLbooleanToString(transpose), (uintptr_t)value);29852986if (context)2987{2988ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);2989UniformLocation locationPacked = PackParam<UniformLocation>(location);2990std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);2991bool isCallValid = (context->skipValidation() ||2992ValidateProgramUniformMatrix3x2dv(2993context, programPacked, locationPacked, count, transpose, value));2994if (isCallValid)2995{2996context->programUniformMatrix3x2dv(programPacked, locationPacked, count, transpose,2997value);2998}2999ANGLE_CAPTURE(ProgramUniformMatrix3x2dv, isCallValid, context, programPacked,3000locationPacked, count, transpose, value);3001}3002else3003{3004GenerateContextLostErrorOnCurrentGlobalContext();3005}3006}30073008void GL_APIENTRY GL_ProgramUniformMatrix3x2fv(GLuint program,3009GLint location,3010GLsizei count,3011GLboolean transpose,3012const GLfloat *value)3013{3014Context *context = GetValidGlobalContext();3015EVENT(context, GLProgramUniformMatrix3x2fv,3016"context = %d, program = %u, location = %d, count = %d, transpose = %s, value = "3017"0x%016" PRIxPTR "",3018CID(context), program, location, count, GLbooleanToString(transpose), (uintptr_t)value);30193020if (context)3021{3022ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);3023UniformLocation locationPacked = PackParam<UniformLocation>(location);3024std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);3025bool isCallValid = (context->skipValidation() ||3026ValidateProgramUniformMatrix3x2fv(3027context, programPacked, locationPacked, count, transpose, value));3028if (isCallValid)3029{3030context->programUniformMatrix3x2fv(programPacked, locationPacked, count, transpose,3031value);3032}3033ANGLE_CAPTURE(ProgramUniformMatrix3x2fv, isCallValid, context, programPacked,3034locationPacked, count, transpose, value);3035}3036else3037{3038GenerateContextLostErrorOnCurrentGlobalContext();3039}3040}30413042void GL_APIENTRY GL_ProgramUniformMatrix3x4dv(GLuint program,3043GLint location,3044GLsizei count,3045GLboolean transpose,3046const GLdouble *value)3047{3048Context *context = GetValidGlobalContext();3049EVENT(context, GLProgramUniformMatrix3x4dv,3050"context = %d, program = %u, location = %d, count = %d, transpose = %s, value = "3051"0x%016" PRIxPTR "",3052CID(context), program, location, count, GLbooleanToString(transpose), (uintptr_t)value);30533054if (context)3055{3056ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);3057UniformLocation locationPacked = PackParam<UniformLocation>(location);3058std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);3059bool isCallValid = (context->skipValidation() ||3060ValidateProgramUniformMatrix3x4dv(3061context, programPacked, locationPacked, count, transpose, value));3062if (isCallValid)3063{3064context->programUniformMatrix3x4dv(programPacked, locationPacked, count, transpose,3065value);3066}3067ANGLE_CAPTURE(ProgramUniformMatrix3x4dv, isCallValid, context, programPacked,3068locationPacked, count, transpose, value);3069}3070else3071{3072GenerateContextLostErrorOnCurrentGlobalContext();3073}3074}30753076void GL_APIENTRY GL_ProgramUniformMatrix3x4fv(GLuint program,3077GLint location,3078GLsizei count,3079GLboolean transpose,3080const GLfloat *value)3081{3082Context *context = GetValidGlobalContext();3083EVENT(context, GLProgramUniformMatrix3x4fv,3084"context = %d, program = %u, location = %d, count = %d, transpose = %s, value = "3085"0x%016" PRIxPTR "",3086CID(context), program, location, count, GLbooleanToString(transpose), (uintptr_t)value);30873088if (context)3089{3090ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);3091UniformLocation locationPacked = PackParam<UniformLocation>(location);3092std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);3093bool isCallValid = (context->skipValidation() ||3094ValidateProgramUniformMatrix3x4fv(3095context, programPacked, locationPacked, count, transpose, value));3096if (isCallValid)3097{3098context->programUniformMatrix3x4fv(programPacked, locationPacked, count, transpose,3099value);3100}3101ANGLE_CAPTURE(ProgramUniformMatrix3x4fv, isCallValid, context, programPacked,3102locationPacked, count, transpose, value);3103}3104else3105{3106GenerateContextLostErrorOnCurrentGlobalContext();3107}3108}31093110void GL_APIENTRY GL_ProgramUniformMatrix4dv(GLuint program,3111GLint location,3112GLsizei count,3113GLboolean transpose,3114const GLdouble *value)3115{3116Context *context = GetValidGlobalContext();3117EVENT(context, GLProgramUniformMatrix4dv,3118"context = %d, program = %u, location = %d, count = %d, transpose = %s, value = "3119"0x%016" PRIxPTR "",3120CID(context), program, location, count, GLbooleanToString(transpose), (uintptr_t)value);31213122if (context)3123{3124ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);3125UniformLocation locationPacked = PackParam<UniformLocation>(location);3126std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);3127bool isCallValid = (context->skipValidation() ||3128ValidateProgramUniformMatrix4dv(context, programPacked, locationPacked,3129count, transpose, value));3130if (isCallValid)3131{3132context->programUniformMatrix4dv(programPacked, locationPacked, count, transpose,3133value);3134}3135ANGLE_CAPTURE(ProgramUniformMatrix4dv, isCallValid, context, programPacked, locationPacked,3136count, transpose, value);3137}3138else3139{3140GenerateContextLostErrorOnCurrentGlobalContext();3141}3142}31433144void GL_APIENTRY GL_ProgramUniformMatrix4fv(GLuint program,3145GLint location,3146GLsizei count,3147GLboolean transpose,3148const GLfloat *value)3149{3150Context *context = GetValidGlobalContext();3151EVENT(context, GLProgramUniformMatrix4fv,3152"context = %d, program = %u, location = %d, count = %d, transpose = %s, value = "3153"0x%016" PRIxPTR "",3154CID(context), program, location, count, GLbooleanToString(transpose), (uintptr_t)value);31553156if (context)3157{3158ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);3159UniformLocation locationPacked = PackParam<UniformLocation>(location);3160std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);3161bool isCallValid = (context->skipValidation() ||3162ValidateProgramUniformMatrix4fv(context, programPacked, locationPacked,3163count, transpose, value));3164if (isCallValid)3165{3166context->programUniformMatrix4fv(programPacked, locationPacked, count, transpose,3167value);3168}3169ANGLE_CAPTURE(ProgramUniformMatrix4fv, isCallValid, context, programPacked, locationPacked,3170count, transpose, value);3171}3172else3173{3174GenerateContextLostErrorOnCurrentGlobalContext();3175}3176}31773178void GL_APIENTRY GL_ProgramUniformMatrix4x2dv(GLuint program,3179GLint location,3180GLsizei count,3181GLboolean transpose,3182const GLdouble *value)3183{3184Context *context = GetValidGlobalContext();3185EVENT(context, GLProgramUniformMatrix4x2dv,3186"context = %d, program = %u, location = %d, count = %d, transpose = %s, value = "3187"0x%016" PRIxPTR "",3188CID(context), program, location, count, GLbooleanToString(transpose), (uintptr_t)value);31893190if (context)3191{3192ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);3193UniformLocation locationPacked = PackParam<UniformLocation>(location);3194std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);3195bool isCallValid = (context->skipValidation() ||3196ValidateProgramUniformMatrix4x2dv(3197context, programPacked, locationPacked, count, transpose, value));3198if (isCallValid)3199{3200context->programUniformMatrix4x2dv(programPacked, locationPacked, count, transpose,3201value);3202}3203ANGLE_CAPTURE(ProgramUniformMatrix4x2dv, isCallValid, context, programPacked,3204locationPacked, count, transpose, value);3205}3206else3207{3208GenerateContextLostErrorOnCurrentGlobalContext();3209}3210}32113212void GL_APIENTRY GL_ProgramUniformMatrix4x2fv(GLuint program,3213GLint location,3214GLsizei count,3215GLboolean transpose,3216const GLfloat *value)3217{3218Context *context = GetValidGlobalContext();3219EVENT(context, GLProgramUniformMatrix4x2fv,3220"context = %d, program = %u, location = %d, count = %d, transpose = %s, value = "3221"0x%016" PRIxPTR "",3222CID(context), program, location, count, GLbooleanToString(transpose), (uintptr_t)value);32233224if (context)3225{3226ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);3227UniformLocation locationPacked = PackParam<UniformLocation>(location);3228std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);3229bool isCallValid = (context->skipValidation() ||3230ValidateProgramUniformMatrix4x2fv(3231context, programPacked, locationPacked, count, transpose, value));3232if (isCallValid)3233{3234context->programUniformMatrix4x2fv(programPacked, locationPacked, count, transpose,3235value);3236}3237ANGLE_CAPTURE(ProgramUniformMatrix4x2fv, isCallValid, context, programPacked,3238locationPacked, count, transpose, value);3239}3240else3241{3242GenerateContextLostErrorOnCurrentGlobalContext();3243}3244}32453246void GL_APIENTRY GL_ProgramUniformMatrix4x3dv(GLuint program,3247GLint location,3248GLsizei count,3249GLboolean transpose,3250const GLdouble *value)3251{3252Context *context = GetValidGlobalContext();3253EVENT(context, GLProgramUniformMatrix4x3dv,3254"context = %d, program = %u, location = %d, count = %d, transpose = %s, value = "3255"0x%016" PRIxPTR "",3256CID(context), program, location, count, GLbooleanToString(transpose), (uintptr_t)value);32573258if (context)3259{3260ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);3261UniformLocation locationPacked = PackParam<UniformLocation>(location);3262std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);3263bool isCallValid = (context->skipValidation() ||3264ValidateProgramUniformMatrix4x3dv(3265context, programPacked, locationPacked, count, transpose, value));3266if (isCallValid)3267{3268context->programUniformMatrix4x3dv(programPacked, locationPacked, count, transpose,3269value);3270}3271ANGLE_CAPTURE(ProgramUniformMatrix4x3dv, isCallValid, context, programPacked,3272locationPacked, count, transpose, value);3273}3274else3275{3276GenerateContextLostErrorOnCurrentGlobalContext();3277}3278}32793280void GL_APIENTRY GL_ProgramUniformMatrix4x3fv(GLuint program,3281GLint location,3282GLsizei count,3283GLboolean transpose,3284const GLfloat *value)3285{3286Context *context = GetValidGlobalContext();3287EVENT(context, GLProgramUniformMatrix4x3fv,3288"context = %d, program = %u, location = %d, count = %d, transpose = %s, value = "3289"0x%016" PRIxPTR "",3290CID(context), program, location, count, GLbooleanToString(transpose), (uintptr_t)value);32913292if (context)3293{3294ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);3295UniformLocation locationPacked = PackParam<UniformLocation>(location);3296std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);3297bool isCallValid = (context->skipValidation() ||3298ValidateProgramUniformMatrix4x3fv(3299context, programPacked, locationPacked, count, transpose, value));3300if (isCallValid)3301{3302context->programUniformMatrix4x3fv(programPacked, locationPacked, count, transpose,3303value);3304}3305ANGLE_CAPTURE(ProgramUniformMatrix4x3fv, isCallValid, context, programPacked,3306locationPacked, count, transpose, value);3307}3308else3309{3310GenerateContextLostErrorOnCurrentGlobalContext();3311}3312}33133314void GL_APIENTRY GL_ReleaseShaderCompiler()3315{3316Context *context = GetValidGlobalContext();3317EVENT(context, GLReleaseShaderCompiler, "context = %d", CID(context));33183319if (context)3320{3321std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);3322bool isCallValid = (context->skipValidation() || ValidateReleaseShaderCompiler(context));3323if (isCallValid)3324{3325context->releaseShaderCompiler();3326}3327ANGLE_CAPTURE(ReleaseShaderCompiler, isCallValid, context);3328}3329else3330{3331GenerateContextLostErrorOnCurrentGlobalContext();3332}3333}33343335void GL_APIENTRY GL_ScissorArrayv(GLuint first, GLsizei count, const GLint *v)3336{3337Context *context = GetValidGlobalContext();3338EVENT(context, GLScissorArrayv, "context = %d, first = %u, count = %d, v = 0x%016" PRIxPTR "",3339CID(context), first, count, (uintptr_t)v);33403341if (context)3342{3343std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);3344bool isCallValid =3345(context->skipValidation() || ValidateScissorArrayv(context, first, count, v));3346if (isCallValid)3347{3348context->scissorArrayv(first, count, v);3349}3350ANGLE_CAPTURE(ScissorArrayv, isCallValid, context, first, count, v);3351}3352else3353{3354GenerateContextLostErrorOnCurrentGlobalContext();3355}3356}33573358void GL_APIENTRY3359GL_ScissorIndexed(GLuint index, GLint left, GLint bottom, GLsizei width, GLsizei height)3360{3361Context *context = GetValidGlobalContext();3362EVENT(context, GLScissorIndexed,3363"context = %d, index = %u, left = %d, bottom = %d, width = %d, height = %d", CID(context),3364index, left, bottom, width, height);33653366if (context)3367{3368std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);3369bool isCallValid = (context->skipValidation() ||3370ValidateScissorIndexed(context, index, left, bottom, width, height));3371if (isCallValid)3372{3373context->scissorIndexed(index, left, bottom, width, height);3374}3375ANGLE_CAPTURE(ScissorIndexed, isCallValid, context, index, left, bottom, width, height);3376}3377else3378{3379GenerateContextLostErrorOnCurrentGlobalContext();3380}3381}33823383void GL_APIENTRY GL_ScissorIndexedv(GLuint index, const GLint *v)3384{3385Context *context = GetValidGlobalContext();3386EVENT(context, GLScissorIndexedv, "context = %d, index = %u, v = 0x%016" PRIxPTR "",3387CID(context), index, (uintptr_t)v);33883389if (context)3390{3391std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);3392bool isCallValid =3393(context->skipValidation() || ValidateScissorIndexedv(context, index, v));3394if (isCallValid)3395{3396context->scissorIndexedv(index, v);3397}3398ANGLE_CAPTURE(ScissorIndexedv, isCallValid, context, index, v);3399}3400else3401{3402GenerateContextLostErrorOnCurrentGlobalContext();3403}3404}34053406void GL_APIENTRY GL_ShaderBinary(GLsizei count,3407const GLuint *shaders,3408GLenum binaryformat,3409const void *binary,3410GLsizei length)3411{3412Context *context = GetValidGlobalContext();3413EVENT(context, GLShaderBinary,3414"context = %d, count = %d, shaders = 0x%016" PRIxPTR3415", binaryformat = %s, binary = 0x%016" PRIxPTR ", length = %d",3416CID(context), count, (uintptr_t)shaders,3417GLenumToString(GLenumGroup::DefaultGroup, binaryformat), (uintptr_t)binary, length);34183419if (context)3420{3421const ShaderProgramID *shadersPacked = PackParam<const ShaderProgramID *>(shaders);3422std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);3423bool isCallValid =3424(context->skipValidation() ||3425ValidateShaderBinary(context, count, shadersPacked, binaryformat, binary, length));3426if (isCallValid)3427{3428context->shaderBinary(count, shadersPacked, binaryformat, binary, length);3429}3430ANGLE_CAPTURE(ShaderBinary, isCallValid, context, count, shadersPacked, binaryformat,3431binary, length);3432}3433else3434{3435GenerateContextLostErrorOnCurrentGlobalContext();3436}3437}34383439void GL_APIENTRY GL_UseProgramStages(GLuint pipeline, GLbitfield stages, GLuint program)3440{3441Context *context = GetValidGlobalContext();3442EVENT(context, GLUseProgramStages, "context = %d, pipeline = %u, stages = %s, program = %u",3443CID(context), pipeline,3444GLbitfieldToString(GLenumGroup::UseProgramStageMask, stages).c_str(), program);34453446if (context)3447{3448ProgramPipelineID pipelinePacked = PackParam<ProgramPipelineID>(pipeline);3449ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);3450std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);3451bool isCallValid =3452(context->skipValidation() ||3453ValidateUseProgramStages(context, pipelinePacked, stages, programPacked));3454if (isCallValid)3455{3456context->useProgramStages(pipelinePacked, stages, programPacked);3457}3458ANGLE_CAPTURE(UseProgramStages, isCallValid, context, pipelinePacked, stages,3459programPacked);3460}3461else3462{3463GenerateContextLostErrorOnCurrentGlobalContext();3464}3465}34663467void GL_APIENTRY GL_ValidateProgramPipeline(GLuint pipeline)3468{3469Context *context = GetValidGlobalContext();3470EVENT(context, GLValidateProgramPipeline, "context = %d, pipeline = %u", CID(context),3471pipeline);34723473if (context)3474{3475ProgramPipelineID pipelinePacked = PackParam<ProgramPipelineID>(pipeline);3476std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);3477bool isCallValid =3478(context->skipValidation() || ValidateValidateProgramPipeline(context, pipelinePacked));3479if (isCallValid)3480{3481context->validateProgramPipeline(pipelinePacked);3482}3483ANGLE_CAPTURE(ValidateProgramPipeline, isCallValid, context, pipelinePacked);3484}3485else3486{3487GenerateContextLostErrorOnCurrentGlobalContext();3488}3489}34903491void GL_APIENTRY GL_VertexAttribL1d(GLuint index, GLdouble x)3492{3493Context *context = GetValidGlobalContext();3494EVENT(context, GLVertexAttribL1d, "context = %d, index = %u, x = %f", CID(context), index, x);34953496if (context)3497{3498std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);3499bool isCallValid =3500(context->skipValidation() || ValidateVertexAttribL1d(context, index, x));3501if (isCallValid)3502{3503context->vertexAttribL1d(index, x);3504}3505ANGLE_CAPTURE(VertexAttribL1d, isCallValid, context, index, x);3506}3507else3508{3509GenerateContextLostErrorOnCurrentGlobalContext();3510}3511}35123513void GL_APIENTRY GL_VertexAttribL1dv(GLuint index, const GLdouble *v)3514{3515Context *context = GetValidGlobalContext();3516EVENT(context, GLVertexAttribL1dv, "context = %d, index = %u, v = 0x%016" PRIxPTR "",3517CID(context), index, (uintptr_t)v);35183519if (context)3520{3521std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);3522bool isCallValid =3523(context->skipValidation() || ValidateVertexAttribL1dv(context, index, v));3524if (isCallValid)3525{3526context->vertexAttribL1dv(index, v);3527}3528ANGLE_CAPTURE(VertexAttribL1dv, isCallValid, context, index, v);3529}3530else3531{3532GenerateContextLostErrorOnCurrentGlobalContext();3533}3534}35353536void GL_APIENTRY GL_VertexAttribL2d(GLuint index, GLdouble x, GLdouble y)3537{3538Context *context = GetValidGlobalContext();3539EVENT(context, GLVertexAttribL2d, "context = %d, index = %u, x = %f, y = %f", CID(context),3540index, x, y);35413542if (context)3543{3544std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);3545bool isCallValid =3546(context->skipValidation() || ValidateVertexAttribL2d(context, index, x, y));3547if (isCallValid)3548{3549context->vertexAttribL2d(index, x, y);3550}3551ANGLE_CAPTURE(VertexAttribL2d, isCallValid, context, index, x, y);3552}3553else3554{3555GenerateContextLostErrorOnCurrentGlobalContext();3556}3557}35583559void GL_APIENTRY GL_VertexAttribL2dv(GLuint index, const GLdouble *v)3560{3561Context *context = GetValidGlobalContext();3562EVENT(context, GLVertexAttribL2dv, "context = %d, index = %u, v = 0x%016" PRIxPTR "",3563CID(context), index, (uintptr_t)v);35643565if (context)3566{3567std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);3568bool isCallValid =3569(context->skipValidation() || ValidateVertexAttribL2dv(context, index, v));3570if (isCallValid)3571{3572context->vertexAttribL2dv(index, v);3573}3574ANGLE_CAPTURE(VertexAttribL2dv, isCallValid, context, index, v);3575}3576else3577{3578GenerateContextLostErrorOnCurrentGlobalContext();3579}3580}35813582void GL_APIENTRY GL_VertexAttribL3d(GLuint index, GLdouble x, GLdouble y, GLdouble z)3583{3584Context *context = GetValidGlobalContext();3585EVENT(context, GLVertexAttribL3d, "context = %d, index = %u, x = %f, y = %f, z = %f",3586CID(context), index, x, y, z);35873588if (context)3589{3590std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);3591bool isCallValid =3592(context->skipValidation() || ValidateVertexAttribL3d(context, index, x, y, z));3593if (isCallValid)3594{3595context->vertexAttribL3d(index, x, y, z);3596}3597ANGLE_CAPTURE(VertexAttribL3d, isCallValid, context, index, x, y, z);3598}3599else3600{3601GenerateContextLostErrorOnCurrentGlobalContext();3602}3603}36043605void GL_APIENTRY GL_VertexAttribL3dv(GLuint index, const GLdouble *v)3606{3607Context *context = GetValidGlobalContext();3608EVENT(context, GLVertexAttribL3dv, "context = %d, index = %u, v = 0x%016" PRIxPTR "",3609CID(context), index, (uintptr_t)v);36103611if (context)3612{3613std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);3614bool isCallValid =3615(context->skipValidation() || ValidateVertexAttribL3dv(context, index, v));3616if (isCallValid)3617{3618context->vertexAttribL3dv(index, v);3619}3620ANGLE_CAPTURE(VertexAttribL3dv, isCallValid, context, index, v);3621}3622else3623{3624GenerateContextLostErrorOnCurrentGlobalContext();3625}3626}36273628void GL_APIENTRY GL_VertexAttribL4d(GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w)3629{3630Context *context = GetValidGlobalContext();3631EVENT(context, GLVertexAttribL4d, "context = %d, index = %u, x = %f, y = %f, z = %f, w = %f",3632CID(context), index, x, y, z, w);36333634if (context)3635{3636std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);3637bool isCallValid =3638(context->skipValidation() || ValidateVertexAttribL4d(context, index, x, y, z, w));3639if (isCallValid)3640{3641context->vertexAttribL4d(index, x, y, z, w);3642}3643ANGLE_CAPTURE(VertexAttribL4d, isCallValid, context, index, x, y, z, w);3644}3645else3646{3647GenerateContextLostErrorOnCurrentGlobalContext();3648}3649}36503651void GL_APIENTRY GL_VertexAttribL4dv(GLuint index, const GLdouble *v)3652{3653Context *context = GetValidGlobalContext();3654EVENT(context, GLVertexAttribL4dv, "context = %d, index = %u, v = 0x%016" PRIxPTR "",3655CID(context), index, (uintptr_t)v);36563657if (context)3658{3659std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);3660bool isCallValid =3661(context->skipValidation() || ValidateVertexAttribL4dv(context, index, v));3662if (isCallValid)3663{3664context->vertexAttribL4dv(index, v);3665}3666ANGLE_CAPTURE(VertexAttribL4dv, isCallValid, context, index, v);3667}3668else3669{3670GenerateContextLostErrorOnCurrentGlobalContext();3671}3672}36733674void GL_APIENTRY3675GL_VertexAttribLPointer(GLuint index, GLint size, GLenum type, GLsizei stride, const void *pointer)3676{3677Context *context = GetValidGlobalContext();3678EVENT(context, GLVertexAttribLPointer,3679"context = %d, index = %u, size = %d, type = %s, stride = %d, pointer = 0x%016" PRIxPTR3680"",3681CID(context), index, size, GLenumToString(GLenumGroup::VertexAttribPointerType, type),3682stride, (uintptr_t)pointer);36833684if (context)3685{3686std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);3687bool isCallValid =3688(context->skipValidation() ||3689ValidateVertexAttribLPointer(context, index, size, type, stride, pointer));3690if (isCallValid)3691{3692context->vertexAttribLPointer(index, size, type, stride, pointer);3693}3694ANGLE_CAPTURE(VertexAttribLPointer, isCallValid, context, index, size, type, stride,3695pointer);3696}3697else3698{3699GenerateContextLostErrorOnCurrentGlobalContext();3700}3701}37023703void GL_APIENTRY GL_ViewportArrayv(GLuint first, GLsizei count, const GLfloat *v)3704{3705Context *context = GetValidGlobalContext();3706EVENT(context, GLViewportArrayv, "context = %d, first = %u, count = %d, v = 0x%016" PRIxPTR "",3707CID(context), first, count, (uintptr_t)v);37083709if (context)3710{3711std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);3712bool isCallValid =3713(context->skipValidation() || ValidateViewportArrayv(context, first, count, v));3714if (isCallValid)3715{3716context->viewportArrayv(first, count, v);3717}3718ANGLE_CAPTURE(ViewportArrayv, isCallValid, context, first, count, v);3719}3720else3721{3722GenerateContextLostErrorOnCurrentGlobalContext();3723}3724}37253726void GL_APIENTRY GL_ViewportIndexedf(GLuint index, GLfloat x, GLfloat y, GLfloat w, GLfloat h)3727{3728Context *context = GetValidGlobalContext();3729EVENT(context, GLViewportIndexedf, "context = %d, index = %u, x = %f, y = %f, w = %f, h = %f",3730CID(context), index, x, y, w, h);37313732if (context)3733{3734std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);3735bool isCallValid =3736(context->skipValidation() || ValidateViewportIndexedf(context, index, x, y, w, h));3737if (isCallValid)3738{3739context->viewportIndexedf(index, x, y, w, h);3740}3741ANGLE_CAPTURE(ViewportIndexedf, isCallValid, context, index, x, y, w, h);3742}3743else3744{3745GenerateContextLostErrorOnCurrentGlobalContext();3746}3747}37483749void GL_APIENTRY GL_ViewportIndexedfv(GLuint index, const GLfloat *v)3750{3751Context *context = GetValidGlobalContext();3752EVENT(context, GLViewportIndexedfv, "context = %d, index = %u, v = 0x%016" PRIxPTR "",3753CID(context), index, (uintptr_t)v);37543755if (context)3756{3757std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);3758bool isCallValid =3759(context->skipValidation() || ValidateViewportIndexedfv(context, index, v));3760if (isCallValid)3761{3762context->viewportIndexedfv(index, v);3763}3764ANGLE_CAPTURE(ViewportIndexedfv, isCallValid, context, index, v);3765}3766else3767{3768GenerateContextLostErrorOnCurrentGlobalContext();3769}3770}37713772// GL 4.23773void GL_APIENTRY GL_BindImageTexture(GLuint unit,3774GLuint texture,3775GLint level,3776GLboolean layered,3777GLint layer,3778GLenum access,3779GLenum format)3780{3781Context *context = GetValidGlobalContext();3782EVENT(context, GLBindImageTexture,3783"context = %d, unit = %u, texture = %u, level = %d, layered = %s, layer = %d, access = "3784"%s, format = %s",3785CID(context), unit, texture, level, GLbooleanToString(layered), layer,3786GLenumToString(GLenumGroup::BufferAccessARB, access),3787GLenumToString(GLenumGroup::InternalFormat, format));37883789if (context)3790{3791TextureID texturePacked = PackParam<TextureID>(texture);3792std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);3793bool isCallValid = (context->skipValidation() ||3794ValidateBindImageTexture(context, unit, texturePacked, level, layered,3795layer, access, format));3796if (isCallValid)3797{3798context->bindImageTexture(unit, texturePacked, level, layered, layer, access, format);3799}3800ANGLE_CAPTURE(BindImageTexture, isCallValid, context, unit, texturePacked, level, layered,3801layer, access, format);3802}3803else3804{3805GenerateContextLostErrorOnCurrentGlobalContext();3806}3807}38083809void GL_APIENTRY GL_DrawArraysInstancedBaseInstance(GLenum mode,3810GLint first,3811GLsizei count,3812GLsizei instancecount,3813GLuint baseinstance)3814{3815Context *context = GetValidGlobalContext();3816EVENT(context, GLDrawArraysInstancedBaseInstance,3817"context = %d, mode = %s, first = %d, count = %d, instancecount = %d, baseinstance = %u",3818CID(context), GLenumToString(GLenumGroup::PrimitiveType, mode), first, count,3819instancecount, baseinstance);38203821if (context)3822{3823PrimitiveMode modePacked = PackParam<PrimitiveMode>(mode);3824std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);3825bool isCallValid = (context->skipValidation() ||3826ValidateDrawArraysInstancedBaseInstance(3827context, modePacked, first, count, instancecount, baseinstance));3828if (isCallValid)3829{3830context->drawArraysInstancedBaseInstance(modePacked, first, count, instancecount,3831baseinstance);3832}3833ANGLE_CAPTURE(DrawArraysInstancedBaseInstance, isCallValid, context, modePacked, first,3834count, instancecount, baseinstance);3835}3836else3837{3838GenerateContextLostErrorOnCurrentGlobalContext();3839}3840}38413842void GL_APIENTRY GL_DrawElementsInstancedBaseInstance(GLenum mode,3843GLsizei count,3844GLenum type,3845const void *indices,3846GLsizei instancecount,3847GLuint baseinstance)3848{3849Context *context = GetValidGlobalContext();3850EVENT(context, GLDrawElementsInstancedBaseInstance,3851"context = %d, mode = %s, count = %d, type = %s, indices = 0x%016" PRIxPTR3852", instancecount = %d, baseinstance = %u",3853CID(context), GLenumToString(GLenumGroup::PrimitiveType, mode), count,3854GLenumToString(GLenumGroup::PrimitiveType, type), (uintptr_t)indices, instancecount,3855baseinstance);38563857if (context)3858{3859std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);3860bool isCallValid = (context->skipValidation() ||3861ValidateDrawElementsInstancedBaseInstance(3862context, mode, count, type, indices, instancecount, baseinstance));3863if (isCallValid)3864{3865context->drawElementsInstancedBaseInstance(mode, count, type, indices, instancecount,3866baseinstance);3867}3868ANGLE_CAPTURE(DrawElementsInstancedBaseInstance, isCallValid, context, mode, count, type,3869indices, instancecount, baseinstance);3870}3871else3872{3873GenerateContextLostErrorOnCurrentGlobalContext();3874}3875}38763877void GL_APIENTRY GL_DrawElementsInstancedBaseVertexBaseInstance(GLenum mode,3878GLsizei count,3879GLenum type,3880const void *indices,3881GLsizei instancecount,3882GLint basevertex,3883GLuint baseinstance)3884{3885Context *context = GetValidGlobalContext();3886EVENT(context, GLDrawElementsInstancedBaseVertexBaseInstance,3887"context = %d, mode = %s, count = %d, type = %s, indices = 0x%016" PRIxPTR3888", instancecount = %d, basevertex = %d, baseinstance = %u",3889CID(context), GLenumToString(GLenumGroup::PrimitiveType, mode), count,3890GLenumToString(GLenumGroup::PrimitiveType, type), (uintptr_t)indices, instancecount,3891basevertex, baseinstance);38923893if (context)3894{3895PrimitiveMode modePacked = PackParam<PrimitiveMode>(mode);3896DrawElementsType typePacked = PackParam<DrawElementsType>(type);3897std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);3898bool isCallValid =3899(context->skipValidation() || ValidateDrawElementsInstancedBaseVertexBaseInstance(3900context, modePacked, count, typePacked, indices,3901instancecount, basevertex, baseinstance));3902if (isCallValid)3903{3904context->drawElementsInstancedBaseVertexBaseInstance(3905modePacked, count, typePacked, indices, instancecount, basevertex, baseinstance);3906}3907ANGLE_CAPTURE(DrawElementsInstancedBaseVertexBaseInstance, isCallValid, context, modePacked,3908count, typePacked, indices, instancecount, basevertex, baseinstance);3909}3910else3911{3912GenerateContextLostErrorOnCurrentGlobalContext();3913}3914}39153916void GL_APIENTRY GL_DrawTransformFeedbackInstanced(GLenum mode, GLuint id, GLsizei instancecount)3917{3918Context *context = GetValidGlobalContext();3919EVENT(context, GLDrawTransformFeedbackInstanced,3920"context = %d, mode = %s, id = %u, instancecount = %d", CID(context),3921GLenumToString(GLenumGroup::PrimitiveType, mode), id, instancecount);39223923if (context)3924{3925TransformFeedbackID idPacked = PackParam<TransformFeedbackID>(id);3926std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);3927bool isCallValid =3928(context->skipValidation() ||3929ValidateDrawTransformFeedbackInstanced(context, mode, idPacked, instancecount));3930if (isCallValid)3931{3932context->drawTransformFeedbackInstanced(mode, idPacked, instancecount);3933}3934ANGLE_CAPTURE(DrawTransformFeedbackInstanced, isCallValid, context, mode, idPacked,3935instancecount);3936}3937else3938{3939GenerateContextLostErrorOnCurrentGlobalContext();3940}3941}39423943void GL_APIENTRY GL_DrawTransformFeedbackStreamInstanced(GLenum mode,3944GLuint id,3945GLuint stream,3946GLsizei instancecount)3947{3948Context *context = GetValidGlobalContext();3949EVENT(context, GLDrawTransformFeedbackStreamInstanced,3950"context = %d, mode = %s, id = %u, stream = %u, instancecount = %d", CID(context),3951GLenumToString(GLenumGroup::PrimitiveType, mode), id, stream, instancecount);39523953if (context)3954{3955TransformFeedbackID idPacked = PackParam<TransformFeedbackID>(id);3956std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);3957bool isCallValid =3958(context->skipValidation() || ValidateDrawTransformFeedbackStreamInstanced(3959context, mode, idPacked, stream, instancecount));3960if (isCallValid)3961{3962context->drawTransformFeedbackStreamInstanced(mode, idPacked, stream, instancecount);3963}3964ANGLE_CAPTURE(DrawTransformFeedbackStreamInstanced, isCallValid, context, mode, idPacked,3965stream, instancecount);3966}3967else3968{3969GenerateContextLostErrorOnCurrentGlobalContext();3970}3971}39723973void GL_APIENTRY GL_GetActiveAtomicCounterBufferiv(GLuint program,3974GLuint bufferIndex,3975GLenum pname,3976GLint *params)3977{3978Context *context = GetValidGlobalContext();3979EVENT(context, GLGetActiveAtomicCounterBufferiv,3980"context = %d, program = %u, bufferIndex = %u, pname = %s, params = 0x%016" PRIxPTR "",3981CID(context), program, bufferIndex,3982GLenumToString(GLenumGroup::AtomicCounterBufferPName, pname), (uintptr_t)params);39833984if (context)3985{3986ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);3987std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);3988bool isCallValid =3989(context->skipValidation() || ValidateGetActiveAtomicCounterBufferiv(3990context, programPacked, bufferIndex, pname, params));3991if (isCallValid)3992{3993context->getActiveAtomicCounterBufferiv(programPacked, bufferIndex, pname, params);3994}3995ANGLE_CAPTURE(GetActiveAtomicCounterBufferiv, isCallValid, context, programPacked,3996bufferIndex, pname, params);3997}3998else3999{4000GenerateContextLostErrorOnCurrentGlobalContext();4001}4002}40034004void GL_APIENTRY GL_GetInternalformativ(GLenum target,4005GLenum internalformat,4006GLenum pname,4007GLsizei bufSize,4008GLint *params)4009{4010Context *context = GetValidGlobalContext();4011EVENT(context, GLGetInternalformativ,4012"context = %d, target = %s, internalformat = %s, pname = %s, bufSize = %d, params = "4013"0x%016" PRIxPTR "",4014CID(context), GLenumToString(GLenumGroup::TextureTarget, target),4015GLenumToString(GLenumGroup::InternalFormat, internalformat),4016GLenumToString(GLenumGroup::InternalFormatPName, pname), bufSize, (uintptr_t)params);40174018if (context)4019{4020std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);4021bool isCallValid =4022(context->skipValidation() ||4023ValidateGetInternalformativ(context, target, internalformat, pname, bufSize, params));4024if (isCallValid)4025{4026context->getInternalformativ(target, internalformat, pname, bufSize, params);4027}4028ANGLE_CAPTURE(GetInternalformativ, isCallValid, context, target, internalformat, pname,4029bufSize, params);4030}4031else4032{4033GenerateContextLostErrorOnCurrentGlobalContext();4034}4035}40364037void GL_APIENTRY GL_MemoryBarrier(GLbitfield barriers)4038{4039Context *context = GetValidGlobalContext();4040EVENT(context, GLMemoryBarrier, "context = %d, barriers = %s", CID(context),4041GLbitfieldToString(GLenumGroup::MemoryBarrierMask, barriers).c_str());40424043if (context)4044{4045std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);4046bool isCallValid = (context->skipValidation() || ValidateMemoryBarrier(context, barriers));4047if (isCallValid)4048{4049context->memoryBarrier(barriers);4050}4051ANGLE_CAPTURE(MemoryBarrier, isCallValid, context, barriers);4052}4053else4054{4055GenerateContextLostErrorOnCurrentGlobalContext();4056}4057}40584059void GL_APIENTRY GL_TexStorage1D(GLenum target,4060GLsizei levels,4061GLenum internalformat,4062GLsizei width)4063{4064Context *context = GetValidGlobalContext();4065EVENT(context, GLTexStorage1D,4066"context = %d, target = %s, levels = %d, internalformat = %s, width = %d", CID(context),4067GLenumToString(GLenumGroup::TextureTarget, target), levels,4068GLenumToString(GLenumGroup::InternalFormat, internalformat), width);40694070if (context)4071{4072std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);4073bool isCallValid = (context->skipValidation() ||4074ValidateTexStorage1D(context, target, levels, internalformat, width));4075if (isCallValid)4076{4077context->texStorage1D(target, levels, internalformat, width);4078}4079ANGLE_CAPTURE(TexStorage1D, isCallValid, context, target, levels, internalformat, width);4080}4081else4082{4083GenerateContextLostErrorOnCurrentGlobalContext();4084}4085}40864087void GL_APIENTRY4088GL_TexStorage2D(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height)4089{4090Context *context = GetValidGlobalContext();4091EVENT(context, GLTexStorage2D,4092"context = %d, target = %s, levels = %d, internalformat = %s, width = %d, height = %d",4093CID(context), GLenumToString(GLenumGroup::TextureTarget, target), levels,4094GLenumToString(GLenumGroup::InternalFormat, internalformat), width, height);40954096if (context)4097{4098TextureType targetPacked = PackParam<TextureType>(target);4099std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);4100bool isCallValid =4101(context->skipValidation() ||4102ValidateTexStorage2D(context, targetPacked, levels, internalformat, width, height));4103if (isCallValid)4104{4105context->texStorage2D(targetPacked, levels, internalformat, width, height);4106}4107ANGLE_CAPTURE(TexStorage2D, isCallValid, context, targetPacked, levels, internalformat,4108width, height);4109}4110else4111{4112GenerateContextLostErrorOnCurrentGlobalContext();4113}4114}41154116void GL_APIENTRY GL_TexStorage3D(GLenum target,4117GLsizei levels,4118GLenum internalformat,4119GLsizei width,4120GLsizei height,4121GLsizei depth)4122{4123Context *context = GetValidGlobalContext();4124EVENT(context, GLTexStorage3D,4125"context = %d, target = %s, levels = %d, internalformat = %s, width = %d, height = %d, "4126"depth = %d",4127CID(context), GLenumToString(GLenumGroup::TextureTarget, target), levels,4128GLenumToString(GLenumGroup::InternalFormat, internalformat), width, height, depth);41294130if (context)4131{4132TextureType targetPacked = PackParam<TextureType>(target);4133std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);4134bool isCallValid = (context->skipValidation() ||4135ValidateTexStorage3D(context, targetPacked, levels, internalformat,4136width, height, depth));4137if (isCallValid)4138{4139context->texStorage3D(targetPacked, levels, internalformat, width, height, depth);4140}4141ANGLE_CAPTURE(TexStorage3D, isCallValid, context, targetPacked, levels, internalformat,4142width, height, depth);4143}4144else4145{4146GenerateContextLostErrorOnCurrentGlobalContext();4147}4148}41494150// GL 4.34151void GL_APIENTRY GL_BindVertexBuffer(GLuint bindingindex,4152GLuint buffer,4153GLintptr offset,4154GLsizei stride)4155{4156Context *context = GetValidGlobalContext();4157EVENT(context, GLBindVertexBuffer,4158"context = %d, bindingindex = %u, buffer = %u, offset = %llu, stride = %d", CID(context),4159bindingindex, buffer, static_cast<unsigned long long>(offset), stride);41604161if (context)4162{4163BufferID bufferPacked = PackParam<BufferID>(buffer);4164std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);4165bool isCallValid =4166(context->skipValidation() ||4167ValidateBindVertexBuffer(context, bindingindex, bufferPacked, offset, stride));4168if (isCallValid)4169{4170context->bindVertexBuffer(bindingindex, bufferPacked, offset, stride);4171}4172ANGLE_CAPTURE(BindVertexBuffer, isCallValid, context, bindingindex, bufferPacked, offset,4173stride);4174}4175else4176{4177GenerateContextLostErrorOnCurrentGlobalContext();4178}4179}41804181void GL_APIENTRY GL_ClearBufferData(GLenum target,4182GLenum internalformat,4183GLenum format,4184GLenum type,4185const void *data)4186{4187Context *context = GetValidGlobalContext();4188EVENT(context, GLClearBufferData,4189"context = %d, target = %s, internalformat = %s, format = %s, type = %s, data = "4190"0x%016" PRIxPTR "",4191CID(context), GLenumToString(GLenumGroup::BufferStorageTarget, target),4192GLenumToString(GLenumGroup::InternalFormat, internalformat),4193GLenumToString(GLenumGroup::PixelFormat, format),4194GLenumToString(GLenumGroup::PixelType, type), (uintptr_t)data);41954196if (context)4197{4198std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);4199bool isCallValid =4200(context->skipValidation() ||4201ValidateClearBufferData(context, target, internalformat, format, type, data));4202if (isCallValid)4203{4204context->clearBufferData(target, internalformat, format, type, data);4205}4206ANGLE_CAPTURE(ClearBufferData, isCallValid, context, target, internalformat, format, type,4207data);4208}4209else4210{4211GenerateContextLostErrorOnCurrentGlobalContext();4212}4213}42144215void GL_APIENTRY GL_ClearBufferSubData(GLenum target,4216GLenum internalformat,4217GLintptr offset,4218GLsizeiptr size,4219GLenum format,4220GLenum type,4221const void *data)4222{4223Context *context = GetValidGlobalContext();4224EVENT(context, GLClearBufferSubData,4225"context = %d, target = %s, internalformat = %s, offset = %llu, size = %llu, format = "4226"%s, type = %s, data = 0x%016" PRIxPTR "",4227CID(context), GLenumToString(GLenumGroup::DefaultGroup, target),4228GLenumToString(GLenumGroup::InternalFormat, internalformat),4229static_cast<unsigned long long>(offset), static_cast<unsigned long long>(size),4230GLenumToString(GLenumGroup::PixelFormat, format),4231GLenumToString(GLenumGroup::PixelType, type), (uintptr_t)data);42324233if (context)4234{4235std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);4236bool isCallValid = (context->skipValidation() ||4237ValidateClearBufferSubData(context, target, internalformat, offset,4238size, format, type, data));4239if (isCallValid)4240{4241context->clearBufferSubData(target, internalformat, offset, size, format, type, data);4242}4243ANGLE_CAPTURE(ClearBufferSubData, isCallValid, context, target, internalformat, offset,4244size, format, type, data);4245}4246else4247{4248GenerateContextLostErrorOnCurrentGlobalContext();4249}4250}42514252void GL_APIENTRY GL_CopyImageSubData(GLuint srcName,4253GLenum srcTarget,4254GLint srcLevel,4255GLint srcX,4256GLint srcY,4257GLint srcZ,4258GLuint dstName,4259GLenum dstTarget,4260GLint dstLevel,4261GLint dstX,4262GLint dstY,4263GLint dstZ,4264GLsizei srcWidth,4265GLsizei srcHeight,4266GLsizei srcDepth)4267{4268Context *context = GetValidGlobalContext();4269EVENT(context, GLCopyImageSubData,4270"context = %d, srcName = %u, srcTarget = %s, srcLevel = %d, srcX = %d, srcY = %d, srcZ = "4271"%d, dstName = %u, dstTarget = %s, dstLevel = %d, dstX = %d, dstY = %d, dstZ = %d, "4272"srcWidth = %d, srcHeight = %d, srcDepth = %d",4273CID(context), srcName, GLenumToString(GLenumGroup::CopyBufferSubDataTarget, srcTarget),4274srcLevel, srcX, srcY, srcZ, dstName,4275GLenumToString(GLenumGroup::CopyBufferSubDataTarget, dstTarget), dstLevel, dstX, dstY,4276dstZ, srcWidth, srcHeight, srcDepth);42774278if (context)4279{4280std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);4281bool isCallValid = (context->skipValidation() ||4282ValidateCopyImageSubData(context, srcName, srcTarget, srcLevel, srcX,4283srcY, srcZ, dstName, dstTarget, dstLevel, dstX,4284dstY, dstZ, srcWidth, srcHeight, srcDepth));4285if (isCallValid)4286{4287context->copyImageSubData(srcName, srcTarget, srcLevel, srcX, srcY, srcZ, dstName,4288dstTarget, dstLevel, dstX, dstY, dstZ, srcWidth, srcHeight,4289srcDepth);4290}4291ANGLE_CAPTURE(CopyImageSubData, isCallValid, context, srcName, srcTarget, srcLevel, srcX,4292srcY, srcZ, dstName, dstTarget, dstLevel, dstX, dstY, dstZ, srcWidth,4293srcHeight, srcDepth);4294}4295else4296{4297GenerateContextLostErrorOnCurrentGlobalContext();4298}4299}43004301void GL_APIENTRY GL_DebugMessageCallback(GLDEBUGPROC callback, const void *userParam)4302{4303Context *context = GetValidGlobalContext();4304EVENT(context, GLDebugMessageCallback,4305"context = %d, callback = 0x%016" PRIxPTR ", userParam = 0x%016" PRIxPTR "", CID(context),4306(uintptr_t)callback, (uintptr_t)userParam);43074308if (context)4309{4310std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);4311bool isCallValid = (context->skipValidation() ||4312ValidateDebugMessageCallback(context, callback, userParam));4313if (isCallValid)4314{4315context->debugMessageCallback(callback, userParam);4316}4317ANGLE_CAPTURE(DebugMessageCallback, isCallValid, context, callback, userParam);4318}4319else4320{4321GenerateContextLostErrorOnCurrentGlobalContext();4322}4323}43244325void GL_APIENTRY GL_DebugMessageControl(GLenum source,4326GLenum type,4327GLenum severity,4328GLsizei count,4329const GLuint *ids,4330GLboolean enabled)4331{4332Context *context = GetValidGlobalContext();4333EVENT(context, GLDebugMessageControl,4334"context = %d, source = %s, type = %s, severity = %s, count = %d, ids = 0x%016" PRIxPTR4335", enabled = %s",4336CID(context), GLenumToString(GLenumGroup::DebugSource, source),4337GLenumToString(GLenumGroup::DebugType, type),4338GLenumToString(GLenumGroup::DebugSeverity, severity), count, (uintptr_t)ids,4339GLbooleanToString(enabled));43404341if (context)4342{4343std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);4344bool isCallValid =4345(context->skipValidation() ||4346ValidateDebugMessageControl(context, source, type, severity, count, ids, enabled));4347if (isCallValid)4348{4349context->debugMessageControl(source, type, severity, count, ids, enabled);4350}4351ANGLE_CAPTURE(DebugMessageControl, isCallValid, context, source, type, severity, count, ids,4352enabled);4353}4354else4355{4356GenerateContextLostErrorOnCurrentGlobalContext();4357}4358}43594360void GL_APIENTRY GL_DebugMessageInsert(GLenum source,4361GLenum type,4362GLuint id,4363GLenum severity,4364GLsizei length,4365const GLchar *buf)4366{4367Context *context = GetValidGlobalContext();4368EVENT(context, GLDebugMessageInsert,4369"context = %d, source = %s, type = %s, id = %u, severity = %s, length = %d, buf = "4370"0x%016" PRIxPTR "",4371CID(context), GLenumToString(GLenumGroup::DebugSource, source),4372GLenumToString(GLenumGroup::DebugType, type), id,4373GLenumToString(GLenumGroup::DebugSeverity, severity), length, (uintptr_t)buf);43744375if (context)4376{4377std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);4378bool isCallValid =4379(context->skipValidation() ||4380ValidateDebugMessageInsert(context, source, type, id, severity, length, buf));4381if (isCallValid)4382{4383context->debugMessageInsert(source, type, id, severity, length, buf);4384}4385ANGLE_CAPTURE(DebugMessageInsert, isCallValid, context, source, type, id, severity, length,4386buf);4387}4388else4389{4390GenerateContextLostErrorOnCurrentGlobalContext();4391}4392}43934394void GL_APIENTRY GL_DispatchCompute(GLuint num_groups_x, GLuint num_groups_y, GLuint num_groups_z)4395{4396Context *context = GetValidGlobalContext();4397EVENT(context, GLDispatchCompute,4398"context = %d, num_groups_x = %u, num_groups_y = %u, num_groups_z = %u", CID(context),4399num_groups_x, num_groups_y, num_groups_z);44004401if (context)4402{4403std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);4404bool isCallValid =4405(context->skipValidation() ||4406ValidateDispatchCompute(context, num_groups_x, num_groups_y, num_groups_z));4407if (isCallValid)4408{4409context->dispatchCompute(num_groups_x, num_groups_y, num_groups_z);4410}4411ANGLE_CAPTURE(DispatchCompute, isCallValid, context, num_groups_x, num_groups_y,4412num_groups_z);4413}4414else4415{4416GenerateContextLostErrorOnCurrentGlobalContext();4417}4418}44194420void GL_APIENTRY GL_DispatchComputeIndirect(GLintptr indirect)4421{4422Context *context = GetValidGlobalContext();4423EVENT(context, GLDispatchComputeIndirect, "context = %d, indirect = %llu", CID(context),4424static_cast<unsigned long long>(indirect));44254426if (context)4427{4428std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);4429bool isCallValid =4430(context->skipValidation() || ValidateDispatchComputeIndirect(context, indirect));4431if (isCallValid)4432{4433context->dispatchComputeIndirect(indirect);4434}4435ANGLE_CAPTURE(DispatchComputeIndirect, isCallValid, context, indirect);4436}4437else4438{4439GenerateContextLostErrorOnCurrentGlobalContext();4440}4441}44424443void GL_APIENTRY GL_FramebufferParameteri(GLenum target, GLenum pname, GLint param)4444{4445Context *context = GetValidGlobalContext();4446EVENT(context, GLFramebufferParameteri, "context = %d, target = %s, pname = %s, param = %d",4447CID(context), GLenumToString(GLenumGroup::FramebufferTarget, target),4448GLenumToString(GLenumGroup::FramebufferParameterName, pname), param);44494450if (context)4451{4452std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);4453bool isCallValid = (context->skipValidation() ||4454ValidateFramebufferParameteri(context, target, pname, param));4455if (isCallValid)4456{4457context->framebufferParameteri(target, pname, param);4458}4459ANGLE_CAPTURE(FramebufferParameteri, isCallValid, context, target, pname, param);4460}4461else4462{4463GenerateContextLostErrorOnCurrentGlobalContext();4464}4465}44664467GLuint GL_APIENTRY GL_GetDebugMessageLog(GLuint count,4468GLsizei bufSize,4469GLenum *sources,4470GLenum *types,4471GLuint *ids,4472GLenum *severities,4473GLsizei *lengths,4474GLchar *messageLog)4475{4476Context *context = GetValidGlobalContext();4477EVENT(context, GLGetDebugMessageLog,4478"context = %d, count = %u, bufSize = %d, sources = 0x%016" PRIxPTR4479", types = 0x%016" PRIxPTR ", ids = 0x%016" PRIxPTR ", severities = 0x%016" PRIxPTR4480", lengths = 0x%016" PRIxPTR ", messageLog = 0x%016" PRIxPTR "",4481CID(context), count, bufSize, (uintptr_t)sources, (uintptr_t)types, (uintptr_t)ids,4482(uintptr_t)severities, (uintptr_t)lengths, (uintptr_t)messageLog);44834484GLuint returnValue;4485if (context)4486{4487std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);4488bool isCallValid = (context->skipValidation() ||4489ValidateGetDebugMessageLog(context, count, bufSize, sources, types, ids,4490severities, lengths, messageLog));4491if (isCallValid)4492{4493returnValue = context->getDebugMessageLog(count, bufSize, sources, types, ids,4494severities, lengths, messageLog);4495}4496else4497{4498returnValue = GetDefaultReturnValue<angle::EntryPoint::GLGetDebugMessageLog, GLuint>();4499}4500ANGLE_CAPTURE(GetDebugMessageLog, isCallValid, context, count, bufSize, sources, types, ids,4501severities, lengths, messageLog, returnValue);4502}4503else4504{4505GenerateContextLostErrorOnCurrentGlobalContext();4506returnValue = GetDefaultReturnValue<angle::EntryPoint::GLGetDebugMessageLog, GLuint>();4507}4508return returnValue;4509}45104511void GL_APIENTRY GL_GetFramebufferParameteriv(GLenum target, GLenum pname, GLint *params)4512{4513Context *context = GetValidGlobalContext();4514EVENT(context, GLGetFramebufferParameteriv,4515"context = %d, target = %s, pname = %s, params = 0x%016" PRIxPTR "", CID(context),4516GLenumToString(GLenumGroup::FramebufferTarget, target),4517GLenumToString(GLenumGroup::FramebufferAttachmentParameterName, pname),4518(uintptr_t)params);45194520if (context)4521{4522std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);4523bool isCallValid = (context->skipValidation() ||4524ValidateGetFramebufferParameteriv(context, target, pname, params));4525if (isCallValid)4526{4527context->getFramebufferParameteriv(target, pname, params);4528}4529ANGLE_CAPTURE(GetFramebufferParameteriv, isCallValid, context, target, pname, params);4530}4531else4532{4533GenerateContextLostErrorOnCurrentGlobalContext();4534}4535}45364537void GL_APIENTRY GL_GetInternalformati64v(GLenum target,4538GLenum internalformat,4539GLenum pname,4540GLsizei bufSize,4541GLint64 *params)4542{4543Context *context = GetValidGlobalContext();4544EVENT(context, GLGetInternalformati64v,4545"context = %d, target = %s, internalformat = %s, pname = %s, bufSize = %d, params = "4546"0x%016" PRIxPTR "",4547CID(context), GLenumToString(GLenumGroup::TextureTarget, target),4548GLenumToString(GLenumGroup::InternalFormat, internalformat),4549GLenumToString(GLenumGroup::InternalFormatPName, pname), bufSize, (uintptr_t)params);45504551if (context)4552{4553std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);4554bool isCallValid = (context->skipValidation() ||4555ValidateGetInternalformati64v(context, target, internalformat, pname,4556bufSize, params));4557if (isCallValid)4558{4559context->getInternalformati64v(target, internalformat, pname, bufSize, params);4560}4561ANGLE_CAPTURE(GetInternalformati64v, isCallValid, context, target, internalformat, pname,4562bufSize, params);4563}4564else4565{4566GenerateContextLostErrorOnCurrentGlobalContext();4567}4568}45694570void GL_APIENTRY4571GL_GetObjectLabel(GLenum identifier, GLuint name, GLsizei bufSize, GLsizei *length, GLchar *label)4572{4573Context *context = GetValidGlobalContext();4574EVENT(context, GLGetObjectLabel,4575"context = %d, identifier = %s, name = %u, bufSize = %d, length = 0x%016" PRIxPTR4576", label = 0x%016" PRIxPTR "",4577CID(context), GLenumToString(GLenumGroup::DefaultGroup, identifier), name, bufSize,4578(uintptr_t)length, (uintptr_t)label);45794580if (context)4581{4582std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);4583bool isCallValid =4584(context->skipValidation() ||4585ValidateGetObjectLabel(context, identifier, name, bufSize, length, label));4586if (isCallValid)4587{4588context->getObjectLabel(identifier, name, bufSize, length, label);4589}4590ANGLE_CAPTURE(GetObjectLabel, isCallValid, context, identifier, name, bufSize, length,4591label);4592}4593else4594{4595GenerateContextLostErrorOnCurrentGlobalContext();4596}4597}45984599void GL_APIENTRY GL_GetObjectPtrLabel(const void *ptr,4600GLsizei bufSize,4601GLsizei *length,4602GLchar *label)4603{4604Context *context = GetValidGlobalContext();4605EVENT(context, GLGetObjectPtrLabel,4606"context = %d, ptr = 0x%016" PRIxPTR ", bufSize = %d, length = 0x%016" PRIxPTR4607", label = 0x%016" PRIxPTR "",4608CID(context), (uintptr_t)ptr, bufSize, (uintptr_t)length, (uintptr_t)label);46094610if (context)4611{4612std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);4613bool isCallValid = (context->skipValidation() ||4614ValidateGetObjectPtrLabel(context, ptr, bufSize, length, label));4615if (isCallValid)4616{4617context->getObjectPtrLabel(ptr, bufSize, length, label);4618}4619ANGLE_CAPTURE(GetObjectPtrLabel, isCallValid, context, ptr, bufSize, length, label);4620}4621else4622{4623GenerateContextLostErrorOnCurrentGlobalContext();4624}4625}46264627void GL_APIENTRY GL_GetProgramInterfaceiv(GLuint program,4628GLenum programInterface,4629GLenum pname,4630GLint *params)4631{4632Context *context = GetValidGlobalContext();4633EVENT(context, GLGetProgramInterfaceiv,4634"context = %d, program = %u, programInterface = %s, pname = %s, params = 0x%016" PRIxPTR4635"",4636CID(context), program, GLenumToString(GLenumGroup::ProgramInterface, programInterface),4637GLenumToString(GLenumGroup::ProgramInterfacePName, pname), (uintptr_t)params);46384639if (context)4640{4641ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);4642std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);4643bool isCallValid = (context->skipValidation() ||4644ValidateGetProgramInterfaceiv(context, programPacked, programInterface,4645pname, params));4646if (isCallValid)4647{4648context->getProgramInterfaceiv(programPacked, programInterface, pname, params);4649}4650ANGLE_CAPTURE(GetProgramInterfaceiv, isCallValid, context, programPacked, programInterface,4651pname, params);4652}4653else4654{4655GenerateContextLostErrorOnCurrentGlobalContext();4656}4657}46584659GLuint GL_APIENTRY GL_GetProgramResourceIndex(GLuint program,4660GLenum programInterface,4661const GLchar *name)4662{4663Context *context = GetValidGlobalContext();4664EVENT(context, GLGetProgramResourceIndex,4665"context = %d, program = %u, programInterface = %s, name = 0x%016" PRIxPTR "",4666CID(context), program, GLenumToString(GLenumGroup::ProgramInterface, programInterface),4667(uintptr_t)name);46684669GLuint returnValue;4670if (context)4671{4672ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);4673std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);4674bool isCallValid =4675(context->skipValidation() ||4676ValidateGetProgramResourceIndex(context, programPacked, programInterface, name));4677if (isCallValid)4678{4679returnValue = context->getProgramResourceIndex(programPacked, programInterface, name);4680}4681else4682{4683returnValue =4684GetDefaultReturnValue<angle::EntryPoint::GLGetProgramResourceIndex, GLuint>();4685}4686ANGLE_CAPTURE(GetProgramResourceIndex, isCallValid, context, programPacked,4687programInterface, name, returnValue);4688}4689else4690{4691GenerateContextLostErrorOnCurrentGlobalContext();4692returnValue = GetDefaultReturnValue<angle::EntryPoint::GLGetProgramResourceIndex, GLuint>();4693}4694return returnValue;4695}46964697GLint GL_APIENTRY GL_GetProgramResourceLocation(GLuint program,4698GLenum programInterface,4699const GLchar *name)4700{4701Context *context = GetValidGlobalContext();4702EVENT(context, GLGetProgramResourceLocation,4703"context = %d, program = %u, programInterface = %s, name = 0x%016" PRIxPTR "",4704CID(context), program, GLenumToString(GLenumGroup::ProgramInterface, programInterface),4705(uintptr_t)name);47064707GLint returnValue;4708if (context)4709{4710ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);4711std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);4712bool isCallValid =4713(context->skipValidation() ||4714ValidateGetProgramResourceLocation(context, programPacked, programInterface, name));4715if (isCallValid)4716{4717returnValue =4718context->getProgramResourceLocation(programPacked, programInterface, name);4719}4720else4721{4722returnValue =4723GetDefaultReturnValue<angle::EntryPoint::GLGetProgramResourceLocation, GLint>();4724}4725ANGLE_CAPTURE(GetProgramResourceLocation, isCallValid, context, programPacked,4726programInterface, name, returnValue);4727}4728else4729{4730GenerateContextLostErrorOnCurrentGlobalContext();4731returnValue =4732GetDefaultReturnValue<angle::EntryPoint::GLGetProgramResourceLocation, GLint>();4733}4734return returnValue;4735}47364737GLint GL_APIENTRY GL_GetProgramResourceLocationIndex(GLuint program,4738GLenum programInterface,4739const GLchar *name)4740{4741Context *context = GetValidGlobalContext();4742EVENT(context, GLGetProgramResourceLocationIndex,4743"context = %d, program = %u, programInterface = %s, name = 0x%016" PRIxPTR "",4744CID(context), program, GLenumToString(GLenumGroup::ProgramInterface, programInterface),4745(uintptr_t)name);47464747GLint returnValue;4748if (context)4749{4750ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);4751std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);4752bool isCallValid =4753(context->skipValidation() || ValidateGetProgramResourceLocationIndex(4754context, programPacked, programInterface, name));4755if (isCallValid)4756{4757returnValue =4758context->getProgramResourceLocationIndex(programPacked, programInterface, name);4759}4760else4761{4762returnValue =4763GetDefaultReturnValue<angle::EntryPoint::GLGetProgramResourceLocationIndex,4764GLint>();4765}4766ANGLE_CAPTURE(GetProgramResourceLocationIndex, isCallValid, context, programPacked,4767programInterface, name, returnValue);4768}4769else4770{4771GenerateContextLostErrorOnCurrentGlobalContext();4772returnValue =4773GetDefaultReturnValue<angle::EntryPoint::GLGetProgramResourceLocationIndex, GLint>();4774}4775return returnValue;4776}47774778void GL_APIENTRY GL_GetProgramResourceName(GLuint program,4779GLenum programInterface,4780GLuint index,4781GLsizei bufSize,4782GLsizei *length,4783GLchar *name)4784{4785Context *context = GetValidGlobalContext();4786EVENT(context, GLGetProgramResourceName,4787"context = %d, program = %u, programInterface = %s, index = %u, bufSize = %d, length = "4788"0x%016" PRIxPTR ", name = 0x%016" PRIxPTR "",4789CID(context), program, GLenumToString(GLenumGroup::ProgramInterface, programInterface),4790index, bufSize, (uintptr_t)length, (uintptr_t)name);47914792if (context)4793{4794ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);4795std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);4796bool isCallValid = (context->skipValidation() ||4797ValidateGetProgramResourceName(context, programPacked, programInterface,4798index, bufSize, length, name));4799if (isCallValid)4800{4801context->getProgramResourceName(programPacked, programInterface, index, bufSize, length,4802name);4803}4804ANGLE_CAPTURE(GetProgramResourceName, isCallValid, context, programPacked, programInterface,4805index, bufSize, length, name);4806}4807else4808{4809GenerateContextLostErrorOnCurrentGlobalContext();4810}4811}48124813void GL_APIENTRY GL_GetProgramResourceiv(GLuint program,4814GLenum programInterface,4815GLuint index,4816GLsizei propCount,4817const GLenum *props,4818GLsizei bufSize,4819GLsizei *length,4820GLint *params)4821{4822Context *context = GetValidGlobalContext();4823EVENT(context, GLGetProgramResourceiv,4824"context = %d, program = %u, programInterface = %s, index = %u, propCount = %d, props = "4825"0x%016" PRIxPTR ", bufSize = %d, length = 0x%016" PRIxPTR ", params = 0x%016" PRIxPTR "",4826CID(context), program, GLenumToString(GLenumGroup::ProgramInterface, programInterface),4827index, propCount, (uintptr_t)props, bufSize, (uintptr_t)length, (uintptr_t)params);48284829if (context)4830{4831ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);4832std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);4833bool isCallValid =4834(context->skipValidation() ||4835ValidateGetProgramResourceiv(context, programPacked, programInterface, index,4836propCount, props, bufSize, length, params));4837if (isCallValid)4838{4839context->getProgramResourceiv(programPacked, programInterface, index, propCount, props,4840bufSize, length, params);4841}4842ANGLE_CAPTURE(GetProgramResourceiv, isCallValid, context, programPacked, programInterface,4843index, propCount, props, bufSize, length, params);4844}4845else4846{4847GenerateContextLostErrorOnCurrentGlobalContext();4848}4849}48504851void GL_APIENTRY GL_InvalidateBufferData(GLuint buffer)4852{4853Context *context = GetValidGlobalContext();4854EVENT(context, GLInvalidateBufferData, "context = %d, buffer = %u", CID(context), buffer);48554856if (context)4857{4858BufferID bufferPacked = PackParam<BufferID>(buffer);4859std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);4860bool isCallValid =4861(context->skipValidation() || ValidateInvalidateBufferData(context, bufferPacked));4862if (isCallValid)4863{4864context->invalidateBufferData(bufferPacked);4865}4866ANGLE_CAPTURE(InvalidateBufferData, isCallValid, context, bufferPacked);4867}4868else4869{4870GenerateContextLostErrorOnCurrentGlobalContext();4871}4872}48734874void GL_APIENTRY GL_InvalidateBufferSubData(GLuint buffer, GLintptr offset, GLsizeiptr length)4875{4876Context *context = GetValidGlobalContext();4877EVENT(context, GLInvalidateBufferSubData,4878"context = %d, buffer = %u, offset = %llu, length = %llu", CID(context), buffer,4879static_cast<unsigned long long>(offset), static_cast<unsigned long long>(length));48804881if (context)4882{4883BufferID bufferPacked = PackParam<BufferID>(buffer);4884std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);4885bool isCallValid = (context->skipValidation() ||4886ValidateInvalidateBufferSubData(context, bufferPacked, offset, length));4887if (isCallValid)4888{4889context->invalidateBufferSubData(bufferPacked, offset, length);4890}4891ANGLE_CAPTURE(InvalidateBufferSubData, isCallValid, context, bufferPacked, offset, length);4892}4893else4894{4895GenerateContextLostErrorOnCurrentGlobalContext();4896}4897}48984899void GL_APIENTRY GL_InvalidateFramebuffer(GLenum target,4900GLsizei numAttachments,4901const GLenum *attachments)4902{4903Context *context = GetValidGlobalContext();4904EVENT(context, GLInvalidateFramebuffer,4905"context = %d, target = %s, numAttachments = %d, attachments = 0x%016" PRIxPTR "",4906CID(context), GLenumToString(GLenumGroup::FramebufferTarget, target), numAttachments,4907(uintptr_t)attachments);49084909if (context)4910{4911std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);4912bool isCallValid =4913(context->skipValidation() ||4914ValidateInvalidateFramebuffer(context, target, numAttachments, attachments));4915if (isCallValid)4916{4917context->invalidateFramebuffer(target, numAttachments, attachments);4918}4919ANGLE_CAPTURE(InvalidateFramebuffer, isCallValid, context, target, numAttachments,4920attachments);4921}4922else4923{4924GenerateContextLostErrorOnCurrentGlobalContext();4925}4926}49274928void GL_APIENTRY GL_InvalidateSubFramebuffer(GLenum target,4929GLsizei numAttachments,4930const GLenum *attachments,4931GLint x,4932GLint y,4933GLsizei width,4934GLsizei height)4935{4936Context *context = GetValidGlobalContext();4937EVENT(context, GLInvalidateSubFramebuffer,4938"context = %d, target = %s, numAttachments = %d, attachments = 0x%016" PRIxPTR4939", x = %d, y = %d, width = %d, height = %d",4940CID(context), GLenumToString(GLenumGroup::DefaultGroup, target), numAttachments,4941(uintptr_t)attachments, x, y, width, height);49424943if (context)4944{4945std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);4946bool isCallValid = (context->skipValidation() ||4947ValidateInvalidateSubFramebuffer(context, target, numAttachments,4948attachments, x, y, width, height));4949if (isCallValid)4950{4951context->invalidateSubFramebuffer(target, numAttachments, attachments, x, y, width,4952height);4953}4954ANGLE_CAPTURE(InvalidateSubFramebuffer, isCallValid, context, target, numAttachments,4955attachments, x, y, width, height);4956}4957else4958{4959GenerateContextLostErrorOnCurrentGlobalContext();4960}4961}49624963void GL_APIENTRY GL_InvalidateTexImage(GLuint texture, GLint level)4964{4965Context *context = GetValidGlobalContext();4966EVENT(context, GLInvalidateTexImage, "context = %d, texture = %u, level = %d", CID(context),4967texture, level);49684969if (context)4970{4971TextureID texturePacked = PackParam<TextureID>(texture);4972std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);4973bool isCallValid = (context->skipValidation() ||4974ValidateInvalidateTexImage(context, texturePacked, level));4975if (isCallValid)4976{4977context->invalidateTexImage(texturePacked, level);4978}4979ANGLE_CAPTURE(InvalidateTexImage, isCallValid, context, texturePacked, level);4980}4981else4982{4983GenerateContextLostErrorOnCurrentGlobalContext();4984}4985}49864987void GL_APIENTRY GL_InvalidateTexSubImage(GLuint texture,4988GLint level,4989GLint xoffset,4990GLint yoffset,4991GLint zoffset,4992GLsizei width,4993GLsizei height,4994GLsizei depth)4995{4996Context *context = GetValidGlobalContext();4997EVENT(context, GLInvalidateTexSubImage,4998"context = %d, texture = %u, level = %d, xoffset = %d, yoffset = %d, zoffset = %d, width "4999"= %d, height = %d, depth = %d",5000CID(context), texture, level, xoffset, yoffset, zoffset, width, height, depth);50015002if (context)5003{5004TextureID texturePacked = PackParam<TextureID>(texture);5005std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);5006bool isCallValid = (context->skipValidation() ||5007ValidateInvalidateTexSubImage(context, texturePacked, level, xoffset,5008yoffset, zoffset, width, height, depth));5009if (isCallValid)5010{5011context->invalidateTexSubImage(texturePacked, level, xoffset, yoffset, zoffset, width,5012height, depth);5013}5014ANGLE_CAPTURE(InvalidateTexSubImage, isCallValid, context, texturePacked, level, xoffset,5015yoffset, zoffset, width, height, depth);5016}5017else5018{5019GenerateContextLostErrorOnCurrentGlobalContext();5020}5021}50225023void GL_APIENTRY GL_MultiDrawArraysIndirect(GLenum mode,5024const void *indirect,5025GLsizei drawcount,5026GLsizei stride)5027{5028Context *context = GetValidGlobalContext();5029EVENT(context, GLMultiDrawArraysIndirect,5030"context = %d, mode = %s, indirect = 0x%016" PRIxPTR ", drawcount = %d, stride = %d",5031CID(context), GLenumToString(GLenumGroup::PrimitiveType, mode), (uintptr_t)indirect,5032drawcount, stride);50335034if (context)5035{5036std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);5037bool isCallValid =5038(context->skipValidation() ||5039ValidateMultiDrawArraysIndirect(context, mode, indirect, drawcount, stride));5040if (isCallValid)5041{5042context->multiDrawArraysIndirect(mode, indirect, drawcount, stride);5043}5044ANGLE_CAPTURE(MultiDrawArraysIndirect, isCallValid, context, mode, indirect, drawcount,5045stride);5046}5047else5048{5049GenerateContextLostErrorOnCurrentGlobalContext();5050}5051}50525053void GL_APIENTRY GL_MultiDrawElementsIndirect(GLenum mode,5054GLenum type,5055const void *indirect,5056GLsizei drawcount,5057GLsizei stride)5058{5059Context *context = GetValidGlobalContext();5060EVENT(context, GLMultiDrawElementsIndirect,5061"context = %d, mode = %s, type = %s, indirect = 0x%016" PRIxPTR5062", drawcount = %d, stride = %d",5063CID(context), GLenumToString(GLenumGroup::PrimitiveType, mode),5064GLenumToString(GLenumGroup::DrawElementsType, type), (uintptr_t)indirect, drawcount,5065stride);50665067if (context)5068{5069std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);5070bool isCallValid =5071(context->skipValidation() ||5072ValidateMultiDrawElementsIndirect(context, mode, type, indirect, drawcount, stride));5073if (isCallValid)5074{5075context->multiDrawElementsIndirect(mode, type, indirect, drawcount, stride);5076}5077ANGLE_CAPTURE(MultiDrawElementsIndirect, isCallValid, context, mode, type, indirect,5078drawcount, stride);5079}5080else5081{5082GenerateContextLostErrorOnCurrentGlobalContext();5083}5084}50855086void GL_APIENTRY GL_ObjectLabel(GLenum identifier, GLuint name, GLsizei length, const GLchar *label)5087{5088Context *context = GetValidGlobalContext();5089EVENT(context, GLObjectLabel,5090"context = %d, identifier = %s, name = %u, length = %d, label = 0x%016" PRIxPTR "",5091CID(context), GLenumToString(GLenumGroup::ObjectIdentifier, identifier), name, length,5092(uintptr_t)label);50935094if (context)5095{5096std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);5097bool isCallValid = (context->skipValidation() ||5098ValidateObjectLabel(context, identifier, name, length, label));5099if (isCallValid)5100{5101context->objectLabel(identifier, name, length, label);5102}5103ANGLE_CAPTURE(ObjectLabel, isCallValid, context, identifier, name, length, label);5104}5105else5106{5107GenerateContextLostErrorOnCurrentGlobalContext();5108}5109}51105111void GL_APIENTRY GL_ObjectPtrLabel(const void *ptr, GLsizei length, const GLchar *label)5112{5113Context *context = GetValidGlobalContext();5114EVENT(context, GLObjectPtrLabel,5115"context = %d, ptr = 0x%016" PRIxPTR ", length = %d, label = 0x%016" PRIxPTR "",5116CID(context), (uintptr_t)ptr, length, (uintptr_t)label);51175118if (context)5119{5120std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);5121bool isCallValid =5122(context->skipValidation() || ValidateObjectPtrLabel(context, ptr, length, label));5123if (isCallValid)5124{5125context->objectPtrLabel(ptr, length, label);5126}5127ANGLE_CAPTURE(ObjectPtrLabel, isCallValid, context, ptr, length, label);5128}5129else5130{5131GenerateContextLostErrorOnCurrentGlobalContext();5132}5133}51345135void GL_APIENTRY GL_PopDebugGroup()5136{5137Context *context = GetValidGlobalContext();5138EVENT(context, GLPopDebugGroup, "context = %d", CID(context));51395140if (context)5141{5142std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);5143bool isCallValid = (context->skipValidation() || ValidatePopDebugGroup(context));5144if (isCallValid)5145{5146context->popDebugGroup();5147}5148ANGLE_CAPTURE(PopDebugGroup, isCallValid, context);5149}5150else5151{5152GenerateContextLostErrorOnCurrentGlobalContext();5153}5154}51555156void GL_APIENTRY GL_PushDebugGroup(GLenum source, GLuint id, GLsizei length, const GLchar *message)5157{5158Context *context = GetValidGlobalContext();5159EVENT(context, GLPushDebugGroup,5160"context = %d, source = %s, id = %u, length = %d, message = 0x%016" PRIxPTR "",5161CID(context), GLenumToString(GLenumGroup::DebugSource, source), id, length,5162(uintptr_t)message);51635164if (context)5165{5166std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);5167bool isCallValid = (context->skipValidation() ||5168ValidatePushDebugGroup(context, source, id, length, message));5169if (isCallValid)5170{5171context->pushDebugGroup(source, id, length, message);5172}5173ANGLE_CAPTURE(PushDebugGroup, isCallValid, context, source, id, length, message);5174}5175else5176{5177GenerateContextLostErrorOnCurrentGlobalContext();5178}5179}51805181void GL_APIENTRY GL_ShaderStorageBlockBinding(GLuint program,5182GLuint storageBlockIndex,5183GLuint storageBlockBinding)5184{5185Context *context = GetValidGlobalContext();5186EVENT(context, GLShaderStorageBlockBinding,5187"context = %d, program = %u, storageBlockIndex = %u, storageBlockBinding = %u",5188CID(context), program, storageBlockIndex, storageBlockBinding);51895190if (context)5191{5192ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);5193std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);5194bool isCallValid = (context->skipValidation() ||5195ValidateShaderStorageBlockBinding(5196context, programPacked, storageBlockIndex, storageBlockBinding));5197if (isCallValid)5198{5199context->shaderStorageBlockBinding(programPacked, storageBlockIndex,5200storageBlockBinding);5201}5202ANGLE_CAPTURE(ShaderStorageBlockBinding, isCallValid, context, programPacked,5203storageBlockIndex, storageBlockBinding);5204}5205else5206{5207GenerateContextLostErrorOnCurrentGlobalContext();5208}5209}52105211void GL_APIENTRY GL_TexBufferRange(GLenum target,5212GLenum internalformat,5213GLuint buffer,5214GLintptr offset,5215GLsizeiptr size)5216{5217Context *context = GetValidGlobalContext();5218EVENT(context, GLTexBufferRange,5219"context = %d, target = %s, internalformat = %s, buffer = %u, offset = %llu, size = %llu",5220CID(context), GLenumToString(GLenumGroup::TextureTarget, target),5221GLenumToString(GLenumGroup::InternalFormat, internalformat), buffer,5222static_cast<unsigned long long>(offset), static_cast<unsigned long long>(size));52235224if (context)5225{5226TextureType targetPacked = PackParam<TextureType>(target);5227BufferID bufferPacked = PackParam<BufferID>(buffer);5228std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);5229bool isCallValid = (context->skipValidation() ||5230ValidateTexBufferRange(context, targetPacked, internalformat,5231bufferPacked, offset, size));5232if (isCallValid)5233{5234context->texBufferRange(targetPacked, internalformat, bufferPacked, offset, size);5235}5236ANGLE_CAPTURE(TexBufferRange, isCallValid, context, targetPacked, internalformat,5237bufferPacked, offset, size);5238}5239else5240{5241GenerateContextLostErrorOnCurrentGlobalContext();5242}5243}52445245void GL_APIENTRY GL_TexStorage2DMultisample(GLenum target,5246GLsizei samples,5247GLenum internalformat,5248GLsizei width,5249GLsizei height,5250GLboolean fixedsamplelocations)5251{5252Context *context = GetValidGlobalContext();5253EVENT(context, GLTexStorage2DMultisample,5254"context = %d, target = %s, samples = %d, internalformat = %s, width = %d, height = %d, "5255"fixedsamplelocations = %s",5256CID(context), GLenumToString(GLenumGroup::TextureTarget, target), samples,5257GLenumToString(GLenumGroup::InternalFormat, internalformat), width, height,5258GLbooleanToString(fixedsamplelocations));52595260if (context)5261{5262TextureType targetPacked = PackParam<TextureType>(target);5263std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);5264bool isCallValid =5265(context->skipValidation() ||5266ValidateTexStorage2DMultisample(context, targetPacked, samples, internalformat, width,5267height, fixedsamplelocations));5268if (isCallValid)5269{5270context->texStorage2DMultisample(targetPacked, samples, internalformat, width, height,5271fixedsamplelocations);5272}5273ANGLE_CAPTURE(TexStorage2DMultisample, isCallValid, context, targetPacked, samples,5274internalformat, width, height, fixedsamplelocations);5275}5276else5277{5278GenerateContextLostErrorOnCurrentGlobalContext();5279}5280}52815282void GL_APIENTRY GL_TexStorage3DMultisample(GLenum target,5283GLsizei samples,5284GLenum internalformat,5285GLsizei width,5286GLsizei height,5287GLsizei depth,5288GLboolean fixedsamplelocations)5289{5290Context *context = GetValidGlobalContext();5291EVENT(context, GLTexStorage3DMultisample,5292"context = %d, target = %s, samples = %d, internalformat = %s, width = %d, height = %d, "5293"depth = %d, fixedsamplelocations = %s",5294CID(context), GLenumToString(GLenumGroup::TextureTarget, target), samples,5295GLenumToString(GLenumGroup::InternalFormat, internalformat), width, height, depth,5296GLbooleanToString(fixedsamplelocations));52975298if (context)5299{5300TextureType targetPacked = PackParam<TextureType>(target);5301std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);5302bool isCallValid =5303(context->skipValidation() ||5304ValidateTexStorage3DMultisample(context, targetPacked, samples, internalformat, width,5305height, depth, fixedsamplelocations));5306if (isCallValid)5307{5308context->texStorage3DMultisample(targetPacked, samples, internalformat, width, height,5309depth, fixedsamplelocations);5310}5311ANGLE_CAPTURE(TexStorage3DMultisample, isCallValid, context, targetPacked, samples,5312internalformat, width, height, depth, fixedsamplelocations);5313}5314else5315{5316GenerateContextLostErrorOnCurrentGlobalContext();5317}5318}53195320void GL_APIENTRY GL_TextureView(GLuint texture,5321GLenum target,5322GLuint origtexture,5323GLenum internalformat,5324GLuint minlevel,5325GLuint numlevels,5326GLuint minlayer,5327GLuint numlayers)5328{5329Context *context = GetValidGlobalContext();5330EVENT(context, GLTextureView,5331"context = %d, texture = %u, target = %s, origtexture = %u, internalformat = %s, "5332"minlevel = %u, numlevels = %u, minlayer = %u, numlayers = %u",5333CID(context), texture, GLenumToString(GLenumGroup::TextureTarget, target), origtexture,5334GLenumToString(GLenumGroup::InternalFormat, internalformat), minlevel, numlevels,5335minlayer, numlayers);53365337if (context)5338{5339TextureID texturePacked = PackParam<TextureID>(texture);5340std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);5341bool isCallValid =5342(context->skipValidation() ||5343ValidateTextureView(context, texturePacked, target, origtexture, internalformat,5344minlevel, numlevels, minlayer, numlayers));5345if (isCallValid)5346{5347context->textureView(texturePacked, target, origtexture, internalformat, minlevel,5348numlevels, minlayer, numlayers);5349}5350ANGLE_CAPTURE(TextureView, isCallValid, context, texturePacked, target, origtexture,5351internalformat, minlevel, numlevels, minlayer, numlayers);5352}5353else5354{5355GenerateContextLostErrorOnCurrentGlobalContext();5356}5357}53585359void GL_APIENTRY GL_VertexAttribBinding(GLuint attribindex, GLuint bindingindex)5360{5361Context *context = GetValidGlobalContext();5362EVENT(context, GLVertexAttribBinding, "context = %d, attribindex = %u, bindingindex = %u",5363CID(context), attribindex, bindingindex);53645365if (context)5366{5367std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);5368bool isCallValid = (context->skipValidation() ||5369ValidateVertexAttribBinding(context, attribindex, bindingindex));5370if (isCallValid)5371{5372context->vertexAttribBinding(attribindex, bindingindex);5373}5374ANGLE_CAPTURE(VertexAttribBinding, isCallValid, context, attribindex, bindingindex);5375}5376else5377{5378GenerateContextLostErrorOnCurrentGlobalContext();5379}5380}53815382void GL_APIENTRY GL_VertexAttribFormat(GLuint attribindex,5383GLint size,5384GLenum type,5385GLboolean normalized,5386GLuint relativeoffset)5387{5388Context *context = GetValidGlobalContext();5389EVENT(context, GLVertexAttribFormat,5390"context = %d, attribindex = %u, size = %d, type = %s, normalized = %s, relativeoffset = "5391"%u",5392CID(context), attribindex, size, GLenumToString(GLenumGroup::DefaultGroup, type),5393GLbooleanToString(normalized), relativeoffset);53945395if (context)5396{5397VertexAttribType typePacked = PackParam<VertexAttribType>(type);5398std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);5399bool isCallValid = (context->skipValidation() ||5400ValidateVertexAttribFormat(context, attribindex, size, typePacked,5401normalized, relativeoffset));5402if (isCallValid)5403{5404context->vertexAttribFormat(attribindex, size, typePacked, normalized, relativeoffset);5405}5406ANGLE_CAPTURE(VertexAttribFormat, isCallValid, context, attribindex, size, typePacked,5407normalized, relativeoffset);5408}5409else5410{5411GenerateContextLostErrorOnCurrentGlobalContext();5412}5413}54145415void GL_APIENTRY GL_VertexAttribIFormat(GLuint attribindex,5416GLint size,5417GLenum type,5418GLuint relativeoffset)5419{5420Context *context = GetValidGlobalContext();5421EVENT(context, GLVertexAttribIFormat,5422"context = %d, attribindex = %u, size = %d, type = %s, relativeoffset = %u", CID(context),5423attribindex, size, GLenumToString(GLenumGroup::DefaultGroup, type), relativeoffset);54245425if (context)5426{5427VertexAttribType typePacked = PackParam<VertexAttribType>(type);5428std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);5429bool isCallValid =5430(context->skipValidation() ||5431ValidateVertexAttribIFormat(context, attribindex, size, typePacked, relativeoffset));5432if (isCallValid)5433{5434context->vertexAttribIFormat(attribindex, size, typePacked, relativeoffset);5435}5436ANGLE_CAPTURE(VertexAttribIFormat, isCallValid, context, attribindex, size, typePacked,5437relativeoffset);5438}5439else5440{5441GenerateContextLostErrorOnCurrentGlobalContext();5442}5443}54445445void GL_APIENTRY GL_VertexAttribLFormat(GLuint attribindex,5446GLint size,5447GLenum type,5448GLuint relativeoffset)5449{5450Context *context = GetValidGlobalContext();5451EVENT(context, GLVertexAttribLFormat,5452"context = %d, attribindex = %u, size = %d, type = %s, relativeoffset = %u", CID(context),5453attribindex, size, GLenumToString(GLenumGroup::VertexAttribType, type), relativeoffset);54545455if (context)5456{5457std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);5458bool isCallValid =5459(context->skipValidation() ||5460ValidateVertexAttribLFormat(context, attribindex, size, type, relativeoffset));5461if (isCallValid)5462{5463context->vertexAttribLFormat(attribindex, size, type, relativeoffset);5464}5465ANGLE_CAPTURE(VertexAttribLFormat, isCallValid, context, attribindex, size, type,5466relativeoffset);5467}5468else5469{5470GenerateContextLostErrorOnCurrentGlobalContext();5471}5472}54735474void GL_APIENTRY GL_VertexBindingDivisor(GLuint bindingindex, GLuint divisor)5475{5476Context *context = GetValidGlobalContext();5477EVENT(context, GLVertexBindingDivisor, "context = %d, bindingindex = %u, divisor = %u",5478CID(context), bindingindex, divisor);54795480if (context)5481{5482std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);5483bool isCallValid = (context->skipValidation() ||5484ValidateVertexBindingDivisor(context, bindingindex, divisor));5485if (isCallValid)5486{5487context->vertexBindingDivisor(bindingindex, divisor);5488}5489ANGLE_CAPTURE(VertexBindingDivisor, isCallValid, context, bindingindex, divisor);5490}5491else5492{5493GenerateContextLostErrorOnCurrentGlobalContext();5494}5495}54965497// GL 4.45498void GL_APIENTRY GL_BindBuffersBase(GLenum target,5499GLuint first,5500GLsizei count,5501const GLuint *buffers)5502{5503Context *context = GetValidGlobalContext();5504EVENT(context, GLBindBuffersBase,5505"context = %d, target = %s, first = %u, count = %d, buffers = 0x%016" PRIxPTR "",5506CID(context), GLenumToString(GLenumGroup::BufferTargetARB, target), first, count,5507(uintptr_t)buffers);55085509if (context)5510{5511const BufferID *buffersPacked = PackParam<const BufferID *>(buffers);5512std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);5513bool isCallValid = (context->skipValidation() ||5514ValidateBindBuffersBase(context, target, first, count, buffersPacked));5515if (isCallValid)5516{5517context->bindBuffersBase(target, first, count, buffersPacked);5518}5519ANGLE_CAPTURE(BindBuffersBase, isCallValid, context, target, first, count, buffersPacked);5520}5521else5522{5523GenerateContextLostErrorOnCurrentGlobalContext();5524}5525}55265527void GL_APIENTRY GL_BindBuffersRange(GLenum target,5528GLuint first,5529GLsizei count,5530const GLuint *buffers,5531const GLintptr *offsets,5532const GLsizeiptr *sizes)5533{5534Context *context = GetValidGlobalContext();5535EVENT(context, GLBindBuffersRange,5536"context = %d, target = %s, first = %u, count = %d, buffers = 0x%016" PRIxPTR5537", offsets = 0x%016" PRIxPTR ", sizes = 0x%016" PRIxPTR "",5538CID(context), GLenumToString(GLenumGroup::BufferTargetARB, target), first, count,5539(uintptr_t)buffers, (uintptr_t)offsets, (uintptr_t)sizes);55405541if (context)5542{5543const BufferID *buffersPacked = PackParam<const BufferID *>(buffers);5544std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);5545bool isCallValid =5546(context->skipValidation() || ValidateBindBuffersRange(context, target, first, count,5547buffersPacked, offsets, sizes));5548if (isCallValid)5549{5550context->bindBuffersRange(target, first, count, buffersPacked, offsets, sizes);5551}5552ANGLE_CAPTURE(BindBuffersRange, isCallValid, context, target, first, count, buffersPacked,5553offsets, sizes);5554}5555else5556{5557GenerateContextLostErrorOnCurrentGlobalContext();5558}5559}55605561void GL_APIENTRY GL_BindImageTextures(GLuint first, GLsizei count, const GLuint *textures)5562{5563Context *context = GetValidGlobalContext();5564EVENT(context, GLBindImageTextures,5565"context = %d, first = %u, count = %d, textures = 0x%016" PRIxPTR "", CID(context), first,5566count, (uintptr_t)textures);55675568if (context)5569{5570std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);5571bool isCallValid = (context->skipValidation() ||5572ValidateBindImageTextures(context, first, count, textures));5573if (isCallValid)5574{5575context->bindImageTextures(first, count, textures);5576}5577ANGLE_CAPTURE(BindImageTextures, isCallValid, context, first, count, textures);5578}5579else5580{5581GenerateContextLostErrorOnCurrentGlobalContext();5582}5583}55845585void GL_APIENTRY GL_BindSamplers(GLuint first, GLsizei count, const GLuint *samplers)5586{5587Context *context = GetValidGlobalContext();5588EVENT(context, GLBindSamplers,5589"context = %d, first = %u, count = %d, samplers = 0x%016" PRIxPTR "", CID(context), first,5590count, (uintptr_t)samplers);55915592if (context)5593{5594std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);5595bool isCallValid =5596(context->skipValidation() || ValidateBindSamplers(context, first, count, samplers));5597if (isCallValid)5598{5599context->bindSamplers(first, count, samplers);5600}5601ANGLE_CAPTURE(BindSamplers, isCallValid, context, first, count, samplers);5602}5603else5604{5605GenerateContextLostErrorOnCurrentGlobalContext();5606}5607}56085609void GL_APIENTRY GL_BindTextures(GLuint first, GLsizei count, const GLuint *textures)5610{5611Context *context = GetValidGlobalContext();5612EVENT(context, GLBindTextures,5613"context = %d, first = %u, count = %d, textures = 0x%016" PRIxPTR "", CID(context), first,5614count, (uintptr_t)textures);56155616if (context)5617{5618std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);5619bool isCallValid =5620(context->skipValidation() || ValidateBindTextures(context, first, count, textures));5621if (isCallValid)5622{5623context->bindTextures(first, count, textures);5624}5625ANGLE_CAPTURE(BindTextures, isCallValid, context, first, count, textures);5626}5627else5628{5629GenerateContextLostErrorOnCurrentGlobalContext();5630}5631}56325633void GL_APIENTRY GL_BindVertexBuffers(GLuint first,5634GLsizei count,5635const GLuint *buffers,5636const GLintptr *offsets,5637const GLsizei *strides)5638{5639Context *context = GetValidGlobalContext();5640EVENT(context, GLBindVertexBuffers,5641"context = %d, first = %u, count = %d, buffers = 0x%016" PRIxPTR5642", offsets = 0x%016" PRIxPTR ", strides = 0x%016" PRIxPTR "",5643CID(context), first, count, (uintptr_t)buffers, (uintptr_t)offsets, (uintptr_t)strides);56445645if (context)5646{5647const BufferID *buffersPacked = PackParam<const BufferID *>(buffers);5648std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);5649bool isCallValid =5650(context->skipValidation() ||5651ValidateBindVertexBuffers(context, first, count, buffersPacked, offsets, strides));5652if (isCallValid)5653{5654context->bindVertexBuffers(first, count, buffersPacked, offsets, strides);5655}5656ANGLE_CAPTURE(BindVertexBuffers, isCallValid, context, first, count, buffersPacked, offsets,5657strides);5658}5659else5660{5661GenerateContextLostErrorOnCurrentGlobalContext();5662}5663}56645665void GL_APIENTRY GL_BufferStorage(GLenum target,5666GLsizeiptr size,5667const void *data,5668GLbitfield flags)5669{5670Context *context = GetValidGlobalContext();5671EVENT(context, GLBufferStorage,5672"context = %d, target = %s, size = %llu, data = 0x%016" PRIxPTR ", flags = %s",5673CID(context), GLenumToString(GLenumGroup::BufferStorageTarget, target),5674static_cast<unsigned long long>(size), (uintptr_t)data,5675GLbitfieldToString(GLenumGroup::MapBufferUsageMask, flags).c_str());56765677if (context)5678{5679BufferBinding targetPacked = PackParam<BufferBinding>(target);5680std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);5681bool isCallValid = (context->skipValidation() ||5682ValidateBufferStorage(context, targetPacked, size, data, flags));5683if (isCallValid)5684{5685context->bufferStorage(targetPacked, size, data, flags);5686}5687ANGLE_CAPTURE(BufferStorage, isCallValid, context, targetPacked, size, data, flags);5688}5689else5690{5691GenerateContextLostErrorOnCurrentGlobalContext();5692}5693}56945695void GL_APIENTRY5696GL_ClearTexImage(GLuint texture, GLint level, GLenum format, GLenum type, const void *data)5697{5698Context *context = GetValidGlobalContext();5699EVENT(context, GLClearTexImage,5700"context = %d, texture = %u, level = %d, format = %s, type = %s, data = 0x%016" PRIxPTR5701"",5702CID(context), texture, level, GLenumToString(GLenumGroup::PixelFormat, format),5703GLenumToString(GLenumGroup::PixelType, type), (uintptr_t)data);57045705if (context)5706{5707TextureID texturePacked = PackParam<TextureID>(texture);5708std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);5709bool isCallValid =5710(context->skipValidation() ||5711ValidateClearTexImage(context, texturePacked, level, format, type, data));5712if (isCallValid)5713{5714context->clearTexImage(texturePacked, level, format, type, data);5715}5716ANGLE_CAPTURE(ClearTexImage, isCallValid, context, texturePacked, level, format, type,5717data);5718}5719else5720{5721GenerateContextLostErrorOnCurrentGlobalContext();5722}5723}57245725void GL_APIENTRY GL_ClearTexSubImage(GLuint texture,5726GLint level,5727GLint xoffset,5728GLint yoffset,5729GLint zoffset,5730GLsizei width,5731GLsizei height,5732GLsizei depth,5733GLenum format,5734GLenum type,5735const void *data)5736{5737Context *context = GetValidGlobalContext();5738EVENT(context, GLClearTexSubImage,5739"context = %d, texture = %u, level = %d, xoffset = %d, yoffset = %d, zoffset = %d, width "5740"= %d, height = %d, depth = %d, format = %s, type = %s, data = 0x%016" PRIxPTR "",5741CID(context), texture, level, xoffset, yoffset, zoffset, width, height, depth,5742GLenumToString(GLenumGroup::PixelFormat, format),5743GLenumToString(GLenumGroup::PixelType, type), (uintptr_t)data);57445745if (context)5746{5747TextureID texturePacked = PackParam<TextureID>(texture);5748std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);5749bool isCallValid =5750(context->skipValidation() ||5751ValidateClearTexSubImage(context, texturePacked, level, xoffset, yoffset, zoffset,5752width, height, depth, format, type, data));5753if (isCallValid)5754{5755context->clearTexSubImage(texturePacked, level, xoffset, yoffset, zoffset, width,5756height, depth, format, type, data);5757}5758ANGLE_CAPTURE(ClearTexSubImage, isCallValid, context, texturePacked, level, xoffset,5759yoffset, zoffset, width, height, depth, format, type, data);5760}5761else5762{5763GenerateContextLostErrorOnCurrentGlobalContext();5764}5765}57665767// GL 4.55768void GL_APIENTRY GL_BindTextureUnit(GLuint unit, GLuint texture)5769{5770Context *context = GetValidGlobalContext();5771EVENT(context, GLBindTextureUnit, "context = %d, unit = %u, texture = %u", CID(context), unit,5772texture);57735774if (context)5775{5776TextureID texturePacked = PackParam<TextureID>(texture);5777std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);5778bool isCallValid =5779(context->skipValidation() || ValidateBindTextureUnit(context, unit, texturePacked));5780if (isCallValid)5781{5782context->bindTextureUnit(unit, texturePacked);5783}5784ANGLE_CAPTURE(BindTextureUnit, isCallValid, context, unit, texturePacked);5785}5786else5787{5788GenerateContextLostErrorOnCurrentGlobalContext();5789}5790}57915792void GL_APIENTRY GL_BlitNamedFramebuffer(GLuint readFramebuffer,5793GLuint drawFramebuffer,5794GLint srcX0,5795GLint srcY0,5796GLint srcX1,5797GLint srcY1,5798GLint dstX0,5799GLint dstY0,5800GLint dstX1,5801GLint dstY1,5802GLbitfield mask,5803GLenum filter)5804{5805Context *context = GetValidGlobalContext();5806EVENT(5807context, GLBlitNamedFramebuffer,5808"context = %d, readFramebuffer = %u, drawFramebuffer = %u, srcX0 = %d, srcY0 = %d, srcX1 = "5809"%d, srcY1 = %d, dstX0 = %d, dstY0 = %d, dstX1 = %d, dstY1 = %d, mask = %s, filter = %s",5810CID(context), readFramebuffer, drawFramebuffer, srcX0, srcY0, srcX1, srcY1, dstX0, dstY0,5811dstX1, dstY1, GLbitfieldToString(GLenumGroup::ClearBufferMask, mask).c_str(),5812GLenumToString(GLenumGroup::BlitFramebufferFilter, filter));58135814if (context)5815{5816std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);5817bool isCallValid =5818(context->skipValidation() ||5819ValidateBlitNamedFramebuffer(context, readFramebuffer, drawFramebuffer, srcX0, srcY0,5820srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask, filter));5821if (isCallValid)5822{5823context->blitNamedFramebuffer(readFramebuffer, drawFramebuffer, srcX0, srcY0, srcX1,5824srcY1, dstX0, dstY0, dstX1, dstY1, mask, filter);5825}5826ANGLE_CAPTURE(BlitNamedFramebuffer, isCallValid, context, readFramebuffer, drawFramebuffer,5827srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask, filter);5828}5829else5830{5831GenerateContextLostErrorOnCurrentGlobalContext();5832}5833}58345835GLenum GL_APIENTRY GL_CheckNamedFramebufferStatus(GLuint framebuffer, GLenum target)5836{5837Context *context = GetValidGlobalContext();5838EVENT(context, GLCheckNamedFramebufferStatus, "context = %d, framebuffer = %u, target = %s",5839CID(context), framebuffer, GLenumToString(GLenumGroup::FramebufferTarget, target));58405841GLenum returnValue;5842if (context)5843{5844FramebufferID framebufferPacked = PackParam<FramebufferID>(framebuffer);5845std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);5846bool isCallValid = (context->skipValidation() || ValidateCheckNamedFramebufferStatus(5847context, framebufferPacked, target));5848if (isCallValid)5849{5850returnValue = context->checkNamedFramebufferStatus(framebufferPacked, target);5851}5852else5853{5854returnValue =5855GetDefaultReturnValue<angle::EntryPoint::GLCheckNamedFramebufferStatus, GLenum>();5856}5857ANGLE_CAPTURE(CheckNamedFramebufferStatus, isCallValid, context, framebufferPacked, target,5858returnValue);5859}5860else5861{5862GenerateContextLostErrorOnCurrentGlobalContext();5863returnValue =5864GetDefaultReturnValue<angle::EntryPoint::GLCheckNamedFramebufferStatus, GLenum>();5865}5866return returnValue;5867}58685869void GL_APIENTRY GL_ClearNamedBufferData(GLuint buffer,5870GLenum internalformat,5871GLenum format,5872GLenum type,5873const void *data)5874{5875Context *context = GetValidGlobalContext();5876EVENT(context, GLClearNamedBufferData,5877"context = %d, buffer = %u, internalformat = %s, format = %s, type = %s, data = "5878"0x%016" PRIxPTR "",5879CID(context), buffer, GLenumToString(GLenumGroup::InternalFormat, internalformat),5880GLenumToString(GLenumGroup::PixelFormat, format),5881GLenumToString(GLenumGroup::PixelType, type), (uintptr_t)data);58825883if (context)5884{5885BufferID bufferPacked = PackParam<BufferID>(buffer);5886std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);5887bool isCallValid = (context->skipValidation() ||5888ValidateClearNamedBufferData(context, bufferPacked, internalformat,5889format, type, data));5890if (isCallValid)5891{5892context->clearNamedBufferData(bufferPacked, internalformat, format, type, data);5893}5894ANGLE_CAPTURE(ClearNamedBufferData, isCallValid, context, bufferPacked, internalformat,5895format, type, data);5896}5897else5898{5899GenerateContextLostErrorOnCurrentGlobalContext();5900}5901}59025903void GL_APIENTRY GL_ClearNamedBufferSubData(GLuint buffer,5904GLenum internalformat,5905GLintptr offset,5906GLsizeiptr size,5907GLenum format,5908GLenum type,5909const void *data)5910{5911Context *context = GetValidGlobalContext();5912EVENT(context, GLClearNamedBufferSubData,5913"context = %d, buffer = %u, internalformat = %s, offset = %llu, size = %llu, format = "5914"%s, type = %s, data = 0x%016" PRIxPTR "",5915CID(context), buffer, GLenumToString(GLenumGroup::InternalFormat, internalformat),5916static_cast<unsigned long long>(offset), static_cast<unsigned long long>(size),5917GLenumToString(GLenumGroup::PixelFormat, format),5918GLenumToString(GLenumGroup::PixelType, type), (uintptr_t)data);59195920if (context)5921{5922BufferID bufferPacked = PackParam<BufferID>(buffer);5923std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);5924bool isCallValid = (context->skipValidation() ||5925ValidateClearNamedBufferSubData(context, bufferPacked, internalformat,5926offset, size, format, type, data));5927if (isCallValid)5928{5929context->clearNamedBufferSubData(bufferPacked, internalformat, offset, size, format,5930type, data);5931}5932ANGLE_CAPTURE(ClearNamedBufferSubData, isCallValid, context, bufferPacked, internalformat,5933offset, size, format, type, data);5934}5935else5936{5937GenerateContextLostErrorOnCurrentGlobalContext();5938}5939}59405941void GL_APIENTRY GL_ClearNamedFramebufferfi(GLuint framebuffer,5942GLenum buffer,5943GLint drawbuffer,5944GLfloat depth,5945GLint stencil)5946{5947Context *context = GetValidGlobalContext();5948EVENT(context, GLClearNamedFramebufferfi,5949"context = %d, framebuffer = %u, buffer = %s, drawbuffer = %d, depth = %f, stencil = %d",5950CID(context), framebuffer, GLenumToString(GLenumGroup::Buffer, buffer), drawbuffer, depth,5951stencil);59525953if (context)5954{5955FramebufferID framebufferPacked = PackParam<FramebufferID>(framebuffer);5956std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);5957bool isCallValid = (context->skipValidation() ||5958ValidateClearNamedFramebufferfi(context, framebufferPacked, buffer,5959drawbuffer, depth, stencil));5960if (isCallValid)5961{5962context->clearNamedFramebufferfi(framebufferPacked, buffer, drawbuffer, depth, stencil);5963}5964ANGLE_CAPTURE(ClearNamedFramebufferfi, isCallValid, context, framebufferPacked, buffer,5965drawbuffer, depth, stencil);5966}5967else5968{5969GenerateContextLostErrorOnCurrentGlobalContext();5970}5971}59725973void GL_APIENTRY GL_ClearNamedFramebufferfv(GLuint framebuffer,5974GLenum buffer,5975GLint drawbuffer,5976const GLfloat *value)5977{5978Context *context = GetValidGlobalContext();5979EVENT(context, GLClearNamedFramebufferfv,5980"context = %d, framebuffer = %u, buffer = %s, drawbuffer = %d, value = 0x%016" PRIxPTR "",5981CID(context), framebuffer, GLenumToString(GLenumGroup::Buffer, buffer), drawbuffer,5982(uintptr_t)value);59835984if (context)5985{5986FramebufferID framebufferPacked = PackParam<FramebufferID>(framebuffer);5987std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);5988bool isCallValid = (context->skipValidation() ||5989ValidateClearNamedFramebufferfv(context, framebufferPacked, buffer,5990drawbuffer, value));5991if (isCallValid)5992{5993context->clearNamedFramebufferfv(framebufferPacked, buffer, drawbuffer, value);5994}5995ANGLE_CAPTURE(ClearNamedFramebufferfv, isCallValid, context, framebufferPacked, buffer,5996drawbuffer, value);5997}5998else5999{6000GenerateContextLostErrorOnCurrentGlobalContext();6001}6002}60036004void GL_APIENTRY GL_ClearNamedFramebufferiv(GLuint framebuffer,6005GLenum buffer,6006GLint drawbuffer,6007const GLint *value)6008{6009Context *context = GetValidGlobalContext();6010EVENT(context, GLClearNamedFramebufferiv,6011"context = %d, framebuffer = %u, buffer = %s, drawbuffer = %d, value = 0x%016" PRIxPTR "",6012CID(context), framebuffer, GLenumToString(GLenumGroup::Buffer, buffer), drawbuffer,6013(uintptr_t)value);60146015if (context)6016{6017FramebufferID framebufferPacked = PackParam<FramebufferID>(framebuffer);6018std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);6019bool isCallValid = (context->skipValidation() ||6020ValidateClearNamedFramebufferiv(context, framebufferPacked, buffer,6021drawbuffer, value));6022if (isCallValid)6023{6024context->clearNamedFramebufferiv(framebufferPacked, buffer, drawbuffer, value);6025}6026ANGLE_CAPTURE(ClearNamedFramebufferiv, isCallValid, context, framebufferPacked, buffer,6027drawbuffer, value);6028}6029else6030{6031GenerateContextLostErrorOnCurrentGlobalContext();6032}6033}60346035void GL_APIENTRY GL_ClearNamedFramebufferuiv(GLuint framebuffer,6036GLenum buffer,6037GLint drawbuffer,6038const GLuint *value)6039{6040Context *context = GetValidGlobalContext();6041EVENT(context, GLClearNamedFramebufferuiv,6042"context = %d, framebuffer = %u, buffer = %s, drawbuffer = %d, value = 0x%016" PRIxPTR "",6043CID(context), framebuffer, GLenumToString(GLenumGroup::Buffer, buffer), drawbuffer,6044(uintptr_t)value);60456046if (context)6047{6048FramebufferID framebufferPacked = PackParam<FramebufferID>(framebuffer);6049std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);6050bool isCallValid = (context->skipValidation() ||6051ValidateClearNamedFramebufferuiv(context, framebufferPacked, buffer,6052drawbuffer, value));6053if (isCallValid)6054{6055context->clearNamedFramebufferuiv(framebufferPacked, buffer, drawbuffer, value);6056}6057ANGLE_CAPTURE(ClearNamedFramebufferuiv, isCallValid, context, framebufferPacked, buffer,6058drawbuffer, value);6059}6060else6061{6062GenerateContextLostErrorOnCurrentGlobalContext();6063}6064}60656066void GL_APIENTRY GL_ClipControl(GLenum origin, GLenum depth)6067{6068Context *context = GetValidGlobalContext();6069EVENT(context, GLClipControl, "context = %d, origin = %s, depth = %s", CID(context),6070GLenumToString(GLenumGroup::ClipControlOrigin, origin),6071GLenumToString(GLenumGroup::ClipControlDepth, depth));60726073if (context)6074{6075std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);6076bool isCallValid =6077(context->skipValidation() || ValidateClipControl(context, origin, depth));6078if (isCallValid)6079{6080context->clipControl(origin, depth);6081}6082ANGLE_CAPTURE(ClipControl, isCallValid, context, origin, depth);6083}6084else6085{6086GenerateContextLostErrorOnCurrentGlobalContext();6087}6088}60896090void GL_APIENTRY GL_CompressedTextureSubImage1D(GLuint texture,6091GLint level,6092GLint xoffset,6093GLsizei width,6094GLenum format,6095GLsizei imageSize,6096const void *data)6097{6098Context *context = GetValidGlobalContext();6099EVENT(context, GLCompressedTextureSubImage1D,6100"context = %d, texture = %u, level = %d, xoffset = %d, width = %d, format = %s, "6101"imageSize = %d, data = 0x%016" PRIxPTR "",6102CID(context), texture, level, xoffset, width,6103GLenumToString(GLenumGroup::PixelFormat, format), imageSize, (uintptr_t)data);61046105if (context)6106{6107TextureID texturePacked = PackParam<TextureID>(texture);6108std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);6109bool isCallValid = (context->skipValidation() || ValidateCompressedTextureSubImage1D(6110context, texturePacked, level, xoffset,6111width, format, imageSize, data));6112if (isCallValid)6113{6114context->compressedTextureSubImage1D(texturePacked, level, xoffset, width, format,6115imageSize, data);6116}6117ANGLE_CAPTURE(CompressedTextureSubImage1D, isCallValid, context, texturePacked, level,6118xoffset, width, format, imageSize, data);6119}6120else6121{6122GenerateContextLostErrorOnCurrentGlobalContext();6123}6124}61256126void GL_APIENTRY GL_CompressedTextureSubImage2D(GLuint texture,6127GLint level,6128GLint xoffset,6129GLint yoffset,6130GLsizei width,6131GLsizei height,6132GLenum format,6133GLsizei imageSize,6134const void *data)6135{6136Context *context = GetValidGlobalContext();6137EVENT(context, GLCompressedTextureSubImage2D,6138"context = %d, texture = %u, level = %d, xoffset = %d, yoffset = %d, width = %d, height "6139"= %d, format = %s, imageSize = %d, data = 0x%016" PRIxPTR "",6140CID(context), texture, level, xoffset, yoffset, width, height,6141GLenumToString(GLenumGroup::PixelFormat, format), imageSize, (uintptr_t)data);61426143if (context)6144{6145TextureID texturePacked = PackParam<TextureID>(texture);6146std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);6147bool isCallValid =6148(context->skipValidation() ||6149ValidateCompressedTextureSubImage2D(context, texturePacked, level, xoffset, yoffset,6150width, height, format, imageSize, data));6151if (isCallValid)6152{6153context->compressedTextureSubImage2D(texturePacked, level, xoffset, yoffset, width,6154height, format, imageSize, data);6155}6156ANGLE_CAPTURE(CompressedTextureSubImage2D, isCallValid, context, texturePacked, level,6157xoffset, yoffset, width, height, format, imageSize, data);6158}6159else6160{6161GenerateContextLostErrorOnCurrentGlobalContext();6162}6163}61646165void GL_APIENTRY GL_CompressedTextureSubImage3D(GLuint texture,6166GLint level,6167GLint xoffset,6168GLint yoffset,6169GLint zoffset,6170GLsizei width,6171GLsizei height,6172GLsizei depth,6173GLenum format,6174GLsizei imageSize,6175const void *data)6176{6177Context *context = GetValidGlobalContext();6178EVENT(context, GLCompressedTextureSubImage3D,6179"context = %d, texture = %u, level = %d, xoffset = %d, yoffset = %d, zoffset = %d, width "6180"= %d, height = %d, depth = %d, format = %s, imageSize = %d, data = 0x%016" PRIxPTR "",6181CID(context), texture, level, xoffset, yoffset, zoffset, width, height, depth,6182GLenumToString(GLenumGroup::PixelFormat, format), imageSize, (uintptr_t)data);61836184if (context)6185{6186TextureID texturePacked = PackParam<TextureID>(texture);6187std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);6188bool isCallValid = (context->skipValidation() ||6189ValidateCompressedTextureSubImage3D(6190context, texturePacked, level, xoffset, yoffset, zoffset, width,6191height, depth, format, imageSize, data));6192if (isCallValid)6193{6194context->compressedTextureSubImage3D(texturePacked, level, xoffset, yoffset, zoffset,6195width, height, depth, format, imageSize, data);6196}6197ANGLE_CAPTURE(CompressedTextureSubImage3D, isCallValid, context, texturePacked, level,6198xoffset, yoffset, zoffset, width, height, depth, format, imageSize, data);6199}6200else6201{6202GenerateContextLostErrorOnCurrentGlobalContext();6203}6204}62056206void GL_APIENTRY GL_CopyNamedBufferSubData(GLuint readBuffer,6207GLuint writeBuffer,6208GLintptr readOffset,6209GLintptr writeOffset,6210GLsizeiptr size)6211{6212Context *context = GetValidGlobalContext();6213EVENT(context, GLCopyNamedBufferSubData,6214"context = %d, readBuffer = %u, writeBuffer = %u, readOffset = %llu, writeOffset = %llu, "6215"size = %llu",6216CID(context), readBuffer, writeBuffer, static_cast<unsigned long long>(readOffset),6217static_cast<unsigned long long>(writeOffset), static_cast<unsigned long long>(size));62186219if (context)6220{6221std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);6222bool isCallValid = (context->skipValidation() ||6223ValidateCopyNamedBufferSubData(context, readBuffer, writeBuffer,6224readOffset, writeOffset, size));6225if (isCallValid)6226{6227context->copyNamedBufferSubData(readBuffer, writeBuffer, readOffset, writeOffset, size);6228}6229ANGLE_CAPTURE(CopyNamedBufferSubData, isCallValid, context, readBuffer, writeBuffer,6230readOffset, writeOffset, size);6231}6232else6233{6234GenerateContextLostErrorOnCurrentGlobalContext();6235}6236}62376238void GL_APIENTRY GL_CopyTextureSubImage1D(GLuint texture,6239GLint level,6240GLint xoffset,6241GLint x,6242GLint y,6243GLsizei width)6244{6245Context *context = GetValidGlobalContext();6246EVENT(context, GLCopyTextureSubImage1D,6247"context = %d, texture = %u, level = %d, xoffset = %d, x = %d, y = %d, width = %d",6248CID(context), texture, level, xoffset, x, y, width);62496250if (context)6251{6252TextureID texturePacked = PackParam<TextureID>(texture);6253std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);6254bool isCallValid =6255(context->skipValidation() ||6256ValidateCopyTextureSubImage1D(context, texturePacked, level, xoffset, x, y, width));6257if (isCallValid)6258{6259context->copyTextureSubImage1D(texturePacked, level, xoffset, x, y, width);6260}6261ANGLE_CAPTURE(CopyTextureSubImage1D, isCallValid, context, texturePacked, level, xoffset, x,6262y, width);6263}6264else6265{6266GenerateContextLostErrorOnCurrentGlobalContext();6267}6268}62696270void GL_APIENTRY GL_CopyTextureSubImage2D(GLuint texture,6271GLint level,6272GLint xoffset,6273GLint yoffset,6274GLint x,6275GLint y,6276GLsizei width,6277GLsizei height)6278{6279Context *context = GetValidGlobalContext();6280EVENT(context, GLCopyTextureSubImage2D,6281"context = %d, texture = %u, level = %d, xoffset = %d, yoffset = %d, x = %d, y = %d, "6282"width = %d, height = %d",6283CID(context), texture, level, xoffset, yoffset, x, y, width, height);62846285if (context)6286{6287TextureID texturePacked = PackParam<TextureID>(texture);6288std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);6289bool isCallValid = (context->skipValidation() ||6290ValidateCopyTextureSubImage2D(context, texturePacked, level, xoffset,6291yoffset, x, y, width, height));6292if (isCallValid)6293{6294context->copyTextureSubImage2D(texturePacked, level, xoffset, yoffset, x, y, width,6295height);6296}6297ANGLE_CAPTURE(CopyTextureSubImage2D, isCallValid, context, texturePacked, level, xoffset,6298yoffset, x, y, width, height);6299}6300else6301{6302GenerateContextLostErrorOnCurrentGlobalContext();6303}6304}63056306void GL_APIENTRY GL_CopyTextureSubImage3D(GLuint texture,6307GLint level,6308GLint xoffset,6309GLint yoffset,6310GLint zoffset,6311GLint x,6312GLint y,6313GLsizei width,6314GLsizei height)6315{6316Context *context = GetValidGlobalContext();6317EVENT(context, GLCopyTextureSubImage3D,6318"context = %d, texture = %u, level = %d, xoffset = %d, yoffset = %d, zoffset = %d, x = "6319"%d, y = %d, width = %d, height = %d",6320CID(context), texture, level, xoffset, yoffset, zoffset, x, y, width, height);63216322if (context)6323{6324TextureID texturePacked = PackParam<TextureID>(texture);6325std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);6326bool isCallValid = (context->skipValidation() ||6327ValidateCopyTextureSubImage3D(context, texturePacked, level, xoffset,6328yoffset, zoffset, x, y, width, height));6329if (isCallValid)6330{6331context->copyTextureSubImage3D(texturePacked, level, xoffset, yoffset, zoffset, x, y,6332width, height);6333}6334ANGLE_CAPTURE(CopyTextureSubImage3D, isCallValid, context, texturePacked, level, xoffset,6335yoffset, zoffset, x, y, width, height);6336}6337else6338{6339GenerateContextLostErrorOnCurrentGlobalContext();6340}6341}63426343void GL_APIENTRY GL_CreateBuffers(GLsizei n, GLuint *buffers)6344{6345Context *context = GetValidGlobalContext();6346EVENT(context, GLCreateBuffers, "context = %d, n = %d, buffers = 0x%016" PRIxPTR "",6347CID(context), n, (uintptr_t)buffers);63486349if (context)6350{6351BufferID *buffersPacked = PackParam<BufferID *>(buffers);6352std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);6353bool isCallValid =6354(context->skipValidation() || ValidateCreateBuffers(context, n, buffersPacked));6355if (isCallValid)6356{6357context->createBuffers(n, buffersPacked);6358}6359ANGLE_CAPTURE(CreateBuffers, isCallValid, context, n, buffersPacked);6360}6361else6362{6363GenerateContextLostErrorOnCurrentGlobalContext();6364}6365}63666367void GL_APIENTRY GL_CreateFramebuffers(GLsizei n, GLuint *framebuffers)6368{6369Context *context = GetValidGlobalContext();6370EVENT(context, GLCreateFramebuffers, "context = %d, n = %d, framebuffers = 0x%016" PRIxPTR "",6371CID(context), n, (uintptr_t)framebuffers);63726373if (context)6374{6375std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);6376bool isCallValid =6377(context->skipValidation() || ValidateCreateFramebuffers(context, n, framebuffers));6378if (isCallValid)6379{6380context->createFramebuffers(n, framebuffers);6381}6382ANGLE_CAPTURE(CreateFramebuffers, isCallValid, context, n, framebuffers);6383}6384else6385{6386GenerateContextLostErrorOnCurrentGlobalContext();6387}6388}63896390void GL_APIENTRY GL_CreateProgramPipelines(GLsizei n, GLuint *pipelines)6391{6392Context *context = GetValidGlobalContext();6393EVENT(context, GLCreateProgramPipelines, "context = %d, n = %d, pipelines = 0x%016" PRIxPTR "",6394CID(context), n, (uintptr_t)pipelines);63956396if (context)6397{6398std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);6399bool isCallValid =6400(context->skipValidation() || ValidateCreateProgramPipelines(context, n, pipelines));6401if (isCallValid)6402{6403context->createProgramPipelines(n, pipelines);6404}6405ANGLE_CAPTURE(CreateProgramPipelines, isCallValid, context, n, pipelines);6406}6407else6408{6409GenerateContextLostErrorOnCurrentGlobalContext();6410}6411}64126413void GL_APIENTRY GL_CreateQueries(GLenum target, GLsizei n, GLuint *ids)6414{6415Context *context = GetValidGlobalContext();6416EVENT(context, GLCreateQueries, "context = %d, target = %s, n = %d, ids = 0x%016" PRIxPTR "",6417CID(context), GLenumToString(GLenumGroup::QueryTarget, target), n, (uintptr_t)ids);64186419if (context)6420{6421std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);6422bool isCallValid =6423(context->skipValidation() || ValidateCreateQueries(context, target, n, ids));6424if (isCallValid)6425{6426context->createQueries(target, n, ids);6427}6428ANGLE_CAPTURE(CreateQueries, isCallValid, context, target, n, ids);6429}6430else6431{6432GenerateContextLostErrorOnCurrentGlobalContext();6433}6434}64356436void GL_APIENTRY GL_CreateRenderbuffers(GLsizei n, GLuint *renderbuffers)6437{6438Context *context = GetValidGlobalContext();6439EVENT(context, GLCreateRenderbuffers, "context = %d, n = %d, renderbuffers = 0x%016" PRIxPTR "",6440CID(context), n, (uintptr_t)renderbuffers);64416442if (context)6443{6444RenderbufferID *renderbuffersPacked = PackParam<RenderbufferID *>(renderbuffers);6445std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);6446bool isCallValid = (context->skipValidation() ||6447ValidateCreateRenderbuffers(context, n, renderbuffersPacked));6448if (isCallValid)6449{6450context->createRenderbuffers(n, renderbuffersPacked);6451}6452ANGLE_CAPTURE(CreateRenderbuffers, isCallValid, context, n, renderbuffersPacked);6453}6454else6455{6456GenerateContextLostErrorOnCurrentGlobalContext();6457}6458}64596460void GL_APIENTRY GL_CreateSamplers(GLsizei n, GLuint *samplers)6461{6462Context *context = GetValidGlobalContext();6463EVENT(context, GLCreateSamplers, "context = %d, n = %d, samplers = 0x%016" PRIxPTR "",6464CID(context), n, (uintptr_t)samplers);64656466if (context)6467{6468std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);6469bool isCallValid =6470(context->skipValidation() || ValidateCreateSamplers(context, n, samplers));6471if (isCallValid)6472{6473context->createSamplers(n, samplers);6474}6475ANGLE_CAPTURE(CreateSamplers, isCallValid, context, n, samplers);6476}6477else6478{6479GenerateContextLostErrorOnCurrentGlobalContext();6480}6481}64826483void GL_APIENTRY GL_CreateTextures(GLenum target, GLsizei n, GLuint *textures)6484{6485Context *context = GetValidGlobalContext();6486EVENT(context, GLCreateTextures,6487"context = %d, target = %s, n = %d, textures = 0x%016" PRIxPTR "", CID(context),6488GLenumToString(GLenumGroup::TextureTarget, target), n, (uintptr_t)textures);64896490if (context)6491{6492std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);6493bool isCallValid =6494(context->skipValidation() || ValidateCreateTextures(context, target, n, textures));6495if (isCallValid)6496{6497context->createTextures(target, n, textures);6498}6499ANGLE_CAPTURE(CreateTextures, isCallValid, context, target, n, textures);6500}6501else6502{6503GenerateContextLostErrorOnCurrentGlobalContext();6504}6505}65066507void GL_APIENTRY GL_CreateTransformFeedbacks(GLsizei n, GLuint *ids)6508{6509Context *context = GetValidGlobalContext();6510EVENT(context, GLCreateTransformFeedbacks, "context = %d, n = %d, ids = 0x%016" PRIxPTR "",6511CID(context), n, (uintptr_t)ids);65126513if (context)6514{6515std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);6516bool isCallValid =6517(context->skipValidation() || ValidateCreateTransformFeedbacks(context, n, ids));6518if (isCallValid)6519{6520context->createTransformFeedbacks(n, ids);6521}6522ANGLE_CAPTURE(CreateTransformFeedbacks, isCallValid, context, n, ids);6523}6524else6525{6526GenerateContextLostErrorOnCurrentGlobalContext();6527}6528}65296530void GL_APIENTRY GL_CreateVertexArrays(GLsizei n, GLuint *arrays)6531{6532Context *context = GetValidGlobalContext();6533EVENT(context, GLCreateVertexArrays, "context = %d, n = %d, arrays = 0x%016" PRIxPTR "",6534CID(context), n, (uintptr_t)arrays);65356536if (context)6537{6538VertexArrayID *arraysPacked = PackParam<VertexArrayID *>(arrays);6539std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);6540bool isCallValid =6541(context->skipValidation() || ValidateCreateVertexArrays(context, n, arraysPacked));6542if (isCallValid)6543{6544context->createVertexArrays(n, arraysPacked);6545}6546ANGLE_CAPTURE(CreateVertexArrays, isCallValid, context, n, arraysPacked);6547}6548else6549{6550GenerateContextLostErrorOnCurrentGlobalContext();6551}6552}65536554void GL_APIENTRY GL_DisableVertexArrayAttrib(GLuint vaobj, GLuint index)6555{6556Context *context = GetValidGlobalContext();6557EVENT(context, GLDisableVertexArrayAttrib, "context = %d, vaobj = %u, index = %u", CID(context),6558vaobj, index);65596560if (context)6561{6562VertexArrayID vaobjPacked = PackParam<VertexArrayID>(vaobj);6563std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);6564bool isCallValid = (context->skipValidation() ||6565ValidateDisableVertexArrayAttrib(context, vaobjPacked, index));6566if (isCallValid)6567{6568context->disableVertexArrayAttrib(vaobjPacked, index);6569}6570ANGLE_CAPTURE(DisableVertexArrayAttrib, isCallValid, context, vaobjPacked, index);6571}6572else6573{6574GenerateContextLostErrorOnCurrentGlobalContext();6575}6576}65776578void GL_APIENTRY GL_EnableVertexArrayAttrib(GLuint vaobj, GLuint index)6579{6580Context *context = GetValidGlobalContext();6581EVENT(context, GLEnableVertexArrayAttrib, "context = %d, vaobj = %u, index = %u", CID(context),6582vaobj, index);65836584if (context)6585{6586VertexArrayID vaobjPacked = PackParam<VertexArrayID>(vaobj);6587std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);6588bool isCallValid = (context->skipValidation() ||6589ValidateEnableVertexArrayAttrib(context, vaobjPacked, index));6590if (isCallValid)6591{6592context->enableVertexArrayAttrib(vaobjPacked, index);6593}6594ANGLE_CAPTURE(EnableVertexArrayAttrib, isCallValid, context, vaobjPacked, index);6595}6596else6597{6598GenerateContextLostErrorOnCurrentGlobalContext();6599}6600}66016602void GL_APIENTRY GL_FlushMappedNamedBufferRange(GLuint buffer, GLintptr offset, GLsizeiptr length)6603{6604Context *context = GetValidGlobalContext();6605EVENT(context, GLFlushMappedNamedBufferRange,6606"context = %d, buffer = %u, offset = %llu, length = %llu", CID(context), buffer,6607static_cast<unsigned long long>(offset), static_cast<unsigned long long>(length));66086609if (context)6610{6611BufferID bufferPacked = PackParam<BufferID>(buffer);6612std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);6613bool isCallValid =6614(context->skipValidation() ||6615ValidateFlushMappedNamedBufferRange(context, bufferPacked, offset, length));6616if (isCallValid)6617{6618context->flushMappedNamedBufferRange(bufferPacked, offset, length);6619}6620ANGLE_CAPTURE(FlushMappedNamedBufferRange, isCallValid, context, bufferPacked, offset,6621length);6622}6623else6624{6625GenerateContextLostErrorOnCurrentGlobalContext();6626}6627}66286629void GL_APIENTRY GL_GenerateTextureMipmap(GLuint texture)6630{6631Context *context = GetValidGlobalContext();6632EVENT(context, GLGenerateTextureMipmap, "context = %d, texture = %u", CID(context), texture);66336634if (context)6635{6636TextureID texturePacked = PackParam<TextureID>(texture);6637std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);6638bool isCallValid =6639(context->skipValidation() || ValidateGenerateTextureMipmap(context, texturePacked));6640if (isCallValid)6641{6642context->generateTextureMipmap(texturePacked);6643}6644ANGLE_CAPTURE(GenerateTextureMipmap, isCallValid, context, texturePacked);6645}6646else6647{6648GenerateContextLostErrorOnCurrentGlobalContext();6649}6650}66516652void GL_APIENTRY GL_GetCompressedTextureImage(GLuint texture,6653GLint level,6654GLsizei bufSize,6655void *pixels)6656{6657Context *context = GetValidGlobalContext();6658EVENT(context, GLGetCompressedTextureImage,6659"context = %d, texture = %u, level = %d, bufSize = %d, pixels = 0x%016" PRIxPTR "",6660CID(context), texture, level, bufSize, (uintptr_t)pixels);66616662if (context)6663{6664TextureID texturePacked = PackParam<TextureID>(texture);6665std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);6666bool isCallValid =6667(context->skipValidation() ||6668ValidateGetCompressedTextureImage(context, texturePacked, level, bufSize, pixels));6669if (isCallValid)6670{6671context->getCompressedTextureImage(texturePacked, level, bufSize, pixels);6672}6673ANGLE_CAPTURE(GetCompressedTextureImage, isCallValid, context, texturePacked, level,6674bufSize, pixels);6675}6676else6677{6678GenerateContextLostErrorOnCurrentGlobalContext();6679}6680}66816682void GL_APIENTRY GL_GetCompressedTextureSubImage(GLuint texture,6683GLint level,6684GLint xoffset,6685GLint yoffset,6686GLint zoffset,6687GLsizei width,6688GLsizei height,6689GLsizei depth,6690GLsizei bufSize,6691void *pixels)6692{6693Context *context = GetValidGlobalContext();6694EVENT(context, GLGetCompressedTextureSubImage,6695"context = %d, texture = %u, level = %d, xoffset = %d, yoffset = %d, zoffset = %d, width "6696"= %d, height = %d, depth = %d, bufSize = %d, pixels = 0x%016" PRIxPTR "",6697CID(context), texture, level, xoffset, yoffset, zoffset, width, height, depth, bufSize,6698(uintptr_t)pixels);66996700if (context)6701{6702TextureID texturePacked = PackParam<TextureID>(texture);6703std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);6704bool isCallValid =6705(context->skipValidation() ||6706ValidateGetCompressedTextureSubImage(context, texturePacked, level, xoffset, yoffset,6707zoffset, width, height, depth, bufSize, pixels));6708if (isCallValid)6709{6710context->getCompressedTextureSubImage(texturePacked, level, xoffset, yoffset, zoffset,6711width, height, depth, bufSize, pixels);6712}6713ANGLE_CAPTURE(GetCompressedTextureSubImage, isCallValid, context, texturePacked, level,6714xoffset, yoffset, zoffset, width, height, depth, bufSize, pixels);6715}6716else6717{6718GenerateContextLostErrorOnCurrentGlobalContext();6719}6720}67216722GLenum GL_APIENTRY GL_GetGraphicsResetStatus()6723{6724Context *context = GetGlobalContext();6725EVENT(context, GLGetGraphicsResetStatus, "context = %d", CID(context));67266727GLenum returnValue;6728if (context)6729{6730std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);6731bool isCallValid = (context->skipValidation() || ValidateGetGraphicsResetStatus(context));6732if (isCallValid)6733{6734returnValue = context->getGraphicsResetStatus();6735}6736else6737{6738returnValue =6739GetDefaultReturnValue<angle::EntryPoint::GLGetGraphicsResetStatus, GLenum>();6740}6741ANGLE_CAPTURE(GetGraphicsResetStatus, isCallValid, context, returnValue);6742}6743else6744{67456746returnValue = GetDefaultReturnValue<angle::EntryPoint::GLGetGraphicsResetStatus, GLenum>();6747}6748return returnValue;6749}67506751void GL_APIENTRY GL_GetNamedBufferParameteri64v(GLuint buffer, GLenum pname, GLint64 *params)6752{6753Context *context = GetValidGlobalContext();6754EVENT(context, GLGetNamedBufferParameteri64v,6755"context = %d, buffer = %u, pname = %s, params = 0x%016" PRIxPTR "", CID(context), buffer,6756GLenumToString(GLenumGroup::VertexBufferObjectParameter, pname), (uintptr_t)params);67576758if (context)6759{6760BufferID bufferPacked = PackParam<BufferID>(buffer);6761std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);6762bool isCallValid = (context->skipValidation() || ValidateGetNamedBufferParameteri64v(6763context, bufferPacked, pname, params));6764if (isCallValid)6765{6766context->getNamedBufferParameteri64v(bufferPacked, pname, params);6767}6768ANGLE_CAPTURE(GetNamedBufferParameteri64v, isCallValid, context, bufferPacked, pname,6769params);6770}6771else6772{6773GenerateContextLostErrorOnCurrentGlobalContext();6774}6775}67766777void GL_APIENTRY GL_GetNamedBufferParameteriv(GLuint buffer, GLenum pname, GLint *params)6778{6779Context *context = GetValidGlobalContext();6780EVENT(context, GLGetNamedBufferParameteriv,6781"context = %d, buffer = %u, pname = %s, params = 0x%016" PRIxPTR "", CID(context), buffer,6782GLenumToString(GLenumGroup::VertexBufferObjectParameter, pname), (uintptr_t)params);67836784if (context)6785{6786BufferID bufferPacked = PackParam<BufferID>(buffer);6787std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);6788bool isCallValid = (context->skipValidation() || ValidateGetNamedBufferParameteriv(6789context, bufferPacked, pname, params));6790if (isCallValid)6791{6792context->getNamedBufferParameteriv(bufferPacked, pname, params);6793}6794ANGLE_CAPTURE(GetNamedBufferParameteriv, isCallValid, context, bufferPacked, pname, params);6795}6796else6797{6798GenerateContextLostErrorOnCurrentGlobalContext();6799}6800}68016802void GL_APIENTRY GL_GetNamedBufferPointerv(GLuint buffer, GLenum pname, void **params)6803{6804Context *context = GetValidGlobalContext();6805EVENT(context, GLGetNamedBufferPointerv,6806"context = %d, buffer = %u, pname = %s, params = 0x%016" PRIxPTR "", CID(context), buffer,6807GLenumToString(GLenumGroup::VertexBufferObjectParameter, pname), (uintptr_t)params);68086809if (context)6810{6811BufferID bufferPacked = PackParam<BufferID>(buffer);6812std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);6813bool isCallValid = (context->skipValidation() ||6814ValidateGetNamedBufferPointerv(context, bufferPacked, pname, params));6815if (isCallValid)6816{6817context->getNamedBufferPointerv(bufferPacked, pname, params);6818}6819ANGLE_CAPTURE(GetNamedBufferPointerv, isCallValid, context, bufferPacked, pname, params);6820}6821else6822{6823GenerateContextLostErrorOnCurrentGlobalContext();6824}6825}68266827void GL_APIENTRY GL_GetNamedBufferSubData(GLuint buffer,6828GLintptr offset,6829GLsizeiptr size,6830void *data)6831{6832Context *context = GetValidGlobalContext();6833EVENT(context, GLGetNamedBufferSubData,6834"context = %d, buffer = %u, offset = %llu, size = %llu, data = 0x%016" PRIxPTR "",6835CID(context), buffer, static_cast<unsigned long long>(offset),6836static_cast<unsigned long long>(size), (uintptr_t)data);68376838if (context)6839{6840BufferID bufferPacked = PackParam<BufferID>(buffer);6841std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);6842bool isCallValid =6843(context->skipValidation() ||6844ValidateGetNamedBufferSubData(context, bufferPacked, offset, size, data));6845if (isCallValid)6846{6847context->getNamedBufferSubData(bufferPacked, offset, size, data);6848}6849ANGLE_CAPTURE(GetNamedBufferSubData, isCallValid, context, bufferPacked, offset, size,6850data);6851}6852else6853{6854GenerateContextLostErrorOnCurrentGlobalContext();6855}6856}68576858void GL_APIENTRY GL_GetNamedFramebufferAttachmentParameteriv(GLuint framebuffer,6859GLenum attachment,6860GLenum pname,6861GLint *params)6862{6863Context *context = GetValidGlobalContext();6864EVENT(context, GLGetNamedFramebufferAttachmentParameteriv,6865"context = %d, framebuffer = %u, attachment = %s, pname = %s, params = 0x%016" PRIxPTR "",6866CID(context), framebuffer, GLenumToString(GLenumGroup::FramebufferAttachment, attachment),6867GLenumToString(GLenumGroup::FramebufferAttachmentParameterName, pname),6868(uintptr_t)params);68696870if (context)6871{6872FramebufferID framebufferPacked = PackParam<FramebufferID>(framebuffer);6873std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);6874bool isCallValid = (context->skipValidation() ||6875ValidateGetNamedFramebufferAttachmentParameteriv(6876context, framebufferPacked, attachment, pname, params));6877if (isCallValid)6878{6879context->getNamedFramebufferAttachmentParameteriv(framebufferPacked, attachment, pname,6880params);6881}6882ANGLE_CAPTURE(GetNamedFramebufferAttachmentParameteriv, isCallValid, context,6883framebufferPacked, attachment, pname, params);6884}6885else6886{6887GenerateContextLostErrorOnCurrentGlobalContext();6888}6889}68906891void GL_APIENTRY GL_GetNamedFramebufferParameteriv(GLuint framebuffer, GLenum pname, GLint *param)6892{6893Context *context = GetValidGlobalContext();6894EVENT(context, GLGetNamedFramebufferParameteriv,6895"context = %d, framebuffer = %u, pname = %s, param = 0x%016" PRIxPTR "", CID(context),6896framebuffer, GLenumToString(GLenumGroup::GetFramebufferParameter, pname),6897(uintptr_t)param);68986899if (context)6900{6901FramebufferID framebufferPacked = PackParam<FramebufferID>(framebuffer);6902std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);6903bool isCallValid =6904(context->skipValidation() ||6905ValidateGetNamedFramebufferParameteriv(context, framebufferPacked, pname, param));6906if (isCallValid)6907{6908context->getNamedFramebufferParameteriv(framebufferPacked, pname, param);6909}6910ANGLE_CAPTURE(GetNamedFramebufferParameteriv, isCallValid, context, framebufferPacked,6911pname, param);6912}6913else6914{6915GenerateContextLostErrorOnCurrentGlobalContext();6916}6917}69186919void GL_APIENTRY GL_GetNamedRenderbufferParameteriv(GLuint renderbuffer,6920GLenum pname,6921GLint *params)6922{6923Context *context = GetValidGlobalContext();6924EVENT(context, GLGetNamedRenderbufferParameteriv,6925"context = %d, renderbuffer = %u, pname = %s, params = 0x%016" PRIxPTR "", CID(context),6926renderbuffer, GLenumToString(GLenumGroup::RenderbufferParameterName, pname),6927(uintptr_t)params);69286929if (context)6930{6931RenderbufferID renderbufferPacked = PackParam<RenderbufferID>(renderbuffer);6932std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);6933bool isCallValid =6934(context->skipValidation() ||6935ValidateGetNamedRenderbufferParameteriv(context, renderbufferPacked, pname, params));6936if (isCallValid)6937{6938context->getNamedRenderbufferParameteriv(renderbufferPacked, pname, params);6939}6940ANGLE_CAPTURE(GetNamedRenderbufferParameteriv, isCallValid, context, renderbufferPacked,6941pname, params);6942}6943else6944{6945GenerateContextLostErrorOnCurrentGlobalContext();6946}6947}69486949void GL_APIENTRY GL_GetQueryBufferObjecti64v(GLuint id,6950GLuint buffer,6951GLenum pname,6952GLintptr offset)6953{6954Context *context = GetValidGlobalContext();6955EVENT(context, GLGetQueryBufferObjecti64v,6956"context = %d, id = %u, buffer = %u, pname = %s, offset = %llu", CID(context), id, buffer,6957GLenumToString(GLenumGroup::QueryObjectParameterName, pname),6958static_cast<unsigned long long>(offset));69596960if (context)6961{6962BufferID bufferPacked = PackParam<BufferID>(buffer);6963std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);6964bool isCallValid =6965(context->skipValidation() ||6966ValidateGetQueryBufferObjecti64v(context, id, bufferPacked, pname, offset));6967if (isCallValid)6968{6969context->getQueryBufferObjecti64v(id, bufferPacked, pname, offset);6970}6971ANGLE_CAPTURE(GetQueryBufferObjecti64v, isCallValid, context, id, bufferPacked, pname,6972offset);6973}6974else6975{6976GenerateContextLostErrorOnCurrentGlobalContext();6977}6978}69796980void GL_APIENTRY GL_GetQueryBufferObjectiv(GLuint id, GLuint buffer, GLenum pname, GLintptr offset)6981{6982Context *context = GetValidGlobalContext();6983EVENT(context, GLGetQueryBufferObjectiv,6984"context = %d, id = %u, buffer = %u, pname = %s, offset = %llu", CID(context), id, buffer,6985GLenumToString(GLenumGroup::QueryObjectParameterName, pname),6986static_cast<unsigned long long>(offset));69876988if (context)6989{6990BufferID bufferPacked = PackParam<BufferID>(buffer);6991std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);6992bool isCallValid =6993(context->skipValidation() ||6994ValidateGetQueryBufferObjectiv(context, id, bufferPacked, pname, offset));6995if (isCallValid)6996{6997context->getQueryBufferObjectiv(id, bufferPacked, pname, offset);6998}6999ANGLE_CAPTURE(GetQueryBufferObjectiv, isCallValid, context, id, bufferPacked, pname,7000offset);7001}7002else7003{7004GenerateContextLostErrorOnCurrentGlobalContext();7005}7006}70077008void GL_APIENTRY GL_GetQueryBufferObjectui64v(GLuint id,7009GLuint buffer,7010GLenum pname,7011GLintptr offset)7012{7013Context *context = GetValidGlobalContext();7014EVENT(context, GLGetQueryBufferObjectui64v,7015"context = %d, id = %u, buffer = %u, pname = %s, offset = %llu", CID(context), id, buffer,7016GLenumToString(GLenumGroup::QueryObjectParameterName, pname),7017static_cast<unsigned long long>(offset));70187019if (context)7020{7021BufferID bufferPacked = PackParam<BufferID>(buffer);7022std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);7023bool isCallValid =7024(context->skipValidation() ||7025ValidateGetQueryBufferObjectui64v(context, id, bufferPacked, pname, offset));7026if (isCallValid)7027{7028context->getQueryBufferObjectui64v(id, bufferPacked, pname, offset);7029}7030ANGLE_CAPTURE(GetQueryBufferObjectui64v, isCallValid, context, id, bufferPacked, pname,7031offset);7032}7033else7034{7035GenerateContextLostErrorOnCurrentGlobalContext();7036}7037}70387039void GL_APIENTRY GL_GetQueryBufferObjectuiv(GLuint id, GLuint buffer, GLenum pname, GLintptr offset)7040{7041Context *context = GetValidGlobalContext();7042EVENT(context, GLGetQueryBufferObjectuiv,7043"context = %d, id = %u, buffer = %u, pname = %s, offset = %llu", CID(context), id, buffer,7044GLenumToString(GLenumGroup::QueryObjectParameterName, pname),7045static_cast<unsigned long long>(offset));70467047if (context)7048{7049BufferID bufferPacked = PackParam<BufferID>(buffer);7050std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);7051bool isCallValid =7052(context->skipValidation() ||7053ValidateGetQueryBufferObjectuiv(context, id, bufferPacked, pname, offset));7054if (isCallValid)7055{7056context->getQueryBufferObjectuiv(id, bufferPacked, pname, offset);7057}7058ANGLE_CAPTURE(GetQueryBufferObjectuiv, isCallValid, context, id, bufferPacked, pname,7059offset);7060}7061else7062{7063GenerateContextLostErrorOnCurrentGlobalContext();7064}7065}70667067void GL_APIENTRY GL_GetTextureImage(GLuint texture,7068GLint level,7069GLenum format,7070GLenum type,7071GLsizei bufSize,7072void *pixels)7073{7074Context *context = GetValidGlobalContext();7075EVENT(context, GLGetTextureImage,7076"context = %d, texture = %u, level = %d, format = %s, type = %s, bufSize = %d, pixels = "7077"0x%016" PRIxPTR "",7078CID(context), texture, level, GLenumToString(GLenumGroup::PixelFormat, format),7079GLenumToString(GLenumGroup::PixelType, type), bufSize, (uintptr_t)pixels);70807081if (context)7082{7083TextureID texturePacked = PackParam<TextureID>(texture);7084std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);7085bool isCallValid =7086(context->skipValidation() ||7087ValidateGetTextureImage(context, texturePacked, level, format, type, bufSize, pixels));7088if (isCallValid)7089{7090context->getTextureImage(texturePacked, level, format, type, bufSize, pixels);7091}7092ANGLE_CAPTURE(GetTextureImage, isCallValid, context, texturePacked, level, format, type,7093bufSize, pixels);7094}7095else7096{7097GenerateContextLostErrorOnCurrentGlobalContext();7098}7099}71007101void GL_APIENTRY GL_GetTextureLevelParameterfv(GLuint texture,7102GLint level,7103GLenum pname,7104GLfloat *params)7105{7106Context *context = GetValidGlobalContext();7107EVENT(context, GLGetTextureLevelParameterfv,7108"context = %d, texture = %u, level = %d, pname = %s, params = 0x%016" PRIxPTR "",7109CID(context), texture, level, GLenumToString(GLenumGroup::GetTextureParameter, pname),7110(uintptr_t)params);71117112if (context)7113{7114TextureID texturePacked = PackParam<TextureID>(texture);7115std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);7116bool isCallValid =7117(context->skipValidation() ||7118ValidateGetTextureLevelParameterfv(context, texturePacked, level, pname, params));7119if (isCallValid)7120{7121context->getTextureLevelParameterfv(texturePacked, level, pname, params);7122}7123ANGLE_CAPTURE(GetTextureLevelParameterfv, isCallValid, context, texturePacked, level, pname,7124params);7125}7126else7127{7128GenerateContextLostErrorOnCurrentGlobalContext();7129}7130}71317132void GL_APIENTRY GL_GetTextureLevelParameteriv(GLuint texture,7133GLint level,7134GLenum pname,7135GLint *params)7136{7137Context *context = GetValidGlobalContext();7138EVENT(context, GLGetTextureLevelParameteriv,7139"context = %d, texture = %u, level = %d, pname = %s, params = 0x%016" PRIxPTR "",7140CID(context), texture, level, GLenumToString(GLenumGroup::GetTextureParameter, pname),7141(uintptr_t)params);71427143if (context)7144{7145TextureID texturePacked = PackParam<TextureID>(texture);7146std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);7147bool isCallValid =7148(context->skipValidation() ||7149ValidateGetTextureLevelParameteriv(context, texturePacked, level, pname, params));7150if (isCallValid)7151{7152context->getTextureLevelParameteriv(texturePacked, level, pname, params);7153}7154ANGLE_CAPTURE(GetTextureLevelParameteriv, isCallValid, context, texturePacked, level, pname,7155params);7156}7157else7158{7159GenerateContextLostErrorOnCurrentGlobalContext();7160}7161}71627163void GL_APIENTRY GL_GetTextureParameterIiv(GLuint texture, GLenum pname, GLint *params)7164{7165Context *context = GetValidGlobalContext();7166EVENT(context, GLGetTextureParameterIiv,7167"context = %d, texture = %u, pname = %s, params = 0x%016" PRIxPTR "", CID(context),7168texture, GLenumToString(GLenumGroup::GetTextureParameter, pname), (uintptr_t)params);71697170if (context)7171{7172TextureID texturePacked = PackParam<TextureID>(texture);7173std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);7174bool isCallValid = (context->skipValidation() ||7175ValidateGetTextureParameterIiv(context, texturePacked, pname, params));7176if (isCallValid)7177{7178context->getTextureParameterIiv(texturePacked, pname, params);7179}7180ANGLE_CAPTURE(GetTextureParameterIiv, isCallValid, context, texturePacked, pname, params);7181}7182else7183{7184GenerateContextLostErrorOnCurrentGlobalContext();7185}7186}71877188void GL_APIENTRY GL_GetTextureParameterIuiv(GLuint texture, GLenum pname, GLuint *params)7189{7190Context *context = GetValidGlobalContext();7191EVENT(context, GLGetTextureParameterIuiv,7192"context = %d, texture = %u, pname = %s, params = 0x%016" PRIxPTR "", CID(context),7193texture, GLenumToString(GLenumGroup::GetTextureParameter, pname), (uintptr_t)params);71947195if (context)7196{7197TextureID texturePacked = PackParam<TextureID>(texture);7198std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);7199bool isCallValid = (context->skipValidation() ||7200ValidateGetTextureParameterIuiv(context, texturePacked, pname, params));7201if (isCallValid)7202{7203context->getTextureParameterIuiv(texturePacked, pname, params);7204}7205ANGLE_CAPTURE(GetTextureParameterIuiv, isCallValid, context, texturePacked, pname, params);7206}7207else7208{7209GenerateContextLostErrorOnCurrentGlobalContext();7210}7211}72127213void GL_APIENTRY GL_GetTextureParameterfv(GLuint texture, GLenum pname, GLfloat *params)7214{7215Context *context = GetValidGlobalContext();7216EVENT(context, GLGetTextureParameterfv,7217"context = %d, texture = %u, pname = %s, params = 0x%016" PRIxPTR "", CID(context),7218texture, GLenumToString(GLenumGroup::GetTextureParameter, pname), (uintptr_t)params);72197220if (context)7221{7222TextureID texturePacked = PackParam<TextureID>(texture);7223std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);7224bool isCallValid = (context->skipValidation() ||7225ValidateGetTextureParameterfv(context, texturePacked, pname, params));7226if (isCallValid)7227{7228context->getTextureParameterfv(texturePacked, pname, params);7229}7230ANGLE_CAPTURE(GetTextureParameterfv, isCallValid, context, texturePacked, pname, params);7231}7232else7233{7234GenerateContextLostErrorOnCurrentGlobalContext();7235}7236}72377238void GL_APIENTRY GL_GetTextureParameteriv(GLuint texture, GLenum pname, GLint *params)7239{7240Context *context = GetValidGlobalContext();7241EVENT(context, GLGetTextureParameteriv,7242"context = %d, texture = %u, pname = %s, params = 0x%016" PRIxPTR "", CID(context),7243texture, GLenumToString(GLenumGroup::GetTextureParameter, pname), (uintptr_t)params);72447245if (context)7246{7247TextureID texturePacked = PackParam<TextureID>(texture);7248std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);7249bool isCallValid = (context->skipValidation() ||7250ValidateGetTextureParameteriv(context, texturePacked, pname, params));7251if (isCallValid)7252{7253context->getTextureParameteriv(texturePacked, pname, params);7254}7255ANGLE_CAPTURE(GetTextureParameteriv, isCallValid, context, texturePacked, pname, params);7256}7257else7258{7259GenerateContextLostErrorOnCurrentGlobalContext();7260}7261}72627263void GL_APIENTRY GL_GetTextureSubImage(GLuint texture,7264GLint level,7265GLint xoffset,7266GLint yoffset,7267GLint zoffset,7268GLsizei width,7269GLsizei height,7270GLsizei depth,7271GLenum format,7272GLenum type,7273GLsizei bufSize,7274void *pixels)7275{7276Context *context = GetValidGlobalContext();7277EVENT(7278context, GLGetTextureSubImage,7279"context = %d, texture = %u, level = %d, xoffset = %d, yoffset = %d, zoffset = %d, width = "7280"%d, height = %d, depth = %d, format = %s, type = %s, bufSize = %d, pixels = 0x%016" PRIxPTR7281"",7282CID(context), texture, level, xoffset, yoffset, zoffset, width, height, depth,7283GLenumToString(GLenumGroup::PixelFormat, format),7284GLenumToString(GLenumGroup::PixelType, type), bufSize, (uintptr_t)pixels);72857286if (context)7287{7288TextureID texturePacked = PackParam<TextureID>(texture);7289std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);7290bool isCallValid =7291(context->skipValidation() ||7292ValidateGetTextureSubImage(context, texturePacked, level, xoffset, yoffset, zoffset,7293width, height, depth, format, type, bufSize, pixels));7294if (isCallValid)7295{7296context->getTextureSubImage(texturePacked, level, xoffset, yoffset, zoffset, width,7297height, depth, format, type, bufSize, pixels);7298}7299ANGLE_CAPTURE(GetTextureSubImage, isCallValid, context, texturePacked, level, xoffset,7300yoffset, zoffset, width, height, depth, format, type, bufSize, pixels);7301}7302else7303{7304GenerateContextLostErrorOnCurrentGlobalContext();7305}7306}73077308void GL_APIENTRY GL_GetTransformFeedbacki64_v(GLuint xfb,7309GLenum pname,7310GLuint index,7311GLint64 *param)7312{7313Context *context = GetValidGlobalContext();7314EVENT(context, GLGetTransformFeedbacki64_v,7315"context = %d, xfb = %u, pname = %s, index = %u, param = 0x%016" PRIxPTR "", CID(context),7316xfb, GLenumToString(GLenumGroup::TransformFeedbackPName, pname), index, (uintptr_t)param);73177318if (context)7319{7320std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);7321bool isCallValid = (context->skipValidation() ||7322ValidateGetTransformFeedbacki64_v(context, xfb, pname, index, param));7323if (isCallValid)7324{7325context->getTransformFeedbacki64_v(xfb, pname, index, param);7326}7327ANGLE_CAPTURE(GetTransformFeedbacki64_v, isCallValid, context, xfb, pname, index, param);7328}7329else7330{7331GenerateContextLostErrorOnCurrentGlobalContext();7332}7333}73347335void GL_APIENTRY GL_GetTransformFeedbacki_v(GLuint xfb, GLenum pname, GLuint index, GLint *param)7336{7337Context *context = GetValidGlobalContext();7338EVENT(context, GLGetTransformFeedbacki_v,7339"context = %d, xfb = %u, pname = %s, index = %u, param = 0x%016" PRIxPTR "", CID(context),7340xfb, GLenumToString(GLenumGroup::TransformFeedbackPName, pname), index, (uintptr_t)param);73417342if (context)7343{7344std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);7345bool isCallValid = (context->skipValidation() ||7346ValidateGetTransformFeedbacki_v(context, xfb, pname, index, param));7347if (isCallValid)7348{7349context->getTransformFeedbacki_v(xfb, pname, index, param);7350}7351ANGLE_CAPTURE(GetTransformFeedbacki_v, isCallValid, context, xfb, pname, index, param);7352}7353else7354{7355GenerateContextLostErrorOnCurrentGlobalContext();7356}7357}73587359void GL_APIENTRY GL_GetTransformFeedbackiv(GLuint xfb, GLenum pname, GLint *param)7360{7361Context *context = GetValidGlobalContext();7362EVENT(context, GLGetTransformFeedbackiv,7363"context = %d, xfb = %u, pname = %s, param = 0x%016" PRIxPTR "", CID(context), xfb,7364GLenumToString(GLenumGroup::TransformFeedbackPName, pname), (uintptr_t)param);73657366if (context)7367{7368std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);7369bool isCallValid = (context->skipValidation() ||7370ValidateGetTransformFeedbackiv(context, xfb, pname, param));7371if (isCallValid)7372{7373context->getTransformFeedbackiv(xfb, pname, param);7374}7375ANGLE_CAPTURE(GetTransformFeedbackiv, isCallValid, context, xfb, pname, param);7376}7377else7378{7379GenerateContextLostErrorOnCurrentGlobalContext();7380}7381}73827383void GL_APIENTRY GL_GetVertexArrayIndexed64iv(GLuint vaobj,7384GLuint index,7385GLenum pname,7386GLint64 *param)7387{7388Context *context = GetValidGlobalContext();7389EVENT(context, GLGetVertexArrayIndexed64iv,7390"context = %d, vaobj = %u, index = %u, pname = %s, param = 0x%016" PRIxPTR "",7391CID(context), vaobj, index, GLenumToString(GLenumGroup::VertexArrayPName, pname),7392(uintptr_t)param);73937394if (context)7395{7396VertexArrayID vaobjPacked = PackParam<VertexArrayID>(vaobj);7397std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);7398bool isCallValid =7399(context->skipValidation() ||7400ValidateGetVertexArrayIndexed64iv(context, vaobjPacked, index, pname, param));7401if (isCallValid)7402{7403context->getVertexArrayIndexed64iv(vaobjPacked, index, pname, param);7404}7405ANGLE_CAPTURE(GetVertexArrayIndexed64iv, isCallValid, context, vaobjPacked, index, pname,7406param);7407}7408else7409{7410GenerateContextLostErrorOnCurrentGlobalContext();7411}7412}74137414void GL_APIENTRY GL_GetVertexArrayIndexediv(GLuint vaobj, GLuint index, GLenum pname, GLint *param)7415{7416Context *context = GetValidGlobalContext();7417EVENT(context, GLGetVertexArrayIndexediv,7418"context = %d, vaobj = %u, index = %u, pname = %s, param = 0x%016" PRIxPTR "",7419CID(context), vaobj, index, GLenumToString(GLenumGroup::VertexArrayPName, pname),7420(uintptr_t)param);74217422if (context)7423{7424VertexArrayID vaobjPacked = PackParam<VertexArrayID>(vaobj);7425std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);7426bool isCallValid =7427(context->skipValidation() ||7428ValidateGetVertexArrayIndexediv(context, vaobjPacked, index, pname, param));7429if (isCallValid)7430{7431context->getVertexArrayIndexediv(vaobjPacked, index, pname, param);7432}7433ANGLE_CAPTURE(GetVertexArrayIndexediv, isCallValid, context, vaobjPacked, index, pname,7434param);7435}7436else7437{7438GenerateContextLostErrorOnCurrentGlobalContext();7439}7440}74417442void GL_APIENTRY GL_GetVertexArrayiv(GLuint vaobj, GLenum pname, GLint *param)7443{7444Context *context = GetValidGlobalContext();7445EVENT(context, GLGetVertexArrayiv,7446"context = %d, vaobj = %u, pname = %s, param = 0x%016" PRIxPTR "", CID(context), vaobj,7447GLenumToString(GLenumGroup::VertexArrayPName, pname), (uintptr_t)param);74487449if (context)7450{7451VertexArrayID vaobjPacked = PackParam<VertexArrayID>(vaobj);7452std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);7453bool isCallValid = (context->skipValidation() ||7454ValidateGetVertexArrayiv(context, vaobjPacked, pname, param));7455if (isCallValid)7456{7457context->getVertexArrayiv(vaobjPacked, pname, param);7458}7459ANGLE_CAPTURE(GetVertexArrayiv, isCallValid, context, vaobjPacked, pname, param);7460}7461else7462{7463GenerateContextLostErrorOnCurrentGlobalContext();7464}7465}74667467void GL_APIENTRY7468GL_GetnColorTable(GLenum target, GLenum format, GLenum type, GLsizei bufSize, void *table)7469{7470Context *context = GetValidGlobalContext();7471EVENT(context, GLGetnColorTable,7472"context = %d, target = %s, format = %s, type = %s, bufSize = %d, table = 0x%016" PRIxPTR7473"",7474CID(context), GLenumToString(GLenumGroup::ColorTableTarget, target),7475GLenumToString(GLenumGroup::PixelFormat, format),7476GLenumToString(GLenumGroup::PixelType, type), bufSize, (uintptr_t)table);74777478if (context)7479{7480std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);7481bool isCallValid = (context->skipValidation() ||7482ValidateGetnColorTable(context, target, format, type, bufSize, table));7483if (isCallValid)7484{7485context->getnColorTable(target, format, type, bufSize, table);7486}7487ANGLE_CAPTURE(GetnColorTable, isCallValid, context, target, format, type, bufSize, table);7488}7489else7490{7491GenerateContextLostErrorOnCurrentGlobalContext();7492}7493}74947495void GL_APIENTRY GL_GetnCompressedTexImage(GLenum target, GLint lod, GLsizei bufSize, void *pixels)7496{7497Context *context = GetValidGlobalContext();7498EVENT(context, GLGetnCompressedTexImage,7499"context = %d, target = %s, lod = %d, bufSize = %d, pixels = 0x%016" PRIxPTR "",7500CID(context), GLenumToString(GLenumGroup::TextureTarget, target), lod, bufSize,7501(uintptr_t)pixels);75027503if (context)7504{7505std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);7506bool isCallValid = (context->skipValidation() ||7507ValidateGetnCompressedTexImage(context, target, lod, bufSize, pixels));7508if (isCallValid)7509{7510context->getnCompressedTexImage(target, lod, bufSize, pixels);7511}7512ANGLE_CAPTURE(GetnCompressedTexImage, isCallValid, context, target, lod, bufSize, pixels);7513}7514else7515{7516GenerateContextLostErrorOnCurrentGlobalContext();7517}7518}75197520void GL_APIENTRY7521GL_GetnConvolutionFilter(GLenum target, GLenum format, GLenum type, GLsizei bufSize, void *image)7522{7523Context *context = GetValidGlobalContext();7524EVENT(context, GLGetnConvolutionFilter,7525"context = %d, target = %s, format = %s, type = %s, bufSize = %d, image = 0x%016" PRIxPTR7526"",7527CID(context), GLenumToString(GLenumGroup::ConvolutionTarget, target),7528GLenumToString(GLenumGroup::PixelFormat, format),7529GLenumToString(GLenumGroup::PixelType, type), bufSize, (uintptr_t)image);75307531if (context)7532{7533std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);7534bool isCallValid =7535(context->skipValidation() ||7536ValidateGetnConvolutionFilter(context, target, format, type, bufSize, image));7537if (isCallValid)7538{7539context->getnConvolutionFilter(target, format, type, bufSize, image);7540}7541ANGLE_CAPTURE(GetnConvolutionFilter, isCallValid, context, target, format, type, bufSize,7542image);7543}7544else7545{7546GenerateContextLostErrorOnCurrentGlobalContext();7547}7548}75497550void GL_APIENTRY GL_GetnHistogram(GLenum target,7551GLboolean reset,7552GLenum format,7553GLenum type,7554GLsizei bufSize,7555void *values)7556{7557Context *context = GetValidGlobalContext();7558EVENT(context, GLGetnHistogram,7559"context = %d, target = %s, reset = %s, format = %s, type = %s, bufSize = %d, values = "7560"0x%016" PRIxPTR "",7561CID(context), GLenumToString(GLenumGroup::HistogramTargetEXT, target),7562GLbooleanToString(reset), GLenumToString(GLenumGroup::PixelFormat, format),7563GLenumToString(GLenumGroup::PixelType, type), bufSize, (uintptr_t)values);75647565if (context)7566{7567std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);7568bool isCallValid =7569(context->skipValidation() ||7570ValidateGetnHistogram(context, target, reset, format, type, bufSize, values));7571if (isCallValid)7572{7573context->getnHistogram(target, reset, format, type, bufSize, values);7574}7575ANGLE_CAPTURE(GetnHistogram, isCallValid, context, target, reset, format, type, bufSize,7576values);7577}7578else7579{7580GenerateContextLostErrorOnCurrentGlobalContext();7581}7582}75837584void GL_APIENTRY GL_GetnMapdv(GLenum target, GLenum query, GLsizei bufSize, GLdouble *v)7585{7586Context *context = GetValidGlobalContext();7587EVENT(context, GLGetnMapdv,7588"context = %d, target = %s, query = %s, bufSize = %d, v = 0x%016" PRIxPTR "",7589CID(context), GLenumToString(GLenumGroup::MapTarget, target),7590GLenumToString(GLenumGroup::MapQuery, query), bufSize, (uintptr_t)v);75917592if (context)7593{7594std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);7595bool isCallValid =7596(context->skipValidation() || ValidateGetnMapdv(context, target, query, bufSize, v));7597if (isCallValid)7598{7599context->getnMapdv(target, query, bufSize, v);7600}7601ANGLE_CAPTURE(GetnMapdv, isCallValid, context, target, query, bufSize, v);7602}7603else7604{7605GenerateContextLostErrorOnCurrentGlobalContext();7606}7607}76087609void GL_APIENTRY GL_GetnMapfv(GLenum target, GLenum query, GLsizei bufSize, GLfloat *v)7610{7611Context *context = GetValidGlobalContext();7612EVENT(context, GLGetnMapfv,7613"context = %d, target = %s, query = %s, bufSize = %d, v = 0x%016" PRIxPTR "",7614CID(context), GLenumToString(GLenumGroup::MapTarget, target),7615GLenumToString(GLenumGroup::MapQuery, query), bufSize, (uintptr_t)v);76167617if (context)7618{7619std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);7620bool isCallValid =7621(context->skipValidation() || ValidateGetnMapfv(context, target, query, bufSize, v));7622if (isCallValid)7623{7624context->getnMapfv(target, query, bufSize, v);7625}7626ANGLE_CAPTURE(GetnMapfv, isCallValid, context, target, query, bufSize, v);7627}7628else7629{7630GenerateContextLostErrorOnCurrentGlobalContext();7631}7632}76337634void GL_APIENTRY GL_GetnMapiv(GLenum target, GLenum query, GLsizei bufSize, GLint *v)7635{7636Context *context = GetValidGlobalContext();7637EVENT(context, GLGetnMapiv,7638"context = %d, target = %s, query = %s, bufSize = %d, v = 0x%016" PRIxPTR "",7639CID(context), GLenumToString(GLenumGroup::MapTarget, target),7640GLenumToString(GLenumGroup::MapQuery, query), bufSize, (uintptr_t)v);76417642if (context)7643{7644std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);7645bool isCallValid =7646(context->skipValidation() || ValidateGetnMapiv(context, target, query, bufSize, v));7647if (isCallValid)7648{7649context->getnMapiv(target, query, bufSize, v);7650}7651ANGLE_CAPTURE(GetnMapiv, isCallValid, context, target, query, bufSize, v);7652}7653else7654{7655GenerateContextLostErrorOnCurrentGlobalContext();7656}7657}76587659void GL_APIENTRY GL_GetnMinmax(GLenum target,7660GLboolean reset,7661GLenum format,7662GLenum type,7663GLsizei bufSize,7664void *values)7665{7666Context *context = GetValidGlobalContext();7667EVENT(context, GLGetnMinmax,7668"context = %d, target = %s, reset = %s, format = %s, type = %s, bufSize = %d, values = "7669"0x%016" PRIxPTR "",7670CID(context), GLenumToString(GLenumGroup::MinmaxTargetEXT, target),7671GLbooleanToString(reset), GLenumToString(GLenumGroup::PixelFormat, format),7672GLenumToString(GLenumGroup::PixelType, type), bufSize, (uintptr_t)values);76737674if (context)7675{7676std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);7677bool isCallValid =7678(context->skipValidation() ||7679ValidateGetnMinmax(context, target, reset, format, type, bufSize, values));7680if (isCallValid)7681{7682context->getnMinmax(target, reset, format, type, bufSize, values);7683}7684ANGLE_CAPTURE(GetnMinmax, isCallValid, context, target, reset, format, type, bufSize,7685values);7686}7687else7688{7689GenerateContextLostErrorOnCurrentGlobalContext();7690}7691}76927693void GL_APIENTRY GL_GetnPixelMapfv(GLenum map, GLsizei bufSize, GLfloat *values)7694{7695Context *context = GetValidGlobalContext();7696EVENT(context, GLGetnPixelMapfv,7697"context = %d, map = %s, bufSize = %d, values = 0x%016" PRIxPTR "", CID(context),7698GLenumToString(GLenumGroup::PixelMap, map), bufSize, (uintptr_t)values);76997700if (context)7701{7702std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);7703bool isCallValid =7704(context->skipValidation() || ValidateGetnPixelMapfv(context, map, bufSize, values));7705if (isCallValid)7706{7707context->getnPixelMapfv(map, bufSize, values);7708}7709ANGLE_CAPTURE(GetnPixelMapfv, isCallValid, context, map, bufSize, values);7710}7711else7712{7713GenerateContextLostErrorOnCurrentGlobalContext();7714}7715}77167717void GL_APIENTRY GL_GetnPixelMapuiv(GLenum map, GLsizei bufSize, GLuint *values)7718{7719Context *context = GetValidGlobalContext();7720EVENT(context, GLGetnPixelMapuiv,7721"context = %d, map = %s, bufSize = %d, values = 0x%016" PRIxPTR "", CID(context),7722GLenumToString(GLenumGroup::PixelMap, map), bufSize, (uintptr_t)values);77237724if (context)7725{7726std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);7727bool isCallValid =7728(context->skipValidation() || ValidateGetnPixelMapuiv(context, map, bufSize, values));7729if (isCallValid)7730{7731context->getnPixelMapuiv(map, bufSize, values);7732}7733ANGLE_CAPTURE(GetnPixelMapuiv, isCallValid, context, map, bufSize, values);7734}7735else7736{7737GenerateContextLostErrorOnCurrentGlobalContext();7738}7739}77407741void GL_APIENTRY GL_GetnPixelMapusv(GLenum map, GLsizei bufSize, GLushort *values)7742{7743Context *context = GetValidGlobalContext();7744EVENT(context, GLGetnPixelMapusv,7745"context = %d, map = %s, bufSize = %d, values = 0x%016" PRIxPTR "", CID(context),7746GLenumToString(GLenumGroup::PixelMap, map), bufSize, (uintptr_t)values);77477748if (context)7749{7750std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);7751bool isCallValid =7752(context->skipValidation() || ValidateGetnPixelMapusv(context, map, bufSize, values));7753if (isCallValid)7754{7755context->getnPixelMapusv(map, bufSize, values);7756}7757ANGLE_CAPTURE(GetnPixelMapusv, isCallValid, context, map, bufSize, values);7758}7759else7760{7761GenerateContextLostErrorOnCurrentGlobalContext();7762}7763}77647765void GL_APIENTRY GL_GetnPolygonStipple(GLsizei bufSize, GLubyte *pattern)7766{7767Context *context = GetValidGlobalContext();7768EVENT(context, GLGetnPolygonStipple, "context = %d, bufSize = %d, pattern = 0x%016" PRIxPTR "",7769CID(context), bufSize, (uintptr_t)pattern);77707771if (context)7772{7773std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);7774bool isCallValid =7775(context->skipValidation() || ValidateGetnPolygonStipple(context, bufSize, pattern));7776if (isCallValid)7777{7778context->getnPolygonStipple(bufSize, pattern);7779}7780ANGLE_CAPTURE(GetnPolygonStipple, isCallValid, context, bufSize, pattern);7781}7782else7783{7784GenerateContextLostErrorOnCurrentGlobalContext();7785}7786}77877788void GL_APIENTRY GL_GetnSeparableFilter(GLenum target,7789GLenum format,7790GLenum type,7791GLsizei rowBufSize,7792void *row,7793GLsizei columnBufSize,7794void *column,7795void *span)7796{7797Context *context = GetValidGlobalContext();7798EVENT(context, GLGetnSeparableFilter,7799"context = %d, target = %s, format = %s, type = %s, rowBufSize = %d, row = 0x%016" PRIxPTR7800", columnBufSize = %d, column = 0x%016" PRIxPTR ", span = 0x%016" PRIxPTR "",7801CID(context), GLenumToString(GLenumGroup::SeparableTargetEXT, target),7802GLenumToString(GLenumGroup::PixelFormat, format),7803GLenumToString(GLenumGroup::PixelType, type), rowBufSize, (uintptr_t)row, columnBufSize,7804(uintptr_t)column, (uintptr_t)span);78057806if (context)7807{7808std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);7809bool isCallValid = (context->skipValidation() ||7810ValidateGetnSeparableFilter(context, target, format, type, rowBufSize,7811row, columnBufSize, column, span));7812if (isCallValid)7813{7814context->getnSeparableFilter(target, format, type, rowBufSize, row, columnBufSize,7815column, span);7816}7817ANGLE_CAPTURE(GetnSeparableFilter, isCallValid, context, target, format, type, rowBufSize,7818row, columnBufSize, column, span);7819}7820else7821{7822GenerateContextLostErrorOnCurrentGlobalContext();7823}7824}78257826void GL_APIENTRY GL_GetnTexImage(GLenum target,7827GLint level,7828GLenum format,7829GLenum type,7830GLsizei bufSize,7831void *pixels)7832{7833Context *context = GetValidGlobalContext();7834EVENT(context, GLGetnTexImage,7835"context = %d, target = %s, level = %d, format = %s, type = %s, bufSize = %d, pixels = "7836"0x%016" PRIxPTR "",7837CID(context), GLenumToString(GLenumGroup::TextureTarget, target), level,7838GLenumToString(GLenumGroup::PixelFormat, format),7839GLenumToString(GLenumGroup::PixelType, type), bufSize, (uintptr_t)pixels);78407841if (context)7842{7843std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);7844bool isCallValid =7845(context->skipValidation() ||7846ValidateGetnTexImage(context, target, level, format, type, bufSize, pixels));7847if (isCallValid)7848{7849context->getnTexImage(target, level, format, type, bufSize, pixels);7850}7851ANGLE_CAPTURE(GetnTexImage, isCallValid, context, target, level, format, type, bufSize,7852pixels);7853}7854else7855{7856GenerateContextLostErrorOnCurrentGlobalContext();7857}7858}78597860void GL_APIENTRY GL_GetnUniformdv(GLuint program, GLint location, GLsizei bufSize, GLdouble *params)7861{7862Context *context = GetValidGlobalContext();7863EVENT(context, GLGetnUniformdv,7864"context = %d, program = %u, location = %d, bufSize = %d, params = 0x%016" PRIxPTR "",7865CID(context), program, location, bufSize, (uintptr_t)params);78667867if (context)7868{7869ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);7870UniformLocation locationPacked = PackParam<UniformLocation>(location);7871std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);7872bool isCallValid =7873(context->skipValidation() ||7874ValidateGetnUniformdv(context, programPacked, locationPacked, bufSize, params));7875if (isCallValid)7876{7877context->getnUniformdv(programPacked, locationPacked, bufSize, params);7878}7879ANGLE_CAPTURE(GetnUniformdv, isCallValid, context, programPacked, locationPacked, bufSize,7880params);7881}7882else7883{7884GenerateContextLostErrorOnCurrentGlobalContext();7885}7886}78877888void GL_APIENTRY GL_GetnUniformfv(GLuint program, GLint location, GLsizei bufSize, GLfloat *params)7889{7890Context *context = GetValidGlobalContext();7891EVENT(context, GLGetnUniformfv,7892"context = %d, program = %u, location = %d, bufSize = %d, params = 0x%016" PRIxPTR "",7893CID(context), program, location, bufSize, (uintptr_t)params);78947895if (context)7896{7897ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);7898UniformLocation locationPacked = PackParam<UniformLocation>(location);7899std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);7900bool isCallValid =7901(context->skipValidation() ||7902ValidateGetnUniformfv(context, programPacked, locationPacked, bufSize, params));7903if (isCallValid)7904{7905context->getnUniformfv(programPacked, locationPacked, bufSize, params);7906}7907ANGLE_CAPTURE(GetnUniformfv, isCallValid, context, programPacked, locationPacked, bufSize,7908params);7909}7910else7911{7912GenerateContextLostErrorOnCurrentGlobalContext();7913}7914}79157916void GL_APIENTRY GL_GetnUniformiv(GLuint program, GLint location, GLsizei bufSize, GLint *params)7917{7918Context *context = GetValidGlobalContext();7919EVENT(context, GLGetnUniformiv,7920"context = %d, program = %u, location = %d, bufSize = %d, params = 0x%016" PRIxPTR "",7921CID(context), program, location, bufSize, (uintptr_t)params);79227923if (context)7924{7925ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);7926UniformLocation locationPacked = PackParam<UniformLocation>(location);7927std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);7928bool isCallValid =7929(context->skipValidation() ||7930ValidateGetnUniformiv(context, programPacked, locationPacked, bufSize, params));7931if (isCallValid)7932{7933context->getnUniformiv(programPacked, locationPacked, bufSize, params);7934}7935ANGLE_CAPTURE(GetnUniformiv, isCallValid, context, programPacked, locationPacked, bufSize,7936params);7937}7938else7939{7940GenerateContextLostErrorOnCurrentGlobalContext();7941}7942}79437944void GL_APIENTRY GL_GetnUniformuiv(GLuint program, GLint location, GLsizei bufSize, GLuint *params)7945{7946Context *context = GetValidGlobalContext();7947EVENT(context, GLGetnUniformuiv,7948"context = %d, program = %u, location = %d, bufSize = %d, params = 0x%016" PRIxPTR "",7949CID(context), program, location, bufSize, (uintptr_t)params);79507951if (context)7952{7953ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);7954UniformLocation locationPacked = PackParam<UniformLocation>(location);7955std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);7956bool isCallValid =7957(context->skipValidation() ||7958ValidateGetnUniformuiv(context, programPacked, locationPacked, bufSize, params));7959if (isCallValid)7960{7961context->getnUniformuiv(programPacked, locationPacked, bufSize, params);7962}7963ANGLE_CAPTURE(GetnUniformuiv, isCallValid, context, programPacked, locationPacked, bufSize,7964params);7965}7966else7967{7968GenerateContextLostErrorOnCurrentGlobalContext();7969}7970}79717972void GL_APIENTRY GL_InvalidateNamedFramebufferData(GLuint framebuffer,7973GLsizei numAttachments,7974const GLenum *attachments)7975{7976Context *context = GetValidGlobalContext();7977EVENT(context, GLInvalidateNamedFramebufferData,7978"context = %d, framebuffer = %u, numAttachments = %d, attachments = 0x%016" PRIxPTR "",7979CID(context), framebuffer, numAttachments, (uintptr_t)attachments);79807981if (context)7982{7983FramebufferID framebufferPacked = PackParam<FramebufferID>(framebuffer);7984std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);7985bool isCallValid = (context->skipValidation() ||7986ValidateInvalidateNamedFramebufferData(context, framebufferPacked,7987numAttachments, attachments));7988if (isCallValid)7989{7990context->invalidateNamedFramebufferData(framebufferPacked, numAttachments, attachments);7991}7992ANGLE_CAPTURE(InvalidateNamedFramebufferData, isCallValid, context, framebufferPacked,7993numAttachments, attachments);7994}7995else7996{7997GenerateContextLostErrorOnCurrentGlobalContext();7998}7999}80008001void GL_APIENTRY GL_InvalidateNamedFramebufferSubData(GLuint framebuffer,8002GLsizei numAttachments,8003const GLenum *attachments,8004GLint x,8005GLint y,8006GLsizei width,8007GLsizei height)8008{8009Context *context = GetValidGlobalContext();8010EVENT(context, GLInvalidateNamedFramebufferSubData,8011"context = %d, framebuffer = %u, numAttachments = %d, attachments = 0x%016" PRIxPTR8012", x = %d, y = %d, width = %d, height = %d",8013CID(context), framebuffer, numAttachments, (uintptr_t)attachments, x, y, width, height);80148015if (context)8016{8017FramebufferID framebufferPacked = PackParam<FramebufferID>(framebuffer);8018std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);8019bool isCallValid =8020(context->skipValidation() ||8021ValidateInvalidateNamedFramebufferSubData(context, framebufferPacked, numAttachments,8022attachments, x, y, width, height));8023if (isCallValid)8024{8025context->invalidateNamedFramebufferSubData(framebufferPacked, numAttachments,8026attachments, x, y, width, height);8027}8028ANGLE_CAPTURE(InvalidateNamedFramebufferSubData, isCallValid, context, framebufferPacked,8029numAttachments, attachments, x, y, width, height);8030}8031else8032{8033GenerateContextLostErrorOnCurrentGlobalContext();8034}8035}80368037void *GL_APIENTRY GL_MapNamedBuffer(GLuint buffer, GLenum access)8038{8039Context *context = GetValidGlobalContext();8040EVENT(context, GLMapNamedBuffer, "context = %d, buffer = %u, access = %s", CID(context), buffer,8041GLenumToString(GLenumGroup::BufferAccessARB, access));80428043void *returnValue;8044if (context)8045{8046BufferID bufferPacked = PackParam<BufferID>(buffer);8047std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);8048bool isCallValid =8049(context->skipValidation() || ValidateMapNamedBuffer(context, bufferPacked, access));8050if (isCallValid)8051{8052returnValue = context->mapNamedBuffer(bufferPacked, access);8053}8054else8055{8056returnValue = GetDefaultReturnValue<angle::EntryPoint::GLMapNamedBuffer, void *>();8057}8058ANGLE_CAPTURE(MapNamedBuffer, isCallValid, context, bufferPacked, access, returnValue);8059}8060else8061{8062GenerateContextLostErrorOnCurrentGlobalContext();8063returnValue = GetDefaultReturnValue<angle::EntryPoint::GLMapNamedBuffer, void *>();8064}8065return returnValue;8066}80678068void *GL_APIENTRY GL_MapNamedBufferRange(GLuint buffer,8069GLintptr offset,8070GLsizeiptr length,8071GLbitfield access)8072{8073Context *context = GetValidGlobalContext();8074EVENT(context, GLMapNamedBufferRange,8075"context = %d, buffer = %u, offset = %llu, length = %llu, access = %s", CID(context),8076buffer, static_cast<unsigned long long>(offset), static_cast<unsigned long long>(length),8077GLbitfieldToString(GLenumGroup::BufferAccessMask, access).c_str());80788079void *returnValue;8080if (context)8081{8082BufferID bufferPacked = PackParam<BufferID>(buffer);8083std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);8084bool isCallValid =8085(context->skipValidation() ||8086ValidateMapNamedBufferRange(context, bufferPacked, offset, length, access));8087if (isCallValid)8088{8089returnValue = context->mapNamedBufferRange(bufferPacked, offset, length, access);8090}8091else8092{8093returnValue = GetDefaultReturnValue<angle::EntryPoint::GLMapNamedBufferRange, void *>();8094}8095ANGLE_CAPTURE(MapNamedBufferRange, isCallValid, context, bufferPacked, offset, length,8096access, returnValue);8097}8098else8099{8100GenerateContextLostErrorOnCurrentGlobalContext();8101returnValue = GetDefaultReturnValue<angle::EntryPoint::GLMapNamedBufferRange, void *>();8102}8103return returnValue;8104}81058106void GL_APIENTRY GL_MemoryBarrierByRegion(GLbitfield barriers)8107{8108Context *context = GetValidGlobalContext();8109EVENT(context, GLMemoryBarrierByRegion, "context = %d, barriers = %s", CID(context),8110GLbitfieldToString(GLenumGroup::MemoryBarrierMask, barriers).c_str());81118112if (context)8113{8114std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);8115bool isCallValid =8116(context->skipValidation() || ValidateMemoryBarrierByRegion(context, barriers));8117if (isCallValid)8118{8119context->memoryBarrierByRegion(barriers);8120}8121ANGLE_CAPTURE(MemoryBarrierByRegion, isCallValid, context, barriers);8122}8123else8124{8125GenerateContextLostErrorOnCurrentGlobalContext();8126}8127}81288129void GL_APIENTRY GL_NamedBufferData(GLuint buffer, GLsizeiptr size, const void *data, GLenum usage)8130{8131Context *context = GetValidGlobalContext();8132EVENT(context, GLNamedBufferData,8133"context = %d, buffer = %u, size = %llu, data = 0x%016" PRIxPTR ", usage = %s",8134CID(context), buffer, static_cast<unsigned long long>(size), (uintptr_t)data,8135GLenumToString(GLenumGroup::VertexBufferObjectUsage, usage));81368137if (context)8138{8139BufferID bufferPacked = PackParam<BufferID>(buffer);8140std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);8141bool isCallValid = (context->skipValidation() ||8142ValidateNamedBufferData(context, bufferPacked, size, data, usage));8143if (isCallValid)8144{8145context->namedBufferData(bufferPacked, size, data, usage);8146}8147ANGLE_CAPTURE(NamedBufferData, isCallValid, context, bufferPacked, size, data, usage);8148}8149else8150{8151GenerateContextLostErrorOnCurrentGlobalContext();8152}8153}81548155void GL_APIENTRY GL_NamedBufferStorage(GLuint buffer,8156GLsizeiptr size,8157const void *data,8158GLbitfield flags)8159{8160Context *context = GetValidGlobalContext();8161EVENT(context, GLNamedBufferStorage,8162"context = %d, buffer = %u, size = %llu, data = 0x%016" PRIxPTR ", flags = %s",8163CID(context), buffer, static_cast<unsigned long long>(size), (uintptr_t)data,8164GLbitfieldToString(GLenumGroup::MapBufferUsageMask, flags).c_str());81658166if (context)8167{8168BufferID bufferPacked = PackParam<BufferID>(buffer);8169std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);8170bool isCallValid = (context->skipValidation() ||8171ValidateNamedBufferStorage(context, bufferPacked, size, data, flags));8172if (isCallValid)8173{8174context->namedBufferStorage(bufferPacked, size, data, flags);8175}8176ANGLE_CAPTURE(NamedBufferStorage, isCallValid, context, bufferPacked, size, data, flags);8177}8178else8179{8180GenerateContextLostErrorOnCurrentGlobalContext();8181}8182}81838184void GL_APIENTRY GL_NamedBufferSubData(GLuint buffer,8185GLintptr offset,8186GLsizeiptr size,8187const void *data)8188{8189Context *context = GetValidGlobalContext();8190EVENT(context, GLNamedBufferSubData,8191"context = %d, buffer = %u, offset = %llu, size = %llu, data = 0x%016" PRIxPTR "",8192CID(context), buffer, static_cast<unsigned long long>(offset),8193static_cast<unsigned long long>(size), (uintptr_t)data);81948195if (context)8196{8197BufferID bufferPacked = PackParam<BufferID>(buffer);8198std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);8199bool isCallValid = (context->skipValidation() ||8200ValidateNamedBufferSubData(context, bufferPacked, offset, size, data));8201if (isCallValid)8202{8203context->namedBufferSubData(bufferPacked, offset, size, data);8204}8205ANGLE_CAPTURE(NamedBufferSubData, isCallValid, context, bufferPacked, offset, size, data);8206}8207else8208{8209GenerateContextLostErrorOnCurrentGlobalContext();8210}8211}82128213void GL_APIENTRY GL_NamedFramebufferDrawBuffer(GLuint framebuffer, GLenum buf)8214{8215Context *context = GetValidGlobalContext();8216EVENT(context, GLNamedFramebufferDrawBuffer, "context = %d, framebuffer = %u, buf = %s",8217CID(context), framebuffer, GLenumToString(GLenumGroup::ColorBuffer, buf));82188219if (context)8220{8221FramebufferID framebufferPacked = PackParam<FramebufferID>(framebuffer);8222std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);8223bool isCallValid = (context->skipValidation() ||8224ValidateNamedFramebufferDrawBuffer(context, framebufferPacked, buf));8225if (isCallValid)8226{8227context->namedFramebufferDrawBuffer(framebufferPacked, buf);8228}8229ANGLE_CAPTURE(NamedFramebufferDrawBuffer, isCallValid, context, framebufferPacked, buf);8230}8231else8232{8233GenerateContextLostErrorOnCurrentGlobalContext();8234}8235}82368237void GL_APIENTRY GL_NamedFramebufferDrawBuffers(GLuint framebuffer, GLsizei n, const GLenum *bufs)8238{8239Context *context = GetValidGlobalContext();8240EVENT(context, GLNamedFramebufferDrawBuffers,8241"context = %d, framebuffer = %u, n = %d, bufs = 0x%016" PRIxPTR "", CID(context),8242framebuffer, n, (uintptr_t)bufs);82438244if (context)8245{8246FramebufferID framebufferPacked = PackParam<FramebufferID>(framebuffer);8247std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);8248bool isCallValid = (context->skipValidation() || ValidateNamedFramebufferDrawBuffers(8249context, framebufferPacked, n, bufs));8250if (isCallValid)8251{8252context->namedFramebufferDrawBuffers(framebufferPacked, n, bufs);8253}8254ANGLE_CAPTURE(NamedFramebufferDrawBuffers, isCallValid, context, framebufferPacked, n,8255bufs);8256}8257else8258{8259GenerateContextLostErrorOnCurrentGlobalContext();8260}8261}82628263void GL_APIENTRY GL_NamedFramebufferParameteri(GLuint framebuffer, GLenum pname, GLint param)8264{8265Context *context = GetValidGlobalContext();8266EVENT(context, GLNamedFramebufferParameteri,8267"context = %d, framebuffer = %u, pname = %s, param = %d", CID(context), framebuffer,8268GLenumToString(GLenumGroup::FramebufferParameterName, pname), param);82698270if (context)8271{8272FramebufferID framebufferPacked = PackParam<FramebufferID>(framebuffer);8273std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);8274bool isCallValid =8275(context->skipValidation() ||8276ValidateNamedFramebufferParameteri(context, framebufferPacked, pname, param));8277if (isCallValid)8278{8279context->namedFramebufferParameteri(framebufferPacked, pname, param);8280}8281ANGLE_CAPTURE(NamedFramebufferParameteri, isCallValid, context, framebufferPacked, pname,8282param);8283}8284else8285{8286GenerateContextLostErrorOnCurrentGlobalContext();8287}8288}82898290void GL_APIENTRY GL_NamedFramebufferReadBuffer(GLuint framebuffer, GLenum src)8291{8292Context *context = GetValidGlobalContext();8293EVENT(context, GLNamedFramebufferReadBuffer, "context = %d, framebuffer = %u, src = %s",8294CID(context), framebuffer, GLenumToString(GLenumGroup::ColorBuffer, src));82958296if (context)8297{8298FramebufferID framebufferPacked = PackParam<FramebufferID>(framebuffer);8299std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);8300bool isCallValid = (context->skipValidation() ||8301ValidateNamedFramebufferReadBuffer(context, framebufferPacked, src));8302if (isCallValid)8303{8304context->namedFramebufferReadBuffer(framebufferPacked, src);8305}8306ANGLE_CAPTURE(NamedFramebufferReadBuffer, isCallValid, context, framebufferPacked, src);8307}8308else8309{8310GenerateContextLostErrorOnCurrentGlobalContext();8311}8312}83138314void GL_APIENTRY GL_NamedFramebufferRenderbuffer(GLuint framebuffer,8315GLenum attachment,8316GLenum renderbuffertarget,8317GLuint renderbuffer)8318{8319Context *context = GetValidGlobalContext();8320EVENT(context, GLNamedFramebufferRenderbuffer,8321"context = %d, framebuffer = %u, attachment = %s, renderbuffertarget = %s, renderbuffer "8322"= %u",8323CID(context), framebuffer, GLenumToString(GLenumGroup::FramebufferAttachment, attachment),8324GLenumToString(GLenumGroup::RenderbufferTarget, renderbuffertarget), renderbuffer);83258326if (context)8327{8328FramebufferID framebufferPacked = PackParam<FramebufferID>(framebuffer);8329RenderbufferID renderbufferPacked = PackParam<RenderbufferID>(renderbuffer);8330std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);8331bool isCallValid =8332(context->skipValidation() ||8333ValidateNamedFramebufferRenderbuffer(context, framebufferPacked, attachment,8334renderbuffertarget, renderbufferPacked));8335if (isCallValid)8336{8337context->namedFramebufferRenderbuffer(framebufferPacked, attachment, renderbuffertarget,8338renderbufferPacked);8339}8340ANGLE_CAPTURE(NamedFramebufferRenderbuffer, isCallValid, context, framebufferPacked,8341attachment, renderbuffertarget, renderbufferPacked);8342}8343else8344{8345GenerateContextLostErrorOnCurrentGlobalContext();8346}8347}83488349void GL_APIENTRY GL_NamedFramebufferTexture(GLuint framebuffer,8350GLenum attachment,8351GLuint texture,8352GLint level)8353{8354Context *context = GetValidGlobalContext();8355EVENT(context, GLNamedFramebufferTexture,8356"context = %d, framebuffer = %u, attachment = %s, texture = %u, level = %d", CID(context),8357framebuffer, GLenumToString(GLenumGroup::FramebufferAttachment, attachment), texture,8358level);83598360if (context)8361{8362FramebufferID framebufferPacked = PackParam<FramebufferID>(framebuffer);8363TextureID texturePacked = PackParam<TextureID>(texture);8364std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);8365bool isCallValid = (context->skipValidation() ||8366ValidateNamedFramebufferTexture(context, framebufferPacked, attachment,8367texturePacked, level));8368if (isCallValid)8369{8370context->namedFramebufferTexture(framebufferPacked, attachment, texturePacked, level);8371}8372ANGLE_CAPTURE(NamedFramebufferTexture, isCallValid, context, framebufferPacked, attachment,8373texturePacked, level);8374}8375else8376{8377GenerateContextLostErrorOnCurrentGlobalContext();8378}8379}83808381void GL_APIENTRY GL_NamedFramebufferTextureLayer(GLuint framebuffer,8382GLenum attachment,8383GLuint texture,8384GLint level,8385GLint layer)8386{8387Context *context = GetValidGlobalContext();8388EVENT(context, GLNamedFramebufferTextureLayer,8389"context = %d, framebuffer = %u, attachment = %s, texture = %u, level = %d, layer = %d",8390CID(context), framebuffer, GLenumToString(GLenumGroup::FramebufferAttachment, attachment),8391texture, level, layer);83928393if (context)8394{8395FramebufferID framebufferPacked = PackParam<FramebufferID>(framebuffer);8396TextureID texturePacked = PackParam<TextureID>(texture);8397std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);8398bool isCallValid = (context->skipValidation() || ValidateNamedFramebufferTextureLayer(8399context, framebufferPacked, attachment,8400texturePacked, level, layer));8401if (isCallValid)8402{8403context->namedFramebufferTextureLayer(framebufferPacked, attachment, texturePacked,8404level, layer);8405}8406ANGLE_CAPTURE(NamedFramebufferTextureLayer, isCallValid, context, framebufferPacked,8407attachment, texturePacked, level, layer);8408}8409else8410{8411GenerateContextLostErrorOnCurrentGlobalContext();8412}8413}84148415void GL_APIENTRY GL_NamedRenderbufferStorage(GLuint renderbuffer,8416GLenum internalformat,8417GLsizei width,8418GLsizei height)8419{8420Context *context = GetValidGlobalContext();8421EVENT(context, GLNamedRenderbufferStorage,8422"context = %d, renderbuffer = %u, internalformat = %s, width = %d, height = %d",8423CID(context), renderbuffer, GLenumToString(GLenumGroup::InternalFormat, internalformat),8424width, height);84258426if (context)8427{8428RenderbufferID renderbufferPacked = PackParam<RenderbufferID>(renderbuffer);8429std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);8430bool isCallValid = (context->skipValidation() ||8431ValidateNamedRenderbufferStorage(context, renderbufferPacked,8432internalformat, width, height));8433if (isCallValid)8434{8435context->namedRenderbufferStorage(renderbufferPacked, internalformat, width, height);8436}8437ANGLE_CAPTURE(NamedRenderbufferStorage, isCallValid, context, renderbufferPacked,8438internalformat, width, height);8439}8440else8441{8442GenerateContextLostErrorOnCurrentGlobalContext();8443}8444}84458446void GL_APIENTRY GL_NamedRenderbufferStorageMultisample(GLuint renderbuffer,8447GLsizei samples,8448GLenum internalformat,8449GLsizei width,8450GLsizei height)8451{8452Context *context = GetValidGlobalContext();8453EVENT(context, GLNamedRenderbufferStorageMultisample,8454"context = %d, renderbuffer = %u, samples = %d, internalformat = %s, width = %d, height "8455"= %d",8456CID(context), renderbuffer, samples,8457GLenumToString(GLenumGroup::InternalFormat, internalformat), width, height);84588459if (context)8460{8461RenderbufferID renderbufferPacked = PackParam<RenderbufferID>(renderbuffer);8462std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);8463bool isCallValid =8464(context->skipValidation() ||8465ValidateNamedRenderbufferStorageMultisample(context, renderbufferPacked, samples,8466internalformat, width, height));8467if (isCallValid)8468{8469context->namedRenderbufferStorageMultisample(renderbufferPacked, samples,8470internalformat, width, height);8471}8472ANGLE_CAPTURE(NamedRenderbufferStorageMultisample, isCallValid, context, renderbufferPacked,8473samples, internalformat, width, height);8474}8475else8476{8477GenerateContextLostErrorOnCurrentGlobalContext();8478}8479}84808481void GL_APIENTRY GL_ReadnPixels(GLint x,8482GLint y,8483GLsizei width,8484GLsizei height,8485GLenum format,8486GLenum type,8487GLsizei bufSize,8488void *data)8489{8490Context *context = GetValidGlobalContext();8491EVENT(context, GLReadnPixels,8492"context = %d, x = %d, y = %d, width = %d, height = %d, format = %s, type = %s, bufSize "8493"= %d, data = 0x%016" PRIxPTR "",8494CID(context), x, y, width, height, GLenumToString(GLenumGroup::PixelFormat, format),8495GLenumToString(GLenumGroup::PixelType, type), bufSize, (uintptr_t)data);84968497if (context)8498{8499std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);8500bool isCallValid =8501(context->skipValidation() ||8502ValidateReadnPixels(context, x, y, width, height, format, type, bufSize, data));8503if (isCallValid)8504{8505context->readnPixels(x, y, width, height, format, type, bufSize, data);8506}8507ANGLE_CAPTURE(ReadnPixels, isCallValid, context, x, y, width, height, format, type, bufSize,8508data);8509}8510else8511{8512GenerateContextLostErrorOnCurrentGlobalContext();8513}8514}85158516void GL_APIENTRY GL_TextureBarrier()8517{8518Context *context = GetValidGlobalContext();8519EVENT(context, GLTextureBarrier, "context = %d", CID(context));85208521if (context)8522{8523std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);8524bool isCallValid = (context->skipValidation() || ValidateTextureBarrier(context));8525if (isCallValid)8526{8527context->textureBarrier();8528}8529ANGLE_CAPTURE(TextureBarrier, isCallValid, context);8530}8531else8532{8533GenerateContextLostErrorOnCurrentGlobalContext();8534}8535}85368537void GL_APIENTRY GL_TextureBuffer(GLuint texture, GLenum internalformat, GLuint buffer)8538{8539Context *context = GetValidGlobalContext();8540EVENT(context, GLTextureBuffer, "context = %d, texture = %u, internalformat = %s, buffer = %u",8541CID(context), texture, GLenumToString(GLenumGroup::InternalFormat, internalformat),8542buffer);85438544if (context)8545{8546TextureID texturePacked = PackParam<TextureID>(texture);8547BufferID bufferPacked = PackParam<BufferID>(buffer);8548std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);8549bool isCallValid =8550(context->skipValidation() ||8551ValidateTextureBuffer(context, texturePacked, internalformat, bufferPacked));8552if (isCallValid)8553{8554context->textureBuffer(texturePacked, internalformat, bufferPacked);8555}8556ANGLE_CAPTURE(TextureBuffer, isCallValid, context, texturePacked, internalformat,8557bufferPacked);8558}8559else8560{8561GenerateContextLostErrorOnCurrentGlobalContext();8562}8563}85648565void GL_APIENTRY GL_TextureBufferRange(GLuint texture,8566GLenum internalformat,8567GLuint buffer,8568GLintptr offset,8569GLsizeiptr size)8570{8571Context *context = GetValidGlobalContext();8572EVENT(8573context, GLTextureBufferRange,8574"context = %d, texture = %u, internalformat = %s, buffer = %u, offset = %llu, size = %llu",8575CID(context), texture, GLenumToString(GLenumGroup::InternalFormat, internalformat), buffer,8576static_cast<unsigned long long>(offset), static_cast<unsigned long long>(size));85778578if (context)8579{8580TextureID texturePacked = PackParam<TextureID>(texture);8581BufferID bufferPacked = PackParam<BufferID>(buffer);8582std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);8583bool isCallValid = (context->skipValidation() ||8584ValidateTextureBufferRange(context, texturePacked, internalformat,8585bufferPacked, offset, size));8586if (isCallValid)8587{8588context->textureBufferRange(texturePacked, internalformat, bufferPacked, offset, size);8589}8590ANGLE_CAPTURE(TextureBufferRange, isCallValid, context, texturePacked, internalformat,8591bufferPacked, offset, size);8592}8593else8594{8595GenerateContextLostErrorOnCurrentGlobalContext();8596}8597}85988599void GL_APIENTRY GL_TextureParameterIiv(GLuint texture, GLenum pname, const GLint *params)8600{8601Context *context = GetValidGlobalContext();8602EVENT(context, GLTextureParameterIiv,8603"context = %d, texture = %u, pname = %s, params = 0x%016" PRIxPTR "", CID(context),8604texture, GLenumToString(GLenumGroup::TextureParameterName, pname), (uintptr_t)params);86058606if (context)8607{8608TextureID texturePacked = PackParam<TextureID>(texture);8609std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);8610bool isCallValid = (context->skipValidation() ||8611ValidateTextureParameterIiv(context, texturePacked, pname, params));8612if (isCallValid)8613{8614context->textureParameterIiv(texturePacked, pname, params);8615}8616ANGLE_CAPTURE(TextureParameterIiv, isCallValid, context, texturePacked, pname, params);8617}8618else8619{8620GenerateContextLostErrorOnCurrentGlobalContext();8621}8622}86238624void GL_APIENTRY GL_TextureParameterIuiv(GLuint texture, GLenum pname, const GLuint *params)8625{8626Context *context = GetValidGlobalContext();8627EVENT(context, GLTextureParameterIuiv,8628"context = %d, texture = %u, pname = %s, params = 0x%016" PRIxPTR "", CID(context),8629texture, GLenumToString(GLenumGroup::TextureParameterName, pname), (uintptr_t)params);86308631if (context)8632{8633TextureID texturePacked = PackParam<TextureID>(texture);8634std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);8635bool isCallValid = (context->skipValidation() ||8636ValidateTextureParameterIuiv(context, texturePacked, pname, params));8637if (isCallValid)8638{8639context->textureParameterIuiv(texturePacked, pname, params);8640}8641ANGLE_CAPTURE(TextureParameterIuiv, isCallValid, context, texturePacked, pname, params);8642}8643else8644{8645GenerateContextLostErrorOnCurrentGlobalContext();8646}8647}86488649void GL_APIENTRY GL_TextureParameterf(GLuint texture, GLenum pname, GLfloat param)8650{8651Context *context = GetValidGlobalContext();8652EVENT(context, GLTextureParameterf, "context = %d, texture = %u, pname = %s, param = %f",8653CID(context), texture, GLenumToString(GLenumGroup::TextureParameterName, pname), param);86548655if (context)8656{8657TextureID texturePacked = PackParam<TextureID>(texture);8658std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);8659bool isCallValid = (context->skipValidation() ||8660ValidateTextureParameterf(context, texturePacked, pname, param));8661if (isCallValid)8662{8663context->textureParameterf(texturePacked, pname, param);8664}8665ANGLE_CAPTURE(TextureParameterf, isCallValid, context, texturePacked, pname, param);8666}8667else8668{8669GenerateContextLostErrorOnCurrentGlobalContext();8670}8671}86728673void GL_APIENTRY GL_TextureParameterfv(GLuint texture, GLenum pname, const GLfloat *param)8674{8675Context *context = GetValidGlobalContext();8676EVENT(context, GLTextureParameterfv,8677"context = %d, texture = %u, pname = %s, param = 0x%016" PRIxPTR "", CID(context),8678texture, GLenumToString(GLenumGroup::TextureParameterName, pname), (uintptr_t)param);86798680if (context)8681{8682TextureID texturePacked = PackParam<TextureID>(texture);8683std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);8684bool isCallValid = (context->skipValidation() ||8685ValidateTextureParameterfv(context, texturePacked, pname, param));8686if (isCallValid)8687{8688context->textureParameterfv(texturePacked, pname, param);8689}8690ANGLE_CAPTURE(TextureParameterfv, isCallValid, context, texturePacked, pname, param);8691}8692else8693{8694GenerateContextLostErrorOnCurrentGlobalContext();8695}8696}86978698void GL_APIENTRY GL_TextureParameteri(GLuint texture, GLenum pname, GLint param)8699{8700Context *context = GetValidGlobalContext();8701EVENT(context, GLTextureParameteri, "context = %d, texture = %u, pname = %s, param = %d",8702CID(context), texture, GLenumToString(GLenumGroup::TextureParameterName, pname), param);87038704if (context)8705{8706TextureID texturePacked = PackParam<TextureID>(texture);8707std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);8708bool isCallValid = (context->skipValidation() ||8709ValidateTextureParameteri(context, texturePacked, pname, param));8710if (isCallValid)8711{8712context->textureParameteri(texturePacked, pname, param);8713}8714ANGLE_CAPTURE(TextureParameteri, isCallValid, context, texturePacked, pname, param);8715}8716else8717{8718GenerateContextLostErrorOnCurrentGlobalContext();8719}8720}87218722void GL_APIENTRY GL_TextureParameteriv(GLuint texture, GLenum pname, const GLint *param)8723{8724Context *context = GetValidGlobalContext();8725EVENT(context, GLTextureParameteriv,8726"context = %d, texture = %u, pname = %s, param = 0x%016" PRIxPTR "", CID(context),8727texture, GLenumToString(GLenumGroup::TextureParameterName, pname), (uintptr_t)param);87288729if (context)8730{8731TextureID texturePacked = PackParam<TextureID>(texture);8732std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);8733bool isCallValid = (context->skipValidation() ||8734ValidateTextureParameteriv(context, texturePacked, pname, param));8735if (isCallValid)8736{8737context->textureParameteriv(texturePacked, pname, param);8738}8739ANGLE_CAPTURE(TextureParameteriv, isCallValid, context, texturePacked, pname, param);8740}8741else8742{8743GenerateContextLostErrorOnCurrentGlobalContext();8744}8745}87468747void GL_APIENTRY GL_TextureStorage1D(GLuint texture,8748GLsizei levels,8749GLenum internalformat,8750GLsizei width)8751{8752Context *context = GetValidGlobalContext();8753EVENT(context, GLTextureStorage1D,8754"context = %d, texture = %u, levels = %d, internalformat = %s, width = %d", CID(context),8755texture, levels, GLenumToString(GLenumGroup::InternalFormat, internalformat), width);87568757if (context)8758{8759TextureID texturePacked = PackParam<TextureID>(texture);8760std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);8761bool isCallValid =8762(context->skipValidation() ||8763ValidateTextureStorage1D(context, texturePacked, levels, internalformat, width));8764if (isCallValid)8765{8766context->textureStorage1D(texturePacked, levels, internalformat, width);8767}8768ANGLE_CAPTURE(TextureStorage1D, isCallValid, context, texturePacked, levels, internalformat,8769width);8770}8771else8772{8773GenerateContextLostErrorOnCurrentGlobalContext();8774}8775}87768777void GL_APIENTRY GL_TextureStorage2D(GLuint texture,8778GLsizei levels,8779GLenum internalformat,8780GLsizei width,8781GLsizei height)8782{8783Context *context = GetValidGlobalContext();8784EVENT(context, GLTextureStorage2D,8785"context = %d, texture = %u, levels = %d, internalformat = %s, width = %d, height = %d",8786CID(context), texture, levels,8787GLenumToString(GLenumGroup::InternalFormat, internalformat), width, height);87888789if (context)8790{8791TextureID texturePacked = PackParam<TextureID>(texture);8792std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);8793bool isCallValid =8794(context->skipValidation() || ValidateTextureStorage2D(context, texturePacked, levels,8795internalformat, width, height));8796if (isCallValid)8797{8798context->textureStorage2D(texturePacked, levels, internalformat, width, height);8799}8800ANGLE_CAPTURE(TextureStorage2D, isCallValid, context, texturePacked, levels, internalformat,8801width, height);8802}8803else8804{8805GenerateContextLostErrorOnCurrentGlobalContext();8806}8807}88088809void GL_APIENTRY GL_TextureStorage2DMultisample(GLuint texture,8810GLsizei samples,8811GLenum internalformat,8812GLsizei width,8813GLsizei height,8814GLboolean fixedsamplelocations)8815{8816Context *context = GetValidGlobalContext();8817EVENT(context, GLTextureStorage2DMultisample,8818"context = %d, texture = %u, samples = %d, internalformat = %s, width = %d, height = %d, "8819"fixedsamplelocations = %s",8820CID(context), texture, samples,8821GLenumToString(GLenumGroup::InternalFormat, internalformat), width, height,8822GLbooleanToString(fixedsamplelocations));88238824if (context)8825{8826TextureID texturePacked = PackParam<TextureID>(texture);8827std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);8828bool isCallValid =8829(context->skipValidation() ||8830ValidateTextureStorage2DMultisample(context, texturePacked, samples, internalformat,8831width, height, fixedsamplelocations));8832if (isCallValid)8833{8834context->textureStorage2DMultisample(texturePacked, samples, internalformat, width,8835height, fixedsamplelocations);8836}8837ANGLE_CAPTURE(TextureStorage2DMultisample, isCallValid, context, texturePacked, samples,8838internalformat, width, height, fixedsamplelocations);8839}8840else8841{8842GenerateContextLostErrorOnCurrentGlobalContext();8843}8844}88458846void GL_APIENTRY GL_TextureStorage3D(GLuint texture,8847GLsizei levels,8848GLenum internalformat,8849GLsizei width,8850GLsizei height,8851GLsizei depth)8852{8853Context *context = GetValidGlobalContext();8854EVENT(context, GLTextureStorage3D,8855"context = %d, texture = %u, levels = %d, internalformat = %s, width = %d, height = %d, "8856"depth = %d",8857CID(context), texture, levels,8858GLenumToString(GLenumGroup::InternalFormat, internalformat), width, height, depth);88598860if (context)8861{8862TextureID texturePacked = PackParam<TextureID>(texture);8863std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);8864bool isCallValid = (context->skipValidation() ||8865ValidateTextureStorage3D(context, texturePacked, levels, internalformat,8866width, height, depth));8867if (isCallValid)8868{8869context->textureStorage3D(texturePacked, levels, internalformat, width, height, depth);8870}8871ANGLE_CAPTURE(TextureStorage3D, isCallValid, context, texturePacked, levels, internalformat,8872width, height, depth);8873}8874else8875{8876GenerateContextLostErrorOnCurrentGlobalContext();8877}8878}88798880void GL_APIENTRY GL_TextureStorage3DMultisample(GLuint texture,8881GLsizei samples,8882GLenum internalformat,8883GLsizei width,8884GLsizei height,8885GLsizei depth,8886GLboolean fixedsamplelocations)8887{8888Context *context = GetValidGlobalContext();8889EVENT(context, GLTextureStorage3DMultisample,8890"context = %d, texture = %u, samples = %d, internalformat = %s, width = %d, height = %d, "8891"depth = %d, fixedsamplelocations = %s",8892CID(context), texture, samples,8893GLenumToString(GLenumGroup::InternalFormat, internalformat), width, height, depth,8894GLbooleanToString(fixedsamplelocations));88958896if (context)8897{8898TextureID texturePacked = PackParam<TextureID>(texture);8899std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);8900bool isCallValid =8901(context->skipValidation() ||8902ValidateTextureStorage3DMultisample(context, texturePacked, samples, internalformat,8903width, height, depth, fixedsamplelocations));8904if (isCallValid)8905{8906context->textureStorage3DMultisample(texturePacked, samples, internalformat, width,8907height, depth, fixedsamplelocations);8908}8909ANGLE_CAPTURE(TextureStorage3DMultisample, isCallValid, context, texturePacked, samples,8910internalformat, width, height, depth, fixedsamplelocations);8911}8912else8913{8914GenerateContextLostErrorOnCurrentGlobalContext();8915}8916}89178918void GL_APIENTRY GL_TextureSubImage1D(GLuint texture,8919GLint level,8920GLint xoffset,8921GLsizei width,8922GLenum format,8923GLenum type,8924const void *pixels)8925{8926Context *context = GetValidGlobalContext();8927EVENT(context, GLTextureSubImage1D,8928"context = %d, texture = %u, level = %d, xoffset = %d, width = %d, format = %s, type = "8929"%s, pixels = 0x%016" PRIxPTR "",8930CID(context), texture, level, xoffset, width,8931GLenumToString(GLenumGroup::PixelFormat, format),8932GLenumToString(GLenumGroup::PixelType, type), (uintptr_t)pixels);89338934if (context)8935{8936TextureID texturePacked = PackParam<TextureID>(texture);8937std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);8938bool isCallValid = (context->skipValidation() ||8939ValidateTextureSubImage1D(context, texturePacked, level, xoffset, width,8940format, type, pixels));8941if (isCallValid)8942{8943context->textureSubImage1D(texturePacked, level, xoffset, width, format, type, pixels);8944}8945ANGLE_CAPTURE(TextureSubImage1D, isCallValid, context, texturePacked, level, xoffset, width,8946format, type, pixels);8947}8948else8949{8950GenerateContextLostErrorOnCurrentGlobalContext();8951}8952}89538954void GL_APIENTRY GL_TextureSubImage2D(GLuint texture,8955GLint level,8956GLint xoffset,8957GLint yoffset,8958GLsizei width,8959GLsizei height,8960GLenum format,8961GLenum type,8962const void *pixels)8963{8964Context *context = GetValidGlobalContext();8965EVENT(context, GLTextureSubImage2D,8966"context = %d, texture = %u, level = %d, xoffset = %d, yoffset = %d, width = %d, height "8967"= %d, format = %s, type = %s, pixels = 0x%016" PRIxPTR "",8968CID(context), texture, level, xoffset, yoffset, width, height,8969GLenumToString(GLenumGroup::PixelFormat, format),8970GLenumToString(GLenumGroup::PixelType, type), (uintptr_t)pixels);89718972if (context)8973{8974TextureID texturePacked = PackParam<TextureID>(texture);8975std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);8976bool isCallValid =8977(context->skipValidation() ||8978ValidateTextureSubImage2D(context, texturePacked, level, xoffset, yoffset, width,8979height, format, type, pixels));8980if (isCallValid)8981{8982context->textureSubImage2D(texturePacked, level, xoffset, yoffset, width, height,8983format, type, pixels);8984}8985ANGLE_CAPTURE(TextureSubImage2D, isCallValid, context, texturePacked, level, xoffset,8986yoffset, width, height, format, type, pixels);8987}8988else8989{8990GenerateContextLostErrorOnCurrentGlobalContext();8991}8992}89938994void GL_APIENTRY GL_TextureSubImage3D(GLuint texture,8995GLint level,8996GLint xoffset,8997GLint yoffset,8998GLint zoffset,8999GLsizei width,9000GLsizei height,9001GLsizei depth,9002GLenum format,9003GLenum type,9004const void *pixels)9005{9006Context *context = GetValidGlobalContext();9007EVENT(context, GLTextureSubImage3D,9008"context = %d, texture = %u, level = %d, xoffset = %d, yoffset = %d, zoffset = %d, width "9009"= %d, height = %d, depth = %d, format = %s, type = %s, pixels = 0x%016" PRIxPTR "",9010CID(context), texture, level, xoffset, yoffset, zoffset, width, height, depth,9011GLenumToString(GLenumGroup::PixelFormat, format),9012GLenumToString(GLenumGroup::PixelType, type), (uintptr_t)pixels);90139014if (context)9015{9016TextureID texturePacked = PackParam<TextureID>(texture);9017std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);9018bool isCallValid =9019(context->skipValidation() ||9020ValidateTextureSubImage3D(context, texturePacked, level, xoffset, yoffset, zoffset,9021width, height, depth, format, type, pixels));9022if (isCallValid)9023{9024context->textureSubImage3D(texturePacked, level, xoffset, yoffset, zoffset, width,9025height, depth, format, type, pixels);9026}9027ANGLE_CAPTURE(TextureSubImage3D, isCallValid, context, texturePacked, level, xoffset,9028yoffset, zoffset, width, height, depth, format, type, pixels);9029}9030else9031{9032GenerateContextLostErrorOnCurrentGlobalContext();9033}9034}90359036void GL_APIENTRY GL_TransformFeedbackBufferBase(GLuint xfb, GLuint index, GLuint buffer)9037{9038Context *context = GetValidGlobalContext();9039EVENT(context, GLTransformFeedbackBufferBase, "context = %d, xfb = %u, index = %u, buffer = %u",9040CID(context), xfb, index, buffer);90419042if (context)9043{9044BufferID bufferPacked = PackParam<BufferID>(buffer);9045std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);9046bool isCallValid = (context->skipValidation() ||9047ValidateTransformFeedbackBufferBase(context, xfb, index, bufferPacked));9048if (isCallValid)9049{9050context->transformFeedbackBufferBase(xfb, index, bufferPacked);9051}9052ANGLE_CAPTURE(TransformFeedbackBufferBase, isCallValid, context, xfb, index, bufferPacked);9053}9054else9055{9056GenerateContextLostErrorOnCurrentGlobalContext();9057}9058}90599060void GL_APIENTRY GL_TransformFeedbackBufferRange(GLuint xfb,9061GLuint index,9062GLuint buffer,9063GLintptr offset,9064GLsizeiptr size)9065{9066Context *context = GetValidGlobalContext();9067EVENT(context, GLTransformFeedbackBufferRange,9068"context = %d, xfb = %u, index = %u, buffer = %u, offset = %llu, size = %llu",9069CID(context), xfb, index, buffer, static_cast<unsigned long long>(offset),9070static_cast<unsigned long long>(size));90719072if (context)9073{9074BufferID bufferPacked = PackParam<BufferID>(buffer);9075std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);9076bool isCallValid =9077(context->skipValidation() ||9078ValidateTransformFeedbackBufferRange(context, xfb, index, bufferPacked, offset, size));9079if (isCallValid)9080{9081context->transformFeedbackBufferRange(xfb, index, bufferPacked, offset, size);9082}9083ANGLE_CAPTURE(TransformFeedbackBufferRange, isCallValid, context, xfb, index, bufferPacked,9084offset, size);9085}9086else9087{9088GenerateContextLostErrorOnCurrentGlobalContext();9089}9090}90919092GLboolean GL_APIENTRY GL_UnmapNamedBuffer(GLuint buffer)9093{9094Context *context = GetValidGlobalContext();9095EVENT(context, GLUnmapNamedBuffer, "context = %d, buffer = %u", CID(context), buffer);90969097GLboolean returnValue;9098if (context)9099{9100BufferID bufferPacked = PackParam<BufferID>(buffer);9101std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);9102bool isCallValid =9103(context->skipValidation() || ValidateUnmapNamedBuffer(context, bufferPacked));9104if (isCallValid)9105{9106returnValue = context->unmapNamedBuffer(bufferPacked);9107}9108else9109{9110returnValue = GetDefaultReturnValue<angle::EntryPoint::GLUnmapNamedBuffer, GLboolean>();9111}9112ANGLE_CAPTURE(UnmapNamedBuffer, isCallValid, context, bufferPacked, returnValue);9113}9114else9115{9116GenerateContextLostErrorOnCurrentGlobalContext();9117returnValue = GetDefaultReturnValue<angle::EntryPoint::GLUnmapNamedBuffer, GLboolean>();9118}9119return returnValue;9120}91219122void GL_APIENTRY GL_VertexArrayAttribBinding(GLuint vaobj, GLuint attribindex, GLuint bindingindex)9123{9124Context *context = GetValidGlobalContext();9125EVENT(context, GLVertexArrayAttribBinding,9126"context = %d, vaobj = %u, attribindex = %u, bindingindex = %u", CID(context), vaobj,9127attribindex, bindingindex);91289129if (context)9130{9131VertexArrayID vaobjPacked = PackParam<VertexArrayID>(vaobj);9132std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);9133bool isCallValid =9134(context->skipValidation() ||9135ValidateVertexArrayAttribBinding(context, vaobjPacked, attribindex, bindingindex));9136if (isCallValid)9137{9138context->vertexArrayAttribBinding(vaobjPacked, attribindex, bindingindex);9139}9140ANGLE_CAPTURE(VertexArrayAttribBinding, isCallValid, context, vaobjPacked, attribindex,9141bindingindex);9142}9143else9144{9145GenerateContextLostErrorOnCurrentGlobalContext();9146}9147}91489149void GL_APIENTRY GL_VertexArrayAttribFormat(GLuint vaobj,9150GLuint attribindex,9151GLint size,9152GLenum type,9153GLboolean normalized,9154GLuint relativeoffset)9155{9156Context *context = GetValidGlobalContext();9157EVENT(context, GLVertexArrayAttribFormat,9158"context = %d, vaobj = %u, attribindex = %u, size = %d, type = %s, normalized = %s, "9159"relativeoffset = %u",9160CID(context), vaobj, attribindex, size,9161GLenumToString(GLenumGroup::VertexAttribType, type), GLbooleanToString(normalized),9162relativeoffset);91639164if (context)9165{9166VertexArrayID vaobjPacked = PackParam<VertexArrayID>(vaobj);9167std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);9168bool isCallValid = (context->skipValidation() ||9169ValidateVertexArrayAttribFormat(context, vaobjPacked, attribindex, size,9170type, normalized, relativeoffset));9171if (isCallValid)9172{9173context->vertexArrayAttribFormat(vaobjPacked, attribindex, size, type, normalized,9174relativeoffset);9175}9176ANGLE_CAPTURE(VertexArrayAttribFormat, isCallValid, context, vaobjPacked, attribindex, size,9177type, normalized, relativeoffset);9178}9179else9180{9181GenerateContextLostErrorOnCurrentGlobalContext();9182}9183}91849185void GL_APIENTRY GL_VertexArrayAttribIFormat(GLuint vaobj,9186GLuint attribindex,9187GLint size,9188GLenum type,9189GLuint relativeoffset)9190{9191Context *context = GetValidGlobalContext();9192EVENT(context, GLVertexArrayAttribIFormat,9193"context = %d, vaobj = %u, attribindex = %u, size = %d, type = %s, relativeoffset = %u",9194CID(context), vaobj, attribindex, size,9195GLenumToString(GLenumGroup::VertexAttribType, type), relativeoffset);91969197if (context)9198{9199VertexArrayID vaobjPacked = PackParam<VertexArrayID>(vaobj);9200std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);9201bool isCallValid = (context->skipValidation() ||9202ValidateVertexArrayAttribIFormat(context, vaobjPacked, attribindex,9203size, type, relativeoffset));9204if (isCallValid)9205{9206context->vertexArrayAttribIFormat(vaobjPacked, attribindex, size, type, relativeoffset);9207}9208ANGLE_CAPTURE(VertexArrayAttribIFormat, isCallValid, context, vaobjPacked, attribindex,9209size, type, relativeoffset);9210}9211else9212{9213GenerateContextLostErrorOnCurrentGlobalContext();9214}9215}92169217void GL_APIENTRY GL_VertexArrayAttribLFormat(GLuint vaobj,9218GLuint attribindex,9219GLint size,9220GLenum type,9221GLuint relativeoffset)9222{9223Context *context = GetValidGlobalContext();9224EVENT(context, GLVertexArrayAttribLFormat,9225"context = %d, vaobj = %u, attribindex = %u, size = %d, type = %s, relativeoffset = %u",9226CID(context), vaobj, attribindex, size,9227GLenumToString(GLenumGroup::VertexAttribType, type), relativeoffset);92289229if (context)9230{9231VertexArrayID vaobjPacked = PackParam<VertexArrayID>(vaobj);9232std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);9233bool isCallValid = (context->skipValidation() ||9234ValidateVertexArrayAttribLFormat(context, vaobjPacked, attribindex,9235size, type, relativeoffset));9236if (isCallValid)9237{9238context->vertexArrayAttribLFormat(vaobjPacked, attribindex, size, type, relativeoffset);9239}9240ANGLE_CAPTURE(VertexArrayAttribLFormat, isCallValid, context, vaobjPacked, attribindex,9241size, type, relativeoffset);9242}9243else9244{9245GenerateContextLostErrorOnCurrentGlobalContext();9246}9247}92489249void GL_APIENTRY GL_VertexArrayBindingDivisor(GLuint vaobj, GLuint bindingindex, GLuint divisor)9250{9251Context *context = GetValidGlobalContext();9252EVENT(context, GLVertexArrayBindingDivisor,9253"context = %d, vaobj = %u, bindingindex = %u, divisor = %u", CID(context), vaobj,9254bindingindex, divisor);92559256if (context)9257{9258VertexArrayID vaobjPacked = PackParam<VertexArrayID>(vaobj);9259std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);9260bool isCallValid =9261(context->skipValidation() ||9262ValidateVertexArrayBindingDivisor(context, vaobjPacked, bindingindex, divisor));9263if (isCallValid)9264{9265context->vertexArrayBindingDivisor(vaobjPacked, bindingindex, divisor);9266}9267ANGLE_CAPTURE(VertexArrayBindingDivisor, isCallValid, context, vaobjPacked, bindingindex,9268divisor);9269}9270else9271{9272GenerateContextLostErrorOnCurrentGlobalContext();9273}9274}92759276void GL_APIENTRY GL_VertexArrayElementBuffer(GLuint vaobj, GLuint buffer)9277{9278Context *context = GetValidGlobalContext();9279EVENT(context, GLVertexArrayElementBuffer, "context = %d, vaobj = %u, buffer = %u",9280CID(context), vaobj, buffer);92819282if (context)9283{9284VertexArrayID vaobjPacked = PackParam<VertexArrayID>(vaobj);9285BufferID bufferPacked = PackParam<BufferID>(buffer);9286std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);9287bool isCallValid = (context->skipValidation() ||9288ValidateVertexArrayElementBuffer(context, vaobjPacked, bufferPacked));9289if (isCallValid)9290{9291context->vertexArrayElementBuffer(vaobjPacked, bufferPacked);9292}9293ANGLE_CAPTURE(VertexArrayElementBuffer, isCallValid, context, vaobjPacked, bufferPacked);9294}9295else9296{9297GenerateContextLostErrorOnCurrentGlobalContext();9298}9299}93009301void GL_APIENTRY GL_VertexArrayVertexBuffer(GLuint vaobj,9302GLuint bindingindex,9303GLuint buffer,9304GLintptr offset,9305GLsizei stride)9306{9307Context *context = GetValidGlobalContext();9308EVENT(context, GLVertexArrayVertexBuffer,9309"context = %d, vaobj = %u, bindingindex = %u, buffer = %u, offset = %llu, stride = %d",9310CID(context), vaobj, bindingindex, buffer, static_cast<unsigned long long>(offset),9311stride);93129313if (context)9314{9315VertexArrayID vaobjPacked = PackParam<VertexArrayID>(vaobj);9316BufferID bufferPacked = PackParam<BufferID>(buffer);9317std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);9318bool isCallValid = (context->skipValidation() ||9319ValidateVertexArrayVertexBuffer(context, vaobjPacked, bindingindex,9320bufferPacked, offset, stride));9321if (isCallValid)9322{9323context->vertexArrayVertexBuffer(vaobjPacked, bindingindex, bufferPacked, offset,9324stride);9325}9326ANGLE_CAPTURE(VertexArrayVertexBuffer, isCallValid, context, vaobjPacked, bindingindex,9327bufferPacked, offset, stride);9328}9329else9330{9331GenerateContextLostErrorOnCurrentGlobalContext();9332}9333}93349335void GL_APIENTRY GL_VertexArrayVertexBuffers(GLuint vaobj,9336GLuint first,9337GLsizei count,9338const GLuint *buffers,9339const GLintptr *offsets,9340const GLsizei *strides)9341{9342Context *context = GetValidGlobalContext();9343EVENT(context, GLVertexArrayVertexBuffers,9344"context = %d, vaobj = %u, first = %u, count = %d, buffers = 0x%016" PRIxPTR9345", offsets = 0x%016" PRIxPTR ", strides = 0x%016" PRIxPTR "",9346CID(context), vaobj, first, count, (uintptr_t)buffers, (uintptr_t)offsets,9347(uintptr_t)strides);93489349if (context)9350{9351VertexArrayID vaobjPacked = PackParam<VertexArrayID>(vaobj);9352const BufferID *buffersPacked = PackParam<const BufferID *>(buffers);9353std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);9354bool isCallValid = (context->skipValidation() ||9355ValidateVertexArrayVertexBuffers(context, vaobjPacked, first, count,9356buffersPacked, offsets, strides));9357if (isCallValid)9358{9359context->vertexArrayVertexBuffers(vaobjPacked, first, count, buffersPacked, offsets,9360strides);9361}9362ANGLE_CAPTURE(VertexArrayVertexBuffers, isCallValid, context, vaobjPacked, first, count,9363buffersPacked, offsets, strides);9364}9365else9366{9367GenerateContextLostErrorOnCurrentGlobalContext();9368}9369}93709371// GL 4.69372void GL_APIENTRY GL_MultiDrawArraysIndirectCount(GLenum mode,9373const void *indirect,9374GLintptr drawcount,9375GLsizei maxdrawcount,9376GLsizei stride)9377{9378Context *context = GetValidGlobalContext();9379EVENT(context, GLMultiDrawArraysIndirectCount,9380"context = %d, mode = %s, indirect = 0x%016" PRIxPTR9381", drawcount = %llu, maxdrawcount = %d, stride = %d",9382CID(context), GLenumToString(GLenumGroup::PrimitiveType, mode), (uintptr_t)indirect,9383static_cast<unsigned long long>(drawcount), maxdrawcount, stride);93849385if (context)9386{9387std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);9388bool isCallValid = (context->skipValidation() ||9389ValidateMultiDrawArraysIndirectCount(context, mode, indirect, drawcount,9390maxdrawcount, stride));9391if (isCallValid)9392{9393context->multiDrawArraysIndirectCount(mode, indirect, drawcount, maxdrawcount, stride);9394}9395ANGLE_CAPTURE(MultiDrawArraysIndirectCount, isCallValid, context, mode, indirect, drawcount,9396maxdrawcount, stride);9397}9398else9399{9400GenerateContextLostErrorOnCurrentGlobalContext();9401}9402}94039404void GL_APIENTRY GL_MultiDrawElementsIndirectCount(GLenum mode,9405GLenum type,9406const void *indirect,9407GLintptr drawcount,9408GLsizei maxdrawcount,9409GLsizei stride)9410{9411Context *context = GetValidGlobalContext();9412EVENT(context, GLMultiDrawElementsIndirectCount,9413"context = %d, mode = %s, type = %s, indirect = 0x%016" PRIxPTR9414", drawcount = %llu, maxdrawcount = %d, stride = %d",9415CID(context), GLenumToString(GLenumGroup::PrimitiveType, mode),9416GLenumToString(GLenumGroup::DefaultGroup, type), (uintptr_t)indirect,9417static_cast<unsigned long long>(drawcount), maxdrawcount, stride);94189419if (context)9420{9421std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);9422bool isCallValid = (context->skipValidation() ||9423ValidateMultiDrawElementsIndirectCount(9424context, mode, type, indirect, drawcount, maxdrawcount, stride));9425if (isCallValid)9426{9427context->multiDrawElementsIndirectCount(mode, type, indirect, drawcount, maxdrawcount,9428stride);9429}9430ANGLE_CAPTURE(MultiDrawElementsIndirectCount, isCallValid, context, mode, type, indirect,9431drawcount, maxdrawcount, stride);9432}9433else9434{9435GenerateContextLostErrorOnCurrentGlobalContext();9436}9437}94389439void GL_APIENTRY GL_PolygonOffsetClamp(GLfloat factor, GLfloat units, GLfloat clamp)9440{9441Context *context = GetValidGlobalContext();9442EVENT(context, GLPolygonOffsetClamp, "context = %d, factor = %f, units = %f, clamp = %f",9443CID(context), factor, units, clamp);94449445if (context)9446{9447std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);9448bool isCallValid = (context->skipValidation() ||9449ValidatePolygonOffsetClamp(context, factor, units, clamp));9450if (isCallValid)9451{9452context->polygonOffsetClamp(factor, units, clamp);9453}9454ANGLE_CAPTURE(PolygonOffsetClamp, isCallValid, context, factor, units, clamp);9455}9456else9457{9458GenerateContextLostErrorOnCurrentGlobalContext();9459}9460}94619462void GL_APIENTRY GL_SpecializeShader(GLuint shader,9463const GLchar *pEntryPoint,9464GLuint numSpecializationConstants,9465const GLuint *pConstantIndex,9466const GLuint *pConstantValue)9467{9468Context *context = GetValidGlobalContext();9469EVENT(context, GLSpecializeShader,9470"context = %d, shader = %u, pEntryPoint = 0x%016" PRIxPTR9471", numSpecializationConstants = %u, pConstantIndex = 0x%016" PRIxPTR9472", pConstantValue = 0x%016" PRIxPTR "",9473CID(context), shader, (uintptr_t)pEntryPoint, numSpecializationConstants,9474(uintptr_t)pConstantIndex, (uintptr_t)pConstantValue);94759476if (context)9477{9478std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);9479bool isCallValid =9480(context->skipValidation() ||9481ValidateSpecializeShader(context, shader, pEntryPoint, numSpecializationConstants,9482pConstantIndex, pConstantValue));9483if (isCallValid)9484{9485context->specializeShader(shader, pEntryPoint, numSpecializationConstants,9486pConstantIndex, pConstantValue);9487}9488ANGLE_CAPTURE(SpecializeShader, isCallValid, context, shader, pEntryPoint,9489numSpecializationConstants, pConstantIndex, pConstantValue);9490}9491else9492{9493GenerateContextLostErrorOnCurrentGlobalContext();9494}9495}94969497} // extern "C"949894999500