Path: blob/main_old/src/libGLESv2/entry_points_gles_ext_autogen.cpp
1693 views
// GENERATED FILE - DO NOT EDIT.1// Generated by generate_entry_points.py using data from gl.xml and gl_angle_ext.xml.2//3// Copyright 2020 The ANGLE Project Authors. All rights reserved.4// Use of this source code is governed by a BSD-style license that can be5// found in the LICENSE file.6//7// entry_points_gles_ext_autogen.cpp:8// Defines the GLES extension entry points.910#include "libGLESv2/entry_points_gles_ext_autogen.h"1112#include "common/entry_points_enum_autogen.h"13#include "libANGLE/Context.h"14#include "libANGLE/Context.inl.h"15#include "libANGLE/capture/capture_gles_ext_autogen.h"16#include "libANGLE/capture/gl_enum_utils.h"17#include "libANGLE/entry_points_utils.h"18#include "libANGLE/validationESEXT.h"19#include "libGLESv2/global_state.h"2021using namespace gl;2223#include "libANGLE/capture/capture_gles_1_0_autogen.h"24#include "libANGLE/capture/capture_gles_2_0_autogen.h"25#include "libANGLE/capture/capture_gles_3_0_autogen.h"26#include "libANGLE/capture/capture_gles_3_1_autogen.h"27#include "libANGLE/capture/capture_gles_3_2_autogen.h"28#include "libANGLE/validationES1.h"29#include "libANGLE/validationES2.h"30#include "libANGLE/validationES3.h"31#include "libANGLE/validationES31.h"32#include "libANGLE/validationES32.h"3334using namespace gl;3536extern "C" {3738// GL_ANGLE_base_vertex_base_instance39void GL_APIENTRY GL_DrawArraysInstancedBaseInstanceANGLE(GLenum mode,40GLint first,41GLsizei count,42GLsizei instanceCount,43GLuint baseInstance)44{45Context *context = GetValidGlobalContext();46EVENT(context, GLDrawArraysInstancedBaseInstanceANGLE,47"context = %d, mode = %s, first = %d, count = %d, instanceCount = %d, baseInstance = %u",48CID(context), GLenumToString(GLenumGroup::PrimitiveType, mode), first, count,49instanceCount, baseInstance);5051if (context)52{53PrimitiveMode modePacked = PackParam<PrimitiveMode>(mode);54std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);55bool isCallValid = (context->skipValidation() ||56ValidateDrawArraysInstancedBaseInstanceANGLE(57context, modePacked, first, count, instanceCount, baseInstance));58if (isCallValid)59{60context->drawArraysInstancedBaseInstance(modePacked, first, count, instanceCount,61baseInstance);62}63ANGLE_CAPTURE(DrawArraysInstancedBaseInstanceANGLE, isCallValid, context, modePacked, first,64count, instanceCount, baseInstance);65}66else67{68GenerateContextLostErrorOnCurrentGlobalContext();69}70}7172void GL_APIENTRY GL_DrawElementsInstancedBaseVertexBaseInstanceANGLE(GLenum mode,73GLsizei count,74GLenum type,75const GLvoid *indices,76GLsizei instanceCounts,77GLint baseVertex,78GLuint baseInstance)79{80Context *context = GetValidGlobalContext();81EVENT(context, GLDrawElementsInstancedBaseVertexBaseInstanceANGLE,82"context = %d, mode = %s, count = %d, type = %s, indices = 0x%016" PRIxPTR83", instanceCounts = %d, baseVertex = %d, baseInstance = %u",84CID(context), GLenumToString(GLenumGroup::PrimitiveType, mode), count,85GLenumToString(GLenumGroup::DrawElementsType, type), (uintptr_t)indices, instanceCounts,86baseVertex, baseInstance);8788if (context)89{90PrimitiveMode modePacked = PackParam<PrimitiveMode>(mode);91DrawElementsType typePacked = PackParam<DrawElementsType>(type);92std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);93bool isCallValid =94(context->skipValidation() || ValidateDrawElementsInstancedBaseVertexBaseInstanceANGLE(95context, modePacked, count, typePacked, indices,96instanceCounts, baseVertex, baseInstance));97if (isCallValid)98{99context->drawElementsInstancedBaseVertexBaseInstance(100modePacked, count, typePacked, indices, instanceCounts, baseVertex, baseInstance);101}102ANGLE_CAPTURE(DrawElementsInstancedBaseVertexBaseInstanceANGLE, isCallValid, context,103modePacked, count, typePacked, indices, instanceCounts, baseVertex,104baseInstance);105}106else107{108GenerateContextLostErrorOnCurrentGlobalContext();109}110}111112void GL_APIENTRY GL_MultiDrawArraysInstancedBaseInstanceANGLE(GLenum mode,113const GLint *firsts,114const GLsizei *counts,115const GLsizei *instanceCounts,116const GLuint *baseInstances,117GLsizei drawcount)118{119Context *context = GetValidGlobalContext();120EVENT(context, GLMultiDrawArraysInstancedBaseInstanceANGLE,121"context = %d, mode = %s, firsts = 0x%016" PRIxPTR ", counts = 0x%016" PRIxPTR122", instanceCounts = 0x%016" PRIxPTR ", baseInstances = 0x%016" PRIxPTR ", drawcount = %d",123CID(context), GLenumToString(GLenumGroup::PrimitiveType, mode), (uintptr_t)firsts,124(uintptr_t)counts, (uintptr_t)instanceCounts, (uintptr_t)baseInstances, drawcount);125126if (context)127{128PrimitiveMode modePacked = PackParam<PrimitiveMode>(mode);129std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);130bool isCallValid =131(context->skipValidation() ||132ValidateMultiDrawArraysInstancedBaseInstanceANGLE(133context, modePacked, firsts, counts, instanceCounts, baseInstances, drawcount));134if (isCallValid)135{136context->multiDrawArraysInstancedBaseInstance(modePacked, firsts, counts,137instanceCounts, baseInstances, drawcount);138}139ANGLE_CAPTURE(MultiDrawArraysInstancedBaseInstanceANGLE, isCallValid, context, modePacked,140firsts, counts, instanceCounts, baseInstances, drawcount);141}142else143{144GenerateContextLostErrorOnCurrentGlobalContext();145}146}147148void GL_APIENTRY149GL_MultiDrawElementsInstancedBaseVertexBaseInstanceANGLE(GLenum mode,150const GLsizei *counts,151GLenum type,152const GLvoid *const *indices,153const GLsizei *instanceCounts,154const GLint *baseVertices,155const GLuint *baseInstances,156GLsizei drawcount)157{158Context *context = GetValidGlobalContext();159EVENT(context, GLMultiDrawElementsInstancedBaseVertexBaseInstanceANGLE,160"context = %d, mode = %s, counts = 0x%016" PRIxPTR ", type = %s, indices = 0x%016" PRIxPTR161", instanceCounts = 0x%016" PRIxPTR ", baseVertices = 0x%016" PRIxPTR162", baseInstances = 0x%016" PRIxPTR ", drawcount = %d",163CID(context), GLenumToString(GLenumGroup::PrimitiveType, mode), (uintptr_t)counts,164GLenumToString(GLenumGroup::DrawElementsType, type), (uintptr_t)indices,165(uintptr_t)instanceCounts, (uintptr_t)baseVertices, (uintptr_t)baseInstances, drawcount);166167if (context)168{169PrimitiveMode modePacked = PackParam<PrimitiveMode>(mode);170DrawElementsType typePacked = PackParam<DrawElementsType>(type);171std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);172bool isCallValid = (context->skipValidation() ||173ValidateMultiDrawElementsInstancedBaseVertexBaseInstanceANGLE(174context, modePacked, counts, typePacked, indices, instanceCounts,175baseVertices, baseInstances, drawcount));176if (isCallValid)177{178context->multiDrawElementsInstancedBaseVertexBaseInstance(179modePacked, counts, typePacked, indices, instanceCounts, baseVertices,180baseInstances, drawcount);181}182ANGLE_CAPTURE(MultiDrawElementsInstancedBaseVertexBaseInstanceANGLE, isCallValid, context,183modePacked, counts, typePacked, indices, instanceCounts, baseVertices,184baseInstances, drawcount);185}186else187{188GenerateContextLostErrorOnCurrentGlobalContext();189}190}191192// GL_ANGLE_copy_texture_3d193void GL_APIENTRY GL_CopyTexture3DANGLE(GLuint sourceId,194GLint sourceLevel,195GLenum destTarget,196GLuint destId,197GLint destLevel,198GLint internalFormat,199GLenum destType,200GLboolean unpackFlipY,201GLboolean unpackPremultiplyAlpha,202GLboolean unpackUnmultiplyAlpha)203{204Context *context = GetValidGlobalContext();205EVENT(context, GLCopyTexture3DANGLE,206"context = %d, sourceId = %u, sourceLevel = %d, destTarget = %s, destId = %u, destLevel "207"= %d, internalFormat = %d, destType = %s, unpackFlipY = %s, unpackPremultiplyAlpha = "208"%s, unpackUnmultiplyAlpha = %s",209CID(context), sourceId, sourceLevel,210GLenumToString(GLenumGroup::DefaultGroup, destTarget), destId, destLevel, internalFormat,211GLenumToString(GLenumGroup::DefaultGroup, destType), GLbooleanToString(unpackFlipY),212GLbooleanToString(unpackPremultiplyAlpha), GLbooleanToString(unpackUnmultiplyAlpha));213214if (context)215{216TextureID sourceIdPacked = PackParam<TextureID>(sourceId);217TextureTarget destTargetPacked = PackParam<TextureTarget>(destTarget);218TextureID destIdPacked = PackParam<TextureID>(destId);219std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);220bool isCallValid = (context->skipValidation() ||221ValidateCopyTexture3DANGLE(222context, sourceIdPacked, sourceLevel, destTargetPacked,223destIdPacked, destLevel, internalFormat, destType, unpackFlipY,224unpackPremultiplyAlpha, unpackUnmultiplyAlpha));225if (isCallValid)226{227context->copyTexture3D(sourceIdPacked, sourceLevel, destTargetPacked, destIdPacked,228destLevel, internalFormat, destType, unpackFlipY,229unpackPremultiplyAlpha, unpackUnmultiplyAlpha);230}231ANGLE_CAPTURE(CopyTexture3DANGLE, isCallValid, context, sourceIdPacked, sourceLevel,232destTargetPacked, destIdPacked, destLevel, internalFormat, destType,233unpackFlipY, unpackPremultiplyAlpha, unpackUnmultiplyAlpha);234}235else236{237GenerateContextLostErrorOnCurrentGlobalContext();238}239}240241void GL_APIENTRY GL_CopySubTexture3DANGLE(GLuint sourceId,242GLint sourceLevel,243GLenum destTarget,244GLuint destId,245GLint destLevel,246GLint xoffset,247GLint yoffset,248GLint zoffset,249GLint x,250GLint y,251GLint z,252GLint width,253GLint height,254GLint depth,255GLboolean unpackFlipY,256GLboolean unpackPremultiplyAlpha,257GLboolean unpackUnmultiplyAlpha)258{259Context *context = GetValidGlobalContext();260EVENT(context, GLCopySubTexture3DANGLE,261"context = %d, sourceId = %u, sourceLevel = %d, destTarget = %s, destId = %u, destLevel "262"= %d, xoffset = %d, yoffset = %d, zoffset = %d, x = %d, y = %d, z = %d, width = %d, "263"height = %d, depth = %d, unpackFlipY = %s, unpackPremultiplyAlpha = %s, "264"unpackUnmultiplyAlpha = %s",265CID(context), sourceId, sourceLevel,266GLenumToString(GLenumGroup::DefaultGroup, destTarget), destId, destLevel, xoffset,267yoffset, zoffset, x, y, z, width, height, depth, GLbooleanToString(unpackFlipY),268GLbooleanToString(unpackPremultiplyAlpha), GLbooleanToString(unpackUnmultiplyAlpha));269270if (context)271{272TextureID sourceIdPacked = PackParam<TextureID>(sourceId);273TextureTarget destTargetPacked = PackParam<TextureTarget>(destTarget);274TextureID destIdPacked = PackParam<TextureID>(destId);275std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);276bool isCallValid =277(context->skipValidation() ||278ValidateCopySubTexture3DANGLE(context, sourceIdPacked, sourceLevel, destTargetPacked,279destIdPacked, destLevel, xoffset, yoffset, zoffset, x, y,280z, width, height, depth, unpackFlipY,281unpackPremultiplyAlpha, unpackUnmultiplyAlpha));282if (isCallValid)283{284context->copySubTexture3D(sourceIdPacked, sourceLevel, destTargetPacked, destIdPacked,285destLevel, xoffset, yoffset, zoffset, x, y, z, width, height,286depth, unpackFlipY, unpackPremultiplyAlpha,287unpackUnmultiplyAlpha);288}289ANGLE_CAPTURE(CopySubTexture3DANGLE, isCallValid, context, sourceIdPacked, sourceLevel,290destTargetPacked, destIdPacked, destLevel, xoffset, yoffset, zoffset, x, y, z,291width, height, depth, unpackFlipY, unpackPremultiplyAlpha,292unpackUnmultiplyAlpha);293}294else295{296GenerateContextLostErrorOnCurrentGlobalContext();297}298}299300// GL_ANGLE_framebuffer_blit301void GL_APIENTRY GL_BlitFramebufferANGLE(GLint srcX0,302GLint srcY0,303GLint srcX1,304GLint srcY1,305GLint dstX0,306GLint dstY0,307GLint dstX1,308GLint dstY1,309GLbitfield mask,310GLenum filter)311{312Context *context = GetValidGlobalContext();313EVENT(context, GLBlitFramebufferANGLE,314"context = %d, srcX0 = %d, srcY0 = %d, srcX1 = %d, srcY1 = %d, dstX0 = %d, dstY0 = %d, "315"dstX1 = %d, dstY1 = %d, mask = %s, filter = %s",316CID(context), srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1,317GLbitfieldToString(GLenumGroup::ClearBufferMask, mask).c_str(),318GLenumToString(GLenumGroup::BlitFramebufferFilter, filter));319320if (context)321{322std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);323bool isCallValid = (context->skipValidation() ||324ValidateBlitFramebufferANGLE(context, srcX0, srcY0, srcX1, srcY1, dstX0,325dstY0, dstX1, dstY1, mask, filter));326if (isCallValid)327{328context->blitFramebuffer(srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask,329filter);330}331ANGLE_CAPTURE(BlitFramebufferANGLE, isCallValid, context, srcX0, srcY0, srcX1, srcY1, dstX0,332dstY0, dstX1, dstY1, mask, filter);333}334else335{336GenerateContextLostErrorOnCurrentGlobalContext();337}338}339340// GL_ANGLE_framebuffer_multisample341void GL_APIENTRY GL_RenderbufferStorageMultisampleANGLE(GLenum target,342GLsizei samples,343GLenum internalformat,344GLsizei width,345GLsizei height)346{347Context *context = GetValidGlobalContext();348EVENT(context, GLRenderbufferStorageMultisampleANGLE,349"context = %d, target = %s, samples = %d, internalformat = %s, width = %d, height = %d",350CID(context), GLenumToString(GLenumGroup::RenderbufferTarget, target), samples,351GLenumToString(GLenumGroup::InternalFormat, internalformat), width, height);352353if (context)354{355std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);356bool isCallValid = (context->skipValidation() ||357ValidateRenderbufferStorageMultisampleANGLE(358context, target, samples, internalformat, width, height));359if (isCallValid)360{361context->renderbufferStorageMultisample(target, samples, internalformat, width, height);362}363ANGLE_CAPTURE(RenderbufferStorageMultisampleANGLE, isCallValid, context, target, samples,364internalformat, width, height);365}366else367{368GenerateContextLostErrorOnCurrentGlobalContext();369}370}371372// GL_ANGLE_get_image373void GL_APIENTRY374GL_GetTexImageANGLE(GLenum target, GLint level, GLenum format, GLenum type, void *pixels)375{376Context *context = GetValidGlobalContext();377EVENT(context, GLGetTexImageANGLE,378"context = %d, target = %s, level = %d, format = %s, type = %s, pixels = 0x%016" PRIxPTR379"",380CID(context), GLenumToString(GLenumGroup::TextureTarget, target), level,381GLenumToString(GLenumGroup::PixelFormat, format),382GLenumToString(GLenumGroup::PixelType, type), (uintptr_t)pixels);383384if (context)385{386TextureTarget targetPacked = PackParam<TextureTarget>(target);387std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);388bool isCallValid =389(context->skipValidation() ||390ValidateGetTexImageANGLE(context, targetPacked, level, format, type, pixels));391if (isCallValid)392{393context->getTexImage(targetPacked, level, format, type, pixels);394}395ANGLE_CAPTURE(GetTexImageANGLE, isCallValid, context, targetPacked, level, format, type,396pixels);397}398else399{400GenerateContextLostErrorOnCurrentGlobalContext();401}402}403404void GL_APIENTRY GL_GetRenderbufferImageANGLE(GLenum target,405GLenum format,406GLenum type,407void *pixels)408{409Context *context = GetValidGlobalContext();410EVENT(context, GLGetRenderbufferImageANGLE,411"context = %d, target = %s, format = %s, type = %s, pixels = 0x%016" PRIxPTR "",412CID(context), GLenumToString(GLenumGroup::RenderbufferTarget, target),413GLenumToString(GLenumGroup::PixelFormat, format),414GLenumToString(GLenumGroup::PixelType, type), (uintptr_t)pixels);415416if (context)417{418std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);419bool isCallValid =420(context->skipValidation() ||421ValidateGetRenderbufferImageANGLE(context, target, format, type, pixels));422if (isCallValid)423{424context->getRenderbufferImage(target, format, type, pixels);425}426ANGLE_CAPTURE(GetRenderbufferImageANGLE, isCallValid, context, target, format, type,427pixels);428}429else430{431GenerateContextLostErrorOnCurrentGlobalContext();432}433}434435// GL_ANGLE_get_tex_level_parameter436void GL_APIENTRY GL_GetTexLevelParameterivANGLE(GLenum target,437GLint level,438GLenum pname,439GLint *params)440{441Context *context = GetValidGlobalContext();442EVENT(context, GLGetTexLevelParameterivANGLE,443"context = %d, target = %s, level = %d, pname = %s, params = 0x%016" PRIxPTR "",444CID(context), GLenumToString(GLenumGroup::TextureTarget, target), level,445GLenumToString(GLenumGroup::GetTextureParameter, pname), (uintptr_t)params);446447if (context)448{449TextureTarget targetPacked = PackParam<TextureTarget>(target);450std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);451bool isCallValid =452(context->skipValidation() ||453ValidateGetTexLevelParameterivANGLE(context, targetPacked, level, pname, params));454if (isCallValid)455{456context->getTexLevelParameteriv(targetPacked, level, pname, params);457}458ANGLE_CAPTURE(GetTexLevelParameterivANGLE, isCallValid, context, targetPacked, level, pname,459params);460}461else462{463GenerateContextLostErrorOnCurrentGlobalContext();464}465}466467void GL_APIENTRY GL_GetTexLevelParameterfvANGLE(GLenum target,468GLint level,469GLenum pname,470GLfloat *params)471{472Context *context = GetValidGlobalContext();473EVENT(context, GLGetTexLevelParameterfvANGLE,474"context = %d, target = %s, level = %d, pname = %s, params = 0x%016" PRIxPTR "",475CID(context), GLenumToString(GLenumGroup::DefaultGroup, target), level,476GLenumToString(GLenumGroup::DefaultGroup, pname), (uintptr_t)params);477478if (context)479{480TextureTarget targetPacked = PackParam<TextureTarget>(target);481std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);482bool isCallValid =483(context->skipValidation() ||484ValidateGetTexLevelParameterfvANGLE(context, targetPacked, level, pname, params));485if (isCallValid)486{487context->getTexLevelParameterfv(targetPacked, level, pname, params);488}489ANGLE_CAPTURE(GetTexLevelParameterfvANGLE, isCallValid, context, targetPacked, level, pname,490params);491}492else493{494GenerateContextLostErrorOnCurrentGlobalContext();495}496}497498// GL_ANGLE_instanced_arrays499void GL_APIENTRY GL_DrawArraysInstancedANGLE(GLenum mode,500GLint first,501GLsizei count,502GLsizei primcount)503{504Context *context = GetValidGlobalContext();505EVENT(context, GLDrawArraysInstancedANGLE,506"context = %d, mode = %s, first = %d, count = %d, primcount = %d", CID(context),507GLenumToString(GLenumGroup::PrimitiveType, mode), first, count, primcount);508509if (context)510{511PrimitiveMode modePacked = PackParam<PrimitiveMode>(mode);512std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);513bool isCallValid =514(context->skipValidation() ||515ValidateDrawArraysInstancedANGLE(context, modePacked, first, count, primcount));516if (isCallValid)517{518context->drawArraysInstanced(modePacked, first, count, primcount);519}520ANGLE_CAPTURE(DrawArraysInstancedANGLE, isCallValid, context, modePacked, first, count,521primcount);522}523else524{525GenerateContextLostErrorOnCurrentGlobalContext();526}527}528529void GL_APIENTRY GL_DrawElementsInstancedANGLE(GLenum mode,530GLsizei count,531GLenum type,532const void *indices,533GLsizei primcount)534{535Context *context = GetValidGlobalContext();536EVENT(context, GLDrawElementsInstancedANGLE,537"context = %d, mode = %s, count = %d, type = %s, indices = 0x%016" PRIxPTR538", primcount = %d",539CID(context), GLenumToString(GLenumGroup::PrimitiveType, mode), count,540GLenumToString(GLenumGroup::PrimitiveType, type), (uintptr_t)indices, primcount);541542if (context)543{544PrimitiveMode modePacked = PackParam<PrimitiveMode>(mode);545DrawElementsType typePacked = PackParam<DrawElementsType>(type);546std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);547bool isCallValid = (context->skipValidation() ||548ValidateDrawElementsInstancedANGLE(context, modePacked, count,549typePacked, indices, primcount));550if (isCallValid)551{552context->drawElementsInstanced(modePacked, count, typePacked, indices, primcount);553}554ANGLE_CAPTURE(DrawElementsInstancedANGLE, isCallValid, context, modePacked, count,555typePacked, indices, primcount);556}557else558{559GenerateContextLostErrorOnCurrentGlobalContext();560}561}562563void GL_APIENTRY GL_VertexAttribDivisorANGLE(GLuint index, GLuint divisor)564{565Context *context = GetValidGlobalContext();566EVENT(context, GLVertexAttribDivisorANGLE, "context = %d, index = %u, divisor = %u",567CID(context), index, divisor);568569if (context)570{571std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);572bool isCallValid = (context->skipValidation() ||573ValidateVertexAttribDivisorANGLE(context, index, divisor));574if (isCallValid)575{576context->vertexAttribDivisor(index, divisor);577}578ANGLE_CAPTURE(VertexAttribDivisorANGLE, isCallValid, context, index, divisor);579}580else581{582GenerateContextLostErrorOnCurrentGlobalContext();583}584}585586// GL_ANGLE_memory_object_flags587void GL_APIENTRY GL_TexStorageMemFlags2DANGLE(GLenum target,588GLsizei levels,589GLenum internalFormat,590GLsizei width,591GLsizei height,592GLuint memory,593GLuint64 offset,594GLbitfield createFlags,595GLbitfield usageFlags)596{597Context *context = GetValidGlobalContext();598EVENT(context, GLTexStorageMemFlags2DANGLE,599"context = %d, target = %s, levels = %d, internalFormat = %s, width = %d, height = %d, "600"memory = %u, offset = %llu, createFlags = %s, usageFlags = %s",601CID(context), GLenumToString(GLenumGroup::TextureTarget, target), levels,602GLenumToString(GLenumGroup::DefaultGroup, internalFormat), width, height, memory,603static_cast<unsigned long long>(offset),604GLbitfieldToString(GLenumGroup::DefaultGroup, createFlags).c_str(),605GLbitfieldToString(GLenumGroup::DefaultGroup, usageFlags).c_str());606607if (context)608{609TextureType targetPacked = PackParam<TextureType>(target);610MemoryObjectID memoryPacked = PackParam<MemoryObjectID>(memory);611std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);612bool isCallValid = (context->skipValidation() ||613ValidateTexStorageMemFlags2DANGLE(614context, targetPacked, levels, internalFormat, width, height,615memoryPacked, offset, createFlags, usageFlags));616if (isCallValid)617{618context->texStorageMemFlags2D(targetPacked, levels, internalFormat, width, height,619memoryPacked, offset, createFlags, usageFlags);620}621ANGLE_CAPTURE(TexStorageMemFlags2DANGLE, isCallValid, context, targetPacked, levels,622internalFormat, width, height, memoryPacked, offset, createFlags, usageFlags);623}624else625{626GenerateContextLostErrorOnCurrentGlobalContext();627}628}629630void GL_APIENTRY GL_TexStorageMemFlags2DMultisampleANGLE(GLenum target,631GLsizei samples,632GLenum internalFormat,633GLsizei width,634GLsizei height,635GLboolean fixedSampleLocations,636GLuint memory,637GLuint64 offset,638GLbitfield createFlags,639GLbitfield usageFlags)640{641Context *context = GetValidGlobalContext();642EVENT(643context, GLTexStorageMemFlags2DMultisampleANGLE,644"context = %d, target = %s, samples = %d, internalFormat = %s, width = %d, height = %d, "645"fixedSampleLocations = %s, memory = %u, offset = %llu, createFlags = %s, usageFlags = %s",646CID(context), GLenumToString(GLenumGroup::TextureTarget, target), samples,647GLenumToString(GLenumGroup::DefaultGroup, internalFormat), width, height,648GLbooleanToString(fixedSampleLocations), memory, static_cast<unsigned long long>(offset),649GLbitfieldToString(GLenumGroup::DefaultGroup, createFlags).c_str(),650GLbitfieldToString(GLenumGroup::DefaultGroup, usageFlags).c_str());651652if (context)653{654TextureType targetPacked = PackParam<TextureType>(target);655MemoryObjectID memoryPacked = PackParam<MemoryObjectID>(memory);656std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);657bool isCallValid =658(context->skipValidation() ||659ValidateTexStorageMemFlags2DMultisampleANGLE(660context, targetPacked, samples, internalFormat, width, height,661fixedSampleLocations, memoryPacked, offset, createFlags, usageFlags));662if (isCallValid)663{664context->texStorageMemFlags2DMultisample(targetPacked, samples, internalFormat, width,665height, fixedSampleLocations, memoryPacked,666offset, createFlags, usageFlags);667}668ANGLE_CAPTURE(TexStorageMemFlags2DMultisampleANGLE, isCallValid, context, targetPacked,669samples, internalFormat, width, height, fixedSampleLocations, memoryPacked,670offset, createFlags, usageFlags);671}672else673{674GenerateContextLostErrorOnCurrentGlobalContext();675}676}677678void GL_APIENTRY GL_TexStorageMemFlags3DANGLE(GLenum target,679GLsizei levels,680GLenum internalFormat,681GLsizei width,682GLsizei height,683GLsizei depth,684GLuint memory,685GLuint64 offset,686GLbitfield createFlags,687GLbitfield usageFlags)688{689Context *context = GetValidGlobalContext();690EVENT(context, GLTexStorageMemFlags3DANGLE,691"context = %d, target = %s, levels = %d, internalFormat = %s, width = %d, height = %d, "692"depth = %d, memory = %u, offset = %llu, createFlags = %s, usageFlags = %s",693CID(context), GLenumToString(GLenumGroup::TextureTarget, target), levels,694GLenumToString(GLenumGroup::DefaultGroup, internalFormat), width, height, depth, memory,695static_cast<unsigned long long>(offset),696GLbitfieldToString(GLenumGroup::DefaultGroup, createFlags).c_str(),697GLbitfieldToString(GLenumGroup::DefaultGroup, usageFlags).c_str());698699if (context)700{701TextureType targetPacked = PackParam<TextureType>(target);702MemoryObjectID memoryPacked = PackParam<MemoryObjectID>(memory);703std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);704bool isCallValid = (context->skipValidation() ||705ValidateTexStorageMemFlags3DANGLE(706context, targetPacked, levels, internalFormat, width, height, depth,707memoryPacked, offset, createFlags, usageFlags));708if (isCallValid)709{710context->texStorageMemFlags3D(targetPacked, levels, internalFormat, width, height,711depth, memoryPacked, offset, createFlags, usageFlags);712}713ANGLE_CAPTURE(TexStorageMemFlags3DANGLE, isCallValid, context, targetPacked, levels,714internalFormat, width, height, depth, memoryPacked, offset, createFlags,715usageFlags);716}717else718{719GenerateContextLostErrorOnCurrentGlobalContext();720}721}722723void GL_APIENTRY GL_TexStorageMemFlags3DMultisampleANGLE(GLenum target,724GLsizei samples,725GLenum internalFormat,726GLsizei width,727GLsizei height,728GLsizei depth,729GLboolean fixedSampleLocations,730GLuint memory,731GLuint64 offset,732GLbitfield createFlags,733GLbitfield usageFlags)734{735Context *context = GetValidGlobalContext();736EVENT(context, GLTexStorageMemFlags3DMultisampleANGLE,737"context = %d, target = %s, samples = %d, internalFormat = %s, width = %d, height = %d, "738"depth = %d, fixedSampleLocations = %s, memory = %u, offset = %llu, createFlags = %s, "739"usageFlags = %s",740CID(context), GLenumToString(GLenumGroup::TextureTarget, target), samples,741GLenumToString(GLenumGroup::DefaultGroup, internalFormat), width, height, depth,742GLbooleanToString(fixedSampleLocations), memory, static_cast<unsigned long long>(offset),743GLbitfieldToString(GLenumGroup::DefaultGroup, createFlags).c_str(),744GLbitfieldToString(GLenumGroup::DefaultGroup, usageFlags).c_str());745746if (context)747{748TextureType targetPacked = PackParam<TextureType>(target);749MemoryObjectID memoryPacked = PackParam<MemoryObjectID>(memory);750std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);751bool isCallValid =752(context->skipValidation() ||753ValidateTexStorageMemFlags3DMultisampleANGLE(754context, targetPacked, samples, internalFormat, width, height, depth,755fixedSampleLocations, memoryPacked, offset, createFlags, usageFlags));756if (isCallValid)757{758context->texStorageMemFlags3DMultisample(targetPacked, samples, internalFormat, width,759height, depth, fixedSampleLocations,760memoryPacked, offset, createFlags, usageFlags);761}762ANGLE_CAPTURE(TexStorageMemFlags3DMultisampleANGLE, isCallValid, context, targetPacked,763samples, internalFormat, width, height, depth, fixedSampleLocations,764memoryPacked, offset, createFlags, usageFlags);765}766else767{768GenerateContextLostErrorOnCurrentGlobalContext();769}770}771772// GL_ANGLE_memory_object_fuchsia773void GL_APIENTRY GL_ImportMemoryZirconHandleANGLE(GLuint memory,774GLuint64 size,775GLenum handleType,776GLuint handle)777{778Context *context = GetValidGlobalContext();779EVENT(context, GLImportMemoryZirconHandleANGLE,780"context = %d, memory = %u, size = %llu, handleType = %s, handle = %u", CID(context),781memory, static_cast<unsigned long long>(size),782GLenumToString(GLenumGroup::ExternalHandleType, handleType), handle);783784if (context)785{786MemoryObjectID memoryPacked = PackParam<MemoryObjectID>(memory);787HandleType handleTypePacked = PackParam<HandleType>(handleType);788std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);789bool isCallValid = (context->skipValidation() ||790ValidateImportMemoryZirconHandleANGLE(context, memoryPacked, size,791handleTypePacked, handle));792if (isCallValid)793{794context->importMemoryZirconHandle(memoryPacked, size, handleTypePacked, handle);795}796ANGLE_CAPTURE(ImportMemoryZirconHandleANGLE, isCallValid, context, memoryPacked, size,797handleTypePacked, handle);798}799else800{801GenerateContextLostErrorOnCurrentGlobalContext();802}803}804805// GL_ANGLE_multi_draw806void GL_APIENTRY GL_MultiDrawArraysANGLE(GLenum mode,807const GLint *firsts,808const GLsizei *counts,809GLsizei drawcount)810{811Context *context = GetValidGlobalContext();812EVENT(context, GLMultiDrawArraysANGLE,813"context = %d, mode = %s, firsts = 0x%016" PRIxPTR ", counts = 0x%016" PRIxPTR814", drawcount = %d",815CID(context), GLenumToString(GLenumGroup::PrimitiveType, mode), (uintptr_t)firsts,816(uintptr_t)counts, drawcount);817818if (context)819{820PrimitiveMode modePacked = PackParam<PrimitiveMode>(mode);821std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);822bool isCallValid =823(context->skipValidation() ||824ValidateMultiDrawArraysANGLE(context, modePacked, firsts, counts, drawcount));825if (isCallValid)826{827context->multiDrawArrays(modePacked, firsts, counts, drawcount);828}829ANGLE_CAPTURE(MultiDrawArraysANGLE, isCallValid, context, modePacked, firsts, counts,830drawcount);831}832else833{834GenerateContextLostErrorOnCurrentGlobalContext();835}836}837838void GL_APIENTRY GL_MultiDrawArraysInstancedANGLE(GLenum mode,839const GLint *firsts,840const GLsizei *counts,841const GLsizei *instanceCounts,842GLsizei drawcount)843{844Context *context = GetValidGlobalContext();845EVENT(context, GLMultiDrawArraysInstancedANGLE,846"context = %d, mode = %s, firsts = 0x%016" PRIxPTR ", counts = 0x%016" PRIxPTR847", instanceCounts = 0x%016" PRIxPTR ", drawcount = %d",848CID(context), GLenumToString(GLenumGroup::PrimitiveType, mode), (uintptr_t)firsts,849(uintptr_t)counts, (uintptr_t)instanceCounts, drawcount);850851if (context)852{853PrimitiveMode modePacked = PackParam<PrimitiveMode>(mode);854std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);855bool isCallValid = (context->skipValidation() ||856ValidateMultiDrawArraysInstancedANGLE(857context, modePacked, firsts, counts, instanceCounts, drawcount));858if (isCallValid)859{860context->multiDrawArraysInstanced(modePacked, firsts, counts, instanceCounts,861drawcount);862}863ANGLE_CAPTURE(MultiDrawArraysInstancedANGLE, isCallValid, context, modePacked, firsts,864counts, instanceCounts, drawcount);865}866else867{868GenerateContextLostErrorOnCurrentGlobalContext();869}870}871872void GL_APIENTRY GL_MultiDrawElementsANGLE(GLenum mode,873const GLsizei *counts,874GLenum type,875const GLvoid *const *indices,876GLsizei drawcount)877{878Context *context = GetValidGlobalContext();879EVENT(context, GLMultiDrawElementsANGLE,880"context = %d, mode = %s, counts = 0x%016" PRIxPTR ", type = %s, indices = 0x%016" PRIxPTR881", drawcount = %d",882CID(context), GLenumToString(GLenumGroup::PrimitiveType, mode), (uintptr_t)counts,883GLenumToString(GLenumGroup::DrawElementsType, type), (uintptr_t)indices, drawcount);884885if (context)886{887PrimitiveMode modePacked = PackParam<PrimitiveMode>(mode);888DrawElementsType typePacked = PackParam<DrawElementsType>(type);889std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);890bool isCallValid = (context->skipValidation() ||891ValidateMultiDrawElementsANGLE(context, modePacked, counts, typePacked,892indices, drawcount));893if (isCallValid)894{895context->multiDrawElements(modePacked, counts, typePacked, indices, drawcount);896}897ANGLE_CAPTURE(MultiDrawElementsANGLE, isCallValid, context, modePacked, counts, typePacked,898indices, drawcount);899}900else901{902GenerateContextLostErrorOnCurrentGlobalContext();903}904}905906void GL_APIENTRY GL_MultiDrawElementsInstancedANGLE(GLenum mode,907const GLsizei *counts,908GLenum type,909const GLvoid *const *indices,910const GLsizei *instanceCounts,911GLsizei drawcount)912{913Context *context = GetValidGlobalContext();914EVENT(context, GLMultiDrawElementsInstancedANGLE,915"context = %d, mode = %s, counts = 0x%016" PRIxPTR ", type = %s, indices = 0x%016" PRIxPTR916", instanceCounts = 0x%016" PRIxPTR ", drawcount = %d",917CID(context), GLenumToString(GLenumGroup::PrimitiveType, mode), (uintptr_t)counts,918GLenumToString(GLenumGroup::DrawElementsType, type), (uintptr_t)indices,919(uintptr_t)instanceCounts, drawcount);920921if (context)922{923PrimitiveMode modePacked = PackParam<PrimitiveMode>(mode);924DrawElementsType typePacked = PackParam<DrawElementsType>(type);925std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);926bool isCallValid =927(context->skipValidation() ||928ValidateMultiDrawElementsInstancedANGLE(context, modePacked, counts, typePacked,929indices, instanceCounts, drawcount));930if (isCallValid)931{932context->multiDrawElementsInstanced(modePacked, counts, typePacked, indices,933instanceCounts, drawcount);934}935ANGLE_CAPTURE(MultiDrawElementsInstancedANGLE, isCallValid, context, modePacked, counts,936typePacked, indices, instanceCounts, drawcount);937}938else939{940GenerateContextLostErrorOnCurrentGlobalContext();941}942}943944// GL_ANGLE_program_binary945946// GL_ANGLE_provoking_vertex947void GL_APIENTRY GL_ProvokingVertexANGLE(GLenum mode)948{949Context *context = GetValidGlobalContext();950EVENT(context, GLProvokingVertexANGLE, "context = %d, mode = %s", CID(context),951GLenumToString(GLenumGroup::VertexProvokingMode, mode));952953if (context)954{955ProvokingVertexConvention modePacked = PackParam<ProvokingVertexConvention>(mode);956std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);957bool isCallValid =958(context->skipValidation() || ValidateProvokingVertexANGLE(context, modePacked));959if (isCallValid)960{961context->provokingVertex(modePacked);962}963ANGLE_CAPTURE(ProvokingVertexANGLE, isCallValid, context, modePacked);964}965else966{967GenerateContextLostErrorOnCurrentGlobalContext();968}969}970971// GL_ANGLE_request_extension972void GL_APIENTRY GL_RequestExtensionANGLE(const GLchar *name)973{974Context *context = GetValidGlobalContext();975EVENT(context, GLRequestExtensionANGLE, "context = %d, name = 0x%016" PRIxPTR "", CID(context),976(uintptr_t)name);977978if (context)979{980std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);981bool isCallValid =982(context->skipValidation() || ValidateRequestExtensionANGLE(context, name));983if (isCallValid)984{985context->requestExtension(name);986}987ANGLE_CAPTURE(RequestExtensionANGLE, isCallValid, context, name);988}989else990{991GenerateContextLostErrorOnCurrentGlobalContext();992}993}994995void GL_APIENTRY GL_DisableExtensionANGLE(const GLchar *name)996{997Context *context = GetValidGlobalContext();998EVENT(context, GLDisableExtensionANGLE, "context = %d, name = 0x%016" PRIxPTR "", CID(context),999(uintptr_t)name);10001001if (context)1002{1003std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);1004bool isCallValid =1005(context->skipValidation() || ValidateDisableExtensionANGLE(context, name));1006if (isCallValid)1007{1008context->disableExtension(name);1009}1010ANGLE_CAPTURE(DisableExtensionANGLE, isCallValid, context, name);1011}1012else1013{1014GenerateContextLostErrorOnCurrentGlobalContext();1015}1016}10171018// GL_ANGLE_robust_client_memory1019void GL_APIENTRY GL_GetBooleanvRobustANGLE(GLenum pname,1020GLsizei bufSize,1021GLsizei *length,1022GLboolean *params)1023{1024Context *context = GetValidGlobalContext();1025EVENT(context, GLGetBooleanvRobustANGLE,1026"context = %d, pname = %s, bufSize = %d, length = 0x%016" PRIxPTR1027", params = 0x%016" PRIxPTR "",1028CID(context), GLenumToString(GLenumGroup::DefaultGroup, pname), bufSize,1029(uintptr_t)length, (uintptr_t)params);10301031if (context)1032{1033std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);1034bool isCallValid =1035(context->skipValidation() ||1036ValidateGetBooleanvRobustANGLE(context, pname, bufSize, length, params));1037if (isCallValid)1038{1039context->getBooleanvRobust(pname, bufSize, length, params);1040}1041ANGLE_CAPTURE(GetBooleanvRobustANGLE, isCallValid, context, pname, bufSize, length, params);1042}1043else1044{1045GenerateContextLostErrorOnCurrentGlobalContext();1046}1047}10481049void GL_APIENTRY GL_GetBufferParameterivRobustANGLE(GLenum target,1050GLenum pname,1051GLsizei bufSize,1052GLsizei *length,1053GLint *params)1054{1055Context *context = GetValidGlobalContext();1056EVENT(context, GLGetBufferParameterivRobustANGLE,1057"context = %d, target = %s, pname = %s, bufSize = %d, length = 0x%016" PRIxPTR1058", params = 0x%016" PRIxPTR "",1059CID(context), GLenumToString(GLenumGroup::DefaultGroup, target),1060GLenumToString(GLenumGroup::DefaultGroup, pname), bufSize, (uintptr_t)length,1061(uintptr_t)params);10621063if (context)1064{1065BufferBinding targetPacked = PackParam<BufferBinding>(target);1066std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);1067bool isCallValid = (context->skipValidation() ||1068ValidateGetBufferParameterivRobustANGLE(context, targetPacked, pname,1069bufSize, length, params));1070if (isCallValid)1071{1072context->getBufferParameterivRobust(targetPacked, pname, bufSize, length, params);1073}1074ANGLE_CAPTURE(GetBufferParameterivRobustANGLE, isCallValid, context, targetPacked, pname,1075bufSize, length, params);1076}1077else1078{1079GenerateContextLostErrorOnCurrentGlobalContext();1080}1081}10821083void GL_APIENTRY GL_GetFloatvRobustANGLE(GLenum pname,1084GLsizei bufSize,1085GLsizei *length,1086GLfloat *params)1087{1088Context *context = GetValidGlobalContext();1089EVENT(context, GLGetFloatvRobustANGLE,1090"context = %d, pname = %s, bufSize = %d, length = 0x%016" PRIxPTR1091", params = 0x%016" PRIxPTR "",1092CID(context), GLenumToString(GLenumGroup::DefaultGroup, pname), bufSize,1093(uintptr_t)length, (uintptr_t)params);10941095if (context)1096{1097std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);1098bool isCallValid = (context->skipValidation() ||1099ValidateGetFloatvRobustANGLE(context, pname, bufSize, length, params));1100if (isCallValid)1101{1102context->getFloatvRobust(pname, bufSize, length, params);1103}1104ANGLE_CAPTURE(GetFloatvRobustANGLE, isCallValid, context, pname, bufSize, length, params);1105}1106else1107{1108GenerateContextLostErrorOnCurrentGlobalContext();1109}1110}11111112void GL_APIENTRY GL_GetFramebufferAttachmentParameterivRobustANGLE(GLenum target,1113GLenum attachment,1114GLenum pname,1115GLsizei bufSize,1116GLsizei *length,1117GLint *params)1118{1119Context *context = GetValidGlobalContext();1120EVENT(context, GLGetFramebufferAttachmentParameterivRobustANGLE,1121"context = %d, target = %s, attachment = %s, pname = %s, bufSize = %d, length = "1122"0x%016" PRIxPTR ", params = 0x%016" PRIxPTR "",1123CID(context), GLenumToString(GLenumGroup::DefaultGroup, target),1124GLenumToString(GLenumGroup::DefaultGroup, attachment),1125GLenumToString(GLenumGroup::DefaultGroup, pname), bufSize, (uintptr_t)length,1126(uintptr_t)params);11271128if (context)1129{1130std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);1131bool isCallValid = (context->skipValidation() ||1132ValidateGetFramebufferAttachmentParameterivRobustANGLE(1133context, target, attachment, pname, bufSize, length, params));1134if (isCallValid)1135{1136context->getFramebufferAttachmentParameterivRobust(target, attachment, pname, bufSize,1137length, params);1138}1139ANGLE_CAPTURE(GetFramebufferAttachmentParameterivRobustANGLE, isCallValid, context, target,1140attachment, pname, bufSize, length, params);1141}1142else1143{1144GenerateContextLostErrorOnCurrentGlobalContext();1145}1146}11471148void GL_APIENTRY GL_GetIntegervRobustANGLE(GLenum pname,1149GLsizei bufSize,1150GLsizei *length,1151GLint *data)1152{1153Context *context = GetValidGlobalContext();1154EVENT(context, GLGetIntegervRobustANGLE,1155"context = %d, pname = %s, bufSize = %d, length = 0x%016" PRIxPTR1156", data = 0x%016" PRIxPTR "",1157CID(context), GLenumToString(GLenumGroup::DefaultGroup, pname), bufSize,1158(uintptr_t)length, (uintptr_t)data);11591160if (context)1161{1162std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);1163bool isCallValid = (context->skipValidation() ||1164ValidateGetIntegervRobustANGLE(context, pname, bufSize, length, data));1165if (isCallValid)1166{1167context->getIntegervRobust(pname, bufSize, length, data);1168}1169ANGLE_CAPTURE(GetIntegervRobustANGLE, isCallValid, context, pname, bufSize, length, data);1170}1171else1172{1173GenerateContextLostErrorOnCurrentGlobalContext();1174}1175}11761177void GL_APIENTRY GL_GetProgramivRobustANGLE(GLuint program,1178GLenum pname,1179GLsizei bufSize,1180GLsizei *length,1181GLint *params)1182{1183Context *context = GetGlobalContext();1184EVENT(context, GLGetProgramivRobustANGLE,1185"context = %d, program = %u, pname = %s, bufSize = %d, length = 0x%016" PRIxPTR1186", params = 0x%016" PRIxPTR "",1187CID(context), program, GLenumToString(GLenumGroup::DefaultGroup, pname), bufSize,1188(uintptr_t)length, (uintptr_t)params);11891190if (context)1191{1192ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);1193std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);1194bool isCallValid = (context->skipValidation() ||1195ValidateGetProgramivRobustANGLE(context, programPacked, pname, bufSize,1196length, params));1197if (isCallValid)1198{1199context->getProgramivRobust(programPacked, pname, bufSize, length, params);1200}1201ANGLE_CAPTURE(GetProgramivRobustANGLE, isCallValid, context, programPacked, pname, bufSize,1202length, params);1203}1204else1205{}1206}12071208void GL_APIENTRY GL_GetRenderbufferParameterivRobustANGLE(GLenum target,1209GLenum pname,1210GLsizei bufSize,1211GLsizei *length,1212GLint *params)1213{1214Context *context = GetValidGlobalContext();1215EVENT(context, GLGetRenderbufferParameterivRobustANGLE,1216"context = %d, target = %s, pname = %s, bufSize = %d, length = 0x%016" PRIxPTR1217", params = 0x%016" PRIxPTR "",1218CID(context), GLenumToString(GLenumGroup::DefaultGroup, target),1219GLenumToString(GLenumGroup::DefaultGroup, pname), bufSize, (uintptr_t)length,1220(uintptr_t)params);12211222if (context)1223{1224std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);1225bool isCallValid =1226(context->skipValidation() || ValidateGetRenderbufferParameterivRobustANGLE(1227context, target, pname, bufSize, length, params));1228if (isCallValid)1229{1230context->getRenderbufferParameterivRobust(target, pname, bufSize, length, params);1231}1232ANGLE_CAPTURE(GetRenderbufferParameterivRobustANGLE, isCallValid, context, target, pname,1233bufSize, length, params);1234}1235else1236{1237GenerateContextLostErrorOnCurrentGlobalContext();1238}1239}12401241void GL_APIENTRY GL_GetShaderivRobustANGLE(GLuint shader,1242GLenum pname,1243GLsizei bufSize,1244GLsizei *length,1245GLint *params)1246{1247Context *context = GetGlobalContext();1248EVENT(context, GLGetShaderivRobustANGLE,1249"context = %d, shader = %u, pname = %s, bufSize = %d, length = 0x%016" PRIxPTR1250", params = 0x%016" PRIxPTR "",1251CID(context), shader, GLenumToString(GLenumGroup::DefaultGroup, pname), bufSize,1252(uintptr_t)length, (uintptr_t)params);12531254if (context)1255{1256ShaderProgramID shaderPacked = PackParam<ShaderProgramID>(shader);1257std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);1258bool isCallValid =1259(context->skipValidation() ||1260ValidateGetShaderivRobustANGLE(context, shaderPacked, pname, bufSize, length, params));1261if (isCallValid)1262{1263context->getShaderivRobust(shaderPacked, pname, bufSize, length, params);1264}1265ANGLE_CAPTURE(GetShaderivRobustANGLE, isCallValid, context, shaderPacked, pname, bufSize,1266length, params);1267}1268else1269{}1270}12711272void GL_APIENTRY GL_GetTexParameterfvRobustANGLE(GLenum target,1273GLenum pname,1274GLsizei bufSize,1275GLsizei *length,1276GLfloat *params)1277{1278Context *context = GetValidGlobalContext();1279EVENT(context, GLGetTexParameterfvRobustANGLE,1280"context = %d, target = %s, pname = %s, bufSize = %d, length = 0x%016" PRIxPTR1281", params = 0x%016" PRIxPTR "",1282CID(context), GLenumToString(GLenumGroup::DefaultGroup, target),1283GLenumToString(GLenumGroup::DefaultGroup, pname), bufSize, (uintptr_t)length,1284(uintptr_t)params);12851286if (context)1287{1288TextureType targetPacked = PackParam<TextureType>(target);1289std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);1290bool isCallValid = (context->skipValidation() ||1291ValidateGetTexParameterfvRobustANGLE(context, targetPacked, pname,1292bufSize, length, params));1293if (isCallValid)1294{1295context->getTexParameterfvRobust(targetPacked, pname, bufSize, length, params);1296}1297ANGLE_CAPTURE(GetTexParameterfvRobustANGLE, isCallValid, context, targetPacked, pname,1298bufSize, length, params);1299}1300else1301{1302GenerateContextLostErrorOnCurrentGlobalContext();1303}1304}13051306void GL_APIENTRY GL_GetTexParameterivRobustANGLE(GLenum target,1307GLenum pname,1308GLsizei bufSize,1309GLsizei *length,1310GLint *params)1311{1312Context *context = GetValidGlobalContext();1313EVENT(context, GLGetTexParameterivRobustANGLE,1314"context = %d, target = %s, pname = %s, bufSize = %d, length = 0x%016" PRIxPTR1315", params = 0x%016" PRIxPTR "",1316CID(context), GLenumToString(GLenumGroup::DefaultGroup, target),1317GLenumToString(GLenumGroup::DefaultGroup, pname), bufSize, (uintptr_t)length,1318(uintptr_t)params);13191320if (context)1321{1322TextureType targetPacked = PackParam<TextureType>(target);1323std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);1324bool isCallValid = (context->skipValidation() ||1325ValidateGetTexParameterivRobustANGLE(context, targetPacked, pname,1326bufSize, length, params));1327if (isCallValid)1328{1329context->getTexParameterivRobust(targetPacked, pname, bufSize, length, params);1330}1331ANGLE_CAPTURE(GetTexParameterivRobustANGLE, isCallValid, context, targetPacked, pname,1332bufSize, length, params);1333}1334else1335{1336GenerateContextLostErrorOnCurrentGlobalContext();1337}1338}13391340void GL_APIENTRY GL_GetUniformfvRobustANGLE(GLuint program,1341GLint location,1342GLsizei bufSize,1343GLsizei *length,1344GLfloat *params)1345{1346Context *context = GetValidGlobalContext();1347EVENT(context, GLGetUniformfvRobustANGLE,1348"context = %d, program = %u, location = %d, bufSize = %d, length = 0x%016" PRIxPTR1349", params = 0x%016" PRIxPTR "",1350CID(context), program, location, bufSize, (uintptr_t)length, (uintptr_t)params);13511352if (context)1353{1354ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);1355UniformLocation locationPacked = PackParam<UniformLocation>(location);1356std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);1357bool isCallValid = (context->skipValidation() ||1358ValidateGetUniformfvRobustANGLE(context, programPacked, locationPacked,1359bufSize, length, params));1360if (isCallValid)1361{1362context->getUniformfvRobust(programPacked, locationPacked, bufSize, length, params);1363}1364ANGLE_CAPTURE(GetUniformfvRobustANGLE, isCallValid, context, programPacked, locationPacked,1365bufSize, length, params);1366}1367else1368{1369GenerateContextLostErrorOnCurrentGlobalContext();1370}1371}13721373void GL_APIENTRY GL_GetUniformivRobustANGLE(GLuint program,1374GLint location,1375GLsizei bufSize,1376GLsizei *length,1377GLint *params)1378{1379Context *context = GetValidGlobalContext();1380EVENT(context, GLGetUniformivRobustANGLE,1381"context = %d, program = %u, location = %d, bufSize = %d, length = 0x%016" PRIxPTR1382", params = 0x%016" PRIxPTR "",1383CID(context), program, location, bufSize, (uintptr_t)length, (uintptr_t)params);13841385if (context)1386{1387ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);1388UniformLocation locationPacked = PackParam<UniformLocation>(location);1389std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);1390bool isCallValid = (context->skipValidation() ||1391ValidateGetUniformivRobustANGLE(context, programPacked, locationPacked,1392bufSize, length, params));1393if (isCallValid)1394{1395context->getUniformivRobust(programPacked, locationPacked, bufSize, length, params);1396}1397ANGLE_CAPTURE(GetUniformivRobustANGLE, isCallValid, context, programPacked, locationPacked,1398bufSize, length, params);1399}1400else1401{1402GenerateContextLostErrorOnCurrentGlobalContext();1403}1404}14051406void GL_APIENTRY GL_GetVertexAttribfvRobustANGLE(GLuint index,1407GLenum pname,1408GLsizei bufSize,1409GLsizei *length,1410GLfloat *params)1411{1412Context *context = GetValidGlobalContext();1413EVENT(context, GLGetVertexAttribfvRobustANGLE,1414"context = %d, index = %u, pname = %s, bufSize = %d, length = 0x%016" PRIxPTR1415", params = 0x%016" PRIxPTR "",1416CID(context), index, GLenumToString(GLenumGroup::DefaultGroup, pname), bufSize,1417(uintptr_t)length, (uintptr_t)params);14181419if (context)1420{1421std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);1422bool isCallValid =1423(context->skipValidation() ||1424ValidateGetVertexAttribfvRobustANGLE(context, index, pname, bufSize, length, params));1425if (isCallValid)1426{1427context->getVertexAttribfvRobust(index, pname, bufSize, length, params);1428}1429ANGLE_CAPTURE(GetVertexAttribfvRobustANGLE, isCallValid, context, index, pname, bufSize,1430length, params);1431}1432else1433{1434GenerateContextLostErrorOnCurrentGlobalContext();1435}1436}14371438void GL_APIENTRY GL_GetVertexAttribivRobustANGLE(GLuint index,1439GLenum pname,1440GLsizei bufSize,1441GLsizei *length,1442GLint *params)1443{1444Context *context = GetValidGlobalContext();1445EVENT(context, GLGetVertexAttribivRobustANGLE,1446"context = %d, index = %u, pname = %s, bufSize = %d, length = 0x%016" PRIxPTR1447", params = 0x%016" PRIxPTR "",1448CID(context), index, GLenumToString(GLenumGroup::DefaultGroup, pname), bufSize,1449(uintptr_t)length, (uintptr_t)params);14501451if (context)1452{1453std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);1454bool isCallValid =1455(context->skipValidation() ||1456ValidateGetVertexAttribivRobustANGLE(context, index, pname, bufSize, length, params));1457if (isCallValid)1458{1459context->getVertexAttribivRobust(index, pname, bufSize, length, params);1460}1461ANGLE_CAPTURE(GetVertexAttribivRobustANGLE, isCallValid, context, index, pname, bufSize,1462length, params);1463}1464else1465{1466GenerateContextLostErrorOnCurrentGlobalContext();1467}1468}14691470void GL_APIENTRY GL_GetVertexAttribPointervRobustANGLE(GLuint index,1471GLenum pname,1472GLsizei bufSize,1473GLsizei *length,1474void **pointer)1475{1476Context *context = GetValidGlobalContext();1477EVENT(context, GLGetVertexAttribPointervRobustANGLE,1478"context = %d, index = %u, pname = %s, bufSize = %d, length = 0x%016" PRIxPTR1479", pointer = 0x%016" PRIxPTR "",1480CID(context), index, GLenumToString(GLenumGroup::DefaultGroup, pname), bufSize,1481(uintptr_t)length, (uintptr_t)pointer);14821483if (context)1484{1485std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);1486bool isCallValid =1487(context->skipValidation() || ValidateGetVertexAttribPointervRobustANGLE(1488context, index, pname, bufSize, length, pointer));1489if (isCallValid)1490{1491context->getVertexAttribPointervRobust(index, pname, bufSize, length, pointer);1492}1493ANGLE_CAPTURE(GetVertexAttribPointervRobustANGLE, isCallValid, context, index, pname,1494bufSize, length, pointer);1495}1496else1497{1498GenerateContextLostErrorOnCurrentGlobalContext();1499}1500}15011502void GL_APIENTRY GL_ReadPixelsRobustANGLE(GLint x,1503GLint y,1504GLsizei width,1505GLsizei height,1506GLenum format,1507GLenum type,1508GLsizei bufSize,1509GLsizei *length,1510GLsizei *columns,1511GLsizei *rows,1512void *pixels)1513{1514Context *context = GetValidGlobalContext();1515EVENT(context, GLReadPixelsRobustANGLE,1516"context = %d, x = %d, y = %d, width = %d, height = %d, format = %s, type = %s, bufSize "1517"= %d, length = 0x%016" PRIxPTR ", columns = 0x%016" PRIxPTR ", rows = 0x%016" PRIxPTR1518", pixels = 0x%016" PRIxPTR "",1519CID(context), x, y, width, height, GLenumToString(GLenumGroup::DefaultGroup, format),1520GLenumToString(GLenumGroup::DefaultGroup, type), bufSize, (uintptr_t)length,1521(uintptr_t)columns, (uintptr_t)rows, (uintptr_t)pixels);15221523if (context)1524{1525std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);1526bool isCallValid =1527(context->skipValidation() ||1528ValidateReadPixelsRobustANGLE(context, x, y, width, height, format, type, bufSize,1529length, columns, rows, pixels));1530if (isCallValid)1531{1532context->readPixelsRobust(x, y, width, height, format, type, bufSize, length, columns,1533rows, pixels);1534}1535ANGLE_CAPTURE(ReadPixelsRobustANGLE, isCallValid, context, x, y, width, height, format,1536type, bufSize, length, columns, rows, pixels);1537}1538else1539{1540GenerateContextLostErrorOnCurrentGlobalContext();1541}1542}15431544void GL_APIENTRY GL_TexImage2DRobustANGLE(GLenum target,1545GLint level,1546GLint internalformat,1547GLsizei width,1548GLsizei height,1549GLint border,1550GLenum format,1551GLenum type,1552GLsizei bufSize,1553const void *pixels)1554{1555Context *context = GetValidGlobalContext();1556EVENT(context, GLTexImage2DRobustANGLE,1557"context = %d, target = %s, level = %d, internalformat = %d, width = %d, height = %d, "1558"border = %d, format = %s, type = %s, bufSize = %d, pixels = 0x%016" PRIxPTR "",1559CID(context), GLenumToString(GLenumGroup::DefaultGroup, target), level, internalformat,1560width, height, border, GLenumToString(GLenumGroup::DefaultGroup, format),1561GLenumToString(GLenumGroup::DefaultGroup, type), bufSize, (uintptr_t)pixels);15621563if (context)1564{1565TextureTarget targetPacked = PackParam<TextureTarget>(target);1566std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);1567bool isCallValid =1568(context->skipValidation() ||1569ValidateTexImage2DRobustANGLE(context, targetPacked, level, internalformat, width,1570height, border, format, type, bufSize, pixels));1571if (isCallValid)1572{1573context->texImage2DRobust(targetPacked, level, internalformat, width, height, border,1574format, type, bufSize, pixels);1575}1576ANGLE_CAPTURE(TexImage2DRobustANGLE, isCallValid, context, targetPacked, level,1577internalformat, width, height, border, format, type, bufSize, pixels);1578}1579else1580{1581GenerateContextLostErrorOnCurrentGlobalContext();1582}1583}15841585void GL_APIENTRY GL_TexParameterfvRobustANGLE(GLenum target,1586GLenum pname,1587GLsizei bufSize,1588const GLfloat *params)1589{1590Context *context = GetValidGlobalContext();1591EVENT(context, GLTexParameterfvRobustANGLE,1592"context = %d, target = %s, pname = %s, bufSize = %d, params = 0x%016" PRIxPTR "",1593CID(context), GLenumToString(GLenumGroup::DefaultGroup, target),1594GLenumToString(GLenumGroup::DefaultGroup, pname), bufSize, (uintptr_t)params);15951596if (context)1597{1598TextureType targetPacked = PackParam<TextureType>(target);1599std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);1600bool isCallValid =1601(context->skipValidation() ||1602ValidateTexParameterfvRobustANGLE(context, targetPacked, pname, bufSize, params));1603if (isCallValid)1604{1605context->texParameterfvRobust(targetPacked, pname, bufSize, params);1606}1607ANGLE_CAPTURE(TexParameterfvRobustANGLE, isCallValid, context, targetPacked, pname, bufSize,1608params);1609}1610else1611{1612GenerateContextLostErrorOnCurrentGlobalContext();1613}1614}16151616void GL_APIENTRY GL_TexParameterivRobustANGLE(GLenum target,1617GLenum pname,1618GLsizei bufSize,1619const GLint *params)1620{1621Context *context = GetValidGlobalContext();1622EVENT(context, GLTexParameterivRobustANGLE,1623"context = %d, target = %s, pname = %s, bufSize = %d, params = 0x%016" PRIxPTR "",1624CID(context), GLenumToString(GLenumGroup::DefaultGroup, target),1625GLenumToString(GLenumGroup::DefaultGroup, pname), bufSize, (uintptr_t)params);16261627if (context)1628{1629TextureType targetPacked = PackParam<TextureType>(target);1630std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);1631bool isCallValid =1632(context->skipValidation() ||1633ValidateTexParameterivRobustANGLE(context, targetPacked, pname, bufSize, params));1634if (isCallValid)1635{1636context->texParameterivRobust(targetPacked, pname, bufSize, params);1637}1638ANGLE_CAPTURE(TexParameterivRobustANGLE, isCallValid, context, targetPacked, pname, bufSize,1639params);1640}1641else1642{1643GenerateContextLostErrorOnCurrentGlobalContext();1644}1645}16461647void GL_APIENTRY GL_TexSubImage2DRobustANGLE(GLenum target,1648GLint level,1649GLint xoffset,1650GLint yoffset,1651GLsizei width,1652GLsizei height,1653GLenum format,1654GLenum type,1655GLsizei bufSize,1656const void *pixels)1657{1658Context *context = GetValidGlobalContext();1659EVENT(context, GLTexSubImage2DRobustANGLE,1660"context = %d, target = %s, level = %d, xoffset = %d, yoffset = %d, width = %d, height = "1661"%d, format = %s, type = %s, bufSize = %d, pixels = 0x%016" PRIxPTR "",1662CID(context), GLenumToString(GLenumGroup::DefaultGroup, target), level, xoffset, yoffset,1663width, height, GLenumToString(GLenumGroup::DefaultGroup, format),1664GLenumToString(GLenumGroup::DefaultGroup, type), bufSize, (uintptr_t)pixels);16651666if (context)1667{1668TextureTarget targetPacked = PackParam<TextureTarget>(target);1669std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);1670bool isCallValid =1671(context->skipValidation() ||1672ValidateTexSubImage2DRobustANGLE(context, targetPacked, level, xoffset, yoffset, width,1673height, format, type, bufSize, pixels));1674if (isCallValid)1675{1676context->texSubImage2DRobust(targetPacked, level, xoffset, yoffset, width, height,1677format, type, bufSize, pixels);1678}1679ANGLE_CAPTURE(TexSubImage2DRobustANGLE, isCallValid, context, targetPacked, level, xoffset,1680yoffset, width, height, format, type, bufSize, pixels);1681}1682else1683{1684GenerateContextLostErrorOnCurrentGlobalContext();1685}1686}16871688void GL_APIENTRY GL_TexImage3DRobustANGLE(GLenum target,1689GLint level,1690GLint internalformat,1691GLsizei width,1692GLsizei height,1693GLsizei depth,1694GLint border,1695GLenum format,1696GLenum type,1697GLsizei bufSize,1698const void *pixels)1699{1700Context *context = GetValidGlobalContext();1701EVENT(context, GLTexImage3DRobustANGLE,1702"context = %d, target = %s, level = %d, internalformat = %d, width = %d, height = %d, "1703"depth = %d, border = %d, format = %s, type = %s, bufSize = %d, pixels = 0x%016" PRIxPTR1704"",1705CID(context), GLenumToString(GLenumGroup::DefaultGroup, target), level, internalformat,1706width, height, depth, border, GLenumToString(GLenumGroup::DefaultGroup, format),1707GLenumToString(GLenumGroup::DefaultGroup, type), bufSize, (uintptr_t)pixels);17081709if (context)1710{1711TextureTarget targetPacked = PackParam<TextureTarget>(target);1712std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);1713bool isCallValid =1714(context->skipValidation() ||1715ValidateTexImage3DRobustANGLE(context, targetPacked, level, internalformat, width,1716height, depth, border, format, type, bufSize, pixels));1717if (isCallValid)1718{1719context->texImage3DRobust(targetPacked, level, internalformat, width, height, depth,1720border, format, type, bufSize, pixels);1721}1722ANGLE_CAPTURE(TexImage3DRobustANGLE, isCallValid, context, targetPacked, level,1723internalformat, width, height, depth, border, format, type, bufSize, pixels);1724}1725else1726{1727GenerateContextLostErrorOnCurrentGlobalContext();1728}1729}17301731void GL_APIENTRY GL_TexSubImage3DRobustANGLE(GLenum target,1732GLint level,1733GLint xoffset,1734GLint yoffset,1735GLint zoffset,1736GLsizei width,1737GLsizei height,1738GLsizei depth,1739GLenum format,1740GLenum type,1741GLsizei bufSize,1742const void *pixels)1743{1744Context *context = GetValidGlobalContext();1745EVENT(1746context, GLTexSubImage3DRobustANGLE,1747"context = %d, target = %s, level = %d, xoffset = %d, yoffset = %d, zoffset = %d, width = "1748"%d, height = %d, depth = %d, format = %s, type = %s, bufSize = %d, pixels = 0x%016" PRIxPTR1749"",1750CID(context), GLenumToString(GLenumGroup::DefaultGroup, target), level, xoffset, yoffset,1751zoffset, width, height, depth, GLenumToString(GLenumGroup::DefaultGroup, format),1752GLenumToString(GLenumGroup::DefaultGroup, type), bufSize, (uintptr_t)pixels);17531754if (context)1755{1756TextureTarget targetPacked = PackParam<TextureTarget>(target);1757std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);1758bool isCallValid = (context->skipValidation() ||1759ValidateTexSubImage3DRobustANGLE(context, targetPacked, level, xoffset,1760yoffset, zoffset, width, height, depth,1761format, type, bufSize, pixels));1762if (isCallValid)1763{1764context->texSubImage3DRobust(targetPacked, level, xoffset, yoffset, zoffset, width,1765height, depth, format, type, bufSize, pixels);1766}1767ANGLE_CAPTURE(TexSubImage3DRobustANGLE, isCallValid, context, targetPacked, level, xoffset,1768yoffset, zoffset, width, height, depth, format, type, bufSize, pixels);1769}1770else1771{1772GenerateContextLostErrorOnCurrentGlobalContext();1773}1774}17751776void GL_APIENTRY GL_CompressedTexImage2DRobustANGLE(GLenum target,1777GLint level,1778GLenum internalformat,1779GLsizei width,1780GLsizei height,1781GLint border,1782GLsizei imageSize,1783GLsizei dataSize,1784const GLvoid *data)1785{1786Context *context = GetValidGlobalContext();1787EVENT(context, GLCompressedTexImage2DRobustANGLE,1788"context = %d, target = %s, level = %d, internalformat = %s, width = %d, height = %d, "1789"border = %d, imageSize = %d, dataSize = %d, data = 0x%016" PRIxPTR "",1790CID(context), GLenumToString(GLenumGroup::DefaultGroup, target), level,1791GLenumToString(GLenumGroup::DefaultGroup, internalformat), width, height, border,1792imageSize, dataSize, (uintptr_t)data);17931794if (context)1795{1796TextureTarget targetPacked = PackParam<TextureTarget>(target);1797std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);1798bool isCallValid =1799(context->skipValidation() || ValidateCompressedTexImage2DRobustANGLE(1800context, targetPacked, level, internalformat, width,1801height, border, imageSize, dataSize, data));1802if (isCallValid)1803{1804context->compressedTexImage2DRobust(targetPacked, level, internalformat, width, height,1805border, imageSize, dataSize, data);1806}1807ANGLE_CAPTURE(CompressedTexImage2DRobustANGLE, isCallValid, context, targetPacked, level,1808internalformat, width, height, border, imageSize, dataSize, data);1809}1810else1811{1812GenerateContextLostErrorOnCurrentGlobalContext();1813}1814}18151816void GL_APIENTRY GL_CompressedTexSubImage2DRobustANGLE(GLenum target,1817GLint level,1818GLsizei xoffset,1819GLsizei yoffset,1820GLsizei width,1821GLsizei height,1822GLenum format,1823GLsizei imageSize,1824GLsizei dataSize,1825const GLvoid *data)1826{1827Context *context = GetValidGlobalContext();1828EVENT(context, GLCompressedTexSubImage2DRobustANGLE,1829"context = %d, target = %s, level = %d, xoffset = %d, yoffset = %d, width = %d, height = "1830"%d, format = %s, imageSize = %d, dataSize = %d, data = 0x%016" PRIxPTR "",1831CID(context), GLenumToString(GLenumGroup::DefaultGroup, target), level, xoffset, yoffset,1832width, height, GLenumToString(GLenumGroup::DefaultGroup, format), imageSize, dataSize,1833(uintptr_t)data);18341835if (context)1836{1837TextureTarget targetPacked = PackParam<TextureTarget>(target);1838std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);1839bool isCallValid =1840(context->skipValidation() || ValidateCompressedTexSubImage2DRobustANGLE(1841context, targetPacked, level, xoffset, yoffset, width,1842height, format, imageSize, dataSize, data));1843if (isCallValid)1844{1845context->compressedTexSubImage2DRobust(targetPacked, level, xoffset, yoffset, width,1846height, format, imageSize, dataSize, data);1847}1848ANGLE_CAPTURE(CompressedTexSubImage2DRobustANGLE, isCallValid, context, targetPacked, level,1849xoffset, yoffset, width, height, format, imageSize, dataSize, data);1850}1851else1852{1853GenerateContextLostErrorOnCurrentGlobalContext();1854}1855}18561857void GL_APIENTRY GL_CompressedTexImage3DRobustANGLE(GLenum target,1858GLint level,1859GLenum internalformat,1860GLsizei width,1861GLsizei height,1862GLsizei depth,1863GLint border,1864GLsizei imageSize,1865GLsizei dataSize,1866const GLvoid *data)1867{1868Context *context = GetValidGlobalContext();1869EVENT(context, GLCompressedTexImage3DRobustANGLE,1870"context = %d, target = %s, level = %d, internalformat = %s, width = %d, height = %d, "1871"depth = %d, border = %d, imageSize = %d, dataSize = %d, data = 0x%016" PRIxPTR "",1872CID(context), GLenumToString(GLenumGroup::DefaultGroup, target), level,1873GLenumToString(GLenumGroup::DefaultGroup, internalformat), width, height, depth, border,1874imageSize, dataSize, (uintptr_t)data);18751876if (context)1877{1878TextureTarget targetPacked = PackParam<TextureTarget>(target);1879std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);1880bool isCallValid =1881(context->skipValidation() || ValidateCompressedTexImage3DRobustANGLE(1882context, targetPacked, level, internalformat, width,1883height, depth, border, imageSize, dataSize, data));1884if (isCallValid)1885{1886context->compressedTexImage3DRobust(targetPacked, level, internalformat, width, height,1887depth, border, imageSize, dataSize, data);1888}1889ANGLE_CAPTURE(CompressedTexImage3DRobustANGLE, isCallValid, context, targetPacked, level,1890internalformat, width, height, depth, border, imageSize, dataSize, data);1891}1892else1893{1894GenerateContextLostErrorOnCurrentGlobalContext();1895}1896}18971898void GL_APIENTRY GL_CompressedTexSubImage3DRobustANGLE(GLenum target,1899GLint level,1900GLint xoffset,1901GLint yoffset,1902GLint zoffset,1903GLsizei width,1904GLsizei height,1905GLsizei depth,1906GLenum format,1907GLsizei imageSize,1908GLsizei dataSize,1909const GLvoid *data)1910{1911Context *context = GetValidGlobalContext();1912EVENT(context, GLCompressedTexSubImage3DRobustANGLE,1913"context = %d, target = %s, level = %d, xoffset = %d, yoffset = %d, zoffset = %d, width "1914"= %d, height = %d, depth = %d, format = %s, imageSize = %d, dataSize = %d, data = "1915"0x%016" PRIxPTR "",1916CID(context), GLenumToString(GLenumGroup::DefaultGroup, target), level, xoffset, yoffset,1917zoffset, width, height, depth, GLenumToString(GLenumGroup::DefaultGroup, format),1918imageSize, dataSize, (uintptr_t)data);19191920if (context)1921{1922TextureTarget targetPacked = PackParam<TextureTarget>(target);1923std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);1924bool isCallValid = (context->skipValidation() ||1925ValidateCompressedTexSubImage3DRobustANGLE(1926context, targetPacked, level, xoffset, yoffset, zoffset, width,1927height, depth, format, imageSize, dataSize, data));1928if (isCallValid)1929{1930context->compressedTexSubImage3DRobust(targetPacked, level, xoffset, yoffset, zoffset,1931width, height, depth, format, imageSize,1932dataSize, data);1933}1934ANGLE_CAPTURE(CompressedTexSubImage3DRobustANGLE, isCallValid, context, targetPacked, level,1935xoffset, yoffset, zoffset, width, height, depth, format, imageSize, dataSize,1936data);1937}1938else1939{1940GenerateContextLostErrorOnCurrentGlobalContext();1941}1942}19431944void GL_APIENTRY GL_GetQueryivRobustANGLE(GLenum target,1945GLenum pname,1946GLsizei bufSize,1947GLsizei *length,1948GLint *params)1949{1950Context *context = GetValidGlobalContext();1951EVENT(context, GLGetQueryivRobustANGLE,1952"context = %d, target = %s, pname = %s, bufSize = %d, length = 0x%016" PRIxPTR1953", params = 0x%016" PRIxPTR "",1954CID(context), GLenumToString(GLenumGroup::DefaultGroup, target),1955GLenumToString(GLenumGroup::DefaultGroup, pname), bufSize, (uintptr_t)length,1956(uintptr_t)params);19571958if (context)1959{1960QueryType targetPacked = PackParam<QueryType>(target);1961std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);1962bool isCallValid =1963(context->skipValidation() ||1964ValidateGetQueryivRobustANGLE(context, targetPacked, pname, bufSize, length, params));1965if (isCallValid)1966{1967context->getQueryivRobust(targetPacked, pname, bufSize, length, params);1968}1969ANGLE_CAPTURE(GetQueryivRobustANGLE, isCallValid, context, targetPacked, pname, bufSize,1970length, params);1971}1972else1973{1974GenerateContextLostErrorOnCurrentGlobalContext();1975}1976}19771978void GL_APIENTRY GL_GetQueryObjectuivRobustANGLE(GLuint id,1979GLenum pname,1980GLsizei bufSize,1981GLsizei *length,1982GLuint *params)1983{1984Context *context = GetValidGlobalContext();1985EVENT(context, GLGetQueryObjectuivRobustANGLE,1986"context = %d, id = %u, pname = %s, bufSize = %d, length = 0x%016" PRIxPTR1987", params = 0x%016" PRIxPTR "",1988CID(context), id, GLenumToString(GLenumGroup::DefaultGroup, pname), bufSize,1989(uintptr_t)length, (uintptr_t)params);19901991if (context)1992{1993QueryID idPacked = PackParam<QueryID>(id);1994std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);1995bool isCallValid =1996(context->skipValidation() || ValidateGetQueryObjectuivRobustANGLE(1997context, idPacked, pname, bufSize, length, params));1998if (isCallValid)1999{2000context->getQueryObjectuivRobust(idPacked, pname, bufSize, length, params);2001}2002ANGLE_CAPTURE(GetQueryObjectuivRobustANGLE, isCallValid, context, idPacked, pname, bufSize,2003length, params);2004}2005else2006{2007GenerateContextLostErrorOnCurrentGlobalContext();2008}2009}20102011void GL_APIENTRY GL_GetBufferPointervRobustANGLE(GLenum target,2012GLenum pname,2013GLsizei bufSize,2014GLsizei *length,2015void **params)2016{2017Context *context = GetValidGlobalContext();2018EVENT(context, GLGetBufferPointervRobustANGLE,2019"context = %d, target = %s, pname = %s, bufSize = %d, length = 0x%016" PRIxPTR2020", params = 0x%016" PRIxPTR "",2021CID(context), GLenumToString(GLenumGroup::DefaultGroup, target),2022GLenumToString(GLenumGroup::DefaultGroup, pname), bufSize, (uintptr_t)length,2023(uintptr_t)params);20242025if (context)2026{2027BufferBinding targetPacked = PackParam<BufferBinding>(target);2028std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);2029bool isCallValid = (context->skipValidation() ||2030ValidateGetBufferPointervRobustANGLE(context, targetPacked, pname,2031bufSize, length, params));2032if (isCallValid)2033{2034context->getBufferPointervRobust(targetPacked, pname, bufSize, length, params);2035}2036ANGLE_CAPTURE(GetBufferPointervRobustANGLE, isCallValid, context, targetPacked, pname,2037bufSize, length, params);2038}2039else2040{2041GenerateContextLostErrorOnCurrentGlobalContext();2042}2043}20442045void GL_APIENTRY GL_GetIntegeri_vRobustANGLE(GLenum target,2046GLuint index,2047GLsizei bufSize,2048GLsizei *length,2049GLint *data)2050{2051Context *context = GetValidGlobalContext();2052EVENT(context, GLGetIntegeri_vRobustANGLE,2053"context = %d, target = %s, index = %u, bufSize = %d, length = 0x%016" PRIxPTR2054", data = 0x%016" PRIxPTR "",2055CID(context), GLenumToString(GLenumGroup::DefaultGroup, target), index, bufSize,2056(uintptr_t)length, (uintptr_t)data);20572058if (context)2059{2060std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);2061bool isCallValid =2062(context->skipValidation() ||2063ValidateGetIntegeri_vRobustANGLE(context, target, index, bufSize, length, data));2064if (isCallValid)2065{2066context->getIntegeri_vRobust(target, index, bufSize, length, data);2067}2068ANGLE_CAPTURE(GetIntegeri_vRobustANGLE, isCallValid, context, target, index, bufSize,2069length, data);2070}2071else2072{2073GenerateContextLostErrorOnCurrentGlobalContext();2074}2075}20762077void GL_APIENTRY GL_GetInternalformativRobustANGLE(GLenum target,2078GLenum internalformat,2079GLenum pname,2080GLsizei bufSize,2081GLsizei *length,2082GLint *params)2083{2084Context *context = GetValidGlobalContext();2085EVENT(context, GLGetInternalformativRobustANGLE,2086"context = %d, target = %s, internalformat = %s, pname = %s, bufSize = %d, length = "2087"0x%016" PRIxPTR ", params = 0x%016" PRIxPTR "",2088CID(context), GLenumToString(GLenumGroup::DefaultGroup, target),2089GLenumToString(GLenumGroup::DefaultGroup, internalformat),2090GLenumToString(GLenumGroup::DefaultGroup, pname), bufSize, (uintptr_t)length,2091(uintptr_t)params);20922093if (context)2094{2095std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);2096bool isCallValid = (context->skipValidation() ||2097ValidateGetInternalformativRobustANGLE(context, target, internalformat,2098pname, bufSize, length, params));2099if (isCallValid)2100{2101context->getInternalformativRobust(target, internalformat, pname, bufSize, length,2102params);2103}2104ANGLE_CAPTURE(GetInternalformativRobustANGLE, isCallValid, context, target, internalformat,2105pname, bufSize, length, params);2106}2107else2108{2109GenerateContextLostErrorOnCurrentGlobalContext();2110}2111}21122113void GL_APIENTRY GL_GetVertexAttribIivRobustANGLE(GLuint index,2114GLenum pname,2115GLsizei bufSize,2116GLsizei *length,2117GLint *params)2118{2119Context *context = GetValidGlobalContext();2120EVENT(context, GLGetVertexAttribIivRobustANGLE,2121"context = %d, index = %u, pname = %s, bufSize = %d, length = 0x%016" PRIxPTR2122", params = 0x%016" PRIxPTR "",2123CID(context), index, GLenumToString(GLenumGroup::DefaultGroup, pname), bufSize,2124(uintptr_t)length, (uintptr_t)params);21252126if (context)2127{2128std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);2129bool isCallValid =2130(context->skipValidation() ||2131ValidateGetVertexAttribIivRobustANGLE(context, index, pname, bufSize, length, params));2132if (isCallValid)2133{2134context->getVertexAttribIivRobust(index, pname, bufSize, length, params);2135}2136ANGLE_CAPTURE(GetVertexAttribIivRobustANGLE, isCallValid, context, index, pname, bufSize,2137length, params);2138}2139else2140{2141GenerateContextLostErrorOnCurrentGlobalContext();2142}2143}21442145void GL_APIENTRY GL_GetVertexAttribIuivRobustANGLE(GLuint index,2146GLenum pname,2147GLsizei bufSize,2148GLsizei *length,2149GLuint *params)2150{2151Context *context = GetValidGlobalContext();2152EVENT(context, GLGetVertexAttribIuivRobustANGLE,2153"context = %d, index = %u, pname = %s, bufSize = %d, length = 0x%016" PRIxPTR2154", params = 0x%016" PRIxPTR "",2155CID(context), index, GLenumToString(GLenumGroup::DefaultGroup, pname), bufSize,2156(uintptr_t)length, (uintptr_t)params);21572158if (context)2159{2160std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);2161bool isCallValid =2162(context->skipValidation() || ValidateGetVertexAttribIuivRobustANGLE(2163context, index, pname, bufSize, length, params));2164if (isCallValid)2165{2166context->getVertexAttribIuivRobust(index, pname, bufSize, length, params);2167}2168ANGLE_CAPTURE(GetVertexAttribIuivRobustANGLE, isCallValid, context, index, pname, bufSize,2169length, params);2170}2171else2172{2173GenerateContextLostErrorOnCurrentGlobalContext();2174}2175}21762177void GL_APIENTRY GL_GetUniformuivRobustANGLE(GLuint program,2178GLint location,2179GLsizei bufSize,2180GLsizei *length,2181GLuint *params)2182{2183Context *context = GetValidGlobalContext();2184EVENT(context, GLGetUniformuivRobustANGLE,2185"context = %d, program = %u, location = %d, bufSize = %d, length = 0x%016" PRIxPTR2186", params = 0x%016" PRIxPTR "",2187CID(context), program, location, bufSize, (uintptr_t)length, (uintptr_t)params);21882189if (context)2190{2191ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);2192UniformLocation locationPacked = PackParam<UniformLocation>(location);2193std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);2194bool isCallValid = (context->skipValidation() ||2195ValidateGetUniformuivRobustANGLE(context, programPacked, locationPacked,2196bufSize, length, params));2197if (isCallValid)2198{2199context->getUniformuivRobust(programPacked, locationPacked, bufSize, length, params);2200}2201ANGLE_CAPTURE(GetUniformuivRobustANGLE, isCallValid, context, programPacked, locationPacked,2202bufSize, length, params);2203}2204else2205{2206GenerateContextLostErrorOnCurrentGlobalContext();2207}2208}22092210void GL_APIENTRY GL_GetActiveUniformBlockivRobustANGLE(GLuint program,2211GLuint uniformBlockIndex,2212GLenum pname,2213GLsizei bufSize,2214GLsizei *length,2215GLint *params)2216{2217Context *context = GetValidGlobalContext();2218EVENT(context, GLGetActiveUniformBlockivRobustANGLE,2219"context = %d, program = %u, uniformBlockIndex = %u, pname = %s, bufSize = %d, length = "2220"0x%016" PRIxPTR ", params = 0x%016" PRIxPTR "",2221CID(context), program, uniformBlockIndex,2222GLenumToString(GLenumGroup::DefaultGroup, pname), bufSize, (uintptr_t)length,2223(uintptr_t)params);22242225if (context)2226{2227ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);2228UniformBlockIndex uniformBlockIndexPacked = PackParam<UniformBlockIndex>(uniformBlockIndex);2229std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);2230bool isCallValid =2231(context->skipValidation() ||2232ValidateGetActiveUniformBlockivRobustANGLE(2233context, programPacked, uniformBlockIndexPacked, pname, bufSize, length, params));2234if (isCallValid)2235{2236context->getActiveUniformBlockivRobust(programPacked, uniformBlockIndexPacked, pname,2237bufSize, length, params);2238}2239ANGLE_CAPTURE(GetActiveUniformBlockivRobustANGLE, isCallValid, context, programPacked,2240uniformBlockIndexPacked, pname, bufSize, length, params);2241}2242else2243{2244GenerateContextLostErrorOnCurrentGlobalContext();2245}2246}22472248void GL_APIENTRY GL_GetInteger64vRobustANGLE(GLenum pname,2249GLsizei bufSize,2250GLsizei *length,2251GLint64 *data)2252{2253Context *context = GetValidGlobalContext();2254EVENT(context, GLGetInteger64vRobustANGLE,2255"context = %d, pname = %s, bufSize = %d, length = 0x%016" PRIxPTR2256", data = 0x%016" PRIxPTR "",2257CID(context), GLenumToString(GLenumGroup::DefaultGroup, pname), bufSize,2258(uintptr_t)length, (uintptr_t)data);22592260if (context)2261{2262std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);2263bool isCallValid =2264(context->skipValidation() ||2265ValidateGetInteger64vRobustANGLE(context, pname, bufSize, length, data));2266if (isCallValid)2267{2268context->getInteger64vRobust(pname, bufSize, length, data);2269}2270ANGLE_CAPTURE(GetInteger64vRobustANGLE, isCallValid, context, pname, bufSize, length, data);2271}2272else2273{2274GenerateContextLostErrorOnCurrentGlobalContext();2275}2276}22772278void GL_APIENTRY GL_GetInteger64i_vRobustANGLE(GLenum target,2279GLuint index,2280GLsizei bufSize,2281GLsizei *length,2282GLint64 *data)2283{2284Context *context = GetValidGlobalContext();2285EVENT(context, GLGetInteger64i_vRobustANGLE,2286"context = %d, target = %s, index = %u, bufSize = %d, length = 0x%016" PRIxPTR2287", data = 0x%016" PRIxPTR "",2288CID(context), GLenumToString(GLenumGroup::DefaultGroup, target), index, bufSize,2289(uintptr_t)length, (uintptr_t)data);22902291if (context)2292{2293std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);2294bool isCallValid =2295(context->skipValidation() ||2296ValidateGetInteger64i_vRobustANGLE(context, target, index, bufSize, length, data));2297if (isCallValid)2298{2299context->getInteger64i_vRobust(target, index, bufSize, length, data);2300}2301ANGLE_CAPTURE(GetInteger64i_vRobustANGLE, isCallValid, context, target, index, bufSize,2302length, data);2303}2304else2305{2306GenerateContextLostErrorOnCurrentGlobalContext();2307}2308}23092310void GL_APIENTRY GL_GetBufferParameteri64vRobustANGLE(GLenum target,2311GLenum pname,2312GLsizei bufSize,2313GLsizei *length,2314GLint64 *params)2315{2316Context *context = GetValidGlobalContext();2317EVENT(context, GLGetBufferParameteri64vRobustANGLE,2318"context = %d, target = %s, pname = %s, bufSize = %d, length = 0x%016" PRIxPTR2319", params = 0x%016" PRIxPTR "",2320CID(context), GLenumToString(GLenumGroup::DefaultGroup, target),2321GLenumToString(GLenumGroup::DefaultGroup, pname), bufSize, (uintptr_t)length,2322(uintptr_t)params);23232324if (context)2325{2326BufferBinding targetPacked = PackParam<BufferBinding>(target);2327std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);2328bool isCallValid = (context->skipValidation() ||2329ValidateGetBufferParameteri64vRobustANGLE(context, targetPacked, pname,2330bufSize, length, params));2331if (isCallValid)2332{2333context->getBufferParameteri64vRobust(targetPacked, pname, bufSize, length, params);2334}2335ANGLE_CAPTURE(GetBufferParameteri64vRobustANGLE, isCallValid, context, targetPacked, pname,2336bufSize, length, params);2337}2338else2339{2340GenerateContextLostErrorOnCurrentGlobalContext();2341}2342}23432344void GL_APIENTRY GL_SamplerParameterivRobustANGLE(GLuint sampler,2345GLuint pname,2346GLsizei bufSize,2347const GLint *param)2348{2349Context *context = GetValidGlobalContext();2350EVENT(context, GLSamplerParameterivRobustANGLE,2351"context = %d, sampler = %u, pname = %u, bufSize = %d, param = 0x%016" PRIxPTR "",2352CID(context), sampler, pname, bufSize, (uintptr_t)param);23532354if (context)2355{2356SamplerID samplerPacked = PackParam<SamplerID>(sampler);2357std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);2358bool isCallValid =2359(context->skipValidation() ||2360ValidateSamplerParameterivRobustANGLE(context, samplerPacked, pname, bufSize, param));2361if (isCallValid)2362{2363context->samplerParameterivRobust(samplerPacked, pname, bufSize, param);2364}2365ANGLE_CAPTURE(SamplerParameterivRobustANGLE, isCallValid, context, samplerPacked, pname,2366bufSize, param);2367}2368else2369{2370GenerateContextLostErrorOnCurrentGlobalContext();2371}2372}23732374void GL_APIENTRY GL_SamplerParameterfvRobustANGLE(GLuint sampler,2375GLenum pname,2376GLsizei bufSize,2377const GLfloat *param)2378{2379Context *context = GetValidGlobalContext();2380EVENT(context, GLSamplerParameterfvRobustANGLE,2381"context = %d, sampler = %u, pname = %s, bufSize = %d, param = 0x%016" PRIxPTR "",2382CID(context), sampler, GLenumToString(GLenumGroup::DefaultGroup, pname), bufSize,2383(uintptr_t)param);23842385if (context)2386{2387SamplerID samplerPacked = PackParam<SamplerID>(sampler);2388std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);2389bool isCallValid =2390(context->skipValidation() ||2391ValidateSamplerParameterfvRobustANGLE(context, samplerPacked, pname, bufSize, param));2392if (isCallValid)2393{2394context->samplerParameterfvRobust(samplerPacked, pname, bufSize, param);2395}2396ANGLE_CAPTURE(SamplerParameterfvRobustANGLE, isCallValid, context, samplerPacked, pname,2397bufSize, param);2398}2399else2400{2401GenerateContextLostErrorOnCurrentGlobalContext();2402}2403}24042405void GL_APIENTRY GL_GetSamplerParameterivRobustANGLE(GLuint sampler,2406GLenum pname,2407GLsizei bufSize,2408GLsizei *length,2409GLint *params)2410{2411Context *context = GetValidGlobalContext();2412EVENT(context, GLGetSamplerParameterivRobustANGLE,2413"context = %d, sampler = %u, pname = %s, bufSize = %d, length = 0x%016" PRIxPTR2414", params = 0x%016" PRIxPTR "",2415CID(context), sampler, GLenumToString(GLenumGroup::DefaultGroup, pname), bufSize,2416(uintptr_t)length, (uintptr_t)params);24172418if (context)2419{2420SamplerID samplerPacked = PackParam<SamplerID>(sampler);2421std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);2422bool isCallValid = (context->skipValidation() ||2423ValidateGetSamplerParameterivRobustANGLE(context, samplerPacked, pname,2424bufSize, length, params));2425if (isCallValid)2426{2427context->getSamplerParameterivRobust(samplerPacked, pname, bufSize, length, params);2428}2429ANGLE_CAPTURE(GetSamplerParameterivRobustANGLE, isCallValid, context, samplerPacked, pname,2430bufSize, length, params);2431}2432else2433{2434GenerateContextLostErrorOnCurrentGlobalContext();2435}2436}24372438void GL_APIENTRY GL_GetSamplerParameterfvRobustANGLE(GLuint sampler,2439GLenum pname,2440GLsizei bufSize,2441GLsizei *length,2442GLfloat *params)2443{2444Context *context = GetValidGlobalContext();2445EVENT(context, GLGetSamplerParameterfvRobustANGLE,2446"context = %d, sampler = %u, pname = %s, bufSize = %d, length = 0x%016" PRIxPTR2447", params = 0x%016" PRIxPTR "",2448CID(context), sampler, GLenumToString(GLenumGroup::DefaultGroup, pname), bufSize,2449(uintptr_t)length, (uintptr_t)params);24502451if (context)2452{2453SamplerID samplerPacked = PackParam<SamplerID>(sampler);2454std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);2455bool isCallValid = (context->skipValidation() ||2456ValidateGetSamplerParameterfvRobustANGLE(context, samplerPacked, pname,2457bufSize, length, params));2458if (isCallValid)2459{2460context->getSamplerParameterfvRobust(samplerPacked, pname, bufSize, length, params);2461}2462ANGLE_CAPTURE(GetSamplerParameterfvRobustANGLE, isCallValid, context, samplerPacked, pname,2463bufSize, length, params);2464}2465else2466{2467GenerateContextLostErrorOnCurrentGlobalContext();2468}2469}24702471void GL_APIENTRY GL_GetFramebufferParameterivRobustANGLE(GLenum target,2472GLenum pname,2473GLsizei bufSize,2474GLsizei *length,2475GLint *params)2476{2477Context *context = GetValidGlobalContext();2478EVENT(context, GLGetFramebufferParameterivRobustANGLE,2479"context = %d, target = %s, pname = %s, bufSize = %d, length = 0x%016" PRIxPTR2480", params = 0x%016" PRIxPTR "",2481CID(context), GLenumToString(GLenumGroup::DefaultGroup, target),2482GLenumToString(GLenumGroup::DefaultGroup, pname), bufSize, (uintptr_t)length,2483(uintptr_t)params);24842485if (context)2486{2487std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);2488bool isCallValid =2489(context->skipValidation() || ValidateGetFramebufferParameterivRobustANGLE(2490context, target, pname, bufSize, length, params));2491if (isCallValid)2492{2493context->getFramebufferParameterivRobust(target, pname, bufSize, length, params);2494}2495ANGLE_CAPTURE(GetFramebufferParameterivRobustANGLE, isCallValid, context, target, pname,2496bufSize, length, params);2497}2498else2499{2500GenerateContextLostErrorOnCurrentGlobalContext();2501}2502}25032504void GL_APIENTRY GL_GetProgramInterfaceivRobustANGLE(GLuint program,2505GLenum programInterface,2506GLenum pname,2507GLsizei bufSize,2508GLsizei *length,2509GLint *params)2510{2511Context *context = GetValidGlobalContext();2512EVENT(context, GLGetProgramInterfaceivRobustANGLE,2513"context = %d, program = %u, programInterface = %s, pname = %s, bufSize = %d, length = "2514"0x%016" PRIxPTR ", params = 0x%016" PRIxPTR "",2515CID(context), program, GLenumToString(GLenumGroup::DefaultGroup, programInterface),2516GLenumToString(GLenumGroup::DefaultGroup, pname), bufSize, (uintptr_t)length,2517(uintptr_t)params);25182519if (context)2520{2521ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);2522std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);2523bool isCallValid =2524(context->skipValidation() ||2525ValidateGetProgramInterfaceivRobustANGLE(context, programPacked, programInterface,2526pname, bufSize, length, params));2527if (isCallValid)2528{2529context->getProgramInterfaceivRobust(programPacked, programInterface, pname, bufSize,2530length, params);2531}2532ANGLE_CAPTURE(GetProgramInterfaceivRobustANGLE, isCallValid, context, programPacked,2533programInterface, pname, bufSize, length, params);2534}2535else2536{2537GenerateContextLostErrorOnCurrentGlobalContext();2538}2539}25402541void GL_APIENTRY GL_GetBooleani_vRobustANGLE(GLenum target,2542GLuint index,2543GLsizei bufSize,2544GLsizei *length,2545GLboolean *data)2546{2547Context *context = GetValidGlobalContext();2548EVENT(context, GLGetBooleani_vRobustANGLE,2549"context = %d, target = %s, index = %u, bufSize = %d, length = 0x%016" PRIxPTR2550", data = 0x%016" PRIxPTR "",2551CID(context), GLenumToString(GLenumGroup::DefaultGroup, target), index, bufSize,2552(uintptr_t)length, (uintptr_t)data);25532554if (context)2555{2556std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);2557bool isCallValid =2558(context->skipValidation() ||2559ValidateGetBooleani_vRobustANGLE(context, target, index, bufSize, length, data));2560if (isCallValid)2561{2562context->getBooleani_vRobust(target, index, bufSize, length, data);2563}2564ANGLE_CAPTURE(GetBooleani_vRobustANGLE, isCallValid, context, target, index, bufSize,2565length, data);2566}2567else2568{2569GenerateContextLostErrorOnCurrentGlobalContext();2570}2571}25722573void GL_APIENTRY GL_GetMultisamplefvRobustANGLE(GLenum pname,2574GLuint index,2575GLsizei bufSize,2576GLsizei *length,2577GLfloat *val)2578{2579Context *context = GetValidGlobalContext();2580EVENT(context, GLGetMultisamplefvRobustANGLE,2581"context = %d, pname = %s, index = %u, bufSize = %d, length = 0x%016" PRIxPTR2582", val = 0x%016" PRIxPTR "",2583CID(context), GLenumToString(GLenumGroup::DefaultGroup, pname), index, bufSize,2584(uintptr_t)length, (uintptr_t)val);25852586if (context)2587{2588std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);2589bool isCallValid =2590(context->skipValidation() ||2591ValidateGetMultisamplefvRobustANGLE(context, pname, index, bufSize, length, val));2592if (isCallValid)2593{2594context->getMultisamplefvRobust(pname, index, bufSize, length, val);2595}2596ANGLE_CAPTURE(GetMultisamplefvRobustANGLE, isCallValid, context, pname, index, bufSize,2597length, val);2598}2599else2600{2601GenerateContextLostErrorOnCurrentGlobalContext();2602}2603}26042605void GL_APIENTRY GL_GetTexLevelParameterivRobustANGLE(GLenum target,2606GLint level,2607GLenum pname,2608GLsizei bufSize,2609GLsizei *length,2610GLint *params)2611{2612Context *context = GetValidGlobalContext();2613EVENT(context, GLGetTexLevelParameterivRobustANGLE,2614"context = %d, target = %s, level = %d, pname = %s, bufSize = %d, length = 0x%016" PRIxPTR2615", params = 0x%016" PRIxPTR "",2616CID(context), GLenumToString(GLenumGroup::DefaultGroup, target), level,2617GLenumToString(GLenumGroup::DefaultGroup, pname), bufSize, (uintptr_t)length,2618(uintptr_t)params);26192620if (context)2621{2622TextureTarget targetPacked = PackParam<TextureTarget>(target);2623std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);2624bool isCallValid = (context->skipValidation() ||2625ValidateGetTexLevelParameterivRobustANGLE(2626context, targetPacked, level, pname, bufSize, length, params));2627if (isCallValid)2628{2629context->getTexLevelParameterivRobust(targetPacked, level, pname, bufSize, length,2630params);2631}2632ANGLE_CAPTURE(GetTexLevelParameterivRobustANGLE, isCallValid, context, targetPacked, level,2633pname, bufSize, length, params);2634}2635else2636{2637GenerateContextLostErrorOnCurrentGlobalContext();2638}2639}26402641void GL_APIENTRY GL_GetTexLevelParameterfvRobustANGLE(GLenum target,2642GLint level,2643GLenum pname,2644GLsizei bufSize,2645GLsizei *length,2646GLfloat *params)2647{2648Context *context = GetValidGlobalContext();2649EVENT(context, GLGetTexLevelParameterfvRobustANGLE,2650"context = %d, target = %s, level = %d, pname = %s, bufSize = %d, length = 0x%016" PRIxPTR2651", params = 0x%016" PRIxPTR "",2652CID(context), GLenumToString(GLenumGroup::DefaultGroup, target), level,2653GLenumToString(GLenumGroup::DefaultGroup, pname), bufSize, (uintptr_t)length,2654(uintptr_t)params);26552656if (context)2657{2658TextureTarget targetPacked = PackParam<TextureTarget>(target);2659std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);2660bool isCallValid = (context->skipValidation() ||2661ValidateGetTexLevelParameterfvRobustANGLE(2662context, targetPacked, level, pname, bufSize, length, params));2663if (isCallValid)2664{2665context->getTexLevelParameterfvRobust(targetPacked, level, pname, bufSize, length,2666params);2667}2668ANGLE_CAPTURE(GetTexLevelParameterfvRobustANGLE, isCallValid, context, targetPacked, level,2669pname, bufSize, length, params);2670}2671else2672{2673GenerateContextLostErrorOnCurrentGlobalContext();2674}2675}26762677void GL_APIENTRY GL_GetPointervRobustANGLERobustANGLE(GLenum pname,2678GLsizei bufSize,2679GLsizei *length,2680void **params)2681{2682Context *context = GetValidGlobalContext();2683EVENT(context, GLGetPointervRobustANGLERobustANGLE,2684"context = %d, pname = %s, bufSize = %d, length = 0x%016" PRIxPTR2685", params = 0x%016" PRIxPTR "",2686CID(context), GLenumToString(GLenumGroup::DefaultGroup, pname), bufSize,2687(uintptr_t)length, (uintptr_t)params);26882689if (context)2690{2691std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);2692bool isCallValid =2693(context->skipValidation() ||2694ValidateGetPointervRobustANGLERobustANGLE(context, pname, bufSize, length, params));2695if (isCallValid)2696{2697context->getPointervRobustANGLERobust(pname, bufSize, length, params);2698}2699ANGLE_CAPTURE(GetPointervRobustANGLERobustANGLE, isCallValid, context, pname, bufSize,2700length, params);2701}2702else2703{2704GenerateContextLostErrorOnCurrentGlobalContext();2705}2706}27072708void GL_APIENTRY GL_ReadnPixelsRobustANGLE(GLint x,2709GLint y,2710GLsizei width,2711GLsizei height,2712GLenum format,2713GLenum type,2714GLsizei bufSize,2715GLsizei *length,2716GLsizei *columns,2717GLsizei *rows,2718void *data)2719{2720Context *context = GetValidGlobalContext();2721EVENT(context, GLReadnPixelsRobustANGLE,2722"context = %d, x = %d, y = %d, width = %d, height = %d, format = %s, type = %s, bufSize "2723"= %d, length = 0x%016" PRIxPTR ", columns = 0x%016" PRIxPTR ", rows = 0x%016" PRIxPTR2724", data = 0x%016" PRIxPTR "",2725CID(context), x, y, width, height, GLenumToString(GLenumGroup::DefaultGroup, format),2726GLenumToString(GLenumGroup::DefaultGroup, type), bufSize, (uintptr_t)length,2727(uintptr_t)columns, (uintptr_t)rows, (uintptr_t)data);27282729if (context)2730{2731std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);2732bool isCallValid =2733(context->skipValidation() ||2734ValidateReadnPixelsRobustANGLE(context, x, y, width, height, format, type, bufSize,2735length, columns, rows, data));2736if (isCallValid)2737{2738context->readnPixelsRobust(x, y, width, height, format, type, bufSize, length, columns,2739rows, data);2740}2741ANGLE_CAPTURE(ReadnPixelsRobustANGLE, isCallValid, context, x, y, width, height, format,2742type, bufSize, length, columns, rows, data);2743}2744else2745{2746GenerateContextLostErrorOnCurrentGlobalContext();2747}2748}27492750void GL_APIENTRY GL_GetnUniformfvRobustANGLE(GLuint program,2751GLint location,2752GLsizei bufSize,2753GLsizei *length,2754GLfloat *params)2755{2756Context *context = GetValidGlobalContext();2757EVENT(context, GLGetnUniformfvRobustANGLE,2758"context = %d, program = %u, location = %d, bufSize = %d, length = 0x%016" PRIxPTR2759", params = 0x%016" PRIxPTR "",2760CID(context), program, location, bufSize, (uintptr_t)length, (uintptr_t)params);27612762if (context)2763{2764ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);2765UniformLocation locationPacked = PackParam<UniformLocation>(location);2766std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);2767bool isCallValid = (context->skipValidation() ||2768ValidateGetnUniformfvRobustANGLE(context, programPacked, locationPacked,2769bufSize, length, params));2770if (isCallValid)2771{2772context->getnUniformfvRobust(programPacked, locationPacked, bufSize, length, params);2773}2774ANGLE_CAPTURE(GetnUniformfvRobustANGLE, isCallValid, context, programPacked, locationPacked,2775bufSize, length, params);2776}2777else2778{2779GenerateContextLostErrorOnCurrentGlobalContext();2780}2781}27822783void GL_APIENTRY GL_GetnUniformivRobustANGLE(GLuint program,2784GLint location,2785GLsizei bufSize,2786GLsizei *length,2787GLint *params)2788{2789Context *context = GetValidGlobalContext();2790EVENT(context, GLGetnUniformivRobustANGLE,2791"context = %d, program = %u, location = %d, bufSize = %d, length = 0x%016" PRIxPTR2792", params = 0x%016" PRIxPTR "",2793CID(context), program, location, bufSize, (uintptr_t)length, (uintptr_t)params);27942795if (context)2796{2797ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);2798UniformLocation locationPacked = PackParam<UniformLocation>(location);2799std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);2800bool isCallValid = (context->skipValidation() ||2801ValidateGetnUniformivRobustANGLE(context, programPacked, locationPacked,2802bufSize, length, params));2803if (isCallValid)2804{2805context->getnUniformivRobust(programPacked, locationPacked, bufSize, length, params);2806}2807ANGLE_CAPTURE(GetnUniformivRobustANGLE, isCallValid, context, programPacked, locationPacked,2808bufSize, length, params);2809}2810else2811{2812GenerateContextLostErrorOnCurrentGlobalContext();2813}2814}28152816void GL_APIENTRY GL_GetnUniformuivRobustANGLE(GLuint program,2817GLint location,2818GLsizei bufSize,2819GLsizei *length,2820GLuint *params)2821{2822Context *context = GetValidGlobalContext();2823EVENT(context, GLGetnUniformuivRobustANGLE,2824"context = %d, program = %u, location = %d, bufSize = %d, length = 0x%016" PRIxPTR2825", params = 0x%016" PRIxPTR "",2826CID(context), program, location, bufSize, (uintptr_t)length, (uintptr_t)params);28272828if (context)2829{2830ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);2831UniformLocation locationPacked = PackParam<UniformLocation>(location);2832std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);2833bool isCallValid = (context->skipValidation() ||2834ValidateGetnUniformuivRobustANGLE(2835context, programPacked, locationPacked, bufSize, length, params));2836if (isCallValid)2837{2838context->getnUniformuivRobust(programPacked, locationPacked, bufSize, length, params);2839}2840ANGLE_CAPTURE(GetnUniformuivRobustANGLE, isCallValid, context, programPacked,2841locationPacked, bufSize, length, params);2842}2843else2844{2845GenerateContextLostErrorOnCurrentGlobalContext();2846}2847}28482849void GL_APIENTRY GL_TexParameterIivRobustANGLE(GLenum target,2850GLenum pname,2851GLsizei bufSize,2852const GLint *params)2853{2854Context *context = GetValidGlobalContext();2855EVENT(context, GLTexParameterIivRobustANGLE,2856"context = %d, target = %s, pname = %s, bufSize = %d, params = 0x%016" PRIxPTR "",2857CID(context), GLenumToString(GLenumGroup::DefaultGroup, target),2858GLenumToString(GLenumGroup::DefaultGroup, pname), bufSize, (uintptr_t)params);28592860if (context)2861{2862TextureType targetPacked = PackParam<TextureType>(target);2863std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);2864bool isCallValid =2865(context->skipValidation() ||2866ValidateTexParameterIivRobustANGLE(context, targetPacked, pname, bufSize, params));2867if (isCallValid)2868{2869context->texParameterIivRobust(targetPacked, pname, bufSize, params);2870}2871ANGLE_CAPTURE(TexParameterIivRobustANGLE, isCallValid, context, targetPacked, pname,2872bufSize, params);2873}2874else2875{2876GenerateContextLostErrorOnCurrentGlobalContext();2877}2878}28792880void GL_APIENTRY GL_TexParameterIuivRobustANGLE(GLenum target,2881GLenum pname,2882GLsizei bufSize,2883const GLuint *params)2884{2885Context *context = GetValidGlobalContext();2886EVENT(context, GLTexParameterIuivRobustANGLE,2887"context = %d, target = %s, pname = %s, bufSize = %d, params = 0x%016" PRIxPTR "",2888CID(context), GLenumToString(GLenumGroup::DefaultGroup, target),2889GLenumToString(GLenumGroup::DefaultGroup, pname), bufSize, (uintptr_t)params);28902891if (context)2892{2893TextureType targetPacked = PackParam<TextureType>(target);2894std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);2895bool isCallValid =2896(context->skipValidation() ||2897ValidateTexParameterIuivRobustANGLE(context, targetPacked, pname, bufSize, params));2898if (isCallValid)2899{2900context->texParameterIuivRobust(targetPacked, pname, bufSize, params);2901}2902ANGLE_CAPTURE(TexParameterIuivRobustANGLE, isCallValid, context, targetPacked, pname,2903bufSize, params);2904}2905else2906{2907GenerateContextLostErrorOnCurrentGlobalContext();2908}2909}29102911void GL_APIENTRY GL_GetTexParameterIivRobustANGLE(GLenum target,2912GLenum pname,2913GLsizei bufSize,2914GLsizei *length,2915GLint *params)2916{2917Context *context = GetValidGlobalContext();2918EVENT(context, GLGetTexParameterIivRobustANGLE,2919"context = %d, target = %s, pname = %s, bufSize = %d, length = 0x%016" PRIxPTR2920", params = 0x%016" PRIxPTR "",2921CID(context), GLenumToString(GLenumGroup::DefaultGroup, target),2922GLenumToString(GLenumGroup::DefaultGroup, pname), bufSize, (uintptr_t)length,2923(uintptr_t)params);29242925if (context)2926{2927TextureType targetPacked = PackParam<TextureType>(target);2928std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);2929bool isCallValid = (context->skipValidation() ||2930ValidateGetTexParameterIivRobustANGLE(context, targetPacked, pname,2931bufSize, length, params));2932if (isCallValid)2933{2934context->getTexParameterIivRobust(targetPacked, pname, bufSize, length, params);2935}2936ANGLE_CAPTURE(GetTexParameterIivRobustANGLE, isCallValid, context, targetPacked, pname,2937bufSize, length, params);2938}2939else2940{2941GenerateContextLostErrorOnCurrentGlobalContext();2942}2943}29442945void GL_APIENTRY GL_GetTexParameterIuivRobustANGLE(GLenum target,2946GLenum pname,2947GLsizei bufSize,2948GLsizei *length,2949GLuint *params)2950{2951Context *context = GetValidGlobalContext();2952EVENT(context, GLGetTexParameterIuivRobustANGLE,2953"context = %d, target = %s, pname = %s, bufSize = %d, length = 0x%016" PRIxPTR2954", params = 0x%016" PRIxPTR "",2955CID(context), GLenumToString(GLenumGroup::DefaultGroup, target),2956GLenumToString(GLenumGroup::DefaultGroup, pname), bufSize, (uintptr_t)length,2957(uintptr_t)params);29582959if (context)2960{2961TextureType targetPacked = PackParam<TextureType>(target);2962std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);2963bool isCallValid = (context->skipValidation() ||2964ValidateGetTexParameterIuivRobustANGLE(context, targetPacked, pname,2965bufSize, length, params));2966if (isCallValid)2967{2968context->getTexParameterIuivRobust(targetPacked, pname, bufSize, length, params);2969}2970ANGLE_CAPTURE(GetTexParameterIuivRobustANGLE, isCallValid, context, targetPacked, pname,2971bufSize, length, params);2972}2973else2974{2975GenerateContextLostErrorOnCurrentGlobalContext();2976}2977}29782979void GL_APIENTRY GL_SamplerParameterIivRobustANGLE(GLuint sampler,2980GLenum pname,2981GLsizei bufSize,2982const GLint *param)2983{2984Context *context = GetValidGlobalContext();2985EVENT(context, GLSamplerParameterIivRobustANGLE,2986"context = %d, sampler = %u, pname = %s, bufSize = %d, param = 0x%016" PRIxPTR "",2987CID(context), sampler, GLenumToString(GLenumGroup::DefaultGroup, pname), bufSize,2988(uintptr_t)param);29892990if (context)2991{2992SamplerID samplerPacked = PackParam<SamplerID>(sampler);2993std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);2994bool isCallValid =2995(context->skipValidation() ||2996ValidateSamplerParameterIivRobustANGLE(context, samplerPacked, pname, bufSize, param));2997if (isCallValid)2998{2999context->samplerParameterIivRobust(samplerPacked, pname, bufSize, param);3000}3001ANGLE_CAPTURE(SamplerParameterIivRobustANGLE, isCallValid, context, samplerPacked, pname,3002bufSize, param);3003}3004else3005{3006GenerateContextLostErrorOnCurrentGlobalContext();3007}3008}30093010void GL_APIENTRY GL_SamplerParameterIuivRobustANGLE(GLuint sampler,3011GLenum pname,3012GLsizei bufSize,3013const GLuint *param)3014{3015Context *context = GetValidGlobalContext();3016EVENT(context, GLSamplerParameterIuivRobustANGLE,3017"context = %d, sampler = %u, pname = %s, bufSize = %d, param = 0x%016" PRIxPTR "",3018CID(context), sampler, GLenumToString(GLenumGroup::DefaultGroup, pname), bufSize,3019(uintptr_t)param);30203021if (context)3022{3023SamplerID samplerPacked = PackParam<SamplerID>(sampler);3024std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);3025bool isCallValid =3026(context->skipValidation() || ValidateSamplerParameterIuivRobustANGLE(3027context, samplerPacked, pname, bufSize, param));3028if (isCallValid)3029{3030context->samplerParameterIuivRobust(samplerPacked, pname, bufSize, param);3031}3032ANGLE_CAPTURE(SamplerParameterIuivRobustANGLE, isCallValid, context, samplerPacked, pname,3033bufSize, param);3034}3035else3036{3037GenerateContextLostErrorOnCurrentGlobalContext();3038}3039}30403041void GL_APIENTRY GL_GetSamplerParameterIivRobustANGLE(GLuint sampler,3042GLenum pname,3043GLsizei bufSize,3044GLsizei *length,3045GLint *params)3046{3047Context *context = GetValidGlobalContext();3048EVENT(context, GLGetSamplerParameterIivRobustANGLE,3049"context = %d, sampler = %u, pname = %s, bufSize = %d, length = 0x%016" PRIxPTR3050", params = 0x%016" PRIxPTR "",3051CID(context), sampler, GLenumToString(GLenumGroup::DefaultGroup, pname), bufSize,3052(uintptr_t)length, (uintptr_t)params);30533054if (context)3055{3056SamplerID samplerPacked = PackParam<SamplerID>(sampler);3057std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);3058bool isCallValid = (context->skipValidation() ||3059ValidateGetSamplerParameterIivRobustANGLE(context, samplerPacked, pname,3060bufSize, length, params));3061if (isCallValid)3062{3063context->getSamplerParameterIivRobust(samplerPacked, pname, bufSize, length, params);3064}3065ANGLE_CAPTURE(GetSamplerParameterIivRobustANGLE, isCallValid, context, samplerPacked, pname,3066bufSize, length, params);3067}3068else3069{3070GenerateContextLostErrorOnCurrentGlobalContext();3071}3072}30733074void GL_APIENTRY GL_GetSamplerParameterIuivRobustANGLE(GLuint sampler,3075GLenum pname,3076GLsizei bufSize,3077GLsizei *length,3078GLuint *params)3079{3080Context *context = GetValidGlobalContext();3081EVENT(context, GLGetSamplerParameterIuivRobustANGLE,3082"context = %d, sampler = %u, pname = %s, bufSize = %d, length = 0x%016" PRIxPTR3083", params = 0x%016" PRIxPTR "",3084CID(context), sampler, GLenumToString(GLenumGroup::DefaultGroup, pname), bufSize,3085(uintptr_t)length, (uintptr_t)params);30863087if (context)3088{3089SamplerID samplerPacked = PackParam<SamplerID>(sampler);3090std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);3091bool isCallValid = (context->skipValidation() ||3092ValidateGetSamplerParameterIuivRobustANGLE(3093context, samplerPacked, pname, bufSize, length, params));3094if (isCallValid)3095{3096context->getSamplerParameterIuivRobust(samplerPacked, pname, bufSize, length, params);3097}3098ANGLE_CAPTURE(GetSamplerParameterIuivRobustANGLE, isCallValid, context, samplerPacked,3099pname, bufSize, length, params);3100}3101else3102{3103GenerateContextLostErrorOnCurrentGlobalContext();3104}3105}31063107void GL_APIENTRY GL_GetQueryObjectivRobustANGLE(GLuint id,3108GLenum pname,3109GLsizei bufSize,3110GLsizei *length,3111GLint *params)3112{3113Context *context = GetGlobalContext();3114EVENT(context, GLGetQueryObjectivRobustANGLE,3115"context = %d, id = %u, pname = %s, bufSize = %d, length = 0x%016" PRIxPTR3116", params = 0x%016" PRIxPTR "",3117CID(context), id, GLenumToString(GLenumGroup::DefaultGroup, pname), bufSize,3118(uintptr_t)length, (uintptr_t)params);31193120if (context)3121{3122QueryID idPacked = PackParam<QueryID>(id);3123std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);3124bool isCallValid =3125(context->skipValidation() || ValidateGetQueryObjectivRobustANGLE(3126context, idPacked, pname, bufSize, length, params));3127if (isCallValid)3128{3129context->getQueryObjectivRobust(idPacked, pname, bufSize, length, params);3130}3131ANGLE_CAPTURE(GetQueryObjectivRobustANGLE, isCallValid, context, idPacked, pname, bufSize,3132length, params);3133}3134else3135{}3136}31373138void GL_APIENTRY GL_GetQueryObjecti64vRobustANGLE(GLuint id,3139GLenum pname,3140GLsizei bufSize,3141GLsizei *length,3142GLint64 *params)3143{3144Context *context = GetGlobalContext();3145EVENT(context, GLGetQueryObjecti64vRobustANGLE,3146"context = %d, id = %u, pname = %s, bufSize = %d, length = 0x%016" PRIxPTR3147", params = 0x%016" PRIxPTR "",3148CID(context), id, GLenumToString(GLenumGroup::DefaultGroup, pname), bufSize,3149(uintptr_t)length, (uintptr_t)params);31503151if (context)3152{3153QueryID idPacked = PackParam<QueryID>(id);3154std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);3155bool isCallValid =3156(context->skipValidation() || ValidateGetQueryObjecti64vRobustANGLE(3157context, idPacked, pname, bufSize, length, params));3158if (isCallValid)3159{3160context->getQueryObjecti64vRobust(idPacked, pname, bufSize, length, params);3161}3162ANGLE_CAPTURE(GetQueryObjecti64vRobustANGLE, isCallValid, context, idPacked, pname, bufSize,3163length, params);3164}3165else3166{}3167}31683169void GL_APIENTRY GL_GetQueryObjectui64vRobustANGLE(GLuint id,3170GLenum pname,3171GLsizei bufSize,3172GLsizei *length,3173GLuint64 *params)3174{3175Context *context = GetValidGlobalContext();3176EVENT(context, GLGetQueryObjectui64vRobustANGLE,3177"context = %d, id = %u, pname = %s, bufSize = %d, length = 0x%016" PRIxPTR3178", params = 0x%016" PRIxPTR "",3179CID(context), id, GLenumToString(GLenumGroup::DefaultGroup, pname), bufSize,3180(uintptr_t)length, (uintptr_t)params);31813182if (context)3183{3184QueryID idPacked = PackParam<QueryID>(id);3185std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);3186bool isCallValid =3187(context->skipValidation() || ValidateGetQueryObjectui64vRobustANGLE(3188context, idPacked, pname, bufSize, length, params));3189if (isCallValid)3190{3191context->getQueryObjectui64vRobust(idPacked, pname, bufSize, length, params);3192}3193ANGLE_CAPTURE(GetQueryObjectui64vRobustANGLE, isCallValid, context, idPacked, pname,3194bufSize, length, params);3195}3196else3197{3198GenerateContextLostErrorOnCurrentGlobalContext();3199}3200}32013202// GL_ANGLE_semaphore_fuchsia3203void GL_APIENTRY GL_ImportSemaphoreZirconHandleANGLE(GLuint semaphore,3204GLenum handleType,3205GLuint handle)3206{3207Context *context = GetValidGlobalContext();3208EVENT(context, GLImportSemaphoreZirconHandleANGLE,3209"context = %d, semaphore = %u, handleType = %s, handle = %u", CID(context), semaphore,3210GLenumToString(GLenumGroup::ExternalHandleType, handleType), handle);32113212if (context)3213{3214SemaphoreID semaphorePacked = PackParam<SemaphoreID>(semaphore);3215HandleType handleTypePacked = PackParam<HandleType>(handleType);3216std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);3217bool isCallValid =3218(context->skipValidation() || ValidateImportSemaphoreZirconHandleANGLE(3219context, semaphorePacked, handleTypePacked, handle));3220if (isCallValid)3221{3222context->importSemaphoreZirconHandle(semaphorePacked, handleTypePacked, handle);3223}3224ANGLE_CAPTURE(ImportSemaphoreZirconHandleANGLE, isCallValid, context, semaphorePacked,3225handleTypePacked, handle);3226}3227else3228{3229GenerateContextLostErrorOnCurrentGlobalContext();3230}3231}32323233// GL_ANGLE_texture_external_update3234void GL_APIENTRY GL_TexImage2DExternalANGLE(GLenum target,3235GLint level,3236GLint internalformat,3237GLsizei width,3238GLsizei height,3239GLint border,3240GLenum format,3241GLenum type)3242{3243Context *context = GetValidGlobalContext();3244EVENT(context, GLTexImage2DExternalANGLE,3245"context = %d, target = %s, level = %d, internalformat = %d, width = %d, height = %d, "3246"border = %d, format = %s, type = %s",3247CID(context), GLenumToString(GLenumGroup::TextureTarget, target), level, internalformat,3248width, height, border, GLenumToString(GLenumGroup::PixelFormat, format),3249GLenumToString(GLenumGroup::PixelType, type));32503251if (context)3252{3253TextureTarget targetPacked = PackParam<TextureTarget>(target);3254std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);3255bool isCallValid =3256(context->skipValidation() ||3257ValidateTexImage2DExternalANGLE(context, targetPacked, level, internalformat, width,3258height, border, format, type));3259if (isCallValid)3260{3261context->texImage2DExternal(targetPacked, level, internalformat, width, height, border,3262format, type);3263}3264ANGLE_CAPTURE(TexImage2DExternalANGLE, isCallValid, context, targetPacked, level,3265internalformat, width, height, border, format, type);3266}3267else3268{3269GenerateContextLostErrorOnCurrentGlobalContext();3270}3271}32723273void GL_APIENTRY GL_InvalidateTextureANGLE(GLenum target)3274{3275Context *context = GetValidGlobalContext();3276EVENT(context, GLInvalidateTextureANGLE, "context = %d, target = %s", CID(context),3277GLenumToString(GLenumGroup::TextureTarget, target));32783279if (context)3280{3281TextureType targetPacked = PackParam<TextureType>(target);3282std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);3283bool isCallValid =3284(context->skipValidation() || ValidateInvalidateTextureANGLE(context, targetPacked));3285if (isCallValid)3286{3287context->invalidateTexture(targetPacked);3288}3289ANGLE_CAPTURE(InvalidateTextureANGLE, isCallValid, context, targetPacked);3290}3291else3292{3293GenerateContextLostErrorOnCurrentGlobalContext();3294}3295}32963297// GL_ANGLE_texture_multisample3298void GL_APIENTRY GL_TexStorage2DMultisampleANGLE(GLenum target,3299GLsizei samples,3300GLenum internalformat,3301GLsizei width,3302GLsizei height,3303GLboolean fixedsamplelocations)3304{3305Context *context = GetValidGlobalContext();3306EVENT(context, GLTexStorage2DMultisampleANGLE,3307"context = %d, target = %s, samples = %d, internalformat = %s, width = %d, height = %d, "3308"fixedsamplelocations = %s",3309CID(context), GLenumToString(GLenumGroup::DefaultGroup, target), samples,3310GLenumToString(GLenumGroup::DefaultGroup, internalformat), width, height,3311GLbooleanToString(fixedsamplelocations));33123313if (context)3314{3315TextureType targetPacked = PackParam<TextureType>(target);3316std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);3317bool isCallValid =3318(context->skipValidation() ||3319ValidateTexStorage2DMultisampleANGLE(context, targetPacked, samples, internalformat,3320width, height, fixedsamplelocations));3321if (isCallValid)3322{3323context->texStorage2DMultisample(targetPacked, samples, internalformat, width, height,3324fixedsamplelocations);3325}3326ANGLE_CAPTURE(TexStorage2DMultisampleANGLE, isCallValid, context, targetPacked, samples,3327internalformat, width, height, fixedsamplelocations);3328}3329else3330{3331GenerateContextLostErrorOnCurrentGlobalContext();3332}3333}33343335void GL_APIENTRY GL_GetMultisamplefvANGLE(GLenum pname, GLuint index, GLfloat *val)3336{3337Context *context = GetValidGlobalContext();3338EVENT(context, GLGetMultisamplefvANGLE,3339"context = %d, pname = %s, index = %u, val = 0x%016" PRIxPTR "", CID(context),3340GLenumToString(GLenumGroup::DefaultGroup, pname), index, (uintptr_t)val);33413342if (context)3343{3344std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);3345bool isCallValid = (context->skipValidation() ||3346ValidateGetMultisamplefvANGLE(context, pname, index, val));3347if (isCallValid)3348{3349context->getMultisamplefv(pname, index, val);3350}3351ANGLE_CAPTURE(GetMultisamplefvANGLE, isCallValid, context, pname, index, val);3352}3353else3354{3355GenerateContextLostErrorOnCurrentGlobalContext();3356}3357}33583359void GL_APIENTRY GL_SampleMaskiANGLE(GLuint maskNumber, GLbitfield mask)3360{3361Context *context = GetValidGlobalContext();3362EVENT(context, GLSampleMaskiANGLE, "context = %d, maskNumber = %u, mask = %s", CID(context),3363maskNumber, GLbitfieldToString(GLenumGroup::DefaultGroup, mask).c_str());33643365if (context)3366{3367std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);3368bool isCallValid =3369(context->skipValidation() || ValidateSampleMaskiANGLE(context, maskNumber, mask));3370if (isCallValid)3371{3372context->sampleMaski(maskNumber, mask);3373}3374ANGLE_CAPTURE(SampleMaskiANGLE, isCallValid, context, maskNumber, mask);3375}3376else3377{3378GenerateContextLostErrorOnCurrentGlobalContext();3379}3380}33813382// GetTexLevelParameterfvANGLE is already defined.33833384// GetTexLevelParameterivANGLE is already defined.33853386// GL_ANGLE_translated_shader_source3387void GL_APIENTRY GL_GetTranslatedShaderSourceANGLE(GLuint shader,3388GLsizei bufsize,3389GLsizei *length,3390GLchar *source)3391{3392Context *context = GetValidGlobalContext();3393EVENT(context, GLGetTranslatedShaderSourceANGLE,3394"context = %d, shader = %u, bufsize = %d, length = 0x%016" PRIxPTR3395", source = 0x%016" PRIxPTR "",3396CID(context), shader, bufsize, (uintptr_t)length, (uintptr_t)source);33973398if (context)3399{3400ShaderProgramID shaderPacked = PackParam<ShaderProgramID>(shader);3401std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);3402bool isCallValid =3403(context->skipValidation() || ValidateGetTranslatedShaderSourceANGLE(3404context, shaderPacked, bufsize, length, source));3405if (isCallValid)3406{3407context->getTranslatedShaderSource(shaderPacked, bufsize, length, source);3408}3409ANGLE_CAPTURE(GetTranslatedShaderSourceANGLE, isCallValid, context, shaderPacked, bufsize,3410length, source);3411}3412else3413{3414GenerateContextLostErrorOnCurrentGlobalContext();3415}3416}34173418// GL_CHROMIUM_bind_uniform_location3419void GL_APIENTRY GL_BindUniformLocationCHROMIUM(GLuint program, GLint location, const GLchar *name)3420{3421Context *context = GetValidGlobalContext();3422EVENT(context, GLBindUniformLocationCHROMIUM,3423"context = %d, program = %u, location = %d, name = 0x%016" PRIxPTR "", CID(context),3424program, location, (uintptr_t)name);34253426if (context)3427{3428ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);3429UniformLocation locationPacked = PackParam<UniformLocation>(location);3430std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);3431bool isCallValid =3432(context->skipValidation() ||3433ValidateBindUniformLocationCHROMIUM(context, programPacked, locationPacked, name));3434if (isCallValid)3435{3436context->bindUniformLocation(programPacked, locationPacked, name);3437}3438ANGLE_CAPTURE(BindUniformLocationCHROMIUM, isCallValid, context, programPacked,3439locationPacked, name);3440}3441else3442{3443GenerateContextLostErrorOnCurrentGlobalContext();3444}3445}34463447// GL_CHROMIUM_copy_compressed_texture3448void GL_APIENTRY GL_CompressedCopyTextureCHROMIUM(GLuint sourceId, GLuint destId)3449{3450Context *context = GetValidGlobalContext();3451EVENT(context, GLCompressedCopyTextureCHROMIUM, "context = %d, sourceId = %u, destId = %u",3452CID(context), sourceId, destId);34533454if (context)3455{3456TextureID sourceIdPacked = PackParam<TextureID>(sourceId);3457TextureID destIdPacked = PackParam<TextureID>(destId);3458std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);3459bool isCallValid =3460(context->skipValidation() ||3461ValidateCompressedCopyTextureCHROMIUM(context, sourceIdPacked, destIdPacked));3462if (isCallValid)3463{3464context->compressedCopyTexture(sourceIdPacked, destIdPacked);3465}3466ANGLE_CAPTURE(CompressedCopyTextureCHROMIUM, isCallValid, context, sourceIdPacked,3467destIdPacked);3468}3469else3470{3471GenerateContextLostErrorOnCurrentGlobalContext();3472}3473}34743475// GL_CHROMIUM_copy_texture3476void GL_APIENTRY GL_CopyTextureCHROMIUM(GLuint sourceId,3477GLint sourceLevel,3478GLenum destTarget,3479GLuint destId,3480GLint destLevel,3481GLint internalFormat,3482GLenum destType,3483GLboolean unpackFlipY,3484GLboolean unpackPremultiplyAlpha,3485GLboolean unpackUnmultiplyAlpha)3486{3487Context *context = GetValidGlobalContext();3488EVENT(context, GLCopyTextureCHROMIUM,3489"context = %d, sourceId = %u, sourceLevel = %d, destTarget = %s, destId = %u, destLevel "3490"= %d, internalFormat = %d, destType = %s, unpackFlipY = %s, unpackPremultiplyAlpha = "3491"%s, unpackUnmultiplyAlpha = %s",3492CID(context), sourceId, sourceLevel,3493GLenumToString(GLenumGroup::DefaultGroup, destTarget), destId, destLevel, internalFormat,3494GLenumToString(GLenumGroup::DefaultGroup, destType), GLbooleanToString(unpackFlipY),3495GLbooleanToString(unpackPremultiplyAlpha), GLbooleanToString(unpackUnmultiplyAlpha));34963497if (context)3498{3499TextureID sourceIdPacked = PackParam<TextureID>(sourceId);3500TextureTarget destTargetPacked = PackParam<TextureTarget>(destTarget);3501TextureID destIdPacked = PackParam<TextureID>(destId);3502std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);3503bool isCallValid = (context->skipValidation() ||3504ValidateCopyTextureCHROMIUM(3505context, sourceIdPacked, sourceLevel, destTargetPacked,3506destIdPacked, destLevel, internalFormat, destType, unpackFlipY,3507unpackPremultiplyAlpha, unpackUnmultiplyAlpha));3508if (isCallValid)3509{3510context->copyTexture(sourceIdPacked, sourceLevel, destTargetPacked, destIdPacked,3511destLevel, internalFormat, destType, unpackFlipY,3512unpackPremultiplyAlpha, unpackUnmultiplyAlpha);3513}3514ANGLE_CAPTURE(CopyTextureCHROMIUM, isCallValid, context, sourceIdPacked, sourceLevel,3515destTargetPacked, destIdPacked, destLevel, internalFormat, destType,3516unpackFlipY, unpackPremultiplyAlpha, unpackUnmultiplyAlpha);3517}3518else3519{3520GenerateContextLostErrorOnCurrentGlobalContext();3521}3522}35233524void GL_APIENTRY GL_CopySubTextureCHROMIUM(GLuint sourceId,3525GLint sourceLevel,3526GLenum destTarget,3527GLuint destId,3528GLint destLevel,3529GLint xoffset,3530GLint yoffset,3531GLint x,3532GLint y,3533GLint width,3534GLint height,3535GLboolean unpackFlipY,3536GLboolean unpackPremultiplyAlpha,3537GLboolean unpackUnmultiplyAlpha)3538{3539Context *context = GetValidGlobalContext();3540EVENT(context, GLCopySubTextureCHROMIUM,3541"context = %d, sourceId = %u, sourceLevel = %d, destTarget = %s, destId = %u, destLevel "3542"= %d, xoffset = %d, yoffset = %d, x = %d, y = %d, width = %d, height = %d, unpackFlipY "3543"= %s, unpackPremultiplyAlpha = %s, unpackUnmultiplyAlpha = %s",3544CID(context), sourceId, sourceLevel,3545GLenumToString(GLenumGroup::DefaultGroup, destTarget), destId, destLevel, xoffset,3546yoffset, x, y, width, height, GLbooleanToString(unpackFlipY),3547GLbooleanToString(unpackPremultiplyAlpha), GLbooleanToString(unpackUnmultiplyAlpha));35483549if (context)3550{3551TextureID sourceIdPacked = PackParam<TextureID>(sourceId);3552TextureTarget destTargetPacked = PackParam<TextureTarget>(destTarget);3553TextureID destIdPacked = PackParam<TextureID>(destId);3554std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);3555bool isCallValid = (context->skipValidation() ||3556ValidateCopySubTextureCHROMIUM(3557context, sourceIdPacked, sourceLevel, destTargetPacked,3558destIdPacked, destLevel, xoffset, yoffset, x, y, width, height,3559unpackFlipY, unpackPremultiplyAlpha, unpackUnmultiplyAlpha));3560if (isCallValid)3561{3562context->copySubTexture(sourceIdPacked, sourceLevel, destTargetPacked, destIdPacked,3563destLevel, xoffset, yoffset, x, y, width, height, unpackFlipY,3564unpackPremultiplyAlpha, unpackUnmultiplyAlpha);3565}3566ANGLE_CAPTURE(CopySubTextureCHROMIUM, isCallValid, context, sourceIdPacked, sourceLevel,3567destTargetPacked, destIdPacked, destLevel, xoffset, yoffset, x, y, width,3568height, unpackFlipY, unpackPremultiplyAlpha, unpackUnmultiplyAlpha);3569}3570else3571{3572GenerateContextLostErrorOnCurrentGlobalContext();3573}3574}35753576// GL_CHROMIUM_framebuffer_mixed_samples3577void GL_APIENTRY GL_CoverageModulationCHROMIUM(GLenum components)3578{3579Context *context = GetValidGlobalContext();3580EVENT(context, GLCoverageModulationCHROMIUM, "context = %d, components = %s", CID(context),3581GLenumToString(GLenumGroup::DefaultGroup, components));35823583if (context)3584{3585std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);3586bool isCallValid =3587(context->skipValidation() || ValidateCoverageModulationCHROMIUM(context, components));3588if (isCallValid)3589{3590context->coverageModulation(components);3591}3592ANGLE_CAPTURE(CoverageModulationCHROMIUM, isCallValid, context, components);3593}3594else3595{3596GenerateContextLostErrorOnCurrentGlobalContext();3597}3598}35993600// GL_CHROMIUM_lose_context3601void GL_APIENTRY GL_LoseContextCHROMIUM(GLenum current, GLenum other)3602{3603Context *context = GetValidGlobalContext();3604EVENT(context, GLLoseContextCHROMIUM, "context = %d, current = %s, other = %s", CID(context),3605GLenumToString(GLenumGroup::GraphicsResetStatus, current),3606GLenumToString(GLenumGroup::GraphicsResetStatus, other));36073608if (context)3609{3610GraphicsResetStatus currentPacked = PackParam<GraphicsResetStatus>(current);3611GraphicsResetStatus otherPacked = PackParam<GraphicsResetStatus>(other);3612std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);3613bool isCallValid = (context->skipValidation() ||3614ValidateLoseContextCHROMIUM(context, currentPacked, otherPacked));3615if (isCallValid)3616{3617context->loseContext(currentPacked, otherPacked);3618}3619ANGLE_CAPTURE(LoseContextCHROMIUM, isCallValid, context, currentPacked, otherPacked);3620}3621else3622{3623GenerateContextLostErrorOnCurrentGlobalContext();3624}3625}36263627// GL_EXT_EGL_image_array36283629// GL_EXT_YUV_target36303631// GL_EXT_blend_func_extended3632void GL_APIENTRY GL_BindFragDataLocationEXT(GLuint program, GLuint color, const GLchar *name)3633{3634Context *context = GetValidGlobalContext();3635EVENT(context, GLBindFragDataLocationEXT,3636"context = %d, program = %u, color = %u, name = 0x%016" PRIxPTR "", CID(context), program,3637color, (uintptr_t)name);36383639if (context)3640{3641ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);3642std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);3643bool isCallValid = (context->skipValidation() ||3644ValidateBindFragDataLocationEXT(context, programPacked, color, name));3645if (isCallValid)3646{3647context->bindFragDataLocation(programPacked, color, name);3648}3649ANGLE_CAPTURE(BindFragDataLocationEXT, isCallValid, context, programPacked, color, name);3650}3651else3652{3653GenerateContextLostErrorOnCurrentGlobalContext();3654}3655}36563657void GL_APIENTRY GL_BindFragDataLocationIndexedEXT(GLuint program,3658GLuint colorNumber,3659GLuint index,3660const GLchar *name)3661{3662Context *context = GetValidGlobalContext();3663EVENT(context, GLBindFragDataLocationIndexedEXT,3664"context = %d, program = %u, colorNumber = %u, index = %u, name = 0x%016" PRIxPTR "",3665CID(context), program, colorNumber, index, (uintptr_t)name);36663667if (context)3668{3669ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);3670std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);3671bool isCallValid =3672(context->skipValidation() || ValidateBindFragDataLocationIndexedEXT(3673context, programPacked, colorNumber, index, name));3674if (isCallValid)3675{3676context->bindFragDataLocationIndexed(programPacked, colorNumber, index, name);3677}3678ANGLE_CAPTURE(BindFragDataLocationIndexedEXT, isCallValid, context, programPacked,3679colorNumber, index, name);3680}3681else3682{3683GenerateContextLostErrorOnCurrentGlobalContext();3684}3685}36863687GLint GL_APIENTRY GL_GetFragDataIndexEXT(GLuint program, const GLchar *name)3688{3689Context *context = GetValidGlobalContext();3690EVENT(context, GLGetFragDataIndexEXT, "context = %d, program = %u, name = 0x%016" PRIxPTR "",3691CID(context), program, (uintptr_t)name);36923693GLint returnValue;3694if (context)3695{3696ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);3697std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);3698bool isCallValid = (context->skipValidation() ||3699ValidateGetFragDataIndexEXT(context, programPacked, name));3700if (isCallValid)3701{3702returnValue = context->getFragDataIndex(programPacked, name);3703}3704else3705{3706returnValue = GetDefaultReturnValue<angle::EntryPoint::GLGetFragDataIndexEXT, GLint>();3707}3708ANGLE_CAPTURE(GetFragDataIndexEXT, isCallValid, context, programPacked, name, returnValue);3709}3710else3711{3712GenerateContextLostErrorOnCurrentGlobalContext();3713returnValue = GetDefaultReturnValue<angle::EntryPoint::GLGetFragDataIndexEXT, GLint>();3714}3715return returnValue;3716}37173718GLint GL_APIENTRY GL_GetProgramResourceLocationIndexEXT(GLuint program,3719GLenum programInterface,3720const GLchar *name)3721{3722Context *context = GetValidGlobalContext();3723EVENT(context, GLGetProgramResourceLocationIndexEXT,3724"context = %d, program = %u, programInterface = %s, name = 0x%016" PRIxPTR "",3725CID(context), program, GLenumToString(GLenumGroup::ProgramInterface, programInterface),3726(uintptr_t)name);37273728GLint returnValue;3729if (context)3730{3731ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);3732std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);3733bool isCallValid =3734(context->skipValidation() || ValidateGetProgramResourceLocationIndexEXT(3735context, programPacked, programInterface, name));3736if (isCallValid)3737{3738returnValue =3739context->getProgramResourceLocationIndex(programPacked, programInterface, name);3740}3741else3742{3743returnValue =3744GetDefaultReturnValue<angle::EntryPoint::GLGetProgramResourceLocationIndexEXT,3745GLint>();3746}3747ANGLE_CAPTURE(GetProgramResourceLocationIndexEXT, isCallValid, context, programPacked,3748programInterface, name, returnValue);3749}3750else3751{3752GenerateContextLostErrorOnCurrentGlobalContext();3753returnValue =3754GetDefaultReturnValue<angle::EntryPoint::GLGetProgramResourceLocationIndexEXT, GLint>();3755}3756return returnValue;3757}37583759// GL_EXT_buffer_storage3760void GL_APIENTRY GL_BufferStorageEXT(GLenum target,3761GLsizeiptr size,3762const void *data,3763GLbitfield flags)3764{3765Context *context = GetValidGlobalContext();3766EVENT(context, GLBufferStorageEXT,3767"context = %d, target = %s, size = %llu, data = 0x%016" PRIxPTR ", flags = %s",3768CID(context), GLenumToString(GLenumGroup::BufferStorageTarget, target),3769static_cast<unsigned long long>(size), (uintptr_t)data,3770GLbitfieldToString(GLenumGroup::MapBufferUsageMask, flags).c_str());37713772if (context)3773{3774BufferBinding targetPacked = PackParam<BufferBinding>(target);3775std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);3776bool isCallValid = (context->skipValidation() ||3777ValidateBufferStorageEXT(context, targetPacked, size, data, flags));3778if (isCallValid)3779{3780context->bufferStorage(targetPacked, size, data, flags);3781}3782ANGLE_CAPTURE(BufferStorageEXT, isCallValid, context, targetPacked, size, data, flags);3783}3784else3785{3786GenerateContextLostErrorOnCurrentGlobalContext();3787}3788}37893790// GL_EXT_clip_control3791void GL_APIENTRY GL_ClipControlEXT(GLenum origin, GLenum depth)3792{3793Context *context = GetValidGlobalContext();3794EVENT(context, GLClipControlEXT, "context = %d, origin = %s, depth = %s", CID(context),3795GLenumToString(GLenumGroup::DefaultGroup, origin),3796GLenumToString(GLenumGroup::DefaultGroup, depth));37973798if (context)3799{3800std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);3801bool isCallValid =3802(context->skipValidation() || ValidateClipControlEXT(context, origin, depth));3803if (isCallValid)3804{3805context->clipControl(origin, depth);3806}3807ANGLE_CAPTURE(ClipControlEXT, isCallValid, context, origin, depth);3808}3809else3810{3811GenerateContextLostErrorOnCurrentGlobalContext();3812}3813}38143815// GL_EXT_copy_image3816void GL_APIENTRY GL_CopyImageSubDataEXT(GLuint srcName,3817GLenum srcTarget,3818GLint srcLevel,3819GLint srcX,3820GLint srcY,3821GLint srcZ,3822GLuint dstName,3823GLenum dstTarget,3824GLint dstLevel,3825GLint dstX,3826GLint dstY,3827GLint dstZ,3828GLsizei srcWidth,3829GLsizei srcHeight,3830GLsizei srcDepth)3831{3832Context *context = GetValidGlobalContext();3833EVENT(context, GLCopyImageSubDataEXT,3834"context = %d, srcName = %u, srcTarget = %s, srcLevel = %d, srcX = %d, srcY = %d, srcZ = "3835"%d, dstName = %u, dstTarget = %s, dstLevel = %d, dstX = %d, dstY = %d, dstZ = %d, "3836"srcWidth = %d, srcHeight = %d, srcDepth = %d",3837CID(context), srcName, GLenumToString(GLenumGroup::CopyBufferSubDataTarget, srcTarget),3838srcLevel, srcX, srcY, srcZ, dstName,3839GLenumToString(GLenumGroup::CopyBufferSubDataTarget, dstTarget), dstLevel, dstX, dstY,3840dstZ, srcWidth, srcHeight, srcDepth);38413842if (context)3843{3844std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);3845bool isCallValid =3846(context->skipValidation() ||3847ValidateCopyImageSubDataEXT(context, srcName, srcTarget, srcLevel, srcX, srcY, srcZ,3848dstName, dstTarget, dstLevel, dstX, dstY, dstZ, srcWidth,3849srcHeight, srcDepth));3850if (isCallValid)3851{3852context->copyImageSubData(srcName, srcTarget, srcLevel, srcX, srcY, srcZ, dstName,3853dstTarget, dstLevel, dstX, dstY, dstZ, srcWidth, srcHeight,3854srcDepth);3855}3856ANGLE_CAPTURE(CopyImageSubDataEXT, isCallValid, context, srcName, srcTarget, srcLevel, srcX,3857srcY, srcZ, dstName, dstTarget, dstLevel, dstX, dstY, dstZ, srcWidth,3858srcHeight, srcDepth);3859}3860else3861{3862GenerateContextLostErrorOnCurrentGlobalContext();3863}3864}38653866// GL_EXT_debug_label3867void GL_APIENTRY3868GL_GetObjectLabelEXT(GLenum type, GLuint object, GLsizei bufSize, GLsizei *length, GLchar *label)3869{3870Context *context = GetValidGlobalContext();3871EVENT(context, GLGetObjectLabelEXT,3872"context = %d, type = %s, object = %u, bufSize = %d, length = 0x%016" PRIxPTR3873", label = 0x%016" PRIxPTR "",3874CID(context), GLenumToString(GLenumGroup::DefaultGroup, type), object, bufSize,3875(uintptr_t)length, (uintptr_t)label);38763877if (context)3878{3879std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);3880bool isCallValid =3881(context->skipValidation() ||3882ValidateGetObjectLabelEXT(context, type, object, bufSize, length, label));3883if (isCallValid)3884{3885context->getObjectLabel(type, object, bufSize, length, label);3886}3887ANGLE_CAPTURE(GetObjectLabelEXT, isCallValid, context, type, object, bufSize, length,3888label);3889}3890else3891{3892GenerateContextLostErrorOnCurrentGlobalContext();3893}3894}38953896void GL_APIENTRY GL_LabelObjectEXT(GLenum type, GLuint object, GLsizei length, const GLchar *label)3897{3898Context *context = GetValidGlobalContext();3899EVENT(context, GLLabelObjectEXT,3900"context = %d, type = %s, object = %u, length = %d, label = 0x%016" PRIxPTR "",3901CID(context), GLenumToString(GLenumGroup::DefaultGroup, type), object, length,3902(uintptr_t)label);39033904if (context)3905{3906std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);3907bool isCallValid = (context->skipValidation() ||3908ValidateLabelObjectEXT(context, type, object, length, label));3909if (isCallValid)3910{3911context->labelObject(type, object, length, label);3912}3913ANGLE_CAPTURE(LabelObjectEXT, isCallValid, context, type, object, length, label);3914}3915else3916{3917GenerateContextLostErrorOnCurrentGlobalContext();3918}3919}39203921// GL_EXT_debug_marker3922void GL_APIENTRY GL_InsertEventMarkerEXT(GLsizei length, const GLchar *marker)3923{3924Context *context = GetValidGlobalContext();3925// Don't run the EVENT() macro on the EXT_debug_marker entry points.3926// It can interfere with the debug events being set by the caller.3927// EVENT(context, GLInsertEventMarkerEXT, "context = %d, length = %d, marker = 0x%016" PRIxPTR3928// "", CID(context), length, (uintptr_t)marker);39293930if (context)3931{3932std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);3933bool isCallValid =3934(context->skipValidation() || ValidateInsertEventMarkerEXT(context, length, marker));3935if (isCallValid)3936{3937context->insertEventMarker(length, marker);3938}3939ANGLE_CAPTURE(InsertEventMarkerEXT, isCallValid, context, length, marker);3940}3941else3942{3943GenerateContextLostErrorOnCurrentGlobalContext();3944}3945}39463947void GL_APIENTRY GL_PopGroupMarkerEXT()3948{3949Context *context = GetValidGlobalContext();3950// Don't run the EVENT() macro on the EXT_debug_marker entry points.3951// It can interfere with the debug events being set by the caller.3952// EVENT(context, GLPopGroupMarkerEXT, "context = %d", CID(context));39533954if (context)3955{3956std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);3957bool isCallValid = (context->skipValidation() || ValidatePopGroupMarkerEXT(context));3958if (isCallValid)3959{3960context->popGroupMarker();3961}3962ANGLE_CAPTURE(PopGroupMarkerEXT, isCallValid, context);3963}3964else3965{3966GenerateContextLostErrorOnCurrentGlobalContext();3967}3968}39693970void GL_APIENTRY GL_PushGroupMarkerEXT(GLsizei length, const GLchar *marker)3971{3972Context *context = GetValidGlobalContext();3973// Don't run the EVENT() macro on the EXT_debug_marker entry points.3974// It can interfere with the debug events being set by the caller.3975// EVENT(context, GLPushGroupMarkerEXT, "context = %d, length = %d, marker = 0x%016" PRIxPTR "",3976// CID(context), length, (uintptr_t)marker);39773978if (context)3979{3980std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);3981bool isCallValid =3982(context->skipValidation() || ValidatePushGroupMarkerEXT(context, length, marker));3983if (isCallValid)3984{3985context->pushGroupMarker(length, marker);3986}3987ANGLE_CAPTURE(PushGroupMarkerEXT, isCallValid, context, length, marker);3988}3989else3990{3991GenerateContextLostErrorOnCurrentGlobalContext();3992}3993}39943995// GL_EXT_discard_framebuffer3996void GL_APIENTRY GL_DiscardFramebufferEXT(GLenum target,3997GLsizei numAttachments,3998const GLenum *attachments)3999{4000Context *context = GetValidGlobalContext();4001EVENT(context, GLDiscardFramebufferEXT,4002"context = %d, target = %s, numAttachments = %d, attachments = 0x%016" PRIxPTR "",4003CID(context), GLenumToString(GLenumGroup::FramebufferTarget, target), numAttachments,4004(uintptr_t)attachments);40054006if (context)4007{4008std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);4009bool isCallValid =4010(context->skipValidation() ||4011ValidateDiscardFramebufferEXT(context, target, numAttachments, attachments));4012if (isCallValid)4013{4014context->discardFramebuffer(target, numAttachments, attachments);4015}4016ANGLE_CAPTURE(DiscardFramebufferEXT, isCallValid, context, target, numAttachments,4017attachments);4018}4019else4020{4021GenerateContextLostErrorOnCurrentGlobalContext();4022}4023}40244025// GL_EXT_disjoint_timer_query4026void GL_APIENTRY GL_BeginQueryEXT(GLenum target, GLuint id)4027{4028Context *context = GetValidGlobalContext();4029EVENT(context, GLBeginQueryEXT, "context = %d, target = %s, id = %u", CID(context),4030GLenumToString(GLenumGroup::QueryTarget, target), id);40314032if (context)4033{4034QueryType targetPacked = PackParam<QueryType>(target);4035QueryID idPacked = PackParam<QueryID>(id);4036std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);4037bool isCallValid =4038(context->skipValidation() || ValidateBeginQueryEXT(context, targetPacked, idPacked));4039if (isCallValid)4040{4041context->beginQuery(targetPacked, idPacked);4042}4043ANGLE_CAPTURE(BeginQueryEXT, isCallValid, context, targetPacked, idPacked);4044}4045else4046{4047GenerateContextLostErrorOnCurrentGlobalContext();4048}4049}40504051void GL_APIENTRY GL_DeleteQueriesEXT(GLsizei n, const GLuint *ids)4052{4053Context *context = GetValidGlobalContext();4054EVENT(context, GLDeleteQueriesEXT, "context = %d, n = %d, ids = 0x%016" PRIxPTR "",4055CID(context), n, (uintptr_t)ids);40564057if (context)4058{4059const QueryID *idsPacked = PackParam<const QueryID *>(ids);4060std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);4061bool isCallValid =4062(context->skipValidation() || ValidateDeleteQueriesEXT(context, n, idsPacked));4063if (isCallValid)4064{4065context->deleteQueries(n, idsPacked);4066}4067ANGLE_CAPTURE(DeleteQueriesEXT, isCallValid, context, n, idsPacked);4068}4069else4070{4071GenerateContextLostErrorOnCurrentGlobalContext();4072}4073}40744075void GL_APIENTRY GL_EndQueryEXT(GLenum target)4076{4077Context *context = GetValidGlobalContext();4078EVENT(context, GLEndQueryEXT, "context = %d, target = %s", CID(context),4079GLenumToString(GLenumGroup::QueryTarget, target));40804081if (context)4082{4083QueryType targetPacked = PackParam<QueryType>(target);4084std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);4085bool isCallValid =4086(context->skipValidation() || ValidateEndQueryEXT(context, targetPacked));4087if (isCallValid)4088{4089context->endQuery(targetPacked);4090}4091ANGLE_CAPTURE(EndQueryEXT, isCallValid, context, targetPacked);4092}4093else4094{4095GenerateContextLostErrorOnCurrentGlobalContext();4096}4097}40984099void GL_APIENTRY GL_GenQueriesEXT(GLsizei n, GLuint *ids)4100{4101Context *context = GetValidGlobalContext();4102EVENT(context, GLGenQueriesEXT, "context = %d, n = %d, ids = 0x%016" PRIxPTR "", CID(context),4103n, (uintptr_t)ids);41044105if (context)4106{4107QueryID *idsPacked = PackParam<QueryID *>(ids);4108std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);4109bool isCallValid =4110(context->skipValidation() || ValidateGenQueriesEXT(context, n, idsPacked));4111if (isCallValid)4112{4113context->genQueries(n, idsPacked);4114}4115ANGLE_CAPTURE(GenQueriesEXT, isCallValid, context, n, idsPacked);4116}4117else4118{4119GenerateContextLostErrorOnCurrentGlobalContext();4120}4121}41224123void GL_APIENTRY GL_GetInteger64vEXT(GLenum pname, GLint64 *data)4124{4125Context *context = GetValidGlobalContext();4126EVENT(context, GLGetInteger64vEXT, "context = %d, pname = %s, data = 0x%016" PRIxPTR "",4127CID(context), GLenumToString(GLenumGroup::GetPName, pname), (uintptr_t)data);41284129if (context)4130{4131std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);4132bool isCallValid =4133(context->skipValidation() || ValidateGetInteger64vEXT(context, pname, data));4134if (isCallValid)4135{4136context->getInteger64v(pname, data);4137}4138ANGLE_CAPTURE(GetInteger64vEXT, isCallValid, context, pname, data);4139}4140else4141{4142GenerateContextLostErrorOnCurrentGlobalContext();4143}4144}41454146void GL_APIENTRY GL_GetQueryObjecti64vEXT(GLuint id, GLenum pname, GLint64 *params)4147{4148Context *context = GetGlobalContext();4149EVENT(context, GLGetQueryObjecti64vEXT,4150"context = %d, id = %u, pname = %s, params = 0x%016" PRIxPTR "", CID(context), id,4151GLenumToString(GLenumGroup::QueryObjectParameterName, pname), (uintptr_t)params);41524153if (context)4154{4155QueryID idPacked = PackParam<QueryID>(id);4156std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);4157bool isCallValid = (context->skipValidation() ||4158ValidateGetQueryObjecti64vEXT(context, idPacked, pname, params));4159if (isCallValid)4160{4161context->getQueryObjecti64v(idPacked, pname, params);4162}4163ANGLE_CAPTURE(GetQueryObjecti64vEXT, isCallValid, context, idPacked, pname, params);4164}4165else4166{}4167}41684169void GL_APIENTRY GL_GetQueryObjectivEXT(GLuint id, GLenum pname, GLint *params)4170{4171Context *context = GetGlobalContext();4172EVENT(context, GLGetQueryObjectivEXT,4173"context = %d, id = %u, pname = %s, params = 0x%016" PRIxPTR "", CID(context), id,4174GLenumToString(GLenumGroup::QueryObjectParameterName, pname), (uintptr_t)params);41754176if (context)4177{4178QueryID idPacked = PackParam<QueryID>(id);4179std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);4180bool isCallValid = (context->skipValidation() ||4181ValidateGetQueryObjectivEXT(context, idPacked, pname, params));4182if (isCallValid)4183{4184context->getQueryObjectiv(idPacked, pname, params);4185}4186ANGLE_CAPTURE(GetQueryObjectivEXT, isCallValid, context, idPacked, pname, params);4187}4188else4189{}4190}41914192void GL_APIENTRY GL_GetQueryObjectui64vEXT(GLuint id, GLenum pname, GLuint64 *params)4193{4194Context *context = GetValidGlobalContext();4195EVENT(context, GLGetQueryObjectui64vEXT,4196"context = %d, id = %u, pname = %s, params = 0x%016" PRIxPTR "", CID(context), id,4197GLenumToString(GLenumGroup::QueryObjectParameterName, pname), (uintptr_t)params);41984199if (context)4200{4201QueryID idPacked = PackParam<QueryID>(id);4202std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);4203bool isCallValid = (context->skipValidation() ||4204ValidateGetQueryObjectui64vEXT(context, idPacked, pname, params));4205if (isCallValid)4206{4207context->getQueryObjectui64v(idPacked, pname, params);4208}4209ANGLE_CAPTURE(GetQueryObjectui64vEXT, isCallValid, context, idPacked, pname, params);4210}4211else4212{4213GenerateContextLostErrorOnCurrentGlobalContext();4214}4215}42164217void GL_APIENTRY GL_GetQueryObjectuivEXT(GLuint id, GLenum pname, GLuint *params)4218{4219Context *context = GetValidGlobalContext();4220EVENT(context, GLGetQueryObjectuivEXT,4221"context = %d, id = %u, pname = %s, params = 0x%016" PRIxPTR "", CID(context), id,4222GLenumToString(GLenumGroup::QueryObjectParameterName, pname), (uintptr_t)params);42234224if (context)4225{4226QueryID idPacked = PackParam<QueryID>(id);4227std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);4228bool isCallValid = (context->skipValidation() ||4229ValidateGetQueryObjectuivEXT(context, idPacked, pname, params));4230if (isCallValid)4231{4232context->getQueryObjectuiv(idPacked, pname, params);4233}4234ANGLE_CAPTURE(GetQueryObjectuivEXT, isCallValid, context, idPacked, pname, params);4235}4236else4237{4238GenerateContextLostErrorOnCurrentGlobalContext();4239}4240}42414242void GL_APIENTRY GL_GetQueryivEXT(GLenum target, GLenum pname, GLint *params)4243{4244Context *context = GetValidGlobalContext();4245EVENT(context, GLGetQueryivEXT,4246"context = %d, target = %s, pname = %s, params = 0x%016" PRIxPTR "", CID(context),4247GLenumToString(GLenumGroup::QueryTarget, target),4248GLenumToString(GLenumGroup::QueryParameterName, pname), (uintptr_t)params);42494250if (context)4251{4252QueryType targetPacked = PackParam<QueryType>(target);4253std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);4254bool isCallValid = (context->skipValidation() ||4255ValidateGetQueryivEXT(context, targetPacked, pname, params));4256if (isCallValid)4257{4258context->getQueryiv(targetPacked, pname, params);4259}4260ANGLE_CAPTURE(GetQueryivEXT, isCallValid, context, targetPacked, pname, params);4261}4262else4263{4264GenerateContextLostErrorOnCurrentGlobalContext();4265}4266}42674268GLboolean GL_APIENTRY GL_IsQueryEXT(GLuint id)4269{4270Context *context = GetValidGlobalContext();4271EVENT(context, GLIsQueryEXT, "context = %d, id = %u", CID(context), id);42724273GLboolean returnValue;4274if (context)4275{4276QueryID idPacked = PackParam<QueryID>(id);4277std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);4278bool isCallValid = (context->skipValidation() || ValidateIsQueryEXT(context, idPacked));4279if (isCallValid)4280{4281returnValue = context->isQuery(idPacked);4282}4283else4284{4285returnValue = GetDefaultReturnValue<angle::EntryPoint::GLIsQueryEXT, GLboolean>();4286}4287ANGLE_CAPTURE(IsQueryEXT, isCallValid, context, idPacked, returnValue);4288}4289else4290{4291GenerateContextLostErrorOnCurrentGlobalContext();4292returnValue = GetDefaultReturnValue<angle::EntryPoint::GLIsQueryEXT, GLboolean>();4293}4294return returnValue;4295}42964297void GL_APIENTRY GL_QueryCounterEXT(GLuint id, GLenum target)4298{4299Context *context = GetValidGlobalContext();4300EVENT(context, GLQueryCounterEXT, "context = %d, id = %u, target = %s", CID(context), id,4301GLenumToString(GLenumGroup::QueryTarget, target));43024303if (context)4304{4305QueryID idPacked = PackParam<QueryID>(id);4306QueryType targetPacked = PackParam<QueryType>(target);4307std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);4308bool isCallValid =4309(context->skipValidation() || ValidateQueryCounterEXT(context, idPacked, targetPacked));4310if (isCallValid)4311{4312context->queryCounter(idPacked, targetPacked);4313}4314ANGLE_CAPTURE(QueryCounterEXT, isCallValid, context, idPacked, targetPacked);4315}4316else4317{4318GenerateContextLostErrorOnCurrentGlobalContext();4319}4320}43214322// GL_EXT_draw_buffers4323void GL_APIENTRY GL_DrawBuffersEXT(GLsizei n, const GLenum *bufs)4324{4325Context *context = GetValidGlobalContext();4326EVENT(context, GLDrawBuffersEXT, "context = %d, n = %d, bufs = 0x%016" PRIxPTR "", CID(context),4327n, (uintptr_t)bufs);43284329if (context)4330{4331std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);4332bool isCallValid = (context->skipValidation() || ValidateDrawBuffersEXT(context, n, bufs));4333if (isCallValid)4334{4335context->drawBuffers(n, bufs);4336}4337ANGLE_CAPTURE(DrawBuffersEXT, isCallValid, context, n, bufs);4338}4339else4340{4341GenerateContextLostErrorOnCurrentGlobalContext();4342}4343}43444345// GL_EXT_draw_buffers_indexed4346void GL_APIENTRY GL_BlendEquationSeparateiEXT(GLuint buf, GLenum modeRGB, GLenum modeAlpha)4347{4348Context *context = GetValidGlobalContext();4349EVENT(context, GLBlendEquationSeparateiEXT,4350"context = %d, buf = %u, modeRGB = %s, modeAlpha = %s", CID(context), buf,4351GLenumToString(GLenumGroup::BlendEquationModeEXT, modeRGB),4352GLenumToString(GLenumGroup::BlendEquationModeEXT, modeAlpha));43534354if (context)4355{4356std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);4357bool isCallValid = (context->skipValidation() ||4358ValidateBlendEquationSeparateiEXT(context, buf, modeRGB, modeAlpha));4359if (isCallValid)4360{4361context->blendEquationSeparatei(buf, modeRGB, modeAlpha);4362}4363ANGLE_CAPTURE(BlendEquationSeparateiEXT, isCallValid, context, buf, modeRGB, modeAlpha);4364}4365else4366{4367GenerateContextLostErrorOnCurrentGlobalContext();4368}4369}43704371void GL_APIENTRY GL_BlendEquationiEXT(GLuint buf, GLenum mode)4372{4373Context *context = GetValidGlobalContext();4374EVENT(context, GLBlendEquationiEXT, "context = %d, buf = %u, mode = %s", CID(context), buf,4375GLenumToString(GLenumGroup::BlendEquationModeEXT, mode));43764377if (context)4378{4379std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);4380bool isCallValid =4381(context->skipValidation() || ValidateBlendEquationiEXT(context, buf, mode));4382if (isCallValid)4383{4384context->blendEquationi(buf, mode);4385}4386ANGLE_CAPTURE(BlendEquationiEXT, isCallValid, context, buf, mode);4387}4388else4389{4390GenerateContextLostErrorOnCurrentGlobalContext();4391}4392}43934394void GL_APIENTRY4395GL_BlendFuncSeparateiEXT(GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha)4396{4397Context *context = GetValidGlobalContext();4398EVENT(context, GLBlendFuncSeparateiEXT,4399"context = %d, buf = %u, srcRGB = %s, dstRGB = %s, srcAlpha = %s, dstAlpha = %s",4400CID(context), buf, GLenumToString(GLenumGroup::BlendingFactor, srcRGB),4401GLenumToString(GLenumGroup::BlendingFactor, dstRGB),4402GLenumToString(GLenumGroup::BlendingFactor, srcAlpha),4403GLenumToString(GLenumGroup::BlendingFactor, dstAlpha));44044405if (context)4406{4407std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);4408bool isCallValid =4409(context->skipValidation() ||4410ValidateBlendFuncSeparateiEXT(context, buf, srcRGB, dstRGB, srcAlpha, dstAlpha));4411if (isCallValid)4412{4413context->blendFuncSeparatei(buf, srcRGB, dstRGB, srcAlpha, dstAlpha);4414}4415ANGLE_CAPTURE(BlendFuncSeparateiEXT, isCallValid, context, buf, srcRGB, dstRGB, srcAlpha,4416dstAlpha);4417}4418else4419{4420GenerateContextLostErrorOnCurrentGlobalContext();4421}4422}44234424void GL_APIENTRY GL_BlendFunciEXT(GLuint buf, GLenum src, GLenum dst)4425{4426Context *context = GetValidGlobalContext();4427EVENT(context, GLBlendFunciEXT, "context = %d, buf = %u, src = %s, dst = %s", CID(context), buf,4428GLenumToString(GLenumGroup::BlendingFactor, src),4429GLenumToString(GLenumGroup::BlendingFactor, dst));44304431if (context)4432{4433std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);4434bool isCallValid =4435(context->skipValidation() || ValidateBlendFunciEXT(context, buf, src, dst));4436if (isCallValid)4437{4438context->blendFunci(buf, src, dst);4439}4440ANGLE_CAPTURE(BlendFunciEXT, isCallValid, context, buf, src, dst);4441}4442else4443{4444GenerateContextLostErrorOnCurrentGlobalContext();4445}4446}44474448void GL_APIENTRY GL_ColorMaskiEXT(GLuint index, GLboolean r, GLboolean g, GLboolean b, GLboolean a)4449{4450Context *context = GetValidGlobalContext();4451EVENT(context, GLColorMaskiEXT, "context = %d, index = %u, r = %s, g = %s, b = %s, a = %s",4452CID(context), index, GLbooleanToString(r), GLbooleanToString(g), GLbooleanToString(b),4453GLbooleanToString(a));44544455if (context)4456{4457std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);4458bool isCallValid =4459(context->skipValidation() || ValidateColorMaskiEXT(context, index, r, g, b, a));4460if (isCallValid)4461{4462context->colorMaski(index, r, g, b, a);4463}4464ANGLE_CAPTURE(ColorMaskiEXT, isCallValid, context, index, r, g, b, a);4465}4466else4467{4468GenerateContextLostErrorOnCurrentGlobalContext();4469}4470}44714472void GL_APIENTRY GL_DisableiEXT(GLenum target, GLuint index)4473{4474Context *context = GetValidGlobalContext();4475EVENT(context, GLDisableiEXT, "context = %d, target = %s, index = %u", CID(context),4476GLenumToString(GLenumGroup::EnableCap, target), index);44774478if (context)4479{4480std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);4481bool isCallValid =4482(context->skipValidation() || ValidateDisableiEXT(context, target, index));4483if (isCallValid)4484{4485context->disablei(target, index);4486}4487ANGLE_CAPTURE(DisableiEXT, isCallValid, context, target, index);4488}4489else4490{4491GenerateContextLostErrorOnCurrentGlobalContext();4492}4493}44944495void GL_APIENTRY GL_EnableiEXT(GLenum target, GLuint index)4496{4497Context *context = GetValidGlobalContext();4498EVENT(context, GLEnableiEXT, "context = %d, target = %s, index = %u", CID(context),4499GLenumToString(GLenumGroup::EnableCap, target), index);45004501if (context)4502{4503std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);4504bool isCallValid =4505(context->skipValidation() || ValidateEnableiEXT(context, target, index));4506if (isCallValid)4507{4508context->enablei(target, index);4509}4510ANGLE_CAPTURE(EnableiEXT, isCallValid, context, target, index);4511}4512else4513{4514GenerateContextLostErrorOnCurrentGlobalContext();4515}4516}45174518GLboolean GL_APIENTRY GL_IsEnablediEXT(GLenum target, GLuint index)4519{4520Context *context = GetValidGlobalContext();4521EVENT(context, GLIsEnablediEXT, "context = %d, target = %s, index = %u", CID(context),4522GLenumToString(GLenumGroup::EnableCap, target), index);45234524GLboolean returnValue;4525if (context)4526{4527std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);4528bool isCallValid =4529(context->skipValidation() || ValidateIsEnablediEXT(context, target, index));4530if (isCallValid)4531{4532returnValue = context->isEnabledi(target, index);4533}4534else4535{4536returnValue = GetDefaultReturnValue<angle::EntryPoint::GLIsEnablediEXT, GLboolean>();4537}4538ANGLE_CAPTURE(IsEnablediEXT, isCallValid, context, target, index, returnValue);4539}4540else4541{4542GenerateContextLostErrorOnCurrentGlobalContext();4543returnValue = GetDefaultReturnValue<angle::EntryPoint::GLIsEnablediEXT, GLboolean>();4544}4545return returnValue;4546}45474548// GL_EXT_draw_elements_base_vertex4549void GL_APIENTRY GL_DrawElementsBaseVertexEXT(GLenum mode,4550GLsizei count,4551GLenum type,4552const void *indices,4553GLint basevertex)4554{4555Context *context = GetValidGlobalContext();4556EVENT(context, GLDrawElementsBaseVertexEXT,4557"context = %d, mode = %s, count = %d, type = %s, indices = 0x%016" PRIxPTR4558", basevertex = %d",4559CID(context), GLenumToString(GLenumGroup::PrimitiveType, mode), count,4560GLenumToString(GLenumGroup::DrawElementsType, type), (uintptr_t)indices, basevertex);45614562if (context)4563{4564PrimitiveMode modePacked = PackParam<PrimitiveMode>(mode);4565DrawElementsType typePacked = PackParam<DrawElementsType>(type);4566std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);4567bool isCallValid = (context->skipValidation() ||4568ValidateDrawElementsBaseVertexEXT(context, modePacked, count,4569typePacked, indices, basevertex));4570if (isCallValid)4571{4572context->drawElementsBaseVertex(modePacked, count, typePacked, indices, basevertex);4573}4574ANGLE_CAPTURE(DrawElementsBaseVertexEXT, isCallValid, context, modePacked, count,4575typePacked, indices, basevertex);4576}4577else4578{4579GenerateContextLostErrorOnCurrentGlobalContext();4580}4581}45824583void GL_APIENTRY GL_DrawElementsInstancedBaseVertexEXT(GLenum mode,4584GLsizei count,4585GLenum type,4586const void *indices,4587GLsizei instancecount,4588GLint basevertex)4589{4590Context *context = GetValidGlobalContext();4591EVENT(context, GLDrawElementsInstancedBaseVertexEXT,4592"context = %d, mode = %s, count = %d, type = %s, indices = 0x%016" PRIxPTR4593", instancecount = %d, basevertex = %d",4594CID(context), GLenumToString(GLenumGroup::PrimitiveType, mode), count,4595GLenumToString(GLenumGroup::DrawElementsType, type), (uintptr_t)indices, instancecount,4596basevertex);45974598if (context)4599{4600PrimitiveMode modePacked = PackParam<PrimitiveMode>(mode);4601DrawElementsType typePacked = PackParam<DrawElementsType>(type);4602std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);4603bool isCallValid = (context->skipValidation() || ValidateDrawElementsInstancedBaseVertexEXT(4604context, modePacked, count, typePacked,4605indices, instancecount, basevertex));4606if (isCallValid)4607{4608context->drawElementsInstancedBaseVertex(modePacked, count, typePacked, indices,4609instancecount, basevertex);4610}4611ANGLE_CAPTURE(DrawElementsInstancedBaseVertexEXT, isCallValid, context, modePacked, count,4612typePacked, indices, instancecount, basevertex);4613}4614else4615{4616GenerateContextLostErrorOnCurrentGlobalContext();4617}4618}46194620void GL_APIENTRY GL_DrawRangeElementsBaseVertexEXT(GLenum mode,4621GLuint start,4622GLuint end,4623GLsizei count,4624GLenum type,4625const void *indices,4626GLint basevertex)4627{4628Context *context = GetValidGlobalContext();4629EVENT(context, GLDrawRangeElementsBaseVertexEXT,4630"context = %d, mode = %s, start = %u, end = %u, count = %d, type = %s, indices = "4631"0x%016" PRIxPTR ", basevertex = %d",4632CID(context), GLenumToString(GLenumGroup::PrimitiveType, mode), start, end, count,4633GLenumToString(GLenumGroup::DrawElementsType, type), (uintptr_t)indices, basevertex);46344635if (context)4636{4637PrimitiveMode modePacked = PackParam<PrimitiveMode>(mode);4638DrawElementsType typePacked = PackParam<DrawElementsType>(type);4639std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);4640bool isCallValid = (context->skipValidation() || ValidateDrawRangeElementsBaseVertexEXT(4641context, modePacked, start, end, count,4642typePacked, indices, basevertex));4643if (isCallValid)4644{4645context->drawRangeElementsBaseVertex(modePacked, start, end, count, typePacked, indices,4646basevertex);4647}4648ANGLE_CAPTURE(DrawRangeElementsBaseVertexEXT, isCallValid, context, modePacked, start, end,4649count, typePacked, indices, basevertex);4650}4651else4652{4653GenerateContextLostErrorOnCurrentGlobalContext();4654}4655}46564657void GL_APIENTRY GL_MultiDrawElementsBaseVertexEXT(GLenum mode,4658const GLsizei *count,4659GLenum type,4660const void *const *indices,4661GLsizei primcount,4662const GLint *basevertex)4663{4664Context *context = GetValidGlobalContext();4665EVENT(context, GLMultiDrawElementsBaseVertexEXT,4666"context = %d, mode = %s, count = 0x%016" PRIxPTR ", type = %s, indices = 0x%016" PRIxPTR4667", primcount = %d, basevertex = 0x%016" PRIxPTR "",4668CID(context), GLenumToString(GLenumGroup::PrimitiveType, mode), (uintptr_t)count,4669GLenumToString(GLenumGroup::DrawElementsType, type), (uintptr_t)indices, primcount,4670(uintptr_t)basevertex);46714672if (context)4673{4674PrimitiveMode modePacked = PackParam<PrimitiveMode>(mode);4675DrawElementsType typePacked = PackParam<DrawElementsType>(type);4676std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);4677bool isCallValid = (context->skipValidation() || ValidateMultiDrawElementsBaseVertexEXT(4678context, modePacked, count, typePacked,4679indices, primcount, basevertex));4680if (isCallValid)4681{4682context->multiDrawElementsBaseVertex(modePacked, count, typePacked, indices, primcount,4683basevertex);4684}4685ANGLE_CAPTURE(MultiDrawElementsBaseVertexEXT, isCallValid, context, modePacked, count,4686typePacked, indices, primcount, basevertex);4687}4688else4689{4690GenerateContextLostErrorOnCurrentGlobalContext();4691}4692}46934694// GL_EXT_external_buffer4695void GL_APIENTRY GL_BufferStorageExternalEXT(GLenum target,4696GLintptr offset,4697GLsizeiptr size,4698GLeglClientBufferEXT clientBuffer,4699GLbitfield flags)4700{4701Context *context = GetValidGlobalContext();4702EVENT(context, GLBufferStorageExternalEXT,4703"context = %d, target = %s, offset = %llu, size = %llu, clientBuffer = 0x%016" PRIxPTR4704", flags = %s",4705CID(context), GLenumToString(GLenumGroup::DefaultGroup, target),4706static_cast<unsigned long long>(offset), static_cast<unsigned long long>(size),4707(uintptr_t)clientBuffer,4708GLbitfieldToString(GLenumGroup::MapBufferUsageMask, flags).c_str());47094710if (context)4711{4712BufferBinding targetPacked = PackParam<BufferBinding>(target);4713std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);4714bool isCallValid = (context->skipValidation() ||4715ValidateBufferStorageExternalEXT(context, targetPacked, offset, size,4716clientBuffer, flags));4717if (isCallValid)4718{4719context->bufferStorageExternal(targetPacked, offset, size, clientBuffer, flags);4720}4721ANGLE_CAPTURE(BufferStorageExternalEXT, isCallValid, context, targetPacked, offset, size,4722clientBuffer, flags);4723}4724else4725{4726GenerateContextLostErrorOnCurrentGlobalContext();4727}4728}47294730void GL_APIENTRY GL_NamedBufferStorageExternalEXT(GLuint buffer,4731GLintptr offset,4732GLsizeiptr size,4733GLeglClientBufferEXT clientBuffer,4734GLbitfield flags)4735{4736Context *context = GetValidGlobalContext();4737EVENT(context, GLNamedBufferStorageExternalEXT,4738"context = %d, buffer = %u, offset = %llu, size = %llu, clientBuffer = 0x%016" PRIxPTR4739", flags = %s",4740CID(context), buffer, static_cast<unsigned long long>(offset),4741static_cast<unsigned long long>(size), (uintptr_t)clientBuffer,4742GLbitfieldToString(GLenumGroup::MapBufferUsageMask, flags).c_str());47434744if (context)4745{4746std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);4747bool isCallValid =4748(context->skipValidation() || ValidateNamedBufferStorageExternalEXT(4749context, buffer, offset, size, clientBuffer, flags));4750if (isCallValid)4751{4752context->namedBufferStorageExternal(buffer, offset, size, clientBuffer, flags);4753}4754ANGLE_CAPTURE(NamedBufferStorageExternalEXT, isCallValid, context, buffer, offset, size,4755clientBuffer, flags);4756}4757else4758{4759GenerateContextLostErrorOnCurrentGlobalContext();4760}4761}47624763// GL_EXT_geometry_shader4764void GL_APIENTRY GL_FramebufferTextureEXT(GLenum target,4765GLenum attachment,4766GLuint texture,4767GLint level)4768{4769Context *context = GetValidGlobalContext();4770EVENT(context, GLFramebufferTextureEXT,4771"context = %d, target = %s, attachment = %s, texture = %u, level = %d", CID(context),4772GLenumToString(GLenumGroup::FramebufferTarget, target),4773GLenumToString(GLenumGroup::FramebufferAttachment, attachment), texture, level);47744775if (context)4776{4777TextureID texturePacked = PackParam<TextureID>(texture);4778std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);4779bool isCallValid =4780(context->skipValidation() ||4781ValidateFramebufferTextureEXT(context, target, attachment, texturePacked, level));4782if (isCallValid)4783{4784context->framebufferTexture(target, attachment, texturePacked, level);4785}4786ANGLE_CAPTURE(FramebufferTextureEXT, isCallValid, context, target, attachment,4787texturePacked, level);4788}4789else4790{4791GenerateContextLostErrorOnCurrentGlobalContext();4792}4793}47944795// GL_EXT_instanced_arrays4796void GL_APIENTRY GL_DrawArraysInstancedEXT(GLenum mode,4797GLint start,4798GLsizei count,4799GLsizei primcount)4800{4801Context *context = GetValidGlobalContext();4802EVENT(context, GLDrawArraysInstancedEXT,4803"context = %d, mode = %s, start = %d, count = %d, primcount = %d", CID(context),4804GLenumToString(GLenumGroup::PrimitiveType, mode), start, count, primcount);48054806if (context)4807{4808PrimitiveMode modePacked = PackParam<PrimitiveMode>(mode);4809std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);4810bool isCallValid =4811(context->skipValidation() ||4812ValidateDrawArraysInstancedEXT(context, modePacked, start, count, primcount));4813if (isCallValid)4814{4815context->drawArraysInstanced(modePacked, start, count, primcount);4816}4817ANGLE_CAPTURE(DrawArraysInstancedEXT, isCallValid, context, modePacked, start, count,4818primcount);4819}4820else4821{4822GenerateContextLostErrorOnCurrentGlobalContext();4823}4824}48254826void GL_APIENTRY GL_DrawElementsInstancedEXT(GLenum mode,4827GLsizei count,4828GLenum type,4829const void *indices,4830GLsizei primcount)4831{4832Context *context = GetValidGlobalContext();4833EVENT(context, GLDrawElementsInstancedEXT,4834"context = %d, mode = %s, count = %d, type = %s, indices = 0x%016" PRIxPTR4835", primcount = %d",4836CID(context), GLenumToString(GLenumGroup::PrimitiveType, mode), count,4837GLenumToString(GLenumGroup::DrawElementsType, type), (uintptr_t)indices, primcount);48384839if (context)4840{4841PrimitiveMode modePacked = PackParam<PrimitiveMode>(mode);4842DrawElementsType typePacked = PackParam<DrawElementsType>(type);4843std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);4844bool isCallValid = (context->skipValidation() ||4845ValidateDrawElementsInstancedEXT(context, modePacked, count, typePacked,4846indices, primcount));4847if (isCallValid)4848{4849context->drawElementsInstanced(modePacked, count, typePacked, indices, primcount);4850}4851ANGLE_CAPTURE(DrawElementsInstancedEXT, isCallValid, context, modePacked, count, typePacked,4852indices, primcount);4853}4854else4855{4856GenerateContextLostErrorOnCurrentGlobalContext();4857}4858}48594860void GL_APIENTRY GL_VertexAttribDivisorEXT(GLuint index, GLuint divisor)4861{4862Context *context = GetValidGlobalContext();4863EVENT(context, GLVertexAttribDivisorEXT, "context = %d, index = %u, divisor = %u", CID(context),4864index, divisor);48654866if (context)4867{4868std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);4869bool isCallValid =4870(context->skipValidation() || ValidateVertexAttribDivisorEXT(context, index, divisor));4871if (isCallValid)4872{4873context->vertexAttribDivisor(index, divisor);4874}4875ANGLE_CAPTURE(VertexAttribDivisorEXT, isCallValid, context, index, divisor);4876}4877else4878{4879GenerateContextLostErrorOnCurrentGlobalContext();4880}4881}48824883// GL_EXT_map_buffer_range4884void GL_APIENTRY GL_FlushMappedBufferRangeEXT(GLenum target, GLintptr offset, GLsizeiptr length)4885{4886Context *context = GetValidGlobalContext();4887EVENT(context, GLFlushMappedBufferRangeEXT,4888"context = %d, target = %s, offset = %llu, length = %llu", CID(context),4889GLenumToString(GLenumGroup::BufferTargetARB, target),4890static_cast<unsigned long long>(offset), static_cast<unsigned long long>(length));48914892if (context)4893{4894BufferBinding targetPacked = PackParam<BufferBinding>(target);4895std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);4896bool isCallValid =4897(context->skipValidation() ||4898ValidateFlushMappedBufferRangeEXT(context, targetPacked, offset, length));4899if (isCallValid)4900{4901context->flushMappedBufferRange(targetPacked, offset, length);4902}4903ANGLE_CAPTURE(FlushMappedBufferRangeEXT, isCallValid, context, targetPacked, offset,4904length);4905}4906else4907{4908GenerateContextLostErrorOnCurrentGlobalContext();4909}4910}49114912void *GL_APIENTRY GL_MapBufferRangeEXT(GLenum target,4913GLintptr offset,4914GLsizeiptr length,4915GLbitfield access)4916{4917Context *context = GetValidGlobalContext();4918EVENT(context, GLMapBufferRangeEXT,4919"context = %d, target = %s, offset = %llu, length = %llu, access = %s", CID(context),4920GLenumToString(GLenumGroup::BufferTargetARB, target),4921static_cast<unsigned long long>(offset), static_cast<unsigned long long>(length),4922GLbitfieldToString(GLenumGroup::BufferAccessMask, access).c_str());49234924void *returnValue;4925if (context)4926{4927BufferBinding targetPacked = PackParam<BufferBinding>(target);4928std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);4929bool isCallValid =4930(context->skipValidation() ||4931ValidateMapBufferRangeEXT(context, targetPacked, offset, length, access));4932if (isCallValid)4933{4934returnValue = context->mapBufferRange(targetPacked, offset, length, access);4935}4936else4937{4938returnValue = GetDefaultReturnValue<angle::EntryPoint::GLMapBufferRangeEXT, void *>();4939}4940ANGLE_CAPTURE(MapBufferRangeEXT, isCallValid, context, targetPacked, offset, length, access,4941returnValue);4942}4943else4944{4945GenerateContextLostErrorOnCurrentGlobalContext();4946returnValue = GetDefaultReturnValue<angle::EntryPoint::GLMapBufferRangeEXT, void *>();4947}4948return returnValue;4949}49504951// GL_EXT_memory_object4952void GL_APIENTRY GL_BufferStorageMemEXT(GLenum target,4953GLsizeiptr size,4954GLuint memory,4955GLuint64 offset)4956{4957Context *context = GetValidGlobalContext();4958EVENT(context, GLBufferStorageMemEXT,4959"context = %d, target = %s, size = %llu, memory = %u, offset = %llu", CID(context),4960GLenumToString(GLenumGroup::BufferTargetARB, target),4961static_cast<unsigned long long>(size), memory, static_cast<unsigned long long>(offset));49624963if (context)4964{4965TextureType targetPacked = PackParam<TextureType>(target);4966MemoryObjectID memoryPacked = PackParam<MemoryObjectID>(memory);4967std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);4968bool isCallValid =4969(context->skipValidation() ||4970ValidateBufferStorageMemEXT(context, targetPacked, size, memoryPacked, offset));4971if (isCallValid)4972{4973context->bufferStorageMem(targetPacked, size, memoryPacked, offset);4974}4975ANGLE_CAPTURE(BufferStorageMemEXT, isCallValid, context, targetPacked, size, memoryPacked,4976offset);4977}4978else4979{4980GenerateContextLostErrorOnCurrentGlobalContext();4981}4982}49834984void GL_APIENTRY GL_CreateMemoryObjectsEXT(GLsizei n, GLuint *memoryObjects)4985{4986Context *context = GetValidGlobalContext();4987EVENT(context, GLCreateMemoryObjectsEXT,4988"context = %d, n = %d, memoryObjects = 0x%016" PRIxPTR "", CID(context), n,4989(uintptr_t)memoryObjects);49904991if (context)4992{4993MemoryObjectID *memoryObjectsPacked = PackParam<MemoryObjectID *>(memoryObjects);4994std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);4995bool isCallValid = (context->skipValidation() ||4996ValidateCreateMemoryObjectsEXT(context, n, memoryObjectsPacked));4997if (isCallValid)4998{4999context->createMemoryObjects(n, memoryObjectsPacked);5000}5001ANGLE_CAPTURE(CreateMemoryObjectsEXT, isCallValid, context, n, memoryObjectsPacked);5002}5003else5004{5005GenerateContextLostErrorOnCurrentGlobalContext();5006}5007}50085009void GL_APIENTRY GL_DeleteMemoryObjectsEXT(GLsizei n, const GLuint *memoryObjects)5010{5011Context *context = GetValidGlobalContext();5012EVENT(context, GLDeleteMemoryObjectsEXT,5013"context = %d, n = %d, memoryObjects = 0x%016" PRIxPTR "", CID(context), n,5014(uintptr_t)memoryObjects);50155016if (context)5017{5018const MemoryObjectID *memoryObjectsPacked =5019PackParam<const MemoryObjectID *>(memoryObjects);5020std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);5021bool isCallValid = (context->skipValidation() ||5022ValidateDeleteMemoryObjectsEXT(context, n, memoryObjectsPacked));5023if (isCallValid)5024{5025context->deleteMemoryObjects(n, memoryObjectsPacked);5026}5027ANGLE_CAPTURE(DeleteMemoryObjectsEXT, isCallValid, context, n, memoryObjectsPacked);5028}5029else5030{5031GenerateContextLostErrorOnCurrentGlobalContext();5032}5033}50345035void GL_APIENTRY GL_GetMemoryObjectParameterivEXT(GLuint memoryObject, GLenum pname, GLint *params)5036{5037Context *context = GetValidGlobalContext();5038EVENT(context, GLGetMemoryObjectParameterivEXT,5039"context = %d, memoryObject = %u, pname = %s, params = 0x%016" PRIxPTR "", CID(context),5040memoryObject, GLenumToString(GLenumGroup::MemoryObjectParameterName, pname),5041(uintptr_t)params);50425043if (context)5044{5045MemoryObjectID memoryObjectPacked = PackParam<MemoryObjectID>(memoryObject);5046std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);5047bool isCallValid =5048(context->skipValidation() ||5049ValidateGetMemoryObjectParameterivEXT(context, memoryObjectPacked, pname, params));5050if (isCallValid)5051{5052context->getMemoryObjectParameteriv(memoryObjectPacked, pname, params);5053}5054ANGLE_CAPTURE(GetMemoryObjectParameterivEXT, isCallValid, context, memoryObjectPacked,5055pname, params);5056}5057else5058{5059GenerateContextLostErrorOnCurrentGlobalContext();5060}5061}50625063void GL_APIENTRY GL_GetUnsignedBytevEXT(GLenum pname, GLubyte *data)5064{5065Context *context = GetValidGlobalContext();5066EVENT(context, GLGetUnsignedBytevEXT, "context = %d, pname = %s, data = 0x%016" PRIxPTR "",5067CID(context), GLenumToString(GLenumGroup::GetPName, pname), (uintptr_t)data);50685069if (context)5070{5071std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);5072bool isCallValid =5073(context->skipValidation() || ValidateGetUnsignedBytevEXT(context, pname, data));5074if (isCallValid)5075{5076context->getUnsignedBytev(pname, data);5077}5078ANGLE_CAPTURE(GetUnsignedBytevEXT, isCallValid, context, pname, data);5079}5080else5081{5082GenerateContextLostErrorOnCurrentGlobalContext();5083}5084}50855086void GL_APIENTRY GL_GetUnsignedBytei_vEXT(GLenum target, GLuint index, GLubyte *data)5087{5088Context *context = GetValidGlobalContext();5089EVENT(context, GLGetUnsignedBytei_vEXT,5090"context = %d, target = %s, index = %u, data = 0x%016" PRIxPTR "", CID(context),5091GLenumToString(GLenumGroup::DefaultGroup, target), index, (uintptr_t)data);50925093if (context)5094{5095std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);5096bool isCallValid = (context->skipValidation() ||5097ValidateGetUnsignedBytei_vEXT(context, target, index, data));5098if (isCallValid)5099{5100context->getUnsignedBytei_v(target, index, data);5101}5102ANGLE_CAPTURE(GetUnsignedBytei_vEXT, isCallValid, context, target, index, data);5103}5104else5105{5106GenerateContextLostErrorOnCurrentGlobalContext();5107}5108}51095110GLboolean GL_APIENTRY GL_IsMemoryObjectEXT(GLuint memoryObject)5111{5112Context *context = GetValidGlobalContext();5113EVENT(context, GLIsMemoryObjectEXT, "context = %d, memoryObject = %u", CID(context),5114memoryObject);51155116GLboolean returnValue;5117if (context)5118{5119MemoryObjectID memoryObjectPacked = PackParam<MemoryObjectID>(memoryObject);5120std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);5121bool isCallValid =5122(context->skipValidation() || ValidateIsMemoryObjectEXT(context, memoryObjectPacked));5123if (isCallValid)5124{5125returnValue = context->isMemoryObject(memoryObjectPacked);5126}5127else5128{5129returnValue =5130GetDefaultReturnValue<angle::EntryPoint::GLIsMemoryObjectEXT, GLboolean>();5131}5132ANGLE_CAPTURE(IsMemoryObjectEXT, isCallValid, context, memoryObjectPacked, returnValue);5133}5134else5135{5136GenerateContextLostErrorOnCurrentGlobalContext();5137returnValue = GetDefaultReturnValue<angle::EntryPoint::GLIsMemoryObjectEXT, GLboolean>();5138}5139return returnValue;5140}51415142void GL_APIENTRY GL_MemoryObjectParameterivEXT(GLuint memoryObject,5143GLenum pname,5144const GLint *params)5145{5146Context *context = GetValidGlobalContext();5147EVENT(context, GLMemoryObjectParameterivEXT,5148"context = %d, memoryObject = %u, pname = %s, params = 0x%016" PRIxPTR "", CID(context),5149memoryObject, GLenumToString(GLenumGroup::MemoryObjectParameterName, pname),5150(uintptr_t)params);51515152if (context)5153{5154MemoryObjectID memoryObjectPacked = PackParam<MemoryObjectID>(memoryObject);5155std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);5156bool isCallValid =5157(context->skipValidation() ||5158ValidateMemoryObjectParameterivEXT(context, memoryObjectPacked, pname, params));5159if (isCallValid)5160{5161context->memoryObjectParameteriv(memoryObjectPacked, pname, params);5162}5163ANGLE_CAPTURE(MemoryObjectParameterivEXT, isCallValid, context, memoryObjectPacked, pname,5164params);5165}5166else5167{5168GenerateContextLostErrorOnCurrentGlobalContext();5169}5170}51715172void GL_APIENTRY GL_TexStorageMem2DEXT(GLenum target,5173GLsizei levels,5174GLenum internalFormat,5175GLsizei width,5176GLsizei height,5177GLuint memory,5178GLuint64 offset)5179{5180Context *context = GetValidGlobalContext();5181EVENT(context, GLTexStorageMem2DEXT,5182"context = %d, target = %s, levels = %d, internalFormat = %s, width = %d, height = %d, "5183"memory = %u, offset = %llu",5184CID(context), GLenumToString(GLenumGroup::TextureTarget, target), levels,5185GLenumToString(GLenumGroup::DefaultGroup, internalFormat), width, height, memory,5186static_cast<unsigned long long>(offset));51875188if (context)5189{5190TextureType targetPacked = PackParam<TextureType>(target);5191MemoryObjectID memoryPacked = PackParam<MemoryObjectID>(memory);5192std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);5193bool isCallValid =5194(context->skipValidation() ||5195ValidateTexStorageMem2DEXT(context, targetPacked, levels, internalFormat, width,5196height, memoryPacked, offset));5197if (isCallValid)5198{5199context->texStorageMem2D(targetPacked, levels, internalFormat, width, height,5200memoryPacked, offset);5201}5202ANGLE_CAPTURE(TexStorageMem2DEXT, isCallValid, context, targetPacked, levels,5203internalFormat, width, height, memoryPacked, offset);5204}5205else5206{5207GenerateContextLostErrorOnCurrentGlobalContext();5208}5209}52105211void GL_APIENTRY GL_TexStorageMem2DMultisampleEXT(GLenum target,5212GLsizei samples,5213GLenum internalFormat,5214GLsizei width,5215GLsizei height,5216GLboolean fixedSampleLocations,5217GLuint memory,5218GLuint64 offset)5219{5220Context *context = GetValidGlobalContext();5221EVENT(context, GLTexStorageMem2DMultisampleEXT,5222"context = %d, target = %s, samples = %d, internalFormat = %s, width = %d, height = %d, "5223"fixedSampleLocations = %s, memory = %u, offset = %llu",5224CID(context), GLenumToString(GLenumGroup::TextureTarget, target), samples,5225GLenumToString(GLenumGroup::DefaultGroup, internalFormat), width, height,5226GLbooleanToString(fixedSampleLocations), memory, static_cast<unsigned long long>(offset));52275228if (context)5229{5230TextureType targetPacked = PackParam<TextureType>(target);5231MemoryObjectID memoryPacked = PackParam<MemoryObjectID>(memory);5232std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);5233bool isCallValid =5234(context->skipValidation() || ValidateTexStorageMem2DMultisampleEXT(5235context, targetPacked, samples, internalFormat, width,5236height, fixedSampleLocations, memoryPacked, offset));5237if (isCallValid)5238{5239context->texStorageMem2DMultisample(targetPacked, samples, internalFormat, width,5240height, fixedSampleLocations, memoryPacked, offset);5241}5242ANGLE_CAPTURE(TexStorageMem2DMultisampleEXT, isCallValid, context, targetPacked, samples,5243internalFormat, width, height, fixedSampleLocations, memoryPacked, offset);5244}5245else5246{5247GenerateContextLostErrorOnCurrentGlobalContext();5248}5249}52505251void GL_APIENTRY GL_TexStorageMem3DEXT(GLenum target,5252GLsizei levels,5253GLenum internalFormat,5254GLsizei width,5255GLsizei height,5256GLsizei depth,5257GLuint memory,5258GLuint64 offset)5259{5260Context *context = GetValidGlobalContext();5261EVENT(context, GLTexStorageMem3DEXT,5262"context = %d, target = %s, levels = %d, internalFormat = %s, width = %d, height = %d, "5263"depth = %d, memory = %u, offset = %llu",5264CID(context), GLenumToString(GLenumGroup::TextureTarget, target), levels,5265GLenumToString(GLenumGroup::DefaultGroup, internalFormat), width, height, depth, memory,5266static_cast<unsigned long long>(offset));52675268if (context)5269{5270TextureType targetPacked = PackParam<TextureType>(target);5271MemoryObjectID memoryPacked = PackParam<MemoryObjectID>(memory);5272std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);5273bool isCallValid =5274(context->skipValidation() ||5275ValidateTexStorageMem3DEXT(context, targetPacked, levels, internalFormat, width,5276height, depth, memoryPacked, offset));5277if (isCallValid)5278{5279context->texStorageMem3D(targetPacked, levels, internalFormat, width, height, depth,5280memoryPacked, offset);5281}5282ANGLE_CAPTURE(TexStorageMem3DEXT, isCallValid, context, targetPacked, levels,5283internalFormat, width, height, depth, memoryPacked, offset);5284}5285else5286{5287GenerateContextLostErrorOnCurrentGlobalContext();5288}5289}52905291void GL_APIENTRY GL_TexStorageMem3DMultisampleEXT(GLenum target,5292GLsizei samples,5293GLenum internalFormat,5294GLsizei width,5295GLsizei height,5296GLsizei depth,5297GLboolean fixedSampleLocations,5298GLuint memory,5299GLuint64 offset)5300{5301Context *context = GetValidGlobalContext();5302EVENT(context, GLTexStorageMem3DMultisampleEXT,5303"context = %d, target = %s, samples = %d, internalFormat = %s, width = %d, height = %d, "5304"depth = %d, fixedSampleLocations = %s, memory = %u, offset = %llu",5305CID(context), GLenumToString(GLenumGroup::TextureTarget, target), samples,5306GLenumToString(GLenumGroup::DefaultGroup, internalFormat), width, height, depth,5307GLbooleanToString(fixedSampleLocations), memory, static_cast<unsigned long long>(offset));53085309if (context)5310{5311TextureType targetPacked = PackParam<TextureType>(target);5312MemoryObjectID memoryPacked = PackParam<MemoryObjectID>(memory);5313std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);5314bool isCallValid = (context->skipValidation() ||5315ValidateTexStorageMem3DMultisampleEXT(5316context, targetPacked, samples, internalFormat, width, height,5317depth, fixedSampleLocations, memoryPacked, offset));5318if (isCallValid)5319{5320context->texStorageMem3DMultisample(targetPacked, samples, internalFormat, width,5321height, depth, fixedSampleLocations, memoryPacked,5322offset);5323}5324ANGLE_CAPTURE(TexStorageMem3DMultisampleEXT, isCallValid, context, targetPacked, samples,5325internalFormat, width, height, depth, fixedSampleLocations, memoryPacked,5326offset);5327}5328else5329{5330GenerateContextLostErrorOnCurrentGlobalContext();5331}5332}53335334// GL_EXT_memory_object_fd5335void GL_APIENTRY GL_ImportMemoryFdEXT(GLuint memory, GLuint64 size, GLenum handleType, GLint fd)5336{5337Context *context = GetValidGlobalContext();5338EVENT(context, GLImportMemoryFdEXT,5339"context = %d, memory = %u, size = %llu, handleType = %s, fd = %d", CID(context), memory,5340static_cast<unsigned long long>(size),5341GLenumToString(GLenumGroup::ExternalHandleType, handleType), fd);53425343if (context)5344{5345MemoryObjectID memoryPacked = PackParam<MemoryObjectID>(memory);5346HandleType handleTypePacked = PackParam<HandleType>(handleType);5347std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);5348bool isCallValid =5349(context->skipValidation() ||5350ValidateImportMemoryFdEXT(context, memoryPacked, size, handleTypePacked, fd));5351if (isCallValid)5352{5353context->importMemoryFd(memoryPacked, size, handleTypePacked, fd);5354}5355ANGLE_CAPTURE(ImportMemoryFdEXT, isCallValid, context, memoryPacked, size, handleTypePacked,5356fd);5357}5358else5359{5360GenerateContextLostErrorOnCurrentGlobalContext();5361}5362}53635364// GL_EXT_multisampled_render_to_texture5365void GL_APIENTRY GL_FramebufferTexture2DMultisampleEXT(GLenum target,5366GLenum attachment,5367GLenum textarget,5368GLuint texture,5369GLint level,5370GLsizei samples)5371{5372Context *context = GetValidGlobalContext();5373EVENT(context, GLFramebufferTexture2DMultisampleEXT,5374"context = %d, target = %s, attachment = %s, textarget = %s, texture = %u, level = %d, "5375"samples = %d",5376CID(context), GLenumToString(GLenumGroup::FramebufferTarget, target),5377GLenumToString(GLenumGroup::FramebufferAttachment, attachment),5378GLenumToString(GLenumGroup::TextureTarget, textarget), texture, level, samples);53795380if (context)5381{5382TextureTarget textargetPacked = PackParam<TextureTarget>(textarget);5383TextureID texturePacked = PackParam<TextureID>(texture);5384std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);5385bool isCallValid =5386(context->skipValidation() ||5387ValidateFramebufferTexture2DMultisampleEXT(5388context, target, attachment, textargetPacked, texturePacked, level, samples));5389if (isCallValid)5390{5391context->framebufferTexture2DMultisample(target, attachment, textargetPacked,5392texturePacked, level, samples);5393}5394ANGLE_CAPTURE(FramebufferTexture2DMultisampleEXT, isCallValid, context, target, attachment,5395textargetPacked, texturePacked, level, samples);5396}5397else5398{5399GenerateContextLostErrorOnCurrentGlobalContext();5400}5401}54025403void GL_APIENTRY GL_RenderbufferStorageMultisampleEXT(GLenum target,5404GLsizei samples,5405GLenum internalformat,5406GLsizei width,5407GLsizei height)5408{5409Context *context = GetValidGlobalContext();5410EVENT(context, GLRenderbufferStorageMultisampleEXT,5411"context = %d, target = %s, samples = %d, internalformat = %s, width = %d, height = %d",5412CID(context), GLenumToString(GLenumGroup::RenderbufferTarget, target), samples,5413GLenumToString(GLenumGroup::InternalFormat, internalformat), width, height);54145415if (context)5416{5417std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);5418bool isCallValid = (context->skipValidation() ||5419ValidateRenderbufferStorageMultisampleEXT(5420context, target, samples, internalformat, width, height));5421if (isCallValid)5422{5423context->renderbufferStorageMultisampleEXT(target, samples, internalformat, width,5424height);5425}5426ANGLE_CAPTURE(RenderbufferStorageMultisampleEXT, isCallValid, context, target, samples,5427internalformat, width, height);5428}5429else5430{5431GenerateContextLostErrorOnCurrentGlobalContext();5432}5433}54345435// GL_EXT_occlusion_query_boolean5436// BeginQueryEXT is already defined.54375438// DeleteQueriesEXT is already defined.54395440// EndQueryEXT is already defined.54415442// GenQueriesEXT is already defined.54435444// GetQueryObjectuivEXT is already defined.54455446// GetQueryivEXT is already defined.54475448// IsQueryEXT is already defined.54495450// GL_EXT_primitive_bounding_box5451void GL_APIENTRY GL_PrimitiveBoundingBoxEXT(GLfloat minX,5452GLfloat minY,5453GLfloat minZ,5454GLfloat minW,5455GLfloat maxX,5456GLfloat maxY,5457GLfloat maxZ,5458GLfloat maxW)5459{5460Context *context = GetValidGlobalContext();5461EVENT(context, GLPrimitiveBoundingBoxEXT,5462"context = %d, minX = %f, minY = %f, minZ = %f, minW = %f, maxX = %f, maxY = %f, maxZ = "5463"%f, maxW = %f",5464CID(context), minX, minY, minZ, minW, maxX, maxY, maxZ, maxW);54655466if (context)5467{5468std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);5469bool isCallValid = (context->skipValidation() ||5470ValidatePrimitiveBoundingBoxEXT(context, minX, minY, minZ, minW, maxX,5471maxY, maxZ, maxW));5472if (isCallValid)5473{5474context->primitiveBoundingBox(minX, minY, minZ, minW, maxX, maxY, maxZ, maxW);5475}5476ANGLE_CAPTURE(PrimitiveBoundingBoxEXT, isCallValid, context, minX, minY, minZ, minW, maxX,5477maxY, maxZ, maxW);5478}5479else5480{5481GenerateContextLostErrorOnCurrentGlobalContext();5482}5483}54845485// GL_EXT_protected_textures54865487// GL_EXT_pvrtc_sRGB54885489// GL_EXT_read_format_bgra54905491// GL_EXT_robustness5492GLenum GL_APIENTRY GL_GetGraphicsResetStatusEXT()5493{5494Context *context = GetGlobalContext();5495EVENT(context, GLGetGraphicsResetStatusEXT, "context = %d", CID(context));54965497GLenum returnValue;5498if (context)5499{5500std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);5501bool isCallValid =5502(context->skipValidation() || ValidateGetGraphicsResetStatusEXT(context));5503if (isCallValid)5504{5505returnValue = context->getGraphicsResetStatus();5506}5507else5508{5509returnValue =5510GetDefaultReturnValue<angle::EntryPoint::GLGetGraphicsResetStatusEXT, GLenum>();5511}5512ANGLE_CAPTURE(GetGraphicsResetStatusEXT, isCallValid, context, returnValue);5513}5514else5515{55165517returnValue =5518GetDefaultReturnValue<angle::EntryPoint::GLGetGraphicsResetStatusEXT, GLenum>();5519}5520return returnValue;5521}55225523void GL_APIENTRY GL_GetnUniformfvEXT(GLuint program,5524GLint location,5525GLsizei bufSize,5526GLfloat *params)5527{5528Context *context = GetValidGlobalContext();5529EVENT(context, GLGetnUniformfvEXT,5530"context = %d, program = %u, location = %d, bufSize = %d, params = 0x%016" PRIxPTR "",5531CID(context), program, location, bufSize, (uintptr_t)params);55325533if (context)5534{5535ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);5536UniformLocation locationPacked = PackParam<UniformLocation>(location);5537std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);5538bool isCallValid =5539(context->skipValidation() ||5540ValidateGetnUniformfvEXT(context, programPacked, locationPacked, bufSize, params));5541if (isCallValid)5542{5543context->getnUniformfv(programPacked, locationPacked, bufSize, params);5544}5545ANGLE_CAPTURE(GetnUniformfvEXT, isCallValid, context, programPacked, locationPacked,5546bufSize, params);5547}5548else5549{5550GenerateContextLostErrorOnCurrentGlobalContext();5551}5552}55535554void GL_APIENTRY GL_GetnUniformivEXT(GLuint program, GLint location, GLsizei bufSize, GLint *params)5555{5556Context *context = GetValidGlobalContext();5557EVENT(context, GLGetnUniformivEXT,5558"context = %d, program = %u, location = %d, bufSize = %d, params = 0x%016" PRIxPTR "",5559CID(context), program, location, bufSize, (uintptr_t)params);55605561if (context)5562{5563ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);5564UniformLocation locationPacked = PackParam<UniformLocation>(location);5565std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);5566bool isCallValid =5567(context->skipValidation() ||5568ValidateGetnUniformivEXT(context, programPacked, locationPacked, bufSize, params));5569if (isCallValid)5570{5571context->getnUniformiv(programPacked, locationPacked, bufSize, params);5572}5573ANGLE_CAPTURE(GetnUniformivEXT, isCallValid, context, programPacked, locationPacked,5574bufSize, params);5575}5576else5577{5578GenerateContextLostErrorOnCurrentGlobalContext();5579}5580}55815582void GL_APIENTRY GL_ReadnPixelsEXT(GLint x,5583GLint y,5584GLsizei width,5585GLsizei height,5586GLenum format,5587GLenum type,5588GLsizei bufSize,5589void *data)5590{5591Context *context = GetValidGlobalContext();5592EVENT(context, GLReadnPixelsEXT,5593"context = %d, x = %d, y = %d, width = %d, height = %d, format = %s, type = %s, bufSize "5594"= %d, data = 0x%016" PRIxPTR "",5595CID(context), x, y, width, height, GLenumToString(GLenumGroup::PixelFormat, format),5596GLenumToString(GLenumGroup::PixelType, type), bufSize, (uintptr_t)data);55975598if (context)5599{5600std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);5601bool isCallValid =5602(context->skipValidation() ||5603ValidateReadnPixelsEXT(context, x, y, width, height, format, type, bufSize, data));5604if (isCallValid)5605{5606context->readnPixels(x, y, width, height, format, type, bufSize, data);5607}5608ANGLE_CAPTURE(ReadnPixelsEXT, isCallValid, context, x, y, width, height, format, type,5609bufSize, data);5610}5611else5612{5613GenerateContextLostErrorOnCurrentGlobalContext();5614}5615}56165617// GL_EXT_sRGB56185619// GL_EXT_sRGB_write_control56205621// GL_EXT_semaphore5622void GL_APIENTRY GL_DeleteSemaphoresEXT(GLsizei n, const GLuint *semaphores)5623{5624Context *context = GetValidGlobalContext();5625EVENT(context, GLDeleteSemaphoresEXT, "context = %d, n = %d, semaphores = 0x%016" PRIxPTR "",5626CID(context), n, (uintptr_t)semaphores);56275628if (context)5629{5630const SemaphoreID *semaphoresPacked = PackParam<const SemaphoreID *>(semaphores);5631std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);5632bool isCallValid = (context->skipValidation() ||5633ValidateDeleteSemaphoresEXT(context, n, semaphoresPacked));5634if (isCallValid)5635{5636context->deleteSemaphores(n, semaphoresPacked);5637}5638ANGLE_CAPTURE(DeleteSemaphoresEXT, isCallValid, context, n, semaphoresPacked);5639}5640else5641{5642GenerateContextLostErrorOnCurrentGlobalContext();5643}5644}56455646void GL_APIENTRY GL_GenSemaphoresEXT(GLsizei n, GLuint *semaphores)5647{5648Context *context = GetValidGlobalContext();5649EVENT(context, GLGenSemaphoresEXT, "context = %d, n = %d, semaphores = 0x%016" PRIxPTR "",5650CID(context), n, (uintptr_t)semaphores);56515652if (context)5653{5654SemaphoreID *semaphoresPacked = PackParam<SemaphoreID *>(semaphores);5655std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);5656bool isCallValid =5657(context->skipValidation() || ValidateGenSemaphoresEXT(context, n, semaphoresPacked));5658if (isCallValid)5659{5660context->genSemaphores(n, semaphoresPacked);5661}5662ANGLE_CAPTURE(GenSemaphoresEXT, isCallValid, context, n, semaphoresPacked);5663}5664else5665{5666GenerateContextLostErrorOnCurrentGlobalContext();5667}5668}56695670void GL_APIENTRY GL_GetSemaphoreParameterui64vEXT(GLuint semaphore, GLenum pname, GLuint64 *params)5671{5672Context *context = GetValidGlobalContext();5673EVENT(context, GLGetSemaphoreParameterui64vEXT,5674"context = %d, semaphore = %u, pname = %s, params = 0x%016" PRIxPTR "", CID(context),5675semaphore, GLenumToString(GLenumGroup::SemaphoreParameterName, pname), (uintptr_t)params);56765677if (context)5678{5679SemaphoreID semaphorePacked = PackParam<SemaphoreID>(semaphore);5680std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);5681bool isCallValid =5682(context->skipValidation() ||5683ValidateGetSemaphoreParameterui64vEXT(context, semaphorePacked, pname, params));5684if (isCallValid)5685{5686context->getSemaphoreParameterui64v(semaphorePacked, pname, params);5687}5688ANGLE_CAPTURE(GetSemaphoreParameterui64vEXT, isCallValid, context, semaphorePacked, pname,5689params);5690}5691else5692{5693GenerateContextLostErrorOnCurrentGlobalContext();5694}5695}56965697GLboolean GL_APIENTRY GL_IsSemaphoreEXT(GLuint semaphore)5698{5699Context *context = GetValidGlobalContext();5700EVENT(context, GLIsSemaphoreEXT, "context = %d, semaphore = %u", CID(context), semaphore);57015702GLboolean returnValue;5703if (context)5704{5705SemaphoreID semaphorePacked = PackParam<SemaphoreID>(semaphore);5706std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);5707bool isCallValid =5708(context->skipValidation() || ValidateIsSemaphoreEXT(context, semaphorePacked));5709if (isCallValid)5710{5711returnValue = context->isSemaphore(semaphorePacked);5712}5713else5714{5715returnValue = GetDefaultReturnValue<angle::EntryPoint::GLIsSemaphoreEXT, GLboolean>();5716}5717ANGLE_CAPTURE(IsSemaphoreEXT, isCallValid, context, semaphorePacked, returnValue);5718}5719else5720{5721GenerateContextLostErrorOnCurrentGlobalContext();5722returnValue = GetDefaultReturnValue<angle::EntryPoint::GLIsSemaphoreEXT, GLboolean>();5723}5724return returnValue;5725}57265727void GL_APIENTRY GL_SemaphoreParameterui64vEXT(GLuint semaphore,5728GLenum pname,5729const GLuint64 *params)5730{5731Context *context = GetValidGlobalContext();5732EVENT(context, GLSemaphoreParameterui64vEXT,5733"context = %d, semaphore = %u, pname = %s, params = 0x%016" PRIxPTR "", CID(context),5734semaphore, GLenumToString(GLenumGroup::SemaphoreParameterName, pname), (uintptr_t)params);57355736if (context)5737{5738SemaphoreID semaphorePacked = PackParam<SemaphoreID>(semaphore);5739std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);5740bool isCallValid =5741(context->skipValidation() ||5742ValidateSemaphoreParameterui64vEXT(context, semaphorePacked, pname, params));5743if (isCallValid)5744{5745context->semaphoreParameterui64v(semaphorePacked, pname, params);5746}5747ANGLE_CAPTURE(SemaphoreParameterui64vEXT, isCallValid, context, semaphorePacked, pname,5748params);5749}5750else5751{5752GenerateContextLostErrorOnCurrentGlobalContext();5753}5754}57555756void GL_APIENTRY GL_SignalSemaphoreEXT(GLuint semaphore,5757GLuint numBufferBarriers,5758const GLuint *buffers,5759GLuint numTextureBarriers,5760const GLuint *textures,5761const GLenum *dstLayouts)5762{5763Context *context = GetValidGlobalContext();5764EVENT(context, GLSignalSemaphoreEXT,5765"context = %d, semaphore = %u, numBufferBarriers = %u, buffers = 0x%016" PRIxPTR5766", numTextureBarriers = %u, textures = 0x%016" PRIxPTR ", dstLayouts = 0x%016" PRIxPTR "",5767CID(context), semaphore, numBufferBarriers, (uintptr_t)buffers, numTextureBarriers,5768(uintptr_t)textures, (uintptr_t)dstLayouts);57695770if (context)5771{5772SemaphoreID semaphorePacked = PackParam<SemaphoreID>(semaphore);5773const BufferID *buffersPacked = PackParam<const BufferID *>(buffers);5774const TextureID *texturesPacked = PackParam<const TextureID *>(textures);5775std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);5776bool isCallValid =5777(context->skipValidation() ||5778ValidateSignalSemaphoreEXT(context, semaphorePacked, numBufferBarriers, buffersPacked,5779numTextureBarriers, texturesPacked, dstLayouts));5780if (isCallValid)5781{5782context->signalSemaphore(semaphorePacked, numBufferBarriers, buffersPacked,5783numTextureBarriers, texturesPacked, dstLayouts);5784}5785ANGLE_CAPTURE(SignalSemaphoreEXT, isCallValid, context, semaphorePacked, numBufferBarriers,5786buffersPacked, numTextureBarriers, texturesPacked, dstLayouts);5787}5788else5789{5790GenerateContextLostErrorOnCurrentGlobalContext();5791}5792}57935794void GL_APIENTRY GL_WaitSemaphoreEXT(GLuint semaphore,5795GLuint numBufferBarriers,5796const GLuint *buffers,5797GLuint numTextureBarriers,5798const GLuint *textures,5799const GLenum *srcLayouts)5800{5801Context *context = GetValidGlobalContext();5802EVENT(context, GLWaitSemaphoreEXT,5803"context = %d, semaphore = %u, numBufferBarriers = %u, buffers = 0x%016" PRIxPTR5804", numTextureBarriers = %u, textures = 0x%016" PRIxPTR ", srcLayouts = 0x%016" PRIxPTR "",5805CID(context), semaphore, numBufferBarriers, (uintptr_t)buffers, numTextureBarriers,5806(uintptr_t)textures, (uintptr_t)srcLayouts);58075808if (context)5809{5810SemaphoreID semaphorePacked = PackParam<SemaphoreID>(semaphore);5811const BufferID *buffersPacked = PackParam<const BufferID *>(buffers);5812const TextureID *texturesPacked = PackParam<const TextureID *>(textures);5813std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);5814bool isCallValid =5815(context->skipValidation() ||5816ValidateWaitSemaphoreEXT(context, semaphorePacked, numBufferBarriers, buffersPacked,5817numTextureBarriers, texturesPacked, srcLayouts));5818if (isCallValid)5819{5820context->waitSemaphore(semaphorePacked, numBufferBarriers, buffersPacked,5821numTextureBarriers, texturesPacked, srcLayouts);5822}5823ANGLE_CAPTURE(WaitSemaphoreEXT, isCallValid, context, semaphorePacked, numBufferBarriers,5824buffersPacked, numTextureBarriers, texturesPacked, srcLayouts);5825}5826else5827{5828GenerateContextLostErrorOnCurrentGlobalContext();5829}5830}58315832// GetUnsignedBytei_vEXT is already defined.58335834// GetUnsignedBytevEXT is already defined.58355836// GL_EXT_semaphore_fd5837void GL_APIENTRY GL_ImportSemaphoreFdEXT(GLuint semaphore, GLenum handleType, GLint fd)5838{5839Context *context = GetValidGlobalContext();5840EVENT(context, GLImportSemaphoreFdEXT, "context = %d, semaphore = %u, handleType = %s, fd = %d",5841CID(context), semaphore, GLenumToString(GLenumGroup::ExternalHandleType, handleType), fd);58425843if (context)5844{5845SemaphoreID semaphorePacked = PackParam<SemaphoreID>(semaphore);5846HandleType handleTypePacked = PackParam<HandleType>(handleType);5847std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);5848bool isCallValid =5849(context->skipValidation() ||5850ValidateImportSemaphoreFdEXT(context, semaphorePacked, handleTypePacked, fd));5851if (isCallValid)5852{5853context->importSemaphoreFd(semaphorePacked, handleTypePacked, fd);5854}5855ANGLE_CAPTURE(ImportSemaphoreFdEXT, isCallValid, context, semaphorePacked, handleTypePacked,5856fd);5857}5858else5859{5860GenerateContextLostErrorOnCurrentGlobalContext();5861}5862}58635864// GL_EXT_separate_shader_objects5865void GL_APIENTRY GL_ActiveShaderProgramEXT(GLuint pipeline, GLuint program)5866{5867Context *context = GetValidGlobalContext();5868EVENT(context, GLActiveShaderProgramEXT, "context = %d, pipeline = %u, program = %u",5869CID(context), pipeline, program);58705871if (context)5872{5873ProgramPipelineID pipelinePacked = PackParam<ProgramPipelineID>(pipeline);5874ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);5875std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);5876bool isCallValid = (context->skipValidation() ||5877ValidateActiveShaderProgramEXT(context, pipelinePacked, programPacked));5878if (isCallValid)5879{5880context->activeShaderProgram(pipelinePacked, programPacked);5881}5882ANGLE_CAPTURE(ActiveShaderProgramEXT, isCallValid, context, pipelinePacked, programPacked);5883}5884else5885{5886GenerateContextLostErrorOnCurrentGlobalContext();5887}5888}58895890void GL_APIENTRY GL_BindProgramPipelineEXT(GLuint pipeline)5891{5892Context *context = GetValidGlobalContext();5893EVENT(context, GLBindProgramPipelineEXT, "context = %d, pipeline = %u", CID(context), pipeline);58945895if (context)5896{5897ProgramPipelineID pipelinePacked = PackParam<ProgramPipelineID>(pipeline);5898std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);5899bool isCallValid =5900(context->skipValidation() || ValidateBindProgramPipelineEXT(context, pipelinePacked));5901if (isCallValid)5902{5903context->bindProgramPipeline(pipelinePacked);5904}5905ANGLE_CAPTURE(BindProgramPipelineEXT, isCallValid, context, pipelinePacked);5906}5907else5908{5909GenerateContextLostErrorOnCurrentGlobalContext();5910}5911}59125913GLuint GL_APIENTRY GL_CreateShaderProgramvEXT(GLenum type, GLsizei count, const GLchar **strings)5914{5915Context *context = GetValidGlobalContext();5916EVENT(context, GLCreateShaderProgramvEXT,5917"context = %d, type = %s, count = %d, strings = 0x%016" PRIxPTR "", CID(context),5918GLenumToString(GLenumGroup::ShaderType, type), count, (uintptr_t)strings);59195920GLuint returnValue;5921if (context)5922{5923ShaderType typePacked = PackParam<ShaderType>(type);5924std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);5925bool isCallValid = (context->skipValidation() ||5926ValidateCreateShaderProgramvEXT(context, typePacked, count, strings));5927if (isCallValid)5928{5929returnValue = context->createShaderProgramv(typePacked, count, strings);5930}5931else5932{5933returnValue =5934GetDefaultReturnValue<angle::EntryPoint::GLCreateShaderProgramvEXT, GLuint>();5935}5936ANGLE_CAPTURE(CreateShaderProgramvEXT, isCallValid, context, typePacked, count, strings,5937returnValue);5938}5939else5940{5941GenerateContextLostErrorOnCurrentGlobalContext();5942returnValue = GetDefaultReturnValue<angle::EntryPoint::GLCreateShaderProgramvEXT, GLuint>();5943}5944return returnValue;5945}59465947void GL_APIENTRY GL_DeleteProgramPipelinesEXT(GLsizei n, const GLuint *pipelines)5948{5949Context *context = GetValidGlobalContext();5950EVENT(context, GLDeleteProgramPipelinesEXT,5951"context = %d, n = %d, pipelines = 0x%016" PRIxPTR "", CID(context), n,5952(uintptr_t)pipelines);59535954if (context)5955{5956const ProgramPipelineID *pipelinesPacked = PackParam<const ProgramPipelineID *>(pipelines);5957std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);5958bool isCallValid = (context->skipValidation() ||5959ValidateDeleteProgramPipelinesEXT(context, n, pipelinesPacked));5960if (isCallValid)5961{5962context->deleteProgramPipelines(n, pipelinesPacked);5963}5964ANGLE_CAPTURE(DeleteProgramPipelinesEXT, isCallValid, context, n, pipelinesPacked);5965}5966else5967{5968GenerateContextLostErrorOnCurrentGlobalContext();5969}5970}59715972void GL_APIENTRY GL_GenProgramPipelinesEXT(GLsizei n, GLuint *pipelines)5973{5974Context *context = GetValidGlobalContext();5975EVENT(context, GLGenProgramPipelinesEXT, "context = %d, n = %d, pipelines = 0x%016" PRIxPTR "",5976CID(context), n, (uintptr_t)pipelines);59775978if (context)5979{5980ProgramPipelineID *pipelinesPacked = PackParam<ProgramPipelineID *>(pipelines);5981std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);5982bool isCallValid = (context->skipValidation() ||5983ValidateGenProgramPipelinesEXT(context, n, pipelinesPacked));5984if (isCallValid)5985{5986context->genProgramPipelines(n, pipelinesPacked);5987}5988ANGLE_CAPTURE(GenProgramPipelinesEXT, isCallValid, context, n, pipelinesPacked);5989}5990else5991{5992GenerateContextLostErrorOnCurrentGlobalContext();5993}5994}59955996void GL_APIENTRY GL_GetProgramPipelineInfoLogEXT(GLuint pipeline,5997GLsizei bufSize,5998GLsizei *length,5999GLchar *infoLog)6000{6001Context *context = GetValidGlobalContext();6002EVENT(context, GLGetProgramPipelineInfoLogEXT,6003"context = %d, pipeline = %u, bufSize = %d, length = 0x%016" PRIxPTR6004", infoLog = 0x%016" PRIxPTR "",6005CID(context), pipeline, bufSize, (uintptr_t)length, (uintptr_t)infoLog);60066007if (context)6008{6009ProgramPipelineID pipelinePacked = PackParam<ProgramPipelineID>(pipeline);6010std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);6011bool isCallValid =6012(context->skipValidation() || ValidateGetProgramPipelineInfoLogEXT(6013context, pipelinePacked, bufSize, length, infoLog));6014if (isCallValid)6015{6016context->getProgramPipelineInfoLog(pipelinePacked, bufSize, length, infoLog);6017}6018ANGLE_CAPTURE(GetProgramPipelineInfoLogEXT, isCallValid, context, pipelinePacked, bufSize,6019length, infoLog);6020}6021else6022{6023GenerateContextLostErrorOnCurrentGlobalContext();6024}6025}60266027void GL_APIENTRY GL_GetProgramPipelineivEXT(GLuint pipeline, GLenum pname, GLint *params)6028{6029Context *context = GetValidGlobalContext();6030EVENT(context, GLGetProgramPipelineivEXT,6031"context = %d, pipeline = %u, pname = %s, params = 0x%016" PRIxPTR "", CID(context),6032pipeline, GLenumToString(GLenumGroup::PipelineParameterName, pname), (uintptr_t)params);60336034if (context)6035{6036ProgramPipelineID pipelinePacked = PackParam<ProgramPipelineID>(pipeline);6037std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);6038bool isCallValid =6039(context->skipValidation() ||6040ValidateGetProgramPipelineivEXT(context, pipelinePacked, pname, params));6041if (isCallValid)6042{6043context->getProgramPipelineiv(pipelinePacked, pname, params);6044}6045ANGLE_CAPTURE(GetProgramPipelineivEXT, isCallValid, context, pipelinePacked, pname, params);6046}6047else6048{6049GenerateContextLostErrorOnCurrentGlobalContext();6050}6051}60526053GLboolean GL_APIENTRY GL_IsProgramPipelineEXT(GLuint pipeline)6054{6055Context *context = GetValidGlobalContext();6056EVENT(context, GLIsProgramPipelineEXT, "context = %d, pipeline = %u", CID(context), pipeline);60576058GLboolean returnValue;6059if (context)6060{6061ProgramPipelineID pipelinePacked = PackParam<ProgramPipelineID>(pipeline);6062std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);6063bool isCallValid =6064(context->skipValidation() || ValidateIsProgramPipelineEXT(context, pipelinePacked));6065if (isCallValid)6066{6067returnValue = context->isProgramPipeline(pipelinePacked);6068}6069else6070{6071returnValue =6072GetDefaultReturnValue<angle::EntryPoint::GLIsProgramPipelineEXT, GLboolean>();6073}6074ANGLE_CAPTURE(IsProgramPipelineEXT, isCallValid, context, pipelinePacked, returnValue);6075}6076else6077{6078GenerateContextLostErrorOnCurrentGlobalContext();6079returnValue = GetDefaultReturnValue<angle::EntryPoint::GLIsProgramPipelineEXT, GLboolean>();6080}6081return returnValue;6082}60836084void GL_APIENTRY GL_ProgramParameteriEXT(GLuint program, GLenum pname, GLint value)6085{6086Context *context = GetValidGlobalContext();6087EVENT(context, GLProgramParameteriEXT, "context = %d, program = %u, pname = %s, value = %d",6088CID(context), program, GLenumToString(GLenumGroup::ProgramParameterPName, pname), value);60896090if (context)6091{6092ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);6093std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);6094bool isCallValid = (context->skipValidation() ||6095ValidateProgramParameteriEXT(context, programPacked, pname, value));6096if (isCallValid)6097{6098context->programParameteri(programPacked, pname, value);6099}6100ANGLE_CAPTURE(ProgramParameteriEXT, isCallValid, context, programPacked, pname, value);6101}6102else6103{6104GenerateContextLostErrorOnCurrentGlobalContext();6105}6106}61076108void GL_APIENTRY GL_ProgramUniform1fEXT(GLuint program, GLint location, GLfloat v0)6109{6110Context *context = GetValidGlobalContext();6111EVENT(context, GLProgramUniform1fEXT, "context = %d, program = %u, location = %d, v0 = %f",6112CID(context), program, location, v0);61136114if (context)6115{6116ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);6117UniformLocation locationPacked = PackParam<UniformLocation>(location);6118std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);6119bool isCallValid =6120(context->skipValidation() ||6121ValidateProgramUniform1fEXT(context, programPacked, locationPacked, v0));6122if (isCallValid)6123{6124context->programUniform1f(programPacked, locationPacked, v0);6125}6126ANGLE_CAPTURE(ProgramUniform1fEXT, isCallValid, context, programPacked, locationPacked, v0);6127}6128else6129{6130GenerateContextLostErrorOnCurrentGlobalContext();6131}6132}61336134void GL_APIENTRY GL_ProgramUniform1fvEXT(GLuint program,6135GLint location,6136GLsizei count,6137const GLfloat *value)6138{6139Context *context = GetValidGlobalContext();6140EVENT(context, GLProgramUniform1fvEXT,6141"context = %d, program = %u, location = %d, count = %d, value = 0x%016" PRIxPTR "",6142CID(context), program, location, count, (uintptr_t)value);61436144if (context)6145{6146ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);6147UniformLocation locationPacked = PackParam<UniformLocation>(location);6148std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);6149bool isCallValid =6150(context->skipValidation() ||6151ValidateProgramUniform1fvEXT(context, programPacked, locationPacked, count, value));6152if (isCallValid)6153{6154context->programUniform1fv(programPacked, locationPacked, count, value);6155}6156ANGLE_CAPTURE(ProgramUniform1fvEXT, isCallValid, context, programPacked, locationPacked,6157count, value);6158}6159else6160{6161GenerateContextLostErrorOnCurrentGlobalContext();6162}6163}61646165void GL_APIENTRY GL_ProgramUniform1iEXT(GLuint program, GLint location, GLint v0)6166{6167Context *context = GetValidGlobalContext();6168EVENT(context, GLProgramUniform1iEXT, "context = %d, program = %u, location = %d, v0 = %d",6169CID(context), program, location, v0);61706171if (context)6172{6173ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);6174UniformLocation locationPacked = PackParam<UniformLocation>(location);6175std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);6176bool isCallValid =6177(context->skipValidation() ||6178ValidateProgramUniform1iEXT(context, programPacked, locationPacked, v0));6179if (isCallValid)6180{6181context->programUniform1i(programPacked, locationPacked, v0);6182}6183ANGLE_CAPTURE(ProgramUniform1iEXT, isCallValid, context, programPacked, locationPacked, v0);6184}6185else6186{6187GenerateContextLostErrorOnCurrentGlobalContext();6188}6189}61906191void GL_APIENTRY GL_ProgramUniform1ivEXT(GLuint program,6192GLint location,6193GLsizei count,6194const GLint *value)6195{6196Context *context = GetValidGlobalContext();6197EVENT(context, GLProgramUniform1ivEXT,6198"context = %d, program = %u, location = %d, count = %d, value = 0x%016" PRIxPTR "",6199CID(context), program, location, count, (uintptr_t)value);62006201if (context)6202{6203ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);6204UniformLocation locationPacked = PackParam<UniformLocation>(location);6205std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);6206bool isCallValid =6207(context->skipValidation() ||6208ValidateProgramUniform1ivEXT(context, programPacked, locationPacked, count, value));6209if (isCallValid)6210{6211context->programUniform1iv(programPacked, locationPacked, count, value);6212}6213ANGLE_CAPTURE(ProgramUniform1ivEXT, isCallValid, context, programPacked, locationPacked,6214count, value);6215}6216else6217{6218GenerateContextLostErrorOnCurrentGlobalContext();6219}6220}62216222void GL_APIENTRY GL_ProgramUniform1uiEXT(GLuint program, GLint location, GLuint v0)6223{6224Context *context = GetValidGlobalContext();6225EVENT(context, GLProgramUniform1uiEXT, "context = %d, program = %u, location = %d, v0 = %u",6226CID(context), program, location, v0);62276228if (context)6229{6230ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);6231UniformLocation locationPacked = PackParam<UniformLocation>(location);6232std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);6233bool isCallValid =6234(context->skipValidation() ||6235ValidateProgramUniform1uiEXT(context, programPacked, locationPacked, v0));6236if (isCallValid)6237{6238context->programUniform1ui(programPacked, locationPacked, v0);6239}6240ANGLE_CAPTURE(ProgramUniform1uiEXT, isCallValid, context, programPacked, locationPacked,6241v0);6242}6243else6244{6245GenerateContextLostErrorOnCurrentGlobalContext();6246}6247}62486249void GL_APIENTRY GL_ProgramUniform1uivEXT(GLuint program,6250GLint location,6251GLsizei count,6252const GLuint *value)6253{6254Context *context = GetValidGlobalContext();6255EVENT(context, GLProgramUniform1uivEXT,6256"context = %d, program = %u, location = %d, count = %d, value = 0x%016" PRIxPTR "",6257CID(context), program, location, count, (uintptr_t)value);62586259if (context)6260{6261ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);6262UniformLocation locationPacked = PackParam<UniformLocation>(location);6263std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);6264bool isCallValid =6265(context->skipValidation() ||6266ValidateProgramUniform1uivEXT(context, programPacked, locationPacked, count, value));6267if (isCallValid)6268{6269context->programUniform1uiv(programPacked, locationPacked, count, value);6270}6271ANGLE_CAPTURE(ProgramUniform1uivEXT, isCallValid, context, programPacked, locationPacked,6272count, value);6273}6274else6275{6276GenerateContextLostErrorOnCurrentGlobalContext();6277}6278}62796280void GL_APIENTRY GL_ProgramUniform2fEXT(GLuint program, GLint location, GLfloat v0, GLfloat v1)6281{6282Context *context = GetValidGlobalContext();6283EVENT(context, GLProgramUniform2fEXT,6284"context = %d, program = %u, location = %d, v0 = %f, v1 = %f", CID(context), program,6285location, v0, v1);62866287if (context)6288{6289ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);6290UniformLocation locationPacked = PackParam<UniformLocation>(location);6291std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);6292bool isCallValid =6293(context->skipValidation() ||6294ValidateProgramUniform2fEXT(context, programPacked, locationPacked, v0, v1));6295if (isCallValid)6296{6297context->programUniform2f(programPacked, locationPacked, v0, v1);6298}6299ANGLE_CAPTURE(ProgramUniform2fEXT, isCallValid, context, programPacked, locationPacked, v0,6300v1);6301}6302else6303{6304GenerateContextLostErrorOnCurrentGlobalContext();6305}6306}63076308void GL_APIENTRY GL_ProgramUniform2fvEXT(GLuint program,6309GLint location,6310GLsizei count,6311const GLfloat *value)6312{6313Context *context = GetValidGlobalContext();6314EVENT(context, GLProgramUniform2fvEXT,6315"context = %d, program = %u, location = %d, count = %d, value = 0x%016" PRIxPTR "",6316CID(context), program, location, count, (uintptr_t)value);63176318if (context)6319{6320ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);6321UniformLocation locationPacked = PackParam<UniformLocation>(location);6322std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);6323bool isCallValid =6324(context->skipValidation() ||6325ValidateProgramUniform2fvEXT(context, programPacked, locationPacked, count, value));6326if (isCallValid)6327{6328context->programUniform2fv(programPacked, locationPacked, count, value);6329}6330ANGLE_CAPTURE(ProgramUniform2fvEXT, isCallValid, context, programPacked, locationPacked,6331count, value);6332}6333else6334{6335GenerateContextLostErrorOnCurrentGlobalContext();6336}6337}63386339void GL_APIENTRY GL_ProgramUniform2iEXT(GLuint program, GLint location, GLint v0, GLint v1)6340{6341Context *context = GetValidGlobalContext();6342EVENT(context, GLProgramUniform2iEXT,6343"context = %d, program = %u, location = %d, v0 = %d, v1 = %d", CID(context), program,6344location, v0, v1);63456346if (context)6347{6348ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);6349UniformLocation locationPacked = PackParam<UniformLocation>(location);6350std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);6351bool isCallValid =6352(context->skipValidation() ||6353ValidateProgramUniform2iEXT(context, programPacked, locationPacked, v0, v1));6354if (isCallValid)6355{6356context->programUniform2i(programPacked, locationPacked, v0, v1);6357}6358ANGLE_CAPTURE(ProgramUniform2iEXT, isCallValid, context, programPacked, locationPacked, v0,6359v1);6360}6361else6362{6363GenerateContextLostErrorOnCurrentGlobalContext();6364}6365}63666367void GL_APIENTRY GL_ProgramUniform2ivEXT(GLuint program,6368GLint location,6369GLsizei count,6370const GLint *value)6371{6372Context *context = GetValidGlobalContext();6373EVENT(context, GLProgramUniform2ivEXT,6374"context = %d, program = %u, location = %d, count = %d, value = 0x%016" PRIxPTR "",6375CID(context), program, location, count, (uintptr_t)value);63766377if (context)6378{6379ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);6380UniformLocation locationPacked = PackParam<UniformLocation>(location);6381std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);6382bool isCallValid =6383(context->skipValidation() ||6384ValidateProgramUniform2ivEXT(context, programPacked, locationPacked, count, value));6385if (isCallValid)6386{6387context->programUniform2iv(programPacked, locationPacked, count, value);6388}6389ANGLE_CAPTURE(ProgramUniform2ivEXT, isCallValid, context, programPacked, locationPacked,6390count, value);6391}6392else6393{6394GenerateContextLostErrorOnCurrentGlobalContext();6395}6396}63976398void GL_APIENTRY GL_ProgramUniform2uiEXT(GLuint program, GLint location, GLuint v0, GLuint v1)6399{6400Context *context = GetValidGlobalContext();6401EVENT(context, GLProgramUniform2uiEXT,6402"context = %d, program = %u, location = %d, v0 = %u, v1 = %u", CID(context), program,6403location, v0, v1);64046405if (context)6406{6407ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);6408UniformLocation locationPacked = PackParam<UniformLocation>(location);6409std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);6410bool isCallValid =6411(context->skipValidation() ||6412ValidateProgramUniform2uiEXT(context, programPacked, locationPacked, v0, v1));6413if (isCallValid)6414{6415context->programUniform2ui(programPacked, locationPacked, v0, v1);6416}6417ANGLE_CAPTURE(ProgramUniform2uiEXT, isCallValid, context, programPacked, locationPacked, v0,6418v1);6419}6420else6421{6422GenerateContextLostErrorOnCurrentGlobalContext();6423}6424}64256426void GL_APIENTRY GL_ProgramUniform2uivEXT(GLuint program,6427GLint location,6428GLsizei count,6429const GLuint *value)6430{6431Context *context = GetValidGlobalContext();6432EVENT(context, GLProgramUniform2uivEXT,6433"context = %d, program = %u, location = %d, count = %d, value = 0x%016" PRIxPTR "",6434CID(context), program, location, count, (uintptr_t)value);64356436if (context)6437{6438ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);6439UniformLocation locationPacked = PackParam<UniformLocation>(location);6440std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);6441bool isCallValid =6442(context->skipValidation() ||6443ValidateProgramUniform2uivEXT(context, programPacked, locationPacked, count, value));6444if (isCallValid)6445{6446context->programUniform2uiv(programPacked, locationPacked, count, value);6447}6448ANGLE_CAPTURE(ProgramUniform2uivEXT, isCallValid, context, programPacked, locationPacked,6449count, value);6450}6451else6452{6453GenerateContextLostErrorOnCurrentGlobalContext();6454}6455}64566457void GL_APIENTRY6458GL_ProgramUniform3fEXT(GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2)6459{6460Context *context = GetValidGlobalContext();6461EVENT(context, GLProgramUniform3fEXT,6462"context = %d, program = %u, location = %d, v0 = %f, v1 = %f, v2 = %f", CID(context),6463program, location, v0, v1, v2);64646465if (context)6466{6467ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);6468UniformLocation locationPacked = PackParam<UniformLocation>(location);6469std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);6470bool isCallValid =6471(context->skipValidation() ||6472ValidateProgramUniform3fEXT(context, programPacked, locationPacked, v0, v1, v2));6473if (isCallValid)6474{6475context->programUniform3f(programPacked, locationPacked, v0, v1, v2);6476}6477ANGLE_CAPTURE(ProgramUniform3fEXT, isCallValid, context, programPacked, locationPacked, v0,6478v1, v2);6479}6480else6481{6482GenerateContextLostErrorOnCurrentGlobalContext();6483}6484}64856486void GL_APIENTRY GL_ProgramUniform3fvEXT(GLuint program,6487GLint location,6488GLsizei count,6489const GLfloat *value)6490{6491Context *context = GetValidGlobalContext();6492EVENT(context, GLProgramUniform3fvEXT,6493"context = %d, program = %u, location = %d, count = %d, value = 0x%016" PRIxPTR "",6494CID(context), program, location, count, (uintptr_t)value);64956496if (context)6497{6498ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);6499UniformLocation locationPacked = PackParam<UniformLocation>(location);6500std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);6501bool isCallValid =6502(context->skipValidation() ||6503ValidateProgramUniform3fvEXT(context, programPacked, locationPacked, count, value));6504if (isCallValid)6505{6506context->programUniform3fv(programPacked, locationPacked, count, value);6507}6508ANGLE_CAPTURE(ProgramUniform3fvEXT, isCallValid, context, programPacked, locationPacked,6509count, value);6510}6511else6512{6513GenerateContextLostErrorOnCurrentGlobalContext();6514}6515}65166517void GL_APIENTRY6518GL_ProgramUniform3iEXT(GLuint program, GLint location, GLint v0, GLint v1, GLint v2)6519{6520Context *context = GetValidGlobalContext();6521EVENT(context, GLProgramUniform3iEXT,6522"context = %d, program = %u, location = %d, v0 = %d, v1 = %d, v2 = %d", CID(context),6523program, location, v0, v1, v2);65246525if (context)6526{6527ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);6528UniformLocation locationPacked = PackParam<UniformLocation>(location);6529std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);6530bool isCallValid =6531(context->skipValidation() ||6532ValidateProgramUniform3iEXT(context, programPacked, locationPacked, v0, v1, v2));6533if (isCallValid)6534{6535context->programUniform3i(programPacked, locationPacked, v0, v1, v2);6536}6537ANGLE_CAPTURE(ProgramUniform3iEXT, isCallValid, context, programPacked, locationPacked, v0,6538v1, v2);6539}6540else6541{6542GenerateContextLostErrorOnCurrentGlobalContext();6543}6544}65456546void GL_APIENTRY GL_ProgramUniform3ivEXT(GLuint program,6547GLint location,6548GLsizei count,6549const GLint *value)6550{6551Context *context = GetValidGlobalContext();6552EVENT(context, GLProgramUniform3ivEXT,6553"context = %d, program = %u, location = %d, count = %d, value = 0x%016" PRIxPTR "",6554CID(context), program, location, count, (uintptr_t)value);65556556if (context)6557{6558ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);6559UniformLocation locationPacked = PackParam<UniformLocation>(location);6560std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);6561bool isCallValid =6562(context->skipValidation() ||6563ValidateProgramUniform3ivEXT(context, programPacked, locationPacked, count, value));6564if (isCallValid)6565{6566context->programUniform3iv(programPacked, locationPacked, count, value);6567}6568ANGLE_CAPTURE(ProgramUniform3ivEXT, isCallValid, context, programPacked, locationPacked,6569count, value);6570}6571else6572{6573GenerateContextLostErrorOnCurrentGlobalContext();6574}6575}65766577void GL_APIENTRY6578GL_ProgramUniform3uiEXT(GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2)6579{6580Context *context = GetValidGlobalContext();6581EVENT(context, GLProgramUniform3uiEXT,6582"context = %d, program = %u, location = %d, v0 = %u, v1 = %u, v2 = %u", CID(context),6583program, location, v0, v1, v2);65846585if (context)6586{6587ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);6588UniformLocation locationPacked = PackParam<UniformLocation>(location);6589std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);6590bool isCallValid =6591(context->skipValidation() ||6592ValidateProgramUniform3uiEXT(context, programPacked, locationPacked, v0, v1, v2));6593if (isCallValid)6594{6595context->programUniform3ui(programPacked, locationPacked, v0, v1, v2);6596}6597ANGLE_CAPTURE(ProgramUniform3uiEXT, isCallValid, context, programPacked, locationPacked, v0,6598v1, v2);6599}6600else6601{6602GenerateContextLostErrorOnCurrentGlobalContext();6603}6604}66056606void GL_APIENTRY GL_ProgramUniform3uivEXT(GLuint program,6607GLint location,6608GLsizei count,6609const GLuint *value)6610{6611Context *context = GetValidGlobalContext();6612EVENT(context, GLProgramUniform3uivEXT,6613"context = %d, program = %u, location = %d, count = %d, value = 0x%016" PRIxPTR "",6614CID(context), program, location, count, (uintptr_t)value);66156616if (context)6617{6618ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);6619UniformLocation locationPacked = PackParam<UniformLocation>(location);6620std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);6621bool isCallValid =6622(context->skipValidation() ||6623ValidateProgramUniform3uivEXT(context, programPacked, locationPacked, count, value));6624if (isCallValid)6625{6626context->programUniform3uiv(programPacked, locationPacked, count, value);6627}6628ANGLE_CAPTURE(ProgramUniform3uivEXT, isCallValid, context, programPacked, locationPacked,6629count, value);6630}6631else6632{6633GenerateContextLostErrorOnCurrentGlobalContext();6634}6635}66366637void GL_APIENTRY GL_ProgramUniform4fEXT(GLuint program,6638GLint location,6639GLfloat v0,6640GLfloat v1,6641GLfloat v2,6642GLfloat v3)6643{6644Context *context = GetValidGlobalContext();6645EVENT(context, GLProgramUniform4fEXT,6646"context = %d, program = %u, location = %d, v0 = %f, v1 = %f, v2 = %f, v3 = %f",6647CID(context), program, location, v0, v1, v2, v3);66486649if (context)6650{6651ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);6652UniformLocation locationPacked = PackParam<UniformLocation>(location);6653std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);6654bool isCallValid =6655(context->skipValidation() ||6656ValidateProgramUniform4fEXT(context, programPacked, locationPacked, v0, v1, v2, v3));6657if (isCallValid)6658{6659context->programUniform4f(programPacked, locationPacked, v0, v1, v2, v3);6660}6661ANGLE_CAPTURE(ProgramUniform4fEXT, isCallValid, context, programPacked, locationPacked, v0,6662v1, v2, v3);6663}6664else6665{6666GenerateContextLostErrorOnCurrentGlobalContext();6667}6668}66696670void GL_APIENTRY GL_ProgramUniform4fvEXT(GLuint program,6671GLint location,6672GLsizei count,6673const GLfloat *value)6674{6675Context *context = GetValidGlobalContext();6676EVENT(context, GLProgramUniform4fvEXT,6677"context = %d, program = %u, location = %d, count = %d, value = 0x%016" PRIxPTR "",6678CID(context), program, location, count, (uintptr_t)value);66796680if (context)6681{6682ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);6683UniformLocation locationPacked = PackParam<UniformLocation>(location);6684std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);6685bool isCallValid =6686(context->skipValidation() ||6687ValidateProgramUniform4fvEXT(context, programPacked, locationPacked, count, value));6688if (isCallValid)6689{6690context->programUniform4fv(programPacked, locationPacked, count, value);6691}6692ANGLE_CAPTURE(ProgramUniform4fvEXT, isCallValid, context, programPacked, locationPacked,6693count, value);6694}6695else6696{6697GenerateContextLostErrorOnCurrentGlobalContext();6698}6699}67006701void GL_APIENTRY6702GL_ProgramUniform4iEXT(GLuint program, GLint location, GLint v0, GLint v1, GLint v2, GLint v3)6703{6704Context *context = GetValidGlobalContext();6705EVENT(context, GLProgramUniform4iEXT,6706"context = %d, program = %u, location = %d, v0 = %d, v1 = %d, v2 = %d, v3 = %d",6707CID(context), program, location, v0, v1, v2, v3);67086709if (context)6710{6711ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);6712UniformLocation locationPacked = PackParam<UniformLocation>(location);6713std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);6714bool isCallValid =6715(context->skipValidation() ||6716ValidateProgramUniform4iEXT(context, programPacked, locationPacked, v0, v1, v2, v3));6717if (isCallValid)6718{6719context->programUniform4i(programPacked, locationPacked, v0, v1, v2, v3);6720}6721ANGLE_CAPTURE(ProgramUniform4iEXT, isCallValid, context, programPacked, locationPacked, v0,6722v1, v2, v3);6723}6724else6725{6726GenerateContextLostErrorOnCurrentGlobalContext();6727}6728}67296730void GL_APIENTRY GL_ProgramUniform4ivEXT(GLuint program,6731GLint location,6732GLsizei count,6733const GLint *value)6734{6735Context *context = GetValidGlobalContext();6736EVENT(context, GLProgramUniform4ivEXT,6737"context = %d, program = %u, location = %d, count = %d, value = 0x%016" PRIxPTR "",6738CID(context), program, location, count, (uintptr_t)value);67396740if (context)6741{6742ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);6743UniformLocation locationPacked = PackParam<UniformLocation>(location);6744std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);6745bool isCallValid =6746(context->skipValidation() ||6747ValidateProgramUniform4ivEXT(context, programPacked, locationPacked, count, value));6748if (isCallValid)6749{6750context->programUniform4iv(programPacked, locationPacked, count, value);6751}6752ANGLE_CAPTURE(ProgramUniform4ivEXT, isCallValid, context, programPacked, locationPacked,6753count, value);6754}6755else6756{6757GenerateContextLostErrorOnCurrentGlobalContext();6758}6759}67606761void GL_APIENTRY6762GL_ProgramUniform4uiEXT(GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3)6763{6764Context *context = GetValidGlobalContext();6765EVENT(context, GLProgramUniform4uiEXT,6766"context = %d, program = %u, location = %d, v0 = %u, v1 = %u, v2 = %u, v3 = %u",6767CID(context), program, location, v0, v1, v2, v3);67686769if (context)6770{6771ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);6772UniformLocation locationPacked = PackParam<UniformLocation>(location);6773std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);6774bool isCallValid =6775(context->skipValidation() ||6776ValidateProgramUniform4uiEXT(context, programPacked, locationPacked, v0, v1, v2, v3));6777if (isCallValid)6778{6779context->programUniform4ui(programPacked, locationPacked, v0, v1, v2, v3);6780}6781ANGLE_CAPTURE(ProgramUniform4uiEXT, isCallValid, context, programPacked, locationPacked, v0,6782v1, v2, v3);6783}6784else6785{6786GenerateContextLostErrorOnCurrentGlobalContext();6787}6788}67896790void GL_APIENTRY GL_ProgramUniform4uivEXT(GLuint program,6791GLint location,6792GLsizei count,6793const GLuint *value)6794{6795Context *context = GetValidGlobalContext();6796EVENT(context, GLProgramUniform4uivEXT,6797"context = %d, program = %u, location = %d, count = %d, value = 0x%016" PRIxPTR "",6798CID(context), program, location, count, (uintptr_t)value);67996800if (context)6801{6802ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);6803UniformLocation locationPacked = PackParam<UniformLocation>(location);6804std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);6805bool isCallValid =6806(context->skipValidation() ||6807ValidateProgramUniform4uivEXT(context, programPacked, locationPacked, count, value));6808if (isCallValid)6809{6810context->programUniform4uiv(programPacked, locationPacked, count, value);6811}6812ANGLE_CAPTURE(ProgramUniform4uivEXT, isCallValid, context, programPacked, locationPacked,6813count, value);6814}6815else6816{6817GenerateContextLostErrorOnCurrentGlobalContext();6818}6819}68206821void GL_APIENTRY GL_ProgramUniformMatrix2fvEXT(GLuint program,6822GLint location,6823GLsizei count,6824GLboolean transpose,6825const GLfloat *value)6826{6827Context *context = GetValidGlobalContext();6828EVENT(context, GLProgramUniformMatrix2fvEXT,6829"context = %d, program = %u, location = %d, count = %d, transpose = %s, value = "6830"0x%016" PRIxPTR "",6831CID(context), program, location, count, GLbooleanToString(transpose), (uintptr_t)value);68326833if (context)6834{6835ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);6836UniformLocation locationPacked = PackParam<UniformLocation>(location);6837std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);6838bool isCallValid = (context->skipValidation() ||6839ValidateProgramUniformMatrix2fvEXT(6840context, programPacked, locationPacked, count, transpose, value));6841if (isCallValid)6842{6843context->programUniformMatrix2fv(programPacked, locationPacked, count, transpose,6844value);6845}6846ANGLE_CAPTURE(ProgramUniformMatrix2fvEXT, isCallValid, context, programPacked,6847locationPacked, count, transpose, value);6848}6849else6850{6851GenerateContextLostErrorOnCurrentGlobalContext();6852}6853}68546855void GL_APIENTRY GL_ProgramUniformMatrix2x3fvEXT(GLuint program,6856GLint location,6857GLsizei count,6858GLboolean transpose,6859const GLfloat *value)6860{6861Context *context = GetValidGlobalContext();6862EVENT(context, GLProgramUniformMatrix2x3fvEXT,6863"context = %d, program = %u, location = %d, count = %d, transpose = %s, value = "6864"0x%016" PRIxPTR "",6865CID(context), program, location, count, GLbooleanToString(transpose), (uintptr_t)value);68666867if (context)6868{6869ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);6870UniformLocation locationPacked = PackParam<UniformLocation>(location);6871std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);6872bool isCallValid = (context->skipValidation() ||6873ValidateProgramUniformMatrix2x3fvEXT(6874context, programPacked, locationPacked, count, transpose, value));6875if (isCallValid)6876{6877context->programUniformMatrix2x3fv(programPacked, locationPacked, count, transpose,6878value);6879}6880ANGLE_CAPTURE(ProgramUniformMatrix2x3fvEXT, isCallValid, context, programPacked,6881locationPacked, count, transpose, value);6882}6883else6884{6885GenerateContextLostErrorOnCurrentGlobalContext();6886}6887}68886889void GL_APIENTRY GL_ProgramUniformMatrix2x4fvEXT(GLuint program,6890GLint location,6891GLsizei count,6892GLboolean transpose,6893const GLfloat *value)6894{6895Context *context = GetValidGlobalContext();6896EVENT(context, GLProgramUniformMatrix2x4fvEXT,6897"context = %d, program = %u, location = %d, count = %d, transpose = %s, value = "6898"0x%016" PRIxPTR "",6899CID(context), program, location, count, GLbooleanToString(transpose), (uintptr_t)value);69006901if (context)6902{6903ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);6904UniformLocation locationPacked = PackParam<UniformLocation>(location);6905std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);6906bool isCallValid = (context->skipValidation() ||6907ValidateProgramUniformMatrix2x4fvEXT(6908context, programPacked, locationPacked, count, transpose, value));6909if (isCallValid)6910{6911context->programUniformMatrix2x4fv(programPacked, locationPacked, count, transpose,6912value);6913}6914ANGLE_CAPTURE(ProgramUniformMatrix2x4fvEXT, isCallValid, context, programPacked,6915locationPacked, count, transpose, value);6916}6917else6918{6919GenerateContextLostErrorOnCurrentGlobalContext();6920}6921}69226923void GL_APIENTRY GL_ProgramUniformMatrix3fvEXT(GLuint program,6924GLint location,6925GLsizei count,6926GLboolean transpose,6927const GLfloat *value)6928{6929Context *context = GetValidGlobalContext();6930EVENT(context, GLProgramUniformMatrix3fvEXT,6931"context = %d, program = %u, location = %d, count = %d, transpose = %s, value = "6932"0x%016" PRIxPTR "",6933CID(context), program, location, count, GLbooleanToString(transpose), (uintptr_t)value);69346935if (context)6936{6937ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);6938UniformLocation locationPacked = PackParam<UniformLocation>(location);6939std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);6940bool isCallValid = (context->skipValidation() ||6941ValidateProgramUniformMatrix3fvEXT(6942context, programPacked, locationPacked, count, transpose, value));6943if (isCallValid)6944{6945context->programUniformMatrix3fv(programPacked, locationPacked, count, transpose,6946value);6947}6948ANGLE_CAPTURE(ProgramUniformMatrix3fvEXT, isCallValid, context, programPacked,6949locationPacked, count, transpose, value);6950}6951else6952{6953GenerateContextLostErrorOnCurrentGlobalContext();6954}6955}69566957void GL_APIENTRY GL_ProgramUniformMatrix3x2fvEXT(GLuint program,6958GLint location,6959GLsizei count,6960GLboolean transpose,6961const GLfloat *value)6962{6963Context *context = GetValidGlobalContext();6964EVENT(context, GLProgramUniformMatrix3x2fvEXT,6965"context = %d, program = %u, location = %d, count = %d, transpose = %s, value = "6966"0x%016" PRIxPTR "",6967CID(context), program, location, count, GLbooleanToString(transpose), (uintptr_t)value);69686969if (context)6970{6971ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);6972UniformLocation locationPacked = PackParam<UniformLocation>(location);6973std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);6974bool isCallValid = (context->skipValidation() ||6975ValidateProgramUniformMatrix3x2fvEXT(6976context, programPacked, locationPacked, count, transpose, value));6977if (isCallValid)6978{6979context->programUniformMatrix3x2fv(programPacked, locationPacked, count, transpose,6980value);6981}6982ANGLE_CAPTURE(ProgramUniformMatrix3x2fvEXT, isCallValid, context, programPacked,6983locationPacked, count, transpose, value);6984}6985else6986{6987GenerateContextLostErrorOnCurrentGlobalContext();6988}6989}69906991void GL_APIENTRY GL_ProgramUniformMatrix3x4fvEXT(GLuint program,6992GLint location,6993GLsizei count,6994GLboolean transpose,6995const GLfloat *value)6996{6997Context *context = GetValidGlobalContext();6998EVENT(context, GLProgramUniformMatrix3x4fvEXT,6999"context = %d, program = %u, location = %d, count = %d, transpose = %s, value = "7000"0x%016" PRIxPTR "",7001CID(context), program, location, count, GLbooleanToString(transpose), (uintptr_t)value);70027003if (context)7004{7005ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);7006UniformLocation locationPacked = PackParam<UniformLocation>(location);7007std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);7008bool isCallValid = (context->skipValidation() ||7009ValidateProgramUniformMatrix3x4fvEXT(7010context, programPacked, locationPacked, count, transpose, value));7011if (isCallValid)7012{7013context->programUniformMatrix3x4fv(programPacked, locationPacked, count, transpose,7014value);7015}7016ANGLE_CAPTURE(ProgramUniformMatrix3x4fvEXT, isCallValid, context, programPacked,7017locationPacked, count, transpose, value);7018}7019else7020{7021GenerateContextLostErrorOnCurrentGlobalContext();7022}7023}70247025void GL_APIENTRY GL_ProgramUniformMatrix4fvEXT(GLuint program,7026GLint location,7027GLsizei count,7028GLboolean transpose,7029const GLfloat *value)7030{7031Context *context = GetValidGlobalContext();7032EVENT(context, GLProgramUniformMatrix4fvEXT,7033"context = %d, program = %u, location = %d, count = %d, transpose = %s, value = "7034"0x%016" PRIxPTR "",7035CID(context), program, location, count, GLbooleanToString(transpose), (uintptr_t)value);70367037if (context)7038{7039ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);7040UniformLocation locationPacked = PackParam<UniformLocation>(location);7041std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);7042bool isCallValid = (context->skipValidation() ||7043ValidateProgramUniformMatrix4fvEXT(7044context, programPacked, locationPacked, count, transpose, value));7045if (isCallValid)7046{7047context->programUniformMatrix4fv(programPacked, locationPacked, count, transpose,7048value);7049}7050ANGLE_CAPTURE(ProgramUniformMatrix4fvEXT, isCallValid, context, programPacked,7051locationPacked, count, transpose, value);7052}7053else7054{7055GenerateContextLostErrorOnCurrentGlobalContext();7056}7057}70587059void GL_APIENTRY GL_ProgramUniformMatrix4x2fvEXT(GLuint program,7060GLint location,7061GLsizei count,7062GLboolean transpose,7063const GLfloat *value)7064{7065Context *context = GetValidGlobalContext();7066EVENT(context, GLProgramUniformMatrix4x2fvEXT,7067"context = %d, program = %u, location = %d, count = %d, transpose = %s, value = "7068"0x%016" PRIxPTR "",7069CID(context), program, location, count, GLbooleanToString(transpose), (uintptr_t)value);70707071if (context)7072{7073ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);7074UniformLocation locationPacked = PackParam<UniformLocation>(location);7075std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);7076bool isCallValid = (context->skipValidation() ||7077ValidateProgramUniformMatrix4x2fvEXT(7078context, programPacked, locationPacked, count, transpose, value));7079if (isCallValid)7080{7081context->programUniformMatrix4x2fv(programPacked, locationPacked, count, transpose,7082value);7083}7084ANGLE_CAPTURE(ProgramUniformMatrix4x2fvEXT, isCallValid, context, programPacked,7085locationPacked, count, transpose, value);7086}7087else7088{7089GenerateContextLostErrorOnCurrentGlobalContext();7090}7091}70927093void GL_APIENTRY GL_ProgramUniformMatrix4x3fvEXT(GLuint program,7094GLint location,7095GLsizei count,7096GLboolean transpose,7097const GLfloat *value)7098{7099Context *context = GetValidGlobalContext();7100EVENT(context, GLProgramUniformMatrix4x3fvEXT,7101"context = %d, program = %u, location = %d, count = %d, transpose = %s, value = "7102"0x%016" PRIxPTR "",7103CID(context), program, location, count, GLbooleanToString(transpose), (uintptr_t)value);71047105if (context)7106{7107ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);7108UniformLocation locationPacked = PackParam<UniformLocation>(location);7109std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);7110bool isCallValid = (context->skipValidation() ||7111ValidateProgramUniformMatrix4x3fvEXT(7112context, programPacked, locationPacked, count, transpose, value));7113if (isCallValid)7114{7115context->programUniformMatrix4x3fv(programPacked, locationPacked, count, transpose,7116value);7117}7118ANGLE_CAPTURE(ProgramUniformMatrix4x3fvEXT, isCallValid, context, programPacked,7119locationPacked, count, transpose, value);7120}7121else7122{7123GenerateContextLostErrorOnCurrentGlobalContext();7124}7125}71267127void GL_APIENTRY GL_UseProgramStagesEXT(GLuint pipeline, GLbitfield stages, GLuint program)7128{7129Context *context = GetValidGlobalContext();7130EVENT(context, GLUseProgramStagesEXT, "context = %d, pipeline = %u, stages = %s, program = %u",7131CID(context), pipeline,7132GLbitfieldToString(GLenumGroup::UseProgramStageMask, stages).c_str(), program);71337134if (context)7135{7136ProgramPipelineID pipelinePacked = PackParam<ProgramPipelineID>(pipeline);7137ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);7138std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);7139bool isCallValid =7140(context->skipValidation() ||7141ValidateUseProgramStagesEXT(context, pipelinePacked, stages, programPacked));7142if (isCallValid)7143{7144context->useProgramStages(pipelinePacked, stages, programPacked);7145}7146ANGLE_CAPTURE(UseProgramStagesEXT, isCallValid, context, pipelinePacked, stages,7147programPacked);7148}7149else7150{7151GenerateContextLostErrorOnCurrentGlobalContext();7152}7153}71547155void GL_APIENTRY GL_ValidateProgramPipelineEXT(GLuint pipeline)7156{7157Context *context = GetValidGlobalContext();7158EVENT(context, GLValidateProgramPipelineEXT, "context = %d, pipeline = %u", CID(context),7159pipeline);71607161if (context)7162{7163ProgramPipelineID pipelinePacked = PackParam<ProgramPipelineID>(pipeline);7164std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);7165bool isCallValid = (context->skipValidation() ||7166ValidateValidateProgramPipelineEXT(context, pipelinePacked));7167if (isCallValid)7168{7169context->validateProgramPipeline(pipelinePacked);7170}7171ANGLE_CAPTURE(ValidateProgramPipelineEXT, isCallValid, context, pipelinePacked);7172}7173else7174{7175GenerateContextLostErrorOnCurrentGlobalContext();7176}7177}71787179// GL_EXT_shader_framebuffer_fetch_non_coherent7180void GL_APIENTRY GL_FramebufferFetchBarrierEXT()7181{7182Context *context = GetValidGlobalContext();7183EVENT(context, GLFramebufferFetchBarrierEXT, "context = %d", CID(context));71847185if (context)7186{7187std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);7188bool isCallValid =7189(context->skipValidation() || ValidateFramebufferFetchBarrierEXT(context));7190if (isCallValid)7191{7192context->framebufferFetchBarrier();7193}7194ANGLE_CAPTURE(FramebufferFetchBarrierEXT, isCallValid, context);7195}7196else7197{7198GenerateContextLostErrorOnCurrentGlobalContext();7199}7200}72017202// GL_EXT_shader_io_blocks72037204// GL_EXT_tessellation_shader7205void GL_APIENTRY GL_PatchParameteriEXT(GLenum pname, GLint value)7206{7207Context *context = GetValidGlobalContext();7208EVENT(context, GLPatchParameteriEXT, "context = %d, pname = %s, value = %d", CID(context),7209GLenumToString(GLenumGroup::PatchParameterName, pname), value);72107211if (context)7212{7213std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);7214bool isCallValid =7215(context->skipValidation() || ValidatePatchParameteriEXT(context, pname, value));7216if (isCallValid)7217{7218context->patchParameteri(pname, value);7219}7220ANGLE_CAPTURE(PatchParameteriEXT, isCallValid, context, pname, value);7221}7222else7223{7224GenerateContextLostErrorOnCurrentGlobalContext();7225}7226}72277228// GL_EXT_texture_border_clamp7229void GL_APIENTRY GL_GetSamplerParameterIivEXT(GLuint sampler, GLenum pname, GLint *params)7230{7231Context *context = GetValidGlobalContext();7232EVENT(context, GLGetSamplerParameterIivEXT,7233"context = %d, sampler = %u, pname = %s, params = 0x%016" PRIxPTR "", CID(context),7234sampler, GLenumToString(GLenumGroup::SamplerParameterName, pname), (uintptr_t)params);72357236if (context)7237{7238SamplerID samplerPacked = PackParam<SamplerID>(sampler);7239std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);7240bool isCallValid =7241(context->skipValidation() ||7242ValidateGetSamplerParameterIivEXT(context, samplerPacked, pname, params));7243if (isCallValid)7244{7245context->getSamplerParameterIiv(samplerPacked, pname, params);7246}7247ANGLE_CAPTURE(GetSamplerParameterIivEXT, isCallValid, context, samplerPacked, pname,7248params);7249}7250else7251{7252GenerateContextLostErrorOnCurrentGlobalContext();7253}7254}72557256void GL_APIENTRY GL_GetSamplerParameterIuivEXT(GLuint sampler, GLenum pname, GLuint *params)7257{7258Context *context = GetValidGlobalContext();7259EVENT(context, GLGetSamplerParameterIuivEXT,7260"context = %d, sampler = %u, pname = %s, params = 0x%016" PRIxPTR "", CID(context),7261sampler, GLenumToString(GLenumGroup::SamplerParameterName, pname), (uintptr_t)params);72627263if (context)7264{7265SamplerID samplerPacked = PackParam<SamplerID>(sampler);7266std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);7267bool isCallValid =7268(context->skipValidation() ||7269ValidateGetSamplerParameterIuivEXT(context, samplerPacked, pname, params));7270if (isCallValid)7271{7272context->getSamplerParameterIuiv(samplerPacked, pname, params);7273}7274ANGLE_CAPTURE(GetSamplerParameterIuivEXT, isCallValid, context, samplerPacked, pname,7275params);7276}7277else7278{7279GenerateContextLostErrorOnCurrentGlobalContext();7280}7281}72827283void GL_APIENTRY GL_GetTexParameterIivEXT(GLenum target, GLenum pname, GLint *params)7284{7285Context *context = GetValidGlobalContext();7286EVENT(context, GLGetTexParameterIivEXT,7287"context = %d, target = %s, pname = %s, params = 0x%016" PRIxPTR "", CID(context),7288GLenumToString(GLenumGroup::TextureTarget, target),7289GLenumToString(GLenumGroup::GetTextureParameter, pname), (uintptr_t)params);72907291if (context)7292{7293TextureType targetPacked = PackParam<TextureType>(target);7294std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);7295bool isCallValid = (context->skipValidation() ||7296ValidateGetTexParameterIivEXT(context, targetPacked, pname, params));7297if (isCallValid)7298{7299context->getTexParameterIiv(targetPacked, pname, params);7300}7301ANGLE_CAPTURE(GetTexParameterIivEXT, isCallValid, context, targetPacked, pname, params);7302}7303else7304{7305GenerateContextLostErrorOnCurrentGlobalContext();7306}7307}73087309void GL_APIENTRY GL_GetTexParameterIuivEXT(GLenum target, GLenum pname, GLuint *params)7310{7311Context *context = GetValidGlobalContext();7312EVENT(context, GLGetTexParameterIuivEXT,7313"context = %d, target = %s, pname = %s, params = 0x%016" PRIxPTR "", CID(context),7314GLenumToString(GLenumGroup::TextureTarget, target),7315GLenumToString(GLenumGroup::GetTextureParameter, pname), (uintptr_t)params);73167317if (context)7318{7319TextureType targetPacked = PackParam<TextureType>(target);7320std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);7321bool isCallValid = (context->skipValidation() ||7322ValidateGetTexParameterIuivEXT(context, targetPacked, pname, params));7323if (isCallValid)7324{7325context->getTexParameterIuiv(targetPacked, pname, params);7326}7327ANGLE_CAPTURE(GetTexParameterIuivEXT, isCallValid, context, targetPacked, pname, params);7328}7329else7330{7331GenerateContextLostErrorOnCurrentGlobalContext();7332}7333}73347335void GL_APIENTRY GL_SamplerParameterIivEXT(GLuint sampler, GLenum pname, const GLint *param)7336{7337Context *context = GetValidGlobalContext();7338EVENT(context, GLSamplerParameterIivEXT,7339"context = %d, sampler = %u, pname = %s, param = 0x%016" PRIxPTR "", CID(context),7340sampler, GLenumToString(GLenumGroup::SamplerParameterName, pname), (uintptr_t)param);73417342if (context)7343{7344SamplerID samplerPacked = PackParam<SamplerID>(sampler);7345std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);7346bool isCallValid = (context->skipValidation() ||7347ValidateSamplerParameterIivEXT(context, samplerPacked, pname, param));7348if (isCallValid)7349{7350context->samplerParameterIiv(samplerPacked, pname, param);7351}7352ANGLE_CAPTURE(SamplerParameterIivEXT, isCallValid, context, samplerPacked, pname, param);7353}7354else7355{7356GenerateContextLostErrorOnCurrentGlobalContext();7357}7358}73597360void GL_APIENTRY GL_SamplerParameterIuivEXT(GLuint sampler, GLenum pname, const GLuint *param)7361{7362Context *context = GetValidGlobalContext();7363EVENT(context, GLSamplerParameterIuivEXT,7364"context = %d, sampler = %u, pname = %s, param = 0x%016" PRIxPTR "", CID(context),7365sampler, GLenumToString(GLenumGroup::SamplerParameterName, pname), (uintptr_t)param);73667367if (context)7368{7369SamplerID samplerPacked = PackParam<SamplerID>(sampler);7370std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);7371bool isCallValid = (context->skipValidation() ||7372ValidateSamplerParameterIuivEXT(context, samplerPacked, pname, param));7373if (isCallValid)7374{7375context->samplerParameterIuiv(samplerPacked, pname, param);7376}7377ANGLE_CAPTURE(SamplerParameterIuivEXT, isCallValid, context, samplerPacked, pname, param);7378}7379else7380{7381GenerateContextLostErrorOnCurrentGlobalContext();7382}7383}73847385void GL_APIENTRY GL_TexParameterIivEXT(GLenum target, GLenum pname, const GLint *params)7386{7387Context *context = GetValidGlobalContext();7388EVENT(context, GLTexParameterIivEXT,7389"context = %d, target = %s, pname = %s, params = 0x%016" PRIxPTR "", CID(context),7390GLenumToString(GLenumGroup::TextureTarget, target),7391GLenumToString(GLenumGroup::TextureParameterName, pname), (uintptr_t)params);73927393if (context)7394{7395TextureType targetPacked = PackParam<TextureType>(target);7396std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);7397bool isCallValid = (context->skipValidation() ||7398ValidateTexParameterIivEXT(context, targetPacked, pname, params));7399if (isCallValid)7400{7401context->texParameterIiv(targetPacked, pname, params);7402}7403ANGLE_CAPTURE(TexParameterIivEXT, isCallValid, context, targetPacked, pname, params);7404}7405else7406{7407GenerateContextLostErrorOnCurrentGlobalContext();7408}7409}74107411void GL_APIENTRY GL_TexParameterIuivEXT(GLenum target, GLenum pname, const GLuint *params)7412{7413Context *context = GetValidGlobalContext();7414EVENT(context, GLTexParameterIuivEXT,7415"context = %d, target = %s, pname = %s, params = 0x%016" PRIxPTR "", CID(context),7416GLenumToString(GLenumGroup::TextureTarget, target),7417GLenumToString(GLenumGroup::TextureParameterName, pname), (uintptr_t)params);74187419if (context)7420{7421TextureType targetPacked = PackParam<TextureType>(target);7422std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);7423bool isCallValid = (context->skipValidation() ||7424ValidateTexParameterIuivEXT(context, targetPacked, pname, params));7425if (isCallValid)7426{7427context->texParameterIuiv(targetPacked, pname, params);7428}7429ANGLE_CAPTURE(TexParameterIuivEXT, isCallValid, context, targetPacked, pname, params);7430}7431else7432{7433GenerateContextLostErrorOnCurrentGlobalContext();7434}7435}74367437// GL_EXT_texture_buffer7438void GL_APIENTRY GL_TexBufferEXT(GLenum target, GLenum internalformat, GLuint buffer)7439{7440Context *context = GetValidGlobalContext();7441EVENT(context, GLTexBufferEXT, "context = %d, target = %s, internalformat = %s, buffer = %u",7442CID(context), GLenumToString(GLenumGroup::TextureTarget, target),7443GLenumToString(GLenumGroup::InternalFormat, internalformat), buffer);74447445if (context)7446{7447TextureType targetPacked = PackParam<TextureType>(target);7448BufferID bufferPacked = PackParam<BufferID>(buffer);7449std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);7450bool isCallValid =7451(context->skipValidation() ||7452ValidateTexBufferEXT(context, targetPacked, internalformat, bufferPacked));7453if (isCallValid)7454{7455context->texBuffer(targetPacked, internalformat, bufferPacked);7456}7457ANGLE_CAPTURE(TexBufferEXT, isCallValid, context, targetPacked, internalformat,7458bufferPacked);7459}7460else7461{7462GenerateContextLostErrorOnCurrentGlobalContext();7463}7464}74657466void GL_APIENTRY GL_TexBufferRangeEXT(GLenum target,7467GLenum internalformat,7468GLuint buffer,7469GLintptr offset,7470GLsizeiptr size)7471{7472Context *context = GetValidGlobalContext();7473EVENT(context, GLTexBufferRangeEXT,7474"context = %d, target = %s, internalformat = %s, buffer = %u, offset = %llu, size = %llu",7475CID(context), GLenumToString(GLenumGroup::TextureTarget, target),7476GLenumToString(GLenumGroup::InternalFormat, internalformat), buffer,7477static_cast<unsigned long long>(offset), static_cast<unsigned long long>(size));74787479if (context)7480{7481TextureType targetPacked = PackParam<TextureType>(target);7482BufferID bufferPacked = PackParam<BufferID>(buffer);7483std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);7484bool isCallValid = (context->skipValidation() ||7485ValidateTexBufferRangeEXT(context, targetPacked, internalformat,7486bufferPacked, offset, size));7487if (isCallValid)7488{7489context->texBufferRange(targetPacked, internalformat, bufferPacked, offset, size);7490}7491ANGLE_CAPTURE(TexBufferRangeEXT, isCallValid, context, targetPacked, internalformat,7492bufferPacked, offset, size);7493}7494else7495{7496GenerateContextLostErrorOnCurrentGlobalContext();7497}7498}74997500// GL_EXT_texture_compression_bptc75017502// GL_EXT_texture_compression_dxt175037504// GL_EXT_texture_compression_rgtc75057506// GL_EXT_texture_compression_s3tc75077508// GL_EXT_texture_compression_s3tc_srgb75097510// GL_EXT_texture_cube_map_array75117512// GL_EXT_texture_filter_anisotropic75137514// GL_EXT_texture_format_BGRA888875157516// GL_EXT_texture_sRGB_R875177518// GL_EXT_texture_sRGB_RG875197520// GL_EXT_texture_storage7521void GL_APIENTRY GL_TexStorage1DEXT(GLenum target,7522GLsizei levels,7523GLenum internalformat,7524GLsizei width)7525{7526Context *context = GetValidGlobalContext();7527EVENT(context, GLTexStorage1DEXT,7528"context = %d, target = %s, levels = %d, internalformat = %s, width = %d", CID(context),7529GLenumToString(GLenumGroup::TextureTarget, target), levels,7530GLenumToString(GLenumGroup::InternalFormat, internalformat), width);75317532if (context)7533{7534std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);7535bool isCallValid =7536(context->skipValidation() ||7537ValidateTexStorage1DEXT(context, target, levels, internalformat, width));7538if (isCallValid)7539{7540context->texStorage1D(target, levels, internalformat, width);7541}7542ANGLE_CAPTURE(TexStorage1DEXT, isCallValid, context, target, levels, internalformat, width);7543}7544else7545{7546GenerateContextLostErrorOnCurrentGlobalContext();7547}7548}75497550void GL_APIENTRY GL_TexStorage2DEXT(GLenum target,7551GLsizei levels,7552GLenum internalformat,7553GLsizei width,7554GLsizei height)7555{7556Context *context = GetValidGlobalContext();7557EVENT(context, GLTexStorage2DEXT,7558"context = %d, target = %s, levels = %d, internalformat = %s, width = %d, height = %d",7559CID(context), GLenumToString(GLenumGroup::TextureTarget, target), levels,7560GLenumToString(GLenumGroup::InternalFormat, internalformat), width, height);75617562if (context)7563{7564TextureType targetPacked = PackParam<TextureType>(target);7565std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);7566bool isCallValid =7567(context->skipValidation() ||7568ValidateTexStorage2DEXT(context, targetPacked, levels, internalformat, width, height));7569if (isCallValid)7570{7571context->texStorage2D(targetPacked, levels, internalformat, width, height);7572}7573ANGLE_CAPTURE(TexStorage2DEXT, isCallValid, context, targetPacked, levels, internalformat,7574width, height);7575}7576else7577{7578GenerateContextLostErrorOnCurrentGlobalContext();7579}7580}75817582void GL_APIENTRY GL_TexStorage3DEXT(GLenum target,7583GLsizei levels,7584GLenum internalformat,7585GLsizei width,7586GLsizei height,7587GLsizei depth)7588{7589Context *context = GetValidGlobalContext();7590EVENT(context, GLTexStorage3DEXT,7591"context = %d, target = %s, levels = %d, internalformat = %s, width = %d, height = %d, "7592"depth = %d",7593CID(context), GLenumToString(GLenumGroup::TextureTarget, target), levels,7594GLenumToString(GLenumGroup::InternalFormat, internalformat), width, height, depth);75957596if (context)7597{7598TextureType targetPacked = PackParam<TextureType>(target);7599std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);7600bool isCallValid = (context->skipValidation() ||7601ValidateTexStorage3DEXT(context, targetPacked, levels, internalformat,7602width, height, depth));7603if (isCallValid)7604{7605context->texStorage3D(targetPacked, levels, internalformat, width, height, depth);7606}7607ANGLE_CAPTURE(TexStorage3DEXT, isCallValid, context, targetPacked, levels, internalformat,7608width, height, depth);7609}7610else7611{7612GenerateContextLostErrorOnCurrentGlobalContext();7613}7614}76157616// GL_IMG_texture_compression_pvrtc76177618// GL_IMG_texture_compression_pvrtc276197620// GL_KHR_blend_equation_advanced7621void GL_APIENTRY GL_BlendBarrierKHR()7622{7623Context *context = GetValidGlobalContext();7624EVENT(context, GLBlendBarrierKHR, "context = %d", CID(context));76257626if (context)7627{7628std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);7629bool isCallValid = (context->skipValidation() || ValidateBlendBarrierKHR(context));7630if (isCallValid)7631{7632context->blendBarrier();7633}7634ANGLE_CAPTURE(BlendBarrierKHR, isCallValid, context);7635}7636else7637{7638GenerateContextLostErrorOnCurrentGlobalContext();7639}7640}76417642// GL_KHR_debug7643void GL_APIENTRY GL_DebugMessageCallbackKHR(GLDEBUGPROCKHR callback, const void *userParam)7644{7645Context *context = GetValidGlobalContext();7646EVENT(context, GLDebugMessageCallbackKHR,7647"context = %d, callback = 0x%016" PRIxPTR ", userParam = 0x%016" PRIxPTR "", CID(context),7648(uintptr_t)callback, (uintptr_t)userParam);76497650if (context)7651{7652std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);7653bool isCallValid = (context->skipValidation() ||7654ValidateDebugMessageCallbackKHR(context, callback, userParam));7655if (isCallValid)7656{7657context->debugMessageCallback(callback, userParam);7658}7659ANGLE_CAPTURE(DebugMessageCallbackKHR, isCallValid, context, callback, userParam);7660}7661else7662{7663GenerateContextLostErrorOnCurrentGlobalContext();7664}7665}76667667void GL_APIENTRY GL_DebugMessageControlKHR(GLenum source,7668GLenum type,7669GLenum severity,7670GLsizei count,7671const GLuint *ids,7672GLboolean enabled)7673{7674Context *context = GetValidGlobalContext();7675EVENT(context, GLDebugMessageControlKHR,7676"context = %d, source = %s, type = %s, severity = %s, count = %d, ids = 0x%016" PRIxPTR7677", enabled = %s",7678CID(context), GLenumToString(GLenumGroup::DebugSource, source),7679GLenumToString(GLenumGroup::DebugType, type),7680GLenumToString(GLenumGroup::DebugSeverity, severity), count, (uintptr_t)ids,7681GLbooleanToString(enabled));76827683if (context)7684{7685std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);7686bool isCallValid =7687(context->skipValidation() ||7688ValidateDebugMessageControlKHR(context, source, type, severity, count, ids, enabled));7689if (isCallValid)7690{7691context->debugMessageControl(source, type, severity, count, ids, enabled);7692}7693ANGLE_CAPTURE(DebugMessageControlKHR, isCallValid, context, source, type, severity, count,7694ids, enabled);7695}7696else7697{7698GenerateContextLostErrorOnCurrentGlobalContext();7699}7700}77017702void GL_APIENTRY GL_DebugMessageInsertKHR(GLenum source,7703GLenum type,7704GLuint id,7705GLenum severity,7706GLsizei length,7707const GLchar *buf)7708{7709Context *context = GetValidGlobalContext();7710EVENT(context, GLDebugMessageInsertKHR,7711"context = %d, source = %s, type = %s, id = %u, severity = %s, length = %d, buf = "7712"0x%016" PRIxPTR "",7713CID(context), GLenumToString(GLenumGroup::DebugSource, source),7714GLenumToString(GLenumGroup::DebugType, type), id,7715GLenumToString(GLenumGroup::DebugSeverity, severity), length, (uintptr_t)buf);77167717if (context)7718{7719std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);7720bool isCallValid =7721(context->skipValidation() ||7722ValidateDebugMessageInsertKHR(context, source, type, id, severity, length, buf));7723if (isCallValid)7724{7725context->debugMessageInsert(source, type, id, severity, length, buf);7726}7727ANGLE_CAPTURE(DebugMessageInsertKHR, isCallValid, context, source, type, id, severity,7728length, buf);7729}7730else7731{7732GenerateContextLostErrorOnCurrentGlobalContext();7733}7734}77357736GLuint GL_APIENTRY GL_GetDebugMessageLogKHR(GLuint count,7737GLsizei bufSize,7738GLenum *sources,7739GLenum *types,7740GLuint *ids,7741GLenum *severities,7742GLsizei *lengths,7743GLchar *messageLog)7744{7745Context *context = GetValidGlobalContext();7746EVENT(context, GLGetDebugMessageLogKHR,7747"context = %d, count = %u, bufSize = %d, sources = 0x%016" PRIxPTR7748", types = 0x%016" PRIxPTR ", ids = 0x%016" PRIxPTR ", severities = 0x%016" PRIxPTR7749", lengths = 0x%016" PRIxPTR ", messageLog = 0x%016" PRIxPTR "",7750CID(context), count, bufSize, (uintptr_t)sources, (uintptr_t)types, (uintptr_t)ids,7751(uintptr_t)severities, (uintptr_t)lengths, (uintptr_t)messageLog);77527753GLuint returnValue;7754if (context)7755{7756std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);7757bool isCallValid = (context->skipValidation() ||7758ValidateGetDebugMessageLogKHR(context, count, bufSize, sources, types,7759ids, severities, lengths, messageLog));7760if (isCallValid)7761{7762returnValue = context->getDebugMessageLog(count, bufSize, sources, types, ids,7763severities, lengths, messageLog);7764}7765else7766{7767returnValue =7768GetDefaultReturnValue<angle::EntryPoint::GLGetDebugMessageLogKHR, GLuint>();7769}7770ANGLE_CAPTURE(GetDebugMessageLogKHR, isCallValid, context, count, bufSize, sources, types,7771ids, severities, lengths, messageLog, returnValue);7772}7773else7774{7775GenerateContextLostErrorOnCurrentGlobalContext();7776returnValue = GetDefaultReturnValue<angle::EntryPoint::GLGetDebugMessageLogKHR, GLuint>();7777}7778return returnValue;7779}77807781void GL_APIENTRY GL_GetObjectLabelKHR(GLenum identifier,7782GLuint name,7783GLsizei bufSize,7784GLsizei *length,7785GLchar *label)7786{7787Context *context = GetValidGlobalContext();7788EVENT(context, GLGetObjectLabelKHR,7789"context = %d, identifier = %s, name = %u, bufSize = %d, length = 0x%016" PRIxPTR7790", label = 0x%016" PRIxPTR "",7791CID(context), GLenumToString(GLenumGroup::DefaultGroup, identifier), name, bufSize,7792(uintptr_t)length, (uintptr_t)label);77937794if (context)7795{7796std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);7797bool isCallValid =7798(context->skipValidation() ||7799ValidateGetObjectLabelKHR(context, identifier, name, bufSize, length, label));7800if (isCallValid)7801{7802context->getObjectLabel(identifier, name, bufSize, length, label);7803}7804ANGLE_CAPTURE(GetObjectLabelKHR, isCallValid, context, identifier, name, bufSize, length,7805label);7806}7807else7808{7809GenerateContextLostErrorOnCurrentGlobalContext();7810}7811}78127813void GL_APIENTRY GL_GetObjectPtrLabelKHR(const void *ptr,7814GLsizei bufSize,7815GLsizei *length,7816GLchar *label)7817{7818Context *context = GetValidGlobalContext();7819EVENT(context, GLGetObjectPtrLabelKHR,7820"context = %d, ptr = 0x%016" PRIxPTR ", bufSize = %d, length = 0x%016" PRIxPTR7821", label = 0x%016" PRIxPTR "",7822CID(context), (uintptr_t)ptr, bufSize, (uintptr_t)length, (uintptr_t)label);78237824if (context)7825{7826std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);7827bool isCallValid = (context->skipValidation() ||7828ValidateGetObjectPtrLabelKHR(context, ptr, bufSize, length, label));7829if (isCallValid)7830{7831context->getObjectPtrLabel(ptr, bufSize, length, label);7832}7833ANGLE_CAPTURE(GetObjectPtrLabelKHR, isCallValid, context, ptr, bufSize, length, label);7834}7835else7836{7837GenerateContextLostErrorOnCurrentGlobalContext();7838}7839}78407841void GL_APIENTRY GL_GetPointervKHR(GLenum pname, void **params)7842{7843Context *context = GetValidGlobalContext();7844EVENT(context, GLGetPointervKHR, "context = %d, pname = %s, params = 0x%016" PRIxPTR "",7845CID(context), GLenumToString(GLenumGroup::DefaultGroup, pname), (uintptr_t)params);78467847if (context)7848{7849std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);7850bool isCallValid =7851(context->skipValidation() || ValidateGetPointervKHR(context, pname, params));7852if (isCallValid)7853{7854context->getPointerv(pname, params);7855}7856ANGLE_CAPTURE(GetPointervKHR, isCallValid, context, pname, params);7857}7858else7859{7860GenerateContextLostErrorOnCurrentGlobalContext();7861}7862}78637864void GL_APIENTRY GL_ObjectLabelKHR(GLenum identifier,7865GLuint name,7866GLsizei length,7867const GLchar *label)7868{7869Context *context = GetValidGlobalContext();7870EVENT(context, GLObjectLabelKHR,7871"context = %d, identifier = %s, name = %u, length = %d, label = 0x%016" PRIxPTR "",7872CID(context), GLenumToString(GLenumGroup::ObjectIdentifier, identifier), name, length,7873(uintptr_t)label);78747875if (context)7876{7877std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);7878bool isCallValid = (context->skipValidation() ||7879ValidateObjectLabelKHR(context, identifier, name, length, label));7880if (isCallValid)7881{7882context->objectLabel(identifier, name, length, label);7883}7884ANGLE_CAPTURE(ObjectLabelKHR, isCallValid, context, identifier, name, length, label);7885}7886else7887{7888GenerateContextLostErrorOnCurrentGlobalContext();7889}7890}78917892void GL_APIENTRY GL_ObjectPtrLabelKHR(const void *ptr, GLsizei length, const GLchar *label)7893{7894Context *context = GetValidGlobalContext();7895EVENT(context, GLObjectPtrLabelKHR,7896"context = %d, ptr = 0x%016" PRIxPTR ", length = %d, label = 0x%016" PRIxPTR "",7897CID(context), (uintptr_t)ptr, length, (uintptr_t)label);78987899if (context)7900{7901std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);7902bool isCallValid =7903(context->skipValidation() || ValidateObjectPtrLabelKHR(context, ptr, length, label));7904if (isCallValid)7905{7906context->objectPtrLabel(ptr, length, label);7907}7908ANGLE_CAPTURE(ObjectPtrLabelKHR, isCallValid, context, ptr, length, label);7909}7910else7911{7912GenerateContextLostErrorOnCurrentGlobalContext();7913}7914}79157916void GL_APIENTRY GL_PopDebugGroupKHR()7917{7918Context *context = GetValidGlobalContext();7919EVENT(context, GLPopDebugGroupKHR, "context = %d", CID(context));79207921if (context)7922{7923std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);7924bool isCallValid = (context->skipValidation() || ValidatePopDebugGroupKHR(context));7925if (isCallValid)7926{7927context->popDebugGroup();7928}7929ANGLE_CAPTURE(PopDebugGroupKHR, isCallValid, context);7930}7931else7932{7933GenerateContextLostErrorOnCurrentGlobalContext();7934}7935}79367937void GL_APIENTRY GL_PushDebugGroupKHR(GLenum source,7938GLuint id,7939GLsizei length,7940const GLchar *message)7941{7942Context *context = GetValidGlobalContext();7943EVENT(context, GLPushDebugGroupKHR,7944"context = %d, source = %s, id = %u, length = %d, message = 0x%016" PRIxPTR "",7945CID(context), GLenumToString(GLenumGroup::DebugSource, source), id, length,7946(uintptr_t)message);79477948if (context)7949{7950std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);7951bool isCallValid = (context->skipValidation() ||7952ValidatePushDebugGroupKHR(context, source, id, length, message));7953if (isCallValid)7954{7955context->pushDebugGroup(source, id, length, message);7956}7957ANGLE_CAPTURE(PushDebugGroupKHR, isCallValid, context, source, id, length, message);7958}7959else7960{7961GenerateContextLostErrorOnCurrentGlobalContext();7962}7963}79647965// GL_KHR_parallel_shader_compile7966void GL_APIENTRY GL_MaxShaderCompilerThreadsKHR(GLuint count)7967{7968Context *context = GetValidGlobalContext();7969EVENT(context, GLMaxShaderCompilerThreadsKHR, "context = %d, count = %u", CID(context), count);79707971if (context)7972{7973std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);7974bool isCallValid =7975(context->skipValidation() || ValidateMaxShaderCompilerThreadsKHR(context, count));7976if (isCallValid)7977{7978context->maxShaderCompilerThreads(count);7979}7980ANGLE_CAPTURE(MaxShaderCompilerThreadsKHR, isCallValid, context, count);7981}7982else7983{7984GenerateContextLostErrorOnCurrentGlobalContext();7985}7986}79877988// GL_KHR_texture_compression_astc_hdr79897990// GL_KHR_texture_compression_astc_ldr79917992// GL_KHR_texture_compression_astc_sliced_3d79937994// GL_NV_fence7995void GL_APIENTRY GL_DeleteFencesNV(GLsizei n, const GLuint *fences)7996{7997Context *context = GetValidGlobalContext();7998EVENT(context, GLDeleteFencesNV, "context = %d, n = %d, fences = 0x%016" PRIxPTR "",7999CID(context), n, (uintptr_t)fences);80008001if (context)8002{8003const FenceNVID *fencesPacked = PackParam<const FenceNVID *>(fences);8004std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);8005bool isCallValid =8006(context->skipValidation() || ValidateDeleteFencesNV(context, n, fencesPacked));8007if (isCallValid)8008{8009context->deleteFencesNV(n, fencesPacked);8010}8011ANGLE_CAPTURE(DeleteFencesNV, isCallValid, context, n, fencesPacked);8012}8013else8014{8015GenerateContextLostErrorOnCurrentGlobalContext();8016}8017}80188019void GL_APIENTRY GL_FinishFenceNV(GLuint fence)8020{8021Context *context = GetValidGlobalContext();8022EVENT(context, GLFinishFenceNV, "context = %d, fence = %u", CID(context), fence);80238024if (context)8025{8026FenceNVID fencePacked = PackParam<FenceNVID>(fence);8027std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);8028bool isCallValid =8029(context->skipValidation() || ValidateFinishFenceNV(context, fencePacked));8030if (isCallValid)8031{8032context->finishFenceNV(fencePacked);8033}8034ANGLE_CAPTURE(FinishFenceNV, isCallValid, context, fencePacked);8035}8036else8037{8038GenerateContextLostErrorOnCurrentGlobalContext();8039}8040}80418042void GL_APIENTRY GL_GenFencesNV(GLsizei n, GLuint *fences)8043{8044Context *context = GetValidGlobalContext();8045EVENT(context, GLGenFencesNV, "context = %d, n = %d, fences = 0x%016" PRIxPTR "", CID(context),8046n, (uintptr_t)fences);80478048if (context)8049{8050FenceNVID *fencesPacked = PackParam<FenceNVID *>(fences);8051std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);8052bool isCallValid =8053(context->skipValidation() || ValidateGenFencesNV(context, n, fencesPacked));8054if (isCallValid)8055{8056context->genFencesNV(n, fencesPacked);8057}8058ANGLE_CAPTURE(GenFencesNV, isCallValid, context, n, fencesPacked);8059}8060else8061{8062GenerateContextLostErrorOnCurrentGlobalContext();8063}8064}80658066void GL_APIENTRY GL_GetFenceivNV(GLuint fence, GLenum pname, GLint *params)8067{8068Context *context = GetValidGlobalContext();8069EVENT(context, GLGetFenceivNV,8070"context = %d, fence = %u, pname = %s, params = 0x%016" PRIxPTR "", CID(context), fence,8071GLenumToString(GLenumGroup::DefaultGroup, pname), (uintptr_t)params);80728073if (context)8074{8075FenceNVID fencePacked = PackParam<FenceNVID>(fence);8076std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);8077bool isCallValid = (context->skipValidation() ||8078ValidateGetFenceivNV(context, fencePacked, pname, params));8079if (isCallValid)8080{8081context->getFenceivNV(fencePacked, pname, params);8082}8083ANGLE_CAPTURE(GetFenceivNV, isCallValid, context, fencePacked, pname, params);8084}8085else8086{8087GenerateContextLostErrorOnCurrentGlobalContext();8088}8089}80908091GLboolean GL_APIENTRY GL_IsFenceNV(GLuint fence)8092{8093Context *context = GetValidGlobalContext();8094EVENT(context, GLIsFenceNV, "context = %d, fence = %u", CID(context), fence);80958096GLboolean returnValue;8097if (context)8098{8099FenceNVID fencePacked = PackParam<FenceNVID>(fence);8100std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);8101bool isCallValid = (context->skipValidation() || ValidateIsFenceNV(context, fencePacked));8102if (isCallValid)8103{8104returnValue = context->isFenceNV(fencePacked);8105}8106else8107{8108returnValue = GetDefaultReturnValue<angle::EntryPoint::GLIsFenceNV, GLboolean>();8109}8110ANGLE_CAPTURE(IsFenceNV, isCallValid, context, fencePacked, returnValue);8111}8112else8113{8114GenerateContextLostErrorOnCurrentGlobalContext();8115returnValue = GetDefaultReturnValue<angle::EntryPoint::GLIsFenceNV, GLboolean>();8116}8117return returnValue;8118}81198120void GL_APIENTRY GL_SetFenceNV(GLuint fence, GLenum condition)8121{8122Context *context = GetValidGlobalContext();8123EVENT(context, GLSetFenceNV, "context = %d, fence = %u, condition = %s", CID(context), fence,8124GLenumToString(GLenumGroup::DefaultGroup, condition));81258126if (context)8127{8128FenceNVID fencePacked = PackParam<FenceNVID>(fence);8129std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);8130bool isCallValid =8131(context->skipValidation() || ValidateSetFenceNV(context, fencePacked, condition));8132if (isCallValid)8133{8134context->setFenceNV(fencePacked, condition);8135}8136ANGLE_CAPTURE(SetFenceNV, isCallValid, context, fencePacked, condition);8137}8138else8139{8140GenerateContextLostErrorOnCurrentGlobalContext();8141}8142}81438144GLboolean GL_APIENTRY GL_TestFenceNV(GLuint fence)8145{8146Context *context = GetValidGlobalContext();8147EVENT(context, GLTestFenceNV, "context = %d, fence = %u", CID(context), fence);81488149GLboolean returnValue;8150if (context)8151{8152FenceNVID fencePacked = PackParam<FenceNVID>(fence);8153std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);8154bool isCallValid = (context->skipValidation() || ValidateTestFenceNV(context, fencePacked));8155if (isCallValid)8156{8157returnValue = context->testFenceNV(fencePacked);8158}8159else8160{8161returnValue = GetDefaultReturnValue<angle::EntryPoint::GLTestFenceNV, GLboolean>();8162}8163ANGLE_CAPTURE(TestFenceNV, isCallValid, context, fencePacked, returnValue);8164}8165else8166{8167GenerateContextLostErrorOnCurrentGlobalContext();8168returnValue = GetDefaultReturnValue<angle::EntryPoint::GLTestFenceNV, GLboolean>();8169}8170return returnValue;8171}81728173// GL_NV_framebuffer_blit8174void GL_APIENTRY GL_BlitFramebufferNV(GLint srcX0,8175GLint srcY0,8176GLint srcX1,8177GLint srcY1,8178GLint dstX0,8179GLint dstY0,8180GLint dstX1,8181GLint dstY1,8182GLbitfield mask,8183GLenum filter)8184{8185Context *context = GetValidGlobalContext();8186EVENT(context, GLBlitFramebufferNV,8187"context = %d, srcX0 = %d, srcY0 = %d, srcX1 = %d, srcY1 = %d, dstX0 = %d, dstY0 = %d, "8188"dstX1 = %d, dstY1 = %d, mask = %s, filter = %s",8189CID(context), srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1,8190GLbitfieldToString(GLenumGroup::ClearBufferMask, mask).c_str(),8191GLenumToString(GLenumGroup::BlitFramebufferFilter, filter));81928193if (context)8194{8195std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);8196bool isCallValid = (context->skipValidation() ||8197ValidateBlitFramebufferNV(context, srcX0, srcY0, srcX1, srcY1, dstX0,8198dstY0, dstX1, dstY1, mask, filter));8199if (isCallValid)8200{8201context->blitFramebufferNV(srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask,8202filter);8203}8204ANGLE_CAPTURE(BlitFramebufferNV, isCallValid, context, srcX0, srcY0, srcX1, srcY1, dstX0,8205dstY0, dstX1, dstY1, mask, filter);8206}8207else8208{8209GenerateContextLostErrorOnCurrentGlobalContext();8210}8211}82128213// GL_OES_EGL_image8214void GL_APIENTRY GL_EGLImageTargetRenderbufferStorageOES(GLenum target, GLeglImageOES image)8215{8216Context *context = GetValidGlobalContext();8217EVENT(context, GLEGLImageTargetRenderbufferStorageOES,8218"context = %d, target = %s, image = 0x%016" PRIxPTR "", CID(context),8219GLenumToString(GLenumGroup::DefaultGroup, target), (uintptr_t)image);82208221if (context)8222{8223std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);8224bool isCallValid = (context->skipValidation() ||8225ValidateEGLImageTargetRenderbufferStorageOES(context, target, image));8226if (isCallValid)8227{8228context->eGLImageTargetRenderbufferStorage(target, image);8229}8230ANGLE_CAPTURE(EGLImageTargetRenderbufferStorageOES, isCallValid, context, target, image);8231}8232else8233{8234GenerateContextLostErrorOnCurrentGlobalContext();8235}8236}82378238void GL_APIENTRY GL_EGLImageTargetTexture2DOES(GLenum target, GLeglImageOES image)8239{8240Context *context = GetValidGlobalContext();8241EVENT(context, GLEGLImageTargetTexture2DOES,8242"context = %d, target = %s, image = 0x%016" PRIxPTR "", CID(context),8243GLenumToString(GLenumGroup::DefaultGroup, target), (uintptr_t)image);82448245if (context)8246{8247TextureType targetPacked = PackParam<TextureType>(target);8248std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);8249bool isCallValid = (context->skipValidation() ||8250ValidateEGLImageTargetTexture2DOES(context, targetPacked, image));8251if (isCallValid)8252{8253context->eGLImageTargetTexture2D(targetPacked, image);8254}8255ANGLE_CAPTURE(EGLImageTargetTexture2DOES, isCallValid, context, targetPacked, image);8256}8257else8258{8259GenerateContextLostErrorOnCurrentGlobalContext();8260}8261}82628263// GL_OES_compressed_ETC1_RGB8_texture82648265// GL_OES_copy_image8266void GL_APIENTRY GL_CopyImageSubDataOES(GLuint srcName,8267GLenum srcTarget,8268GLint srcLevel,8269GLint srcX,8270GLint srcY,8271GLint srcZ,8272GLuint dstName,8273GLenum dstTarget,8274GLint dstLevel,8275GLint dstX,8276GLint dstY,8277GLint dstZ,8278GLsizei srcWidth,8279GLsizei srcHeight,8280GLsizei srcDepth)8281{8282Context *context = GetValidGlobalContext();8283EVENT(context, GLCopyImageSubDataOES,8284"context = %d, srcName = %u, srcTarget = %s, srcLevel = %d, srcX = %d, srcY = %d, srcZ = "8285"%d, dstName = %u, dstTarget = %s, dstLevel = %d, dstX = %d, dstY = %d, dstZ = %d, "8286"srcWidth = %d, srcHeight = %d, srcDepth = %d",8287CID(context), srcName, GLenumToString(GLenumGroup::CopyBufferSubDataTarget, srcTarget),8288srcLevel, srcX, srcY, srcZ, dstName,8289GLenumToString(GLenumGroup::CopyBufferSubDataTarget, dstTarget), dstLevel, dstX, dstY,8290dstZ, srcWidth, srcHeight, srcDepth);82918292if (context)8293{8294std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);8295bool isCallValid =8296(context->skipValidation() ||8297ValidateCopyImageSubDataOES(context, srcName, srcTarget, srcLevel, srcX, srcY, srcZ,8298dstName, dstTarget, dstLevel, dstX, dstY, dstZ, srcWidth,8299srcHeight, srcDepth));8300if (isCallValid)8301{8302context->copyImageSubData(srcName, srcTarget, srcLevel, srcX, srcY, srcZ, dstName,8303dstTarget, dstLevel, dstX, dstY, dstZ, srcWidth, srcHeight,8304srcDepth);8305}8306ANGLE_CAPTURE(CopyImageSubDataOES, isCallValid, context, srcName, srcTarget, srcLevel, srcX,8307srcY, srcZ, dstName, dstTarget, dstLevel, dstX, dstY, dstZ, srcWidth,8308srcHeight, srcDepth);8309}8310else8311{8312GenerateContextLostErrorOnCurrentGlobalContext();8313}8314}83158316// GL_OES_depth3283178318// GL_OES_draw_buffers_indexed8319void GL_APIENTRY GL_BlendEquationSeparateiOES(GLuint buf, GLenum modeRGB, GLenum modeAlpha)8320{8321Context *context = GetValidGlobalContext();8322EVENT(context, GLBlendEquationSeparateiOES,8323"context = %d, buf = %u, modeRGB = %s, modeAlpha = %s", CID(context), buf,8324GLenumToString(GLenumGroup::BlendEquationModeEXT, modeRGB),8325GLenumToString(GLenumGroup::BlendEquationModeEXT, modeAlpha));83268327if (context)8328{8329std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);8330bool isCallValid = (context->skipValidation() ||8331ValidateBlendEquationSeparateiOES(context, buf, modeRGB, modeAlpha));8332if (isCallValid)8333{8334context->blendEquationSeparatei(buf, modeRGB, modeAlpha);8335}8336ANGLE_CAPTURE(BlendEquationSeparateiOES, isCallValid, context, buf, modeRGB, modeAlpha);8337}8338else8339{8340GenerateContextLostErrorOnCurrentGlobalContext();8341}8342}83438344void GL_APIENTRY GL_BlendEquationiOES(GLuint buf, GLenum mode)8345{8346Context *context = GetValidGlobalContext();8347EVENT(context, GLBlendEquationiOES, "context = %d, buf = %u, mode = %s", CID(context), buf,8348GLenumToString(GLenumGroup::BlendEquationModeEXT, mode));83498350if (context)8351{8352std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);8353bool isCallValid =8354(context->skipValidation() || ValidateBlendEquationiOES(context, buf, mode));8355if (isCallValid)8356{8357context->blendEquationi(buf, mode);8358}8359ANGLE_CAPTURE(BlendEquationiOES, isCallValid, context, buf, mode);8360}8361else8362{8363GenerateContextLostErrorOnCurrentGlobalContext();8364}8365}83668367void GL_APIENTRY8368GL_BlendFuncSeparateiOES(GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha)8369{8370Context *context = GetValidGlobalContext();8371EVENT(context, GLBlendFuncSeparateiOES,8372"context = %d, buf = %u, srcRGB = %s, dstRGB = %s, srcAlpha = %s, dstAlpha = %s",8373CID(context), buf, GLenumToString(GLenumGroup::BlendingFactor, srcRGB),8374GLenumToString(GLenumGroup::BlendingFactor, dstRGB),8375GLenumToString(GLenumGroup::BlendingFactor, srcAlpha),8376GLenumToString(GLenumGroup::BlendingFactor, dstAlpha));83778378if (context)8379{8380std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);8381bool isCallValid =8382(context->skipValidation() ||8383ValidateBlendFuncSeparateiOES(context, buf, srcRGB, dstRGB, srcAlpha, dstAlpha));8384if (isCallValid)8385{8386context->blendFuncSeparatei(buf, srcRGB, dstRGB, srcAlpha, dstAlpha);8387}8388ANGLE_CAPTURE(BlendFuncSeparateiOES, isCallValid, context, buf, srcRGB, dstRGB, srcAlpha,8389dstAlpha);8390}8391else8392{8393GenerateContextLostErrorOnCurrentGlobalContext();8394}8395}83968397void GL_APIENTRY GL_BlendFunciOES(GLuint buf, GLenum src, GLenum dst)8398{8399Context *context = GetValidGlobalContext();8400EVENT(context, GLBlendFunciOES, "context = %d, buf = %u, src = %s, dst = %s", CID(context), buf,8401GLenumToString(GLenumGroup::BlendingFactor, src),8402GLenumToString(GLenumGroup::BlendingFactor, dst));84038404if (context)8405{8406std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);8407bool isCallValid =8408(context->skipValidation() || ValidateBlendFunciOES(context, buf, src, dst));8409if (isCallValid)8410{8411context->blendFunci(buf, src, dst);8412}8413ANGLE_CAPTURE(BlendFunciOES, isCallValid, context, buf, src, dst);8414}8415else8416{8417GenerateContextLostErrorOnCurrentGlobalContext();8418}8419}84208421void GL_APIENTRY GL_ColorMaskiOES(GLuint index, GLboolean r, GLboolean g, GLboolean b, GLboolean a)8422{8423Context *context = GetValidGlobalContext();8424EVENT(context, GLColorMaskiOES, "context = %d, index = %u, r = %s, g = %s, b = %s, a = %s",8425CID(context), index, GLbooleanToString(r), GLbooleanToString(g), GLbooleanToString(b),8426GLbooleanToString(a));84278428if (context)8429{8430std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);8431bool isCallValid =8432(context->skipValidation() || ValidateColorMaskiOES(context, index, r, g, b, a));8433if (isCallValid)8434{8435context->colorMaski(index, r, g, b, a);8436}8437ANGLE_CAPTURE(ColorMaskiOES, isCallValid, context, index, r, g, b, a);8438}8439else8440{8441GenerateContextLostErrorOnCurrentGlobalContext();8442}8443}84448445void GL_APIENTRY GL_DisableiOES(GLenum target, GLuint index)8446{8447Context *context = GetValidGlobalContext();8448EVENT(context, GLDisableiOES, "context = %d, target = %s, index = %u", CID(context),8449GLenumToString(GLenumGroup::EnableCap, target), index);84508451if (context)8452{8453std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);8454bool isCallValid =8455(context->skipValidation() || ValidateDisableiOES(context, target, index));8456if (isCallValid)8457{8458context->disablei(target, index);8459}8460ANGLE_CAPTURE(DisableiOES, isCallValid, context, target, index);8461}8462else8463{8464GenerateContextLostErrorOnCurrentGlobalContext();8465}8466}84678468void GL_APIENTRY GL_EnableiOES(GLenum target, GLuint index)8469{8470Context *context = GetValidGlobalContext();8471EVENT(context, GLEnableiOES, "context = %d, target = %s, index = %u", CID(context),8472GLenumToString(GLenumGroup::EnableCap, target), index);84738474if (context)8475{8476std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);8477bool isCallValid =8478(context->skipValidation() || ValidateEnableiOES(context, target, index));8479if (isCallValid)8480{8481context->enablei(target, index);8482}8483ANGLE_CAPTURE(EnableiOES, isCallValid, context, target, index);8484}8485else8486{8487GenerateContextLostErrorOnCurrentGlobalContext();8488}8489}84908491GLboolean GL_APIENTRY GL_IsEnablediOES(GLenum target, GLuint index)8492{8493Context *context = GetValidGlobalContext();8494EVENT(context, GLIsEnablediOES, "context = %d, target = %s, index = %u", CID(context),8495GLenumToString(GLenumGroup::EnableCap, target), index);84968497GLboolean returnValue;8498if (context)8499{8500std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);8501bool isCallValid =8502(context->skipValidation() || ValidateIsEnablediOES(context, target, index));8503if (isCallValid)8504{8505returnValue = context->isEnabledi(target, index);8506}8507else8508{8509returnValue = GetDefaultReturnValue<angle::EntryPoint::GLIsEnablediOES, GLboolean>();8510}8511ANGLE_CAPTURE(IsEnablediOES, isCallValid, context, target, index, returnValue);8512}8513else8514{8515GenerateContextLostErrorOnCurrentGlobalContext();8516returnValue = GetDefaultReturnValue<angle::EntryPoint::GLIsEnablediOES, GLboolean>();8517}8518return returnValue;8519}85208521// GL_OES_draw_elements_base_vertex8522void GL_APIENTRY GL_DrawElementsBaseVertexOES(GLenum mode,8523GLsizei count,8524GLenum type,8525const void *indices,8526GLint basevertex)8527{8528Context *context = GetValidGlobalContext();8529EVENT(context, GLDrawElementsBaseVertexOES,8530"context = %d, mode = %s, count = %d, type = %s, indices = 0x%016" PRIxPTR8531", basevertex = %d",8532CID(context), GLenumToString(GLenumGroup::PrimitiveType, mode), count,8533GLenumToString(GLenumGroup::DrawElementsType, type), (uintptr_t)indices, basevertex);85348535if (context)8536{8537PrimitiveMode modePacked = PackParam<PrimitiveMode>(mode);8538DrawElementsType typePacked = PackParam<DrawElementsType>(type);8539std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);8540bool isCallValid = (context->skipValidation() ||8541ValidateDrawElementsBaseVertexOES(context, modePacked, count,8542typePacked, indices, basevertex));8543if (isCallValid)8544{8545context->drawElementsBaseVertex(modePacked, count, typePacked, indices, basevertex);8546}8547ANGLE_CAPTURE(DrawElementsBaseVertexOES, isCallValid, context, modePacked, count,8548typePacked, indices, basevertex);8549}8550else8551{8552GenerateContextLostErrorOnCurrentGlobalContext();8553}8554}85558556void GL_APIENTRY GL_DrawElementsInstancedBaseVertexOES(GLenum mode,8557GLsizei count,8558GLenum type,8559const void *indices,8560GLsizei instancecount,8561GLint basevertex)8562{8563Context *context = GetValidGlobalContext();8564EVENT(context, GLDrawElementsInstancedBaseVertexOES,8565"context = %d, mode = %s, count = %d, type = %s, indices = 0x%016" PRIxPTR8566", instancecount = %d, basevertex = %d",8567CID(context), GLenumToString(GLenumGroup::PrimitiveType, mode), count,8568GLenumToString(GLenumGroup::DrawElementsType, type), (uintptr_t)indices, instancecount,8569basevertex);85708571if (context)8572{8573PrimitiveMode modePacked = PackParam<PrimitiveMode>(mode);8574DrawElementsType typePacked = PackParam<DrawElementsType>(type);8575std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);8576bool isCallValid = (context->skipValidation() || ValidateDrawElementsInstancedBaseVertexOES(8577context, modePacked, count, typePacked,8578indices, instancecount, basevertex));8579if (isCallValid)8580{8581context->drawElementsInstancedBaseVertex(modePacked, count, typePacked, indices,8582instancecount, basevertex);8583}8584ANGLE_CAPTURE(DrawElementsInstancedBaseVertexOES, isCallValid, context, modePacked, count,8585typePacked, indices, instancecount, basevertex);8586}8587else8588{8589GenerateContextLostErrorOnCurrentGlobalContext();8590}8591}85928593void GL_APIENTRY GL_DrawRangeElementsBaseVertexOES(GLenum mode,8594GLuint start,8595GLuint end,8596GLsizei count,8597GLenum type,8598const void *indices,8599GLint basevertex)8600{8601Context *context = GetValidGlobalContext();8602EVENT(context, GLDrawRangeElementsBaseVertexOES,8603"context = %d, mode = %s, start = %u, end = %u, count = %d, type = %s, indices = "8604"0x%016" PRIxPTR ", basevertex = %d",8605CID(context), GLenumToString(GLenumGroup::PrimitiveType, mode), start, end, count,8606GLenumToString(GLenumGroup::DrawElementsType, type), (uintptr_t)indices, basevertex);86078608if (context)8609{8610PrimitiveMode modePacked = PackParam<PrimitiveMode>(mode);8611DrawElementsType typePacked = PackParam<DrawElementsType>(type);8612std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);8613bool isCallValid = (context->skipValidation() || ValidateDrawRangeElementsBaseVertexOES(8614context, modePacked, start, end, count,8615typePacked, indices, basevertex));8616if (isCallValid)8617{8618context->drawRangeElementsBaseVertex(modePacked, start, end, count, typePacked, indices,8619basevertex);8620}8621ANGLE_CAPTURE(DrawRangeElementsBaseVertexOES, isCallValid, context, modePacked, start, end,8622count, typePacked, indices, basevertex);8623}8624else8625{8626GenerateContextLostErrorOnCurrentGlobalContext();8627}8628}86298630// MultiDrawElementsBaseVertexEXT is already defined.86318632// GL_OES_draw_texture8633void GL_APIENTRY GL_DrawTexfOES(GLfloat x, GLfloat y, GLfloat z, GLfloat width, GLfloat height)8634{8635Context *context = GetValidGlobalContext();8636EVENT(context, GLDrawTexfOES, "context = %d, x = %f, y = %f, z = %f, width = %f, height = %f",8637CID(context), x, y, z, width, height);86388639if (context)8640{8641std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);8642bool isCallValid =8643(context->skipValidation() || ValidateDrawTexfOES(context, x, y, z, width, height));8644if (isCallValid)8645{8646context->drawTexf(x, y, z, width, height);8647}8648ANGLE_CAPTURE(DrawTexfOES, isCallValid, context, x, y, z, width, height);8649}8650else8651{8652GenerateContextLostErrorOnCurrentGlobalContext();8653}8654}86558656void GL_APIENTRY GL_DrawTexfvOES(const GLfloat *coords)8657{8658Context *context = GetValidGlobalContext();8659EVENT(context, GLDrawTexfvOES, "context = %d, coords = 0x%016" PRIxPTR "", CID(context),8660(uintptr_t)coords);86618662if (context)8663{8664std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);8665bool isCallValid = (context->skipValidation() || ValidateDrawTexfvOES(context, coords));8666if (isCallValid)8667{8668context->drawTexfv(coords);8669}8670ANGLE_CAPTURE(DrawTexfvOES, isCallValid, context, coords);8671}8672else8673{8674GenerateContextLostErrorOnCurrentGlobalContext();8675}8676}86778678void GL_APIENTRY GL_DrawTexiOES(GLint x, GLint y, GLint z, GLint width, GLint height)8679{8680Context *context = GetValidGlobalContext();8681EVENT(context, GLDrawTexiOES, "context = %d, x = %d, y = %d, z = %d, width = %d, height = %d",8682CID(context), x, y, z, width, height);86838684if (context)8685{8686std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);8687bool isCallValid =8688(context->skipValidation() || ValidateDrawTexiOES(context, x, y, z, width, height));8689if (isCallValid)8690{8691context->drawTexi(x, y, z, width, height);8692}8693ANGLE_CAPTURE(DrawTexiOES, isCallValid, context, x, y, z, width, height);8694}8695else8696{8697GenerateContextLostErrorOnCurrentGlobalContext();8698}8699}87008701void GL_APIENTRY GL_DrawTexivOES(const GLint *coords)8702{8703Context *context = GetValidGlobalContext();8704EVENT(context, GLDrawTexivOES, "context = %d, coords = 0x%016" PRIxPTR "", CID(context),8705(uintptr_t)coords);87068707if (context)8708{8709std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);8710bool isCallValid = (context->skipValidation() || ValidateDrawTexivOES(context, coords));8711if (isCallValid)8712{8713context->drawTexiv(coords);8714}8715ANGLE_CAPTURE(DrawTexivOES, isCallValid, context, coords);8716}8717else8718{8719GenerateContextLostErrorOnCurrentGlobalContext();8720}8721}87228723void GL_APIENTRY GL_DrawTexsOES(GLshort x, GLshort y, GLshort z, GLshort width, GLshort height)8724{8725Context *context = GetValidGlobalContext();8726EVENT(context, GLDrawTexsOES, "context = %d, x = %d, y = %d, z = %d, width = %d, height = %d",8727CID(context), x, y, z, width, height);87288729if (context)8730{8731std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);8732bool isCallValid =8733(context->skipValidation() || ValidateDrawTexsOES(context, x, y, z, width, height));8734if (isCallValid)8735{8736context->drawTexs(x, y, z, width, height);8737}8738ANGLE_CAPTURE(DrawTexsOES, isCallValid, context, x, y, z, width, height);8739}8740else8741{8742GenerateContextLostErrorOnCurrentGlobalContext();8743}8744}87458746void GL_APIENTRY GL_DrawTexsvOES(const GLshort *coords)8747{8748Context *context = GetValidGlobalContext();8749EVENT(context, GLDrawTexsvOES, "context = %d, coords = 0x%016" PRIxPTR "", CID(context),8750(uintptr_t)coords);87518752if (context)8753{8754std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);8755bool isCallValid = (context->skipValidation() || ValidateDrawTexsvOES(context, coords));8756if (isCallValid)8757{8758context->drawTexsv(coords);8759}8760ANGLE_CAPTURE(DrawTexsvOES, isCallValid, context, coords);8761}8762else8763{8764GenerateContextLostErrorOnCurrentGlobalContext();8765}8766}87678768void GL_APIENTRY GL_DrawTexxOES(GLfixed x, GLfixed y, GLfixed z, GLfixed width, GLfixed height)8769{8770Context *context = GetValidGlobalContext();8771EVENT(context, GLDrawTexxOES,8772"context = %d, x = 0x%X, y = 0x%X, z = 0x%X, width = 0x%X, height = 0x%X", CID(context),8773x, y, z, width, height);87748775if (context)8776{8777std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);8778bool isCallValid =8779(context->skipValidation() || ValidateDrawTexxOES(context, x, y, z, width, height));8780if (isCallValid)8781{8782context->drawTexx(x, y, z, width, height);8783}8784ANGLE_CAPTURE(DrawTexxOES, isCallValid, context, x, y, z, width, height);8785}8786else8787{8788GenerateContextLostErrorOnCurrentGlobalContext();8789}8790}87918792void GL_APIENTRY GL_DrawTexxvOES(const GLfixed *coords)8793{8794Context *context = GetValidGlobalContext();8795EVENT(context, GLDrawTexxvOES, "context = %d, coords = 0x%016" PRIxPTR "", CID(context),8796(uintptr_t)coords);87978798if (context)8799{8800std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);8801bool isCallValid = (context->skipValidation() || ValidateDrawTexxvOES(context, coords));8802if (isCallValid)8803{8804context->drawTexxv(coords);8805}8806ANGLE_CAPTURE(DrawTexxvOES, isCallValid, context, coords);8807}8808else8809{8810GenerateContextLostErrorOnCurrentGlobalContext();8811}8812}88138814// GL_OES_framebuffer_object8815void GL_APIENTRY GL_BindFramebufferOES(GLenum target, GLuint framebuffer)8816{8817Context *context = GetValidGlobalContext();8818EVENT(context, GLBindFramebufferOES, "context = %d, target = %s, framebuffer = %u",8819CID(context), GLenumToString(GLenumGroup::FramebufferTarget, target), framebuffer);88208821if (context)8822{8823FramebufferID framebufferPacked = PackParam<FramebufferID>(framebuffer);8824std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);8825bool isCallValid = (context->skipValidation() ||8826ValidateBindFramebufferOES(context, target, framebufferPacked));8827if (isCallValid)8828{8829context->bindFramebuffer(target, framebufferPacked);8830}8831ANGLE_CAPTURE(BindFramebufferOES, isCallValid, context, target, framebufferPacked);8832}8833else8834{8835GenerateContextLostErrorOnCurrentGlobalContext();8836}8837}88388839void GL_APIENTRY GL_BindRenderbufferOES(GLenum target, GLuint renderbuffer)8840{8841Context *context = GetValidGlobalContext();8842EVENT(context, GLBindRenderbufferOES, "context = %d, target = %s, renderbuffer = %u",8843CID(context), GLenumToString(GLenumGroup::RenderbufferTarget, target), renderbuffer);88448845if (context)8846{8847RenderbufferID renderbufferPacked = PackParam<RenderbufferID>(renderbuffer);8848std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);8849bool isCallValid = (context->skipValidation() ||8850ValidateBindRenderbufferOES(context, target, renderbufferPacked));8851if (isCallValid)8852{8853context->bindRenderbuffer(target, renderbufferPacked);8854}8855ANGLE_CAPTURE(BindRenderbufferOES, isCallValid, context, target, renderbufferPacked);8856}8857else8858{8859GenerateContextLostErrorOnCurrentGlobalContext();8860}8861}88628863GLenum GL_APIENTRY GL_CheckFramebufferStatusOES(GLenum target)8864{8865Context *context = GetValidGlobalContext();8866EVENT(context, GLCheckFramebufferStatusOES, "context = %d, target = %s", CID(context),8867GLenumToString(GLenumGroup::FramebufferTarget, target));88688869GLenum returnValue;8870if (context)8871{8872std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);8873bool isCallValid =8874(context->skipValidation() || ValidateCheckFramebufferStatusOES(context, target));8875if (isCallValid)8876{8877returnValue = context->checkFramebufferStatus(target);8878}8879else8880{8881returnValue =8882GetDefaultReturnValue<angle::EntryPoint::GLCheckFramebufferStatusOES, GLenum>();8883}8884ANGLE_CAPTURE(CheckFramebufferStatusOES, isCallValid, context, target, returnValue);8885}8886else8887{8888GenerateContextLostErrorOnCurrentGlobalContext();8889returnValue =8890GetDefaultReturnValue<angle::EntryPoint::GLCheckFramebufferStatusOES, GLenum>();8891}8892return returnValue;8893}88948895void GL_APIENTRY GL_DeleteFramebuffersOES(GLsizei n, const GLuint *framebuffers)8896{8897Context *context = GetValidGlobalContext();8898EVENT(context, GLDeleteFramebuffersOES,8899"context = %d, n = %d, framebuffers = 0x%016" PRIxPTR "", CID(context), n,8900(uintptr_t)framebuffers);89018902if (context)8903{8904const FramebufferID *framebuffersPacked = PackParam<const FramebufferID *>(framebuffers);8905std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);8906bool isCallValid = (context->skipValidation() ||8907ValidateDeleteFramebuffersOES(context, n, framebuffersPacked));8908if (isCallValid)8909{8910context->deleteFramebuffers(n, framebuffersPacked);8911}8912ANGLE_CAPTURE(DeleteFramebuffersOES, isCallValid, context, n, framebuffersPacked);8913}8914else8915{8916GenerateContextLostErrorOnCurrentGlobalContext();8917}8918}89198920void GL_APIENTRY GL_DeleteRenderbuffersOES(GLsizei n, const GLuint *renderbuffers)8921{8922Context *context = GetValidGlobalContext();8923EVENT(context, GLDeleteRenderbuffersOES,8924"context = %d, n = %d, renderbuffers = 0x%016" PRIxPTR "", CID(context), n,8925(uintptr_t)renderbuffers);89268927if (context)8928{8929const RenderbufferID *renderbuffersPacked =8930PackParam<const RenderbufferID *>(renderbuffers);8931std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);8932bool isCallValid = (context->skipValidation() ||8933ValidateDeleteRenderbuffersOES(context, n, renderbuffersPacked));8934if (isCallValid)8935{8936context->deleteRenderbuffers(n, renderbuffersPacked);8937}8938ANGLE_CAPTURE(DeleteRenderbuffersOES, isCallValid, context, n, renderbuffersPacked);8939}8940else8941{8942GenerateContextLostErrorOnCurrentGlobalContext();8943}8944}89458946void GL_APIENTRY GL_FramebufferRenderbufferOES(GLenum target,8947GLenum attachment,8948GLenum renderbuffertarget,8949GLuint renderbuffer)8950{8951Context *context = GetValidGlobalContext();8952EVENT(context, GLFramebufferRenderbufferOES,8953"context = %d, target = %s, attachment = %s, renderbuffertarget = %s, renderbuffer = %u",8954CID(context), GLenumToString(GLenumGroup::FramebufferTarget, target),8955GLenumToString(GLenumGroup::FramebufferAttachment, attachment),8956GLenumToString(GLenumGroup::RenderbufferTarget, renderbuffertarget), renderbuffer);89578958if (context)8959{8960RenderbufferID renderbufferPacked = PackParam<RenderbufferID>(renderbuffer);8961std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);8962bool isCallValid =8963(context->skipValidation() ||8964ValidateFramebufferRenderbufferOES(context, target, attachment, renderbuffertarget,8965renderbufferPacked));8966if (isCallValid)8967{8968context->framebufferRenderbuffer(target, attachment, renderbuffertarget,8969renderbufferPacked);8970}8971ANGLE_CAPTURE(FramebufferRenderbufferOES, isCallValid, context, target, attachment,8972renderbuffertarget, renderbufferPacked);8973}8974else8975{8976GenerateContextLostErrorOnCurrentGlobalContext();8977}8978}89798980void GL_APIENTRY GL_FramebufferTexture2DOES(GLenum target,8981GLenum attachment,8982GLenum textarget,8983GLuint texture,8984GLint level)8985{8986Context *context = GetValidGlobalContext();8987EVENT(context, GLFramebufferTexture2DOES,8988"context = %d, target = %s, attachment = %s, textarget = %s, texture = %u, level = %d",8989CID(context), GLenumToString(GLenumGroup::FramebufferTarget, target),8990GLenumToString(GLenumGroup::FramebufferAttachment, attachment),8991GLenumToString(GLenumGroup::TextureTarget, textarget), texture, level);89928993if (context)8994{8995TextureTarget textargetPacked = PackParam<TextureTarget>(textarget);8996TextureID texturePacked = PackParam<TextureID>(texture);8997std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);8998bool isCallValid = (context->skipValidation() ||8999ValidateFramebufferTexture2DOES(context, target, attachment,9000textargetPacked, texturePacked, level));9001if (isCallValid)9002{9003context->framebufferTexture2D(target, attachment, textargetPacked, texturePacked,9004level);9005}9006ANGLE_CAPTURE(FramebufferTexture2DOES, isCallValid, context, target, attachment,9007textargetPacked, texturePacked, level);9008}9009else9010{9011GenerateContextLostErrorOnCurrentGlobalContext();9012}9013}90149015void GL_APIENTRY GL_GenFramebuffersOES(GLsizei n, GLuint *framebuffers)9016{9017Context *context = GetValidGlobalContext();9018EVENT(context, GLGenFramebuffersOES, "context = %d, n = %d, framebuffers = 0x%016" PRIxPTR "",9019CID(context), n, (uintptr_t)framebuffers);90209021if (context)9022{9023FramebufferID *framebuffersPacked = PackParam<FramebufferID *>(framebuffers);9024std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);9025bool isCallValid = (context->skipValidation() ||9026ValidateGenFramebuffersOES(context, n, framebuffersPacked));9027if (isCallValid)9028{9029context->genFramebuffers(n, framebuffersPacked);9030}9031ANGLE_CAPTURE(GenFramebuffersOES, isCallValid, context, n, framebuffersPacked);9032}9033else9034{9035GenerateContextLostErrorOnCurrentGlobalContext();9036}9037}90389039void GL_APIENTRY GL_GenRenderbuffersOES(GLsizei n, GLuint *renderbuffers)9040{9041Context *context = GetValidGlobalContext();9042EVENT(context, GLGenRenderbuffersOES, "context = %d, n = %d, renderbuffers = 0x%016" PRIxPTR "",9043CID(context), n, (uintptr_t)renderbuffers);90449045if (context)9046{9047RenderbufferID *renderbuffersPacked = PackParam<RenderbufferID *>(renderbuffers);9048std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);9049bool isCallValid = (context->skipValidation() ||9050ValidateGenRenderbuffersOES(context, n, renderbuffersPacked));9051if (isCallValid)9052{9053context->genRenderbuffers(n, renderbuffersPacked);9054}9055ANGLE_CAPTURE(GenRenderbuffersOES, isCallValid, context, n, renderbuffersPacked);9056}9057else9058{9059GenerateContextLostErrorOnCurrentGlobalContext();9060}9061}90629063void GL_APIENTRY GL_GenerateMipmapOES(GLenum target)9064{9065Context *context = GetValidGlobalContext();9066EVENT(context, GLGenerateMipmapOES, "context = %d, target = %s", CID(context),9067GLenumToString(GLenumGroup::TextureTarget, target));90689069if (context)9070{9071TextureType targetPacked = PackParam<TextureType>(target);9072std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);9073bool isCallValid =9074(context->skipValidation() || ValidateGenerateMipmapOES(context, targetPacked));9075if (isCallValid)9076{9077context->generateMipmap(targetPacked);9078}9079ANGLE_CAPTURE(GenerateMipmapOES, isCallValid, context, targetPacked);9080}9081else9082{9083GenerateContextLostErrorOnCurrentGlobalContext();9084}9085}90869087void GL_APIENTRY GL_GetFramebufferAttachmentParameterivOES(GLenum target,9088GLenum attachment,9089GLenum pname,9090GLint *params)9091{9092Context *context = GetValidGlobalContext();9093EVENT(context, GLGetFramebufferAttachmentParameterivOES,9094"context = %d, target = %s, attachment = %s, pname = %s, params = 0x%016" PRIxPTR "",9095CID(context), GLenumToString(GLenumGroup::FramebufferTarget, target),9096GLenumToString(GLenumGroup::FramebufferAttachment, attachment),9097GLenumToString(GLenumGroup::FramebufferAttachmentParameterName, pname),9098(uintptr_t)params);90999100if (context)9101{9102std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);9103bool isCallValid =9104(context->skipValidation() || ValidateGetFramebufferAttachmentParameterivOES(9105context, target, attachment, pname, params));9106if (isCallValid)9107{9108context->getFramebufferAttachmentParameteriv(target, attachment, pname, params);9109}9110ANGLE_CAPTURE(GetFramebufferAttachmentParameterivOES, isCallValid, context, target,9111attachment, pname, params);9112}9113else9114{9115GenerateContextLostErrorOnCurrentGlobalContext();9116}9117}91189119void GL_APIENTRY GL_GetRenderbufferParameterivOES(GLenum target, GLenum pname, GLint *params)9120{9121Context *context = GetValidGlobalContext();9122EVENT(context, GLGetRenderbufferParameterivOES,9123"context = %d, target = %s, pname = %s, params = 0x%016" PRIxPTR "", CID(context),9124GLenumToString(GLenumGroup::RenderbufferTarget, target),9125GLenumToString(GLenumGroup::RenderbufferParameterName, pname), (uintptr_t)params);91269127if (context)9128{9129std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);9130bool isCallValid = (context->skipValidation() ||9131ValidateGetRenderbufferParameterivOES(context, target, pname, params));9132if (isCallValid)9133{9134context->getRenderbufferParameteriv(target, pname, params);9135}9136ANGLE_CAPTURE(GetRenderbufferParameterivOES, isCallValid, context, target, pname, params);9137}9138else9139{9140GenerateContextLostErrorOnCurrentGlobalContext();9141}9142}91439144GLboolean GL_APIENTRY GL_IsFramebufferOES(GLuint framebuffer)9145{9146Context *context = GetValidGlobalContext();9147EVENT(context, GLIsFramebufferOES, "context = %d, framebuffer = %u", CID(context), framebuffer);91489149GLboolean returnValue;9150if (context)9151{9152FramebufferID framebufferPacked = PackParam<FramebufferID>(framebuffer);9153std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);9154bool isCallValid =9155(context->skipValidation() || ValidateIsFramebufferOES(context, framebufferPacked));9156if (isCallValid)9157{9158returnValue = context->isFramebuffer(framebufferPacked);9159}9160else9161{9162returnValue = GetDefaultReturnValue<angle::EntryPoint::GLIsFramebufferOES, GLboolean>();9163}9164ANGLE_CAPTURE(IsFramebufferOES, isCallValid, context, framebufferPacked, returnValue);9165}9166else9167{9168GenerateContextLostErrorOnCurrentGlobalContext();9169returnValue = GetDefaultReturnValue<angle::EntryPoint::GLIsFramebufferOES, GLboolean>();9170}9171return returnValue;9172}91739174GLboolean GL_APIENTRY GL_IsRenderbufferOES(GLuint renderbuffer)9175{9176Context *context = GetValidGlobalContext();9177EVENT(context, GLIsRenderbufferOES, "context = %d, renderbuffer = %u", CID(context),9178renderbuffer);91799180GLboolean returnValue;9181if (context)9182{9183RenderbufferID renderbufferPacked = PackParam<RenderbufferID>(renderbuffer);9184std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);9185bool isCallValid =9186(context->skipValidation() || ValidateIsRenderbufferOES(context, renderbufferPacked));9187if (isCallValid)9188{9189returnValue = context->isRenderbuffer(renderbufferPacked);9190}9191else9192{9193returnValue =9194GetDefaultReturnValue<angle::EntryPoint::GLIsRenderbufferOES, GLboolean>();9195}9196ANGLE_CAPTURE(IsRenderbufferOES, isCallValid, context, renderbufferPacked, returnValue);9197}9198else9199{9200GenerateContextLostErrorOnCurrentGlobalContext();9201returnValue = GetDefaultReturnValue<angle::EntryPoint::GLIsRenderbufferOES, GLboolean>();9202}9203return returnValue;9204}92059206void GL_APIENTRY GL_RenderbufferStorageOES(GLenum target,9207GLenum internalformat,9208GLsizei width,9209GLsizei height)9210{9211Context *context = GetValidGlobalContext();9212EVENT(context, GLRenderbufferStorageOES,9213"context = %d, target = %s, internalformat = %s, width = %d, height = %d", CID(context),9214GLenumToString(GLenumGroup::RenderbufferTarget, target),9215GLenumToString(GLenumGroup::InternalFormat, internalformat), width, height);92169217if (context)9218{9219std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);9220bool isCallValid =9221(context->skipValidation() ||9222ValidateRenderbufferStorageOES(context, target, internalformat, width, height));9223if (isCallValid)9224{9225context->renderbufferStorage(target, internalformat, width, height);9226}9227ANGLE_CAPTURE(RenderbufferStorageOES, isCallValid, context, target, internalformat, width,9228height);9229}9230else9231{9232GenerateContextLostErrorOnCurrentGlobalContext();9233}9234}92359236// GL_OES_geometry_shader9237void GL_APIENTRY GL_FramebufferTextureOES(GLenum target,9238GLenum attachment,9239GLuint texture,9240GLint level)9241{9242Context *context = GetValidGlobalContext();9243EVENT(context, GLFramebufferTextureOES,9244"context = %d, target = %s, attachment = %s, texture = %u, level = %d", CID(context),9245GLenumToString(GLenumGroup::FramebufferTarget, target),9246GLenumToString(GLenumGroup::FramebufferAttachment, attachment), texture, level);92479248if (context)9249{9250TextureID texturePacked = PackParam<TextureID>(texture);9251std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);9252bool isCallValid =9253(context->skipValidation() ||9254ValidateFramebufferTextureOES(context, target, attachment, texturePacked, level));9255if (isCallValid)9256{9257context->framebufferTexture(target, attachment, texturePacked, level);9258}9259ANGLE_CAPTURE(FramebufferTextureOES, isCallValid, context, target, attachment,9260texturePacked, level);9261}9262else9263{9264GenerateContextLostErrorOnCurrentGlobalContext();9265}9266}92679268// GL_OES_get_program_binary9269void GL_APIENTRY GL_GetProgramBinaryOES(GLuint program,9270GLsizei bufSize,9271GLsizei *length,9272GLenum *binaryFormat,9273void *binary)9274{9275Context *context = GetValidGlobalContext();9276EVENT(context, GLGetProgramBinaryOES,9277"context = %d, program = %u, bufSize = %d, length = 0x%016" PRIxPTR9278", binaryFormat = 0x%016" PRIxPTR ", binary = 0x%016" PRIxPTR "",9279CID(context), program, bufSize, (uintptr_t)length, (uintptr_t)binaryFormat,9280(uintptr_t)binary);92819282if (context)9283{9284ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);9285std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);9286bool isCallValid = (context->skipValidation() ||9287ValidateGetProgramBinaryOES(context, programPacked, bufSize, length,9288binaryFormat, binary));9289if (isCallValid)9290{9291context->getProgramBinary(programPacked, bufSize, length, binaryFormat, binary);9292}9293ANGLE_CAPTURE(GetProgramBinaryOES, isCallValid, context, programPacked, bufSize, length,9294binaryFormat, binary);9295}9296else9297{9298GenerateContextLostErrorOnCurrentGlobalContext();9299}9300}93019302void GL_APIENTRY GL_ProgramBinaryOES(GLuint program,9303GLenum binaryFormat,9304const void *binary,9305GLint length)9306{9307Context *context = GetValidGlobalContext();9308EVENT(context, GLProgramBinaryOES,9309"context = %d, program = %u, binaryFormat = %s, binary = 0x%016" PRIxPTR ", length = %d",9310CID(context), program, GLenumToString(GLenumGroup::DefaultGroup, binaryFormat),9311(uintptr_t)binary, length);93129313if (context)9314{9315ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);9316std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);9317bool isCallValid =9318(context->skipValidation() ||9319ValidateProgramBinaryOES(context, programPacked, binaryFormat, binary, length));9320if (isCallValid)9321{9322context->programBinary(programPacked, binaryFormat, binary, length);9323}9324ANGLE_CAPTURE(ProgramBinaryOES, isCallValid, context, programPacked, binaryFormat, binary,9325length);9326}9327else9328{9329GenerateContextLostErrorOnCurrentGlobalContext();9330}9331}93329333// GL_OES_mapbuffer9334void GL_APIENTRY GL_GetBufferPointervOES(GLenum target, GLenum pname, void **params)9335{9336Context *context = GetValidGlobalContext();9337EVENT(context, GLGetBufferPointervOES,9338"context = %d, target = %s, pname = %s, params = 0x%016" PRIxPTR "", CID(context),9339GLenumToString(GLenumGroup::BufferTargetARB, target),9340GLenumToString(GLenumGroup::DefaultGroup, pname), (uintptr_t)params);93419342if (context)9343{9344BufferBinding targetPacked = PackParam<BufferBinding>(target);9345std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);9346bool isCallValid = (context->skipValidation() ||9347ValidateGetBufferPointervOES(context, targetPacked, pname, params));9348if (isCallValid)9349{9350context->getBufferPointerv(targetPacked, pname, params);9351}9352ANGLE_CAPTURE(GetBufferPointervOES, isCallValid, context, targetPacked, pname, params);9353}9354else9355{9356GenerateContextLostErrorOnCurrentGlobalContext();9357}9358}93599360void *GL_APIENTRY GL_MapBufferOES(GLenum target, GLenum access)9361{9362Context *context = GetValidGlobalContext();9363EVENT(context, GLMapBufferOES, "context = %d, target = %s, access = %s", CID(context),9364GLenumToString(GLenumGroup::BufferTargetARB, target),9365GLenumToString(GLenumGroup::BufferAccessARB, access));93669367void *returnValue;9368if (context)9369{9370BufferBinding targetPacked = PackParam<BufferBinding>(target);9371std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);9372bool isCallValid =9373(context->skipValidation() || ValidateMapBufferOES(context, targetPacked, access));9374if (isCallValid)9375{9376returnValue = context->mapBuffer(targetPacked, access);9377}9378else9379{9380returnValue = GetDefaultReturnValue<angle::EntryPoint::GLMapBufferOES, void *>();9381}9382ANGLE_CAPTURE(MapBufferOES, isCallValid, context, targetPacked, access, returnValue);9383}9384else9385{9386GenerateContextLostErrorOnCurrentGlobalContext();9387returnValue = GetDefaultReturnValue<angle::EntryPoint::GLMapBufferOES, void *>();9388}9389return returnValue;9390}93919392GLboolean GL_APIENTRY GL_UnmapBufferOES(GLenum target)9393{9394Context *context = GetValidGlobalContext();9395EVENT(context, GLUnmapBufferOES, "context = %d, target = %s", CID(context),9396GLenumToString(GLenumGroup::DefaultGroup, target));93979398GLboolean returnValue;9399if (context)9400{9401BufferBinding targetPacked = PackParam<BufferBinding>(target);9402std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);9403bool isCallValid =9404(context->skipValidation() || ValidateUnmapBufferOES(context, targetPacked));9405if (isCallValid)9406{9407returnValue = context->unmapBuffer(targetPacked);9408}9409else9410{9411returnValue = GetDefaultReturnValue<angle::EntryPoint::GLUnmapBufferOES, GLboolean>();9412}9413ANGLE_CAPTURE(UnmapBufferOES, isCallValid, context, targetPacked, returnValue);9414}9415else9416{9417GenerateContextLostErrorOnCurrentGlobalContext();9418returnValue = GetDefaultReturnValue<angle::EntryPoint::GLUnmapBufferOES, GLboolean>();9419}9420return returnValue;9421}94229423// GL_OES_matrix_palette9424void GL_APIENTRY GL_CurrentPaletteMatrixOES(GLuint matrixpaletteindex)9425{9426Context *context = GetValidGlobalContext();9427EVENT(context, GLCurrentPaletteMatrixOES, "context = %d, matrixpaletteindex = %u", CID(context),9428matrixpaletteindex);94299430if (context)9431{9432std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);9433bool isCallValid = (context->skipValidation() ||9434ValidateCurrentPaletteMatrixOES(context, matrixpaletteindex));9435if (isCallValid)9436{9437context->currentPaletteMatrix(matrixpaletteindex);9438}9439ANGLE_CAPTURE(CurrentPaletteMatrixOES, isCallValid, context, matrixpaletteindex);9440}9441else9442{9443GenerateContextLostErrorOnCurrentGlobalContext();9444}9445}94469447void GL_APIENTRY GL_LoadPaletteFromModelViewMatrixOES()9448{9449Context *context = GetValidGlobalContext();9450EVENT(context, GLLoadPaletteFromModelViewMatrixOES, "context = %d", CID(context));94519452if (context)9453{9454std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);9455bool isCallValid =9456(context->skipValidation() || ValidateLoadPaletteFromModelViewMatrixOES(context));9457if (isCallValid)9458{9459context->loadPaletteFromModelViewMatrix();9460}9461ANGLE_CAPTURE(LoadPaletteFromModelViewMatrixOES, isCallValid, context);9462}9463else9464{9465GenerateContextLostErrorOnCurrentGlobalContext();9466}9467}94689469void GL_APIENTRY GL_MatrixIndexPointerOES(GLint size,9470GLenum type,9471GLsizei stride,9472const void *pointer)9473{9474Context *context = GetValidGlobalContext();9475EVENT(context, GLMatrixIndexPointerOES,9476"context = %d, size = %d, type = %s, stride = %d, pointer = 0x%016" PRIxPTR "",9477CID(context), size, GLenumToString(GLenumGroup::DefaultGroup, type), stride,9478(uintptr_t)pointer);94799480if (context)9481{9482std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);9483bool isCallValid = (context->skipValidation() ||9484ValidateMatrixIndexPointerOES(context, size, type, stride, pointer));9485if (isCallValid)9486{9487context->matrixIndexPointer(size, type, stride, pointer);9488}9489ANGLE_CAPTURE(MatrixIndexPointerOES, isCallValid, context, size, type, stride, pointer);9490}9491else9492{9493GenerateContextLostErrorOnCurrentGlobalContext();9494}9495}94969497void GL_APIENTRY GL_WeightPointerOES(GLint size, GLenum type, GLsizei stride, const void *pointer)9498{9499Context *context = GetValidGlobalContext();9500EVENT(context, GLWeightPointerOES,9501"context = %d, size = %d, type = %s, stride = %d, pointer = 0x%016" PRIxPTR "",9502CID(context), size, GLenumToString(GLenumGroup::DefaultGroup, type), stride,9503(uintptr_t)pointer);95049505if (context)9506{9507std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);9508bool isCallValid = (context->skipValidation() ||9509ValidateWeightPointerOES(context, size, type, stride, pointer));9510if (isCallValid)9511{9512context->weightPointer(size, type, stride, pointer);9513}9514ANGLE_CAPTURE(WeightPointerOES, isCallValid, context, size, type, stride, pointer);9515}9516else9517{9518GenerateContextLostErrorOnCurrentGlobalContext();9519}9520}95219522// GL_OES_point_size_array9523void GL_APIENTRY GL_PointSizePointerOES(GLenum type, GLsizei stride, const void *pointer)9524{9525Context *context = GetValidGlobalContext();9526EVENT(context, GLPointSizePointerOES,9527"context = %d, type = %s, stride = %d, pointer = 0x%016" PRIxPTR "", CID(context),9528GLenumToString(GLenumGroup::DefaultGroup, type), stride, (uintptr_t)pointer);95299530if (context)9531{9532VertexAttribType typePacked = PackParam<VertexAttribType>(type);9533std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);9534bool isCallValid = (context->skipValidation() ||9535ValidatePointSizePointerOES(context, typePacked, stride, pointer));9536if (isCallValid)9537{9538context->pointSizePointer(typePacked, stride, pointer);9539}9540ANGLE_CAPTURE(PointSizePointerOES, isCallValid, context, typePacked, stride, pointer);9541}9542else9543{9544GenerateContextLostErrorOnCurrentGlobalContext();9545}9546}95479548// GL_OES_query_matrix9549GLbitfield GL_APIENTRY GL_QueryMatrixxOES(GLfixed *mantissa, GLint *exponent)9550{9551Context *context = GetValidGlobalContext();9552EVENT(context, GLQueryMatrixxOES,9553"context = %d, mantissa = 0x%016" PRIxPTR ", exponent = 0x%016" PRIxPTR "", CID(context),9554(uintptr_t)mantissa, (uintptr_t)exponent);95559556GLbitfield returnValue;9557if (context)9558{9559std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);9560bool isCallValid =9561(context->skipValidation() || ValidateQueryMatrixxOES(context, mantissa, exponent));9562if (isCallValid)9563{9564returnValue = context->queryMatrixx(mantissa, exponent);9565}9566else9567{9568returnValue = GetDefaultReturnValue<angle::EntryPoint::GLQueryMatrixxOES, GLbitfield>();9569}9570ANGLE_CAPTURE(QueryMatrixxOES, isCallValid, context, mantissa, exponent, returnValue);9571}9572else9573{9574GenerateContextLostErrorOnCurrentGlobalContext();9575returnValue = GetDefaultReturnValue<angle::EntryPoint::GLQueryMatrixxOES, GLbitfield>();9576}9577return returnValue;9578}95799580// GL_OES_sample_shading9581void GL_APIENTRY GL_MinSampleShadingOES(GLfloat value)9582{9583Context *context = GetValidGlobalContext();9584EVENT(context, GLMinSampleShadingOES, "context = %d, value = %f", CID(context), value);95859586if (context)9587{9588std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);9589bool isCallValid =9590(context->skipValidation() || ValidateMinSampleShadingOES(context, value));9591if (isCallValid)9592{9593context->minSampleShading(value);9594}9595ANGLE_CAPTURE(MinSampleShadingOES, isCallValid, context, value);9596}9597else9598{9599GenerateContextLostErrorOnCurrentGlobalContext();9600}9601}96029603// GL_OES_shader_io_blocks96049605// GL_OES_texture_3D9606void GL_APIENTRY GL_CompressedTexImage3DOES(GLenum target,9607GLint level,9608GLenum internalformat,9609GLsizei width,9610GLsizei height,9611GLsizei depth,9612GLint border,9613GLsizei imageSize,9614const void *data)9615{9616Context *context = GetValidGlobalContext();9617EVENT(context, GLCompressedTexImage3DOES,9618"context = %d, target = %s, level = %d, internalformat = %s, width = %d, height = %d, "9619"depth = %d, border = %d, imageSize = %d, data = 0x%016" PRIxPTR "",9620CID(context), GLenumToString(GLenumGroup::TextureTarget, target), level,9621GLenumToString(GLenumGroup::InternalFormat, internalformat), width, height, depth, border,9622imageSize, (uintptr_t)data);96239624if (context)9625{9626TextureTarget targetPacked = PackParam<TextureTarget>(target);9627std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);9628bool isCallValid =9629(context->skipValidation() ||9630ValidateCompressedTexImage3DOES(context, targetPacked, level, internalformat, width,9631height, depth, border, imageSize, data));9632if (isCallValid)9633{9634context->compressedTexImage3D(targetPacked, level, internalformat, width, height, depth,9635border, imageSize, data);9636}9637ANGLE_CAPTURE(CompressedTexImage3DOES, isCallValid, context, targetPacked, level,9638internalformat, width, height, depth, border, imageSize, data);9639}9640else9641{9642GenerateContextLostErrorOnCurrentGlobalContext();9643}9644}96459646void GL_APIENTRY GL_CompressedTexSubImage3DOES(GLenum target,9647GLint level,9648GLint xoffset,9649GLint yoffset,9650GLint zoffset,9651GLsizei width,9652GLsizei height,9653GLsizei depth,9654GLenum format,9655GLsizei imageSize,9656const void *data)9657{9658Context *context = GetValidGlobalContext();9659EVENT(context, GLCompressedTexSubImage3DOES,9660"context = %d, target = %s, level = %d, xoffset = %d, yoffset = %d, zoffset = %d, width "9661"= %d, height = %d, depth = %d, format = %s, imageSize = %d, data = 0x%016" PRIxPTR "",9662CID(context), GLenumToString(GLenumGroup::TextureTarget, target), level, xoffset, yoffset,9663zoffset, width, height, depth, GLenumToString(GLenumGroup::PixelFormat, format),9664imageSize, (uintptr_t)data);96659666if (context)9667{9668TextureTarget targetPacked = PackParam<TextureTarget>(target);9669std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);9670bool isCallValid = (context->skipValidation() ||9671ValidateCompressedTexSubImage3DOES(9672context, targetPacked, level, xoffset, yoffset, zoffset, width,9673height, depth, format, imageSize, data));9674if (isCallValid)9675{9676context->compressedTexSubImage3D(targetPacked, level, xoffset, yoffset, zoffset, width,9677height, depth, format, imageSize, data);9678}9679ANGLE_CAPTURE(CompressedTexSubImage3DOES, isCallValid, context, targetPacked, level,9680xoffset, yoffset, zoffset, width, height, depth, format, imageSize, data);9681}9682else9683{9684GenerateContextLostErrorOnCurrentGlobalContext();9685}9686}96879688void GL_APIENTRY GL_CopyTexSubImage3DOES(GLenum target,9689GLint level,9690GLint xoffset,9691GLint yoffset,9692GLint zoffset,9693GLint x,9694GLint y,9695GLsizei width,9696GLsizei height)9697{9698Context *context = GetValidGlobalContext();9699EVENT(context, GLCopyTexSubImage3DOES,9700"context = %d, target = %s, level = %d, xoffset = %d, yoffset = %d, zoffset = %d, x = "9701"%d, y = %d, width = %d, height = %d",9702CID(context), GLenumToString(GLenumGroup::DefaultGroup, target), level, xoffset, yoffset,9703zoffset, x, y, width, height);97049705if (context)9706{9707TextureTarget targetPacked = PackParam<TextureTarget>(target);9708std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);9709bool isCallValid = (context->skipValidation() ||9710ValidateCopyTexSubImage3DOES(context, targetPacked, level, xoffset,9711yoffset, zoffset, x, y, width, height));9712if (isCallValid)9713{9714context->copyTexSubImage3D(targetPacked, level, xoffset, yoffset, zoffset, x, y, width,9715height);9716}9717ANGLE_CAPTURE(CopyTexSubImage3DOES, isCallValid, context, targetPacked, level, xoffset,9718yoffset, zoffset, x, y, width, height);9719}9720else9721{9722GenerateContextLostErrorOnCurrentGlobalContext();9723}9724}97259726void GL_APIENTRY GL_FramebufferTexture3DOES(GLenum target,9727GLenum attachment,9728GLenum textarget,9729GLuint texture,9730GLint level,9731GLint zoffset)9732{9733Context *context = GetValidGlobalContext();9734EVENT(context, GLFramebufferTexture3DOES,9735"context = %d, target = %s, attachment = %s, textarget = %s, texture = %u, level = %d, "9736"zoffset = %d",9737CID(context), GLenumToString(GLenumGroup::FramebufferTarget, target),9738GLenumToString(GLenumGroup::FramebufferAttachment, attachment),9739GLenumToString(GLenumGroup::TextureTarget, textarget), texture, level, zoffset);97409741if (context)9742{9743TextureTarget textargetPacked = PackParam<TextureTarget>(textarget);9744TextureID texturePacked = PackParam<TextureID>(texture);9745std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);9746bool isCallValid =9747(context->skipValidation() ||9748ValidateFramebufferTexture3DOES(context, target, attachment, textargetPacked,9749texturePacked, level, zoffset));9750if (isCallValid)9751{9752context->framebufferTexture3D(target, attachment, textargetPacked, texturePacked, level,9753zoffset);9754}9755ANGLE_CAPTURE(FramebufferTexture3DOES, isCallValid, context, target, attachment,9756textargetPacked, texturePacked, level, zoffset);9757}9758else9759{9760GenerateContextLostErrorOnCurrentGlobalContext();9761}9762}97639764void GL_APIENTRY GL_TexImage3DOES(GLenum target,9765GLint level,9766GLenum internalformat,9767GLsizei width,9768GLsizei height,9769GLsizei depth,9770GLint border,9771GLenum format,9772GLenum type,9773const void *pixels)9774{9775Context *context = GetValidGlobalContext();9776EVENT(context, GLTexImage3DOES,9777"context = %d, target = %s, level = %d, internalformat = %s, width = %d, height = %d, "9778"depth = %d, border = %d, format = %s, type = %s, pixels = 0x%016" PRIxPTR "",9779CID(context), GLenumToString(GLenumGroup::TextureTarget, target), level,9780GLenumToString(GLenumGroup::InternalFormat, internalformat), width, height, depth, border,9781GLenumToString(GLenumGroup::PixelFormat, format),9782GLenumToString(GLenumGroup::PixelType, type), (uintptr_t)pixels);97839784if (context)9785{9786TextureTarget targetPacked = PackParam<TextureTarget>(target);9787std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);9788bool isCallValid =9789(context->skipValidation() ||9790ValidateTexImage3DOES(context, targetPacked, level, internalformat, width, height,9791depth, border, format, type, pixels));9792if (isCallValid)9793{9794context->texImage3D(targetPacked, level, internalformat, width, height, depth, border,9795format, type, pixels);9796}9797ANGLE_CAPTURE(TexImage3DOES, isCallValid, context, targetPacked, level, internalformat,9798width, height, depth, border, format, type, pixels);9799}9800else9801{9802GenerateContextLostErrorOnCurrentGlobalContext();9803}9804}98059806void GL_APIENTRY GL_TexSubImage3DOES(GLenum target,9807GLint level,9808GLint xoffset,9809GLint yoffset,9810GLint zoffset,9811GLsizei width,9812GLsizei height,9813GLsizei depth,9814GLenum format,9815GLenum type,9816const void *pixels)9817{9818Context *context = GetValidGlobalContext();9819EVENT(context, GLTexSubImage3DOES,9820"context = %d, target = %s, level = %d, xoffset = %d, yoffset = %d, zoffset = %d, width "9821"= %d, height = %d, depth = %d, format = %s, type = %s, pixels = 0x%016" PRIxPTR "",9822CID(context), GLenumToString(GLenumGroup::TextureTarget, target), level, xoffset, yoffset,9823zoffset, width, height, depth, GLenumToString(GLenumGroup::PixelFormat, format),9824GLenumToString(GLenumGroup::PixelType, type), (uintptr_t)pixels);98259826if (context)9827{9828TextureTarget targetPacked = PackParam<TextureTarget>(target);9829std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);9830bool isCallValid =9831(context->skipValidation() ||9832ValidateTexSubImage3DOES(context, targetPacked, level, xoffset, yoffset, zoffset,9833width, height, depth, format, type, pixels));9834if (isCallValid)9835{9836context->texSubImage3D(targetPacked, level, xoffset, yoffset, zoffset, width, height,9837depth, format, type, pixels);9838}9839ANGLE_CAPTURE(TexSubImage3DOES, isCallValid, context, targetPacked, level, xoffset, yoffset,9840zoffset, width, height, depth, format, type, pixels);9841}9842else9843{9844GenerateContextLostErrorOnCurrentGlobalContext();9845}9846}98479848// GL_OES_texture_border_clamp9849void GL_APIENTRY GL_GetSamplerParameterIivOES(GLuint sampler, GLenum pname, GLint *params)9850{9851Context *context = GetValidGlobalContext();9852EVENT(context, GLGetSamplerParameterIivOES,9853"context = %d, sampler = %u, pname = %s, params = 0x%016" PRIxPTR "", CID(context),9854sampler, GLenumToString(GLenumGroup::SamplerParameterName, pname), (uintptr_t)params);98559856if (context)9857{9858SamplerID samplerPacked = PackParam<SamplerID>(sampler);9859std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);9860bool isCallValid =9861(context->skipValidation() ||9862ValidateGetSamplerParameterIivOES(context, samplerPacked, pname, params));9863if (isCallValid)9864{9865context->getSamplerParameterIiv(samplerPacked, pname, params);9866}9867ANGLE_CAPTURE(GetSamplerParameterIivOES, isCallValid, context, samplerPacked, pname,9868params);9869}9870else9871{9872GenerateContextLostErrorOnCurrentGlobalContext();9873}9874}98759876void GL_APIENTRY GL_GetSamplerParameterIuivOES(GLuint sampler, GLenum pname, GLuint *params)9877{9878Context *context = GetValidGlobalContext();9879EVENT(context, GLGetSamplerParameterIuivOES,9880"context = %d, sampler = %u, pname = %s, params = 0x%016" PRIxPTR "", CID(context),9881sampler, GLenumToString(GLenumGroup::SamplerParameterName, pname), (uintptr_t)params);98829883if (context)9884{9885SamplerID samplerPacked = PackParam<SamplerID>(sampler);9886std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);9887bool isCallValid =9888(context->skipValidation() ||9889ValidateGetSamplerParameterIuivOES(context, samplerPacked, pname, params));9890if (isCallValid)9891{9892context->getSamplerParameterIuiv(samplerPacked, pname, params);9893}9894ANGLE_CAPTURE(GetSamplerParameterIuivOES, isCallValid, context, samplerPacked, pname,9895params);9896}9897else9898{9899GenerateContextLostErrorOnCurrentGlobalContext();9900}9901}99029903void GL_APIENTRY GL_GetTexParameterIivOES(GLenum target, GLenum pname, GLint *params)9904{9905Context *context = GetValidGlobalContext();9906EVENT(context, GLGetTexParameterIivOES,9907"context = %d, target = %s, pname = %s, params = 0x%016" PRIxPTR "", CID(context),9908GLenumToString(GLenumGroup::TextureTarget, target),9909GLenumToString(GLenumGroup::GetTextureParameter, pname), (uintptr_t)params);99109911if (context)9912{9913TextureType targetPacked = PackParam<TextureType>(target);9914std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);9915bool isCallValid = (context->skipValidation() ||9916ValidateGetTexParameterIivOES(context, targetPacked, pname, params));9917if (isCallValid)9918{9919context->getTexParameterIiv(targetPacked, pname, params);9920}9921ANGLE_CAPTURE(GetTexParameterIivOES, isCallValid, context, targetPacked, pname, params);9922}9923else9924{9925GenerateContextLostErrorOnCurrentGlobalContext();9926}9927}99289929void GL_APIENTRY GL_GetTexParameterIuivOES(GLenum target, GLenum pname, GLuint *params)9930{9931Context *context = GetValidGlobalContext();9932EVENT(context, GLGetTexParameterIuivOES,9933"context = %d, target = %s, pname = %s, params = 0x%016" PRIxPTR "", CID(context),9934GLenumToString(GLenumGroup::TextureTarget, target),9935GLenumToString(GLenumGroup::GetTextureParameter, pname), (uintptr_t)params);99369937if (context)9938{9939TextureType targetPacked = PackParam<TextureType>(target);9940std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);9941bool isCallValid = (context->skipValidation() ||9942ValidateGetTexParameterIuivOES(context, targetPacked, pname, params));9943if (isCallValid)9944{9945context->getTexParameterIuiv(targetPacked, pname, params);9946}9947ANGLE_CAPTURE(GetTexParameterIuivOES, isCallValid, context, targetPacked, pname, params);9948}9949else9950{9951GenerateContextLostErrorOnCurrentGlobalContext();9952}9953}99549955void GL_APIENTRY GL_SamplerParameterIivOES(GLuint sampler, GLenum pname, const GLint *param)9956{9957Context *context = GetValidGlobalContext();9958EVENT(context, GLSamplerParameterIivOES,9959"context = %d, sampler = %u, pname = %s, param = 0x%016" PRIxPTR "", CID(context),9960sampler, GLenumToString(GLenumGroup::SamplerParameterName, pname), (uintptr_t)param);99619962if (context)9963{9964SamplerID samplerPacked = PackParam<SamplerID>(sampler);9965std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);9966bool isCallValid = (context->skipValidation() ||9967ValidateSamplerParameterIivOES(context, samplerPacked, pname, param));9968if (isCallValid)9969{9970context->samplerParameterIiv(samplerPacked, pname, param);9971}9972ANGLE_CAPTURE(SamplerParameterIivOES, isCallValid, context, samplerPacked, pname, param);9973}9974else9975{9976GenerateContextLostErrorOnCurrentGlobalContext();9977}9978}99799980void GL_APIENTRY GL_SamplerParameterIuivOES(GLuint sampler, GLenum pname, const GLuint *param)9981{9982Context *context = GetValidGlobalContext();9983EVENT(context, GLSamplerParameterIuivOES,9984"context = %d, sampler = %u, pname = %s, param = 0x%016" PRIxPTR "", CID(context),9985sampler, GLenumToString(GLenumGroup::SamplerParameterName, pname), (uintptr_t)param);99869987if (context)9988{9989SamplerID samplerPacked = PackParam<SamplerID>(sampler);9990std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);9991bool isCallValid = (context->skipValidation() ||9992ValidateSamplerParameterIuivOES(context, samplerPacked, pname, param));9993if (isCallValid)9994{9995context->samplerParameterIuiv(samplerPacked, pname, param);9996}9997ANGLE_CAPTURE(SamplerParameterIuivOES, isCallValid, context, samplerPacked, pname, param);9998}9999else10000{10001GenerateContextLostErrorOnCurrentGlobalContext();10002}10003}1000410005void GL_APIENTRY GL_TexParameterIivOES(GLenum target, GLenum pname, const GLint *params)10006{10007Context *context = GetValidGlobalContext();10008EVENT(context, GLTexParameterIivOES,10009"context = %d, target = %s, pname = %s, params = 0x%016" PRIxPTR "", CID(context),10010GLenumToString(GLenumGroup::TextureTarget, target),10011GLenumToString(GLenumGroup::TextureParameterName, pname), (uintptr_t)params);1001210013if (context)10014{10015TextureType targetPacked = PackParam<TextureType>(target);10016std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);10017bool isCallValid = (context->skipValidation() ||10018ValidateTexParameterIivOES(context, targetPacked, pname, params));10019if (isCallValid)10020{10021context->texParameterIiv(targetPacked, pname, params);10022}10023ANGLE_CAPTURE(TexParameterIivOES, isCallValid, context, targetPacked, pname, params);10024}10025else10026{10027GenerateContextLostErrorOnCurrentGlobalContext();10028}10029}1003010031void GL_APIENTRY GL_TexParameterIuivOES(GLenum target, GLenum pname, const GLuint *params)10032{10033Context *context = GetValidGlobalContext();10034EVENT(context, GLTexParameterIuivOES,10035"context = %d, target = %s, pname = %s, params = 0x%016" PRIxPTR "", CID(context),10036GLenumToString(GLenumGroup::TextureTarget, target),10037GLenumToString(GLenumGroup::TextureParameterName, pname), (uintptr_t)params);1003810039if (context)10040{10041TextureType targetPacked = PackParam<TextureType>(target);10042std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);10043bool isCallValid = (context->skipValidation() ||10044ValidateTexParameterIuivOES(context, targetPacked, pname, params));10045if (isCallValid)10046{10047context->texParameterIuiv(targetPacked, pname, params);10048}10049ANGLE_CAPTURE(TexParameterIuivOES, isCallValid, context, targetPacked, pname, params);10050}10051else10052{10053GenerateContextLostErrorOnCurrentGlobalContext();10054}10055}1005610057// GL_OES_texture_buffer10058void GL_APIENTRY GL_TexBufferOES(GLenum target, GLenum internalformat, GLuint buffer)10059{10060Context *context = GetValidGlobalContext();10061EVENT(context, GLTexBufferOES, "context = %d, target = %s, internalformat = %s, buffer = %u",10062CID(context), GLenumToString(GLenumGroup::TextureTarget, target),10063GLenumToString(GLenumGroup::InternalFormat, internalformat), buffer);1006410065if (context)10066{10067TextureType targetPacked = PackParam<TextureType>(target);10068BufferID bufferPacked = PackParam<BufferID>(buffer);10069std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);10070bool isCallValid =10071(context->skipValidation() ||10072ValidateTexBufferOES(context, targetPacked, internalformat, bufferPacked));10073if (isCallValid)10074{10075context->texBuffer(targetPacked, internalformat, bufferPacked);10076}10077ANGLE_CAPTURE(TexBufferOES, isCallValid, context, targetPacked, internalformat,10078bufferPacked);10079}10080else10081{10082GenerateContextLostErrorOnCurrentGlobalContext();10083}10084}1008510086void GL_APIENTRY GL_TexBufferRangeOES(GLenum target,10087GLenum internalformat,10088GLuint buffer,10089GLintptr offset,10090GLsizeiptr size)10091{10092Context *context = GetValidGlobalContext();10093EVENT(context, GLTexBufferRangeOES,10094"context = %d, target = %s, internalformat = %s, buffer = %u, offset = %llu, size = %llu",10095CID(context), GLenumToString(GLenumGroup::TextureTarget, target),10096GLenumToString(GLenumGroup::InternalFormat, internalformat), buffer,10097static_cast<unsigned long long>(offset), static_cast<unsigned long long>(size));1009810099if (context)10100{10101TextureType targetPacked = PackParam<TextureType>(target);10102BufferID bufferPacked = PackParam<BufferID>(buffer);10103std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);10104bool isCallValid = (context->skipValidation() ||10105ValidateTexBufferRangeOES(context, targetPacked, internalformat,10106bufferPacked, offset, size));10107if (isCallValid)10108{10109context->texBufferRange(targetPacked, internalformat, bufferPacked, offset, size);10110}10111ANGLE_CAPTURE(TexBufferRangeOES, isCallValid, context, targetPacked, internalformat,10112bufferPacked, offset, size);10113}10114else10115{10116GenerateContextLostErrorOnCurrentGlobalContext();10117}10118}1011910120// GL_OES_texture_cube_map10121void GL_APIENTRY GL_GetTexGenfvOES(GLenum coord, GLenum pname, GLfloat *params)10122{10123Context *context = GetValidGlobalContext();10124EVENT(context, GLGetTexGenfvOES,10125"context = %d, coord = %s, pname = %s, params = 0x%016" PRIxPTR "", CID(context),10126GLenumToString(GLenumGroup::TextureCoordName, coord),10127GLenumToString(GLenumGroup::TextureGenParameter, pname), (uintptr_t)params);1012810129if (context)10130{10131std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);10132bool isCallValid =10133(context->skipValidation() || ValidateGetTexGenfvOES(context, coord, pname, params));10134if (isCallValid)10135{10136context->getTexGenfv(coord, pname, params);10137}10138ANGLE_CAPTURE(GetTexGenfvOES, isCallValid, context, coord, pname, params);10139}10140else10141{10142GenerateContextLostErrorOnCurrentGlobalContext();10143}10144}1014510146void GL_APIENTRY GL_GetTexGenivOES(GLenum coord, GLenum pname, GLint *params)10147{10148Context *context = GetValidGlobalContext();10149EVENT(context, GLGetTexGenivOES,10150"context = %d, coord = %s, pname = %s, params = 0x%016" PRIxPTR "", CID(context),10151GLenumToString(GLenumGroup::TextureCoordName, coord),10152GLenumToString(GLenumGroup::TextureGenParameter, pname), (uintptr_t)params);1015310154if (context)10155{10156std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);10157bool isCallValid =10158(context->skipValidation() || ValidateGetTexGenivOES(context, coord, pname, params));10159if (isCallValid)10160{10161context->getTexGeniv(coord, pname, params);10162}10163ANGLE_CAPTURE(GetTexGenivOES, isCallValid, context, coord, pname, params);10164}10165else10166{10167GenerateContextLostErrorOnCurrentGlobalContext();10168}10169}1017010171void GL_APIENTRY GL_GetTexGenxvOES(GLenum coord, GLenum pname, GLfixed *params)10172{10173Context *context = GetValidGlobalContext();10174EVENT(context, GLGetTexGenxvOES,10175"context = %d, coord = %s, pname = %s, params = 0x%016" PRIxPTR "", CID(context),10176GLenumToString(GLenumGroup::TextureCoordName, coord),10177GLenumToString(GLenumGroup::TextureGenParameter, pname), (uintptr_t)params);1017810179if (context)10180{10181std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);10182bool isCallValid =10183(context->skipValidation() || ValidateGetTexGenxvOES(context, coord, pname, params));10184if (isCallValid)10185{10186context->getTexGenxv(coord, pname, params);10187}10188ANGLE_CAPTURE(GetTexGenxvOES, isCallValid, context, coord, pname, params);10189}10190else10191{10192GenerateContextLostErrorOnCurrentGlobalContext();10193}10194}1019510196void GL_APIENTRY GL_TexGenfOES(GLenum coord, GLenum pname, GLfloat param)10197{10198Context *context = GetValidGlobalContext();10199EVENT(context, GLTexGenfOES, "context = %d, coord = %s, pname = %s, param = %f", CID(context),10200GLenumToString(GLenumGroup::TextureCoordName, coord),10201GLenumToString(GLenumGroup::TextureGenParameter, pname), param);1020210203if (context)10204{10205std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);10206bool isCallValid =10207(context->skipValidation() || ValidateTexGenfOES(context, coord, pname, param));10208if (isCallValid)10209{10210context->texGenf(coord, pname, param);10211}10212ANGLE_CAPTURE(TexGenfOES, isCallValid, context, coord, pname, param);10213}10214else10215{10216GenerateContextLostErrorOnCurrentGlobalContext();10217}10218}1021910220void GL_APIENTRY GL_TexGenfvOES(GLenum coord, GLenum pname, const GLfloat *params)10221{10222Context *context = GetValidGlobalContext();10223EVENT(context, GLTexGenfvOES,10224"context = %d, coord = %s, pname = %s, params = 0x%016" PRIxPTR "", CID(context),10225GLenumToString(GLenumGroup::TextureCoordName, coord),10226GLenumToString(GLenumGroup::TextureGenParameter, pname), (uintptr_t)params);1022710228if (context)10229{10230std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);10231bool isCallValid =10232(context->skipValidation() || ValidateTexGenfvOES(context, coord, pname, params));10233if (isCallValid)10234{10235context->texGenfv(coord, pname, params);10236}10237ANGLE_CAPTURE(TexGenfvOES, isCallValid, context, coord, pname, params);10238}10239else10240{10241GenerateContextLostErrorOnCurrentGlobalContext();10242}10243}1024410245void GL_APIENTRY GL_TexGeniOES(GLenum coord, GLenum pname, GLint param)10246{10247Context *context = GetValidGlobalContext();10248EVENT(context, GLTexGeniOES, "context = %d, coord = %s, pname = %s, param = %d", CID(context),10249GLenumToString(GLenumGroup::TextureCoordName, coord),10250GLenumToString(GLenumGroup::TextureGenParameter, pname), param);1025110252if (context)10253{10254std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);10255bool isCallValid =10256(context->skipValidation() || ValidateTexGeniOES(context, coord, pname, param));10257if (isCallValid)10258{10259context->texGeni(coord, pname, param);10260}10261ANGLE_CAPTURE(TexGeniOES, isCallValid, context, coord, pname, param);10262}10263else10264{10265GenerateContextLostErrorOnCurrentGlobalContext();10266}10267}1026810269void GL_APIENTRY GL_TexGenivOES(GLenum coord, GLenum pname, const GLint *params)10270{10271Context *context = GetValidGlobalContext();10272EVENT(context, GLTexGenivOES,10273"context = %d, coord = %s, pname = %s, params = 0x%016" PRIxPTR "", CID(context),10274GLenumToString(GLenumGroup::TextureCoordName, coord),10275GLenumToString(GLenumGroup::TextureGenParameter, pname), (uintptr_t)params);1027610277if (context)10278{10279std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);10280bool isCallValid =10281(context->skipValidation() || ValidateTexGenivOES(context, coord, pname, params));10282if (isCallValid)10283{10284context->texGeniv(coord, pname, params);10285}10286ANGLE_CAPTURE(TexGenivOES, isCallValid, context, coord, pname, params);10287}10288else10289{10290GenerateContextLostErrorOnCurrentGlobalContext();10291}10292}1029310294void GL_APIENTRY GL_TexGenxOES(GLenum coord, GLenum pname, GLfixed param)10295{10296Context *context = GetValidGlobalContext();10297EVENT(context, GLTexGenxOES, "context = %d, coord = %s, pname = %s, param = 0x%X", CID(context),10298GLenumToString(GLenumGroup::TextureCoordName, coord),10299GLenumToString(GLenumGroup::TextureGenParameter, pname), param);1030010301if (context)10302{10303std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);10304bool isCallValid =10305(context->skipValidation() || ValidateTexGenxOES(context, coord, pname, param));10306if (isCallValid)10307{10308context->texGenx(coord, pname, param);10309}10310ANGLE_CAPTURE(TexGenxOES, isCallValid, context, coord, pname, param);10311}10312else10313{10314GenerateContextLostErrorOnCurrentGlobalContext();10315}10316}1031710318void GL_APIENTRY GL_TexGenxvOES(GLenum coord, GLenum pname, const GLfixed *params)10319{10320Context *context = GetValidGlobalContext();10321EVENT(context, GLTexGenxvOES,10322"context = %d, coord = %s, pname = %s, params = 0x%016" PRIxPTR "", CID(context),10323GLenumToString(GLenumGroup::TextureCoordName, coord),10324GLenumToString(GLenumGroup::TextureGenParameter, pname), (uintptr_t)params);1032510326if (context)10327{10328std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);10329bool isCallValid =10330(context->skipValidation() || ValidateTexGenxvOES(context, coord, pname, params));10331if (isCallValid)10332{10333context->texGenxv(coord, pname, params);10334}10335ANGLE_CAPTURE(TexGenxvOES, isCallValid, context, coord, pname, params);10336}10337else10338{10339GenerateContextLostErrorOnCurrentGlobalContext();10340}10341}1034210343// GL_OES_texture_cube_map_array1034410345// GL_OES_texture_half_float1034610347// GL_OES_texture_stencil81034810349// GL_OES_texture_storage_multisample_2d_array10350void GL_APIENTRY GL_TexStorage3DMultisampleOES(GLenum target,10351GLsizei samples,10352GLenum internalformat,10353GLsizei width,10354GLsizei height,10355GLsizei depth,10356GLboolean fixedsamplelocations)10357{10358Context *context = GetValidGlobalContext();10359EVENT(context, GLTexStorage3DMultisampleOES,10360"context = %d, target = %s, samples = %d, internalformat = %s, width = %d, height = %d, "10361"depth = %d, fixedsamplelocations = %s",10362CID(context), GLenumToString(GLenumGroup::TextureTarget, target), samples,10363GLenumToString(GLenumGroup::InternalFormat, internalformat), width, height, depth,10364GLbooleanToString(fixedsamplelocations));1036510366if (context)10367{10368TextureType targetPacked = PackParam<TextureType>(target);10369std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);10370bool isCallValid =10371(context->skipValidation() ||10372ValidateTexStorage3DMultisampleOES(context, targetPacked, samples, internalformat,10373width, height, depth, fixedsamplelocations));10374if (isCallValid)10375{10376context->texStorage3DMultisample(targetPacked, samples, internalformat, width, height,10377depth, fixedsamplelocations);10378}10379ANGLE_CAPTURE(TexStorage3DMultisampleOES, isCallValid, context, targetPacked, samples,10380internalformat, width, height, depth, fixedsamplelocations);10381}10382else10383{10384GenerateContextLostErrorOnCurrentGlobalContext();10385}10386}1038710388// GL_OES_vertex_array_object10389void GL_APIENTRY GL_BindVertexArrayOES(GLuint array)10390{10391Context *context = GetValidGlobalContext();10392EVENT(context, GLBindVertexArrayOES, "context = %d, array = %u", CID(context), array);1039310394if (context)10395{10396VertexArrayID arrayPacked = PackParam<VertexArrayID>(array);10397std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);10398bool isCallValid =10399(context->skipValidation() || ValidateBindVertexArrayOES(context, arrayPacked));10400if (isCallValid)10401{10402context->bindVertexArray(arrayPacked);10403}10404ANGLE_CAPTURE(BindVertexArrayOES, isCallValid, context, arrayPacked);10405}10406else10407{10408GenerateContextLostErrorOnCurrentGlobalContext();10409}10410}1041110412void GL_APIENTRY GL_DeleteVertexArraysOES(GLsizei n, const GLuint *arrays)10413{10414Context *context = GetValidGlobalContext();10415EVENT(context, GLDeleteVertexArraysOES, "context = %d, n = %d, arrays = 0x%016" PRIxPTR "",10416CID(context), n, (uintptr_t)arrays);1041710418if (context)10419{10420const VertexArrayID *arraysPacked = PackParam<const VertexArrayID *>(arrays);10421std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);10422bool isCallValid =10423(context->skipValidation() || ValidateDeleteVertexArraysOES(context, n, arraysPacked));10424if (isCallValid)10425{10426context->deleteVertexArrays(n, arraysPacked);10427}10428ANGLE_CAPTURE(DeleteVertexArraysOES, isCallValid, context, n, arraysPacked);10429}10430else10431{10432GenerateContextLostErrorOnCurrentGlobalContext();10433}10434}1043510436void GL_APIENTRY GL_GenVertexArraysOES(GLsizei n, GLuint *arrays)10437{10438Context *context = GetValidGlobalContext();10439EVENT(context, GLGenVertexArraysOES, "context = %d, n = %d, arrays = 0x%016" PRIxPTR "",10440CID(context), n, (uintptr_t)arrays);1044110442if (context)10443{10444VertexArrayID *arraysPacked = PackParam<VertexArrayID *>(arrays);10445std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);10446bool isCallValid =10447(context->skipValidation() || ValidateGenVertexArraysOES(context, n, arraysPacked));10448if (isCallValid)10449{10450context->genVertexArrays(n, arraysPacked);10451}10452ANGLE_CAPTURE(GenVertexArraysOES, isCallValid, context, n, arraysPacked);10453}10454else10455{10456GenerateContextLostErrorOnCurrentGlobalContext();10457}10458}1045910460GLboolean GL_APIENTRY GL_IsVertexArrayOES(GLuint array)10461{10462Context *context = GetValidGlobalContext();10463EVENT(context, GLIsVertexArrayOES, "context = %d, array = %u", CID(context), array);1046410465GLboolean returnValue;10466if (context)10467{10468VertexArrayID arrayPacked = PackParam<VertexArrayID>(array);10469std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);10470bool isCallValid =10471(context->skipValidation() || ValidateIsVertexArrayOES(context, arrayPacked));10472if (isCallValid)10473{10474returnValue = context->isVertexArray(arrayPacked);10475}10476else10477{10478returnValue = GetDefaultReturnValue<angle::EntryPoint::GLIsVertexArrayOES, GLboolean>();10479}10480ANGLE_CAPTURE(IsVertexArrayOES, isCallValid, context, arrayPacked, returnValue);10481}10482else10483{10484GenerateContextLostErrorOnCurrentGlobalContext();10485returnValue = GetDefaultReturnValue<angle::EntryPoint::GLIsVertexArrayOES, GLboolean>();10486}10487return returnValue;10488}1048910490// GL_OVR_multiview10491void GL_APIENTRY GL_FramebufferTextureMultiviewOVR(GLenum target,10492GLenum attachment,10493GLuint texture,10494GLint level,10495GLint baseViewIndex,10496GLsizei numViews)10497{10498Context *context = GetValidGlobalContext();10499EVENT(context, GLFramebufferTextureMultiviewOVR,10500"context = %d, target = %s, attachment = %s, texture = %u, level = %d, baseViewIndex = "10501"%d, numViews = %d",10502CID(context), GLenumToString(GLenumGroup::FramebufferTarget, target),10503GLenumToString(GLenumGroup::FramebufferAttachment, attachment), texture, level,10504baseViewIndex, numViews);1050510506if (context)10507{10508TextureID texturePacked = PackParam<TextureID>(texture);10509std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);10510bool isCallValid =10511(context->skipValidation() ||10512ValidateFramebufferTextureMultiviewOVR(context, target, attachment, texturePacked,10513level, baseViewIndex, numViews));10514if (isCallValid)10515{10516context->framebufferTextureMultiview(target, attachment, texturePacked, level,10517baseViewIndex, numViews);10518}10519ANGLE_CAPTURE(FramebufferTextureMultiviewOVR, isCallValid, context, target, attachment,10520texturePacked, level, baseViewIndex, numViews);10521}10522else10523{10524GenerateContextLostErrorOnCurrentGlobalContext();10525}10526}1052710528// GL_OVR_multiview210529} // extern "C"105301053110532