1 // GENERATED FILE - DO NOT EDIT.
2 // Generated by generate_entry_points.py using data from gl.xml and gl_angle_ext.xml.
3 //
4 // Copyright 2020 The ANGLE Project Authors. All rights reserved.
5 // Use of this source code is governed by a BSD-style license that can be
6 // found in the LICENSE file.
7 //
8 // entry_points_gles_ext_autogen.cpp:
9 // Defines the GLES extension entry points.
10
11 #include "libGLESv2/entry_points_gles_ext_autogen.h"
12
13 #include "common/entry_points_enum_autogen.h"
14 #include "libANGLE/Context.h"
15 #include "libANGLE/Context.inl.h"
16 #include "libANGLE/capture/capture_gles_ext_autogen.h"
17 #include "libANGLE/capture/gl_enum_utils.h"
18 #include "libANGLE/entry_points_utils.h"
19 #include "libANGLE/validationESEXT.h"
20 #include "libGLESv2/global_state.h"
21
22 using namespace gl;
23
24 #include "libANGLE/capture/capture_gles_1_0_autogen.h"
25 #include "libANGLE/capture/capture_gles_2_0_autogen.h"
26 #include "libANGLE/capture/capture_gles_3_0_autogen.h"
27 #include "libANGLE/capture/capture_gles_3_1_autogen.h"
28 #include "libANGLE/capture/capture_gles_3_2_autogen.h"
29 #include "libANGLE/validationES1.h"
30 #include "libANGLE/validationES2.h"
31 #include "libANGLE/validationES3.h"
32 #include "libANGLE/validationES31.h"
33 #include "libANGLE/validationES32.h"
34
35 using namespace gl;
36
37 extern "C" {
38
39 // GL_ANGLE_base_vertex_base_instance
GL_DrawArraysInstancedBaseInstanceANGLE(GLenum mode,GLint first,GLsizei count,GLsizei instanceCount,GLuint baseInstance)40 void GL_APIENTRY GL_DrawArraysInstancedBaseInstanceANGLE(GLenum mode,
41 GLint first,
42 GLsizei count,
43 GLsizei instanceCount,
44 GLuint baseInstance)
45 {
46 Context *context = GetValidGlobalContext();
47 EVENT(context, GLDrawArraysInstancedBaseInstanceANGLE,
48 "context = %d, mode = %s, first = %d, count = %d, instanceCount = %d, baseInstance = %u",
49 CID(context), GLenumToString(GLenumGroup::PrimitiveType, mode), first, count,
50 instanceCount, baseInstance);
51
52 if (context)
53 {
54 PrimitiveMode modePacked = PackParam<PrimitiveMode>(mode);
55 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
56 bool isCallValid = (context->skipValidation() ||
57 ValidateDrawArraysInstancedBaseInstanceANGLE(
58 context, angle::EntryPoint::GLDrawArraysInstancedBaseInstanceANGLE,
59 modePacked, first, count, instanceCount, baseInstance));
60 if (isCallValid)
61 {
62 context->drawArraysInstancedBaseInstance(modePacked, first, count, instanceCount,
63 baseInstance);
64 }
65 ANGLE_CAPTURE(DrawArraysInstancedBaseInstanceANGLE, isCallValid, context, modePacked, first,
66 count, instanceCount, baseInstance);
67 }
68 else
69 {
70 GenerateContextLostErrorOnCurrentGlobalContext();
71 }
72 }
73
GL_DrawElementsInstancedBaseVertexBaseInstanceANGLE(GLenum mode,GLsizei count,GLenum type,const GLvoid * indices,GLsizei instanceCounts,GLint baseVertex,GLuint baseInstance)74 void GL_APIENTRY GL_DrawElementsInstancedBaseVertexBaseInstanceANGLE(GLenum mode,
75 GLsizei count,
76 GLenum type,
77 const GLvoid *indices,
78 GLsizei instanceCounts,
79 GLint baseVertex,
80 GLuint baseInstance)
81 {
82 Context *context = GetValidGlobalContext();
83 EVENT(context, GLDrawElementsInstancedBaseVertexBaseInstanceANGLE,
84 "context = %d, mode = %s, count = %d, type = %s, indices = 0x%016" PRIxPTR
85 ", instanceCounts = %d, baseVertex = %d, baseInstance = %u",
86 CID(context), GLenumToString(GLenumGroup::PrimitiveType, mode), count,
87 GLenumToString(GLenumGroup::DrawElementsType, type), (uintptr_t)indices, instanceCounts,
88 baseVertex, baseInstance);
89
90 if (context)
91 {
92 PrimitiveMode modePacked = PackParam<PrimitiveMode>(mode);
93 DrawElementsType typePacked = PackParam<DrawElementsType>(type);
94 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
95 bool isCallValid =
96 (context->skipValidation() ||
97 ValidateDrawElementsInstancedBaseVertexBaseInstanceANGLE(
98 context, angle::EntryPoint::GLDrawElementsInstancedBaseVertexBaseInstanceANGLE,
99 modePacked, count, typePacked, indices, instanceCounts, baseVertex, baseInstance));
100 if (isCallValid)
101 {
102 context->drawElementsInstancedBaseVertexBaseInstance(
103 modePacked, count, typePacked, indices, instanceCounts, baseVertex, baseInstance);
104 }
105 ANGLE_CAPTURE(DrawElementsInstancedBaseVertexBaseInstanceANGLE, isCallValid, context,
106 modePacked, count, typePacked, indices, instanceCounts, baseVertex,
107 baseInstance);
108 }
109 else
110 {
111 GenerateContextLostErrorOnCurrentGlobalContext();
112 }
113 }
114
GL_MultiDrawArraysInstancedBaseInstanceANGLE(GLenum mode,const GLint * firsts,const GLsizei * counts,const GLsizei * instanceCounts,const GLuint * baseInstances,GLsizei drawcount)115 void GL_APIENTRY GL_MultiDrawArraysInstancedBaseInstanceANGLE(GLenum mode,
116 const GLint *firsts,
117 const GLsizei *counts,
118 const GLsizei *instanceCounts,
119 const GLuint *baseInstances,
120 GLsizei drawcount)
121 {
122 Context *context = GetValidGlobalContext();
123 EVENT(context, GLMultiDrawArraysInstancedBaseInstanceANGLE,
124 "context = %d, mode = %s, firsts = 0x%016" PRIxPTR ", counts = 0x%016" PRIxPTR
125 ", instanceCounts = 0x%016" PRIxPTR ", baseInstances = 0x%016" PRIxPTR ", drawcount = %d",
126 CID(context), GLenumToString(GLenumGroup::PrimitiveType, mode), (uintptr_t)firsts,
127 (uintptr_t)counts, (uintptr_t)instanceCounts, (uintptr_t)baseInstances, drawcount);
128
129 if (context)
130 {
131 PrimitiveMode modePacked = PackParam<PrimitiveMode>(mode);
132 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
133 bool isCallValid =
134 (context->skipValidation() ||
135 ValidateMultiDrawArraysInstancedBaseInstanceANGLE(
136 context, angle::EntryPoint::GLMultiDrawArraysInstancedBaseInstanceANGLE,
137 modePacked, firsts, counts, instanceCounts, baseInstances, drawcount));
138 if (isCallValid)
139 {
140 context->multiDrawArraysInstancedBaseInstance(modePacked, firsts, counts,
141 instanceCounts, baseInstances, drawcount);
142 }
143 ANGLE_CAPTURE(MultiDrawArraysInstancedBaseInstanceANGLE, isCallValid, context, modePacked,
144 firsts, counts, instanceCounts, baseInstances, drawcount);
145 }
146 else
147 {
148 GenerateContextLostErrorOnCurrentGlobalContext();
149 }
150 }
151
152 void GL_APIENTRY
GL_MultiDrawElementsInstancedBaseVertexBaseInstanceANGLE(GLenum mode,const GLsizei * counts,GLenum type,const GLvoid * const * indices,const GLsizei * instanceCounts,const GLint * baseVertices,const GLuint * baseInstances,GLsizei drawcount)153 GL_MultiDrawElementsInstancedBaseVertexBaseInstanceANGLE(GLenum mode,
154 const GLsizei *counts,
155 GLenum type,
156 const GLvoid *const *indices,
157 const GLsizei *instanceCounts,
158 const GLint *baseVertices,
159 const GLuint *baseInstances,
160 GLsizei drawcount)
161 {
162 Context *context = GetValidGlobalContext();
163 EVENT(context, GLMultiDrawElementsInstancedBaseVertexBaseInstanceANGLE,
164 "context = %d, mode = %s, counts = 0x%016" PRIxPTR ", type = %s, indices = 0x%016" PRIxPTR
165 ", instanceCounts = 0x%016" PRIxPTR ", baseVertices = 0x%016" PRIxPTR
166 ", baseInstances = 0x%016" PRIxPTR ", drawcount = %d",
167 CID(context), GLenumToString(GLenumGroup::PrimitiveType, mode), (uintptr_t)counts,
168 GLenumToString(GLenumGroup::DrawElementsType, type), (uintptr_t)indices,
169 (uintptr_t)instanceCounts, (uintptr_t)baseVertices, (uintptr_t)baseInstances, drawcount);
170
171 if (context)
172 {
173 PrimitiveMode modePacked = PackParam<PrimitiveMode>(mode);
174 DrawElementsType typePacked = PackParam<DrawElementsType>(type);
175 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
176 bool isCallValid =
177 (context->skipValidation() ||
178 ValidateMultiDrawElementsInstancedBaseVertexBaseInstanceANGLE(
179 context,
180 angle::EntryPoint::GLMultiDrawElementsInstancedBaseVertexBaseInstanceANGLE,
181 modePacked, counts, typePacked, indices, instanceCounts, baseVertices,
182 baseInstances, drawcount));
183 if (isCallValid)
184 {
185 context->multiDrawElementsInstancedBaseVertexBaseInstance(
186 modePacked, counts, typePacked, indices, instanceCounts, baseVertices,
187 baseInstances, drawcount);
188 }
189 ANGLE_CAPTURE(MultiDrawElementsInstancedBaseVertexBaseInstanceANGLE, isCallValid, context,
190 modePacked, counts, typePacked, indices, instanceCounts, baseVertices,
191 baseInstances, drawcount);
192 }
193 else
194 {
195 GenerateContextLostErrorOnCurrentGlobalContext();
196 }
197 }
198
199 // GL_ANGLE_copy_texture_3d
GL_CopyTexture3DANGLE(GLuint sourceId,GLint sourceLevel,GLenum destTarget,GLuint destId,GLint destLevel,GLint internalFormat,GLenum destType,GLboolean unpackFlipY,GLboolean unpackPremultiplyAlpha,GLboolean unpackUnmultiplyAlpha)200 void GL_APIENTRY GL_CopyTexture3DANGLE(GLuint sourceId,
201 GLint sourceLevel,
202 GLenum destTarget,
203 GLuint destId,
204 GLint destLevel,
205 GLint internalFormat,
206 GLenum destType,
207 GLboolean unpackFlipY,
208 GLboolean unpackPremultiplyAlpha,
209 GLboolean unpackUnmultiplyAlpha)
210 {
211 Context *context = GetValidGlobalContext();
212 EVENT(context, GLCopyTexture3DANGLE,
213 "context = %d, sourceId = %u, sourceLevel = %d, destTarget = %s, destId = %u, destLevel "
214 "= %d, internalFormat = %d, destType = %s, unpackFlipY = %s, unpackPremultiplyAlpha = "
215 "%s, unpackUnmultiplyAlpha = %s",
216 CID(context), sourceId, sourceLevel,
217 GLenumToString(GLenumGroup::DefaultGroup, destTarget), destId, destLevel, internalFormat,
218 GLenumToString(GLenumGroup::DefaultGroup, destType), GLbooleanToString(unpackFlipY),
219 GLbooleanToString(unpackPremultiplyAlpha), GLbooleanToString(unpackUnmultiplyAlpha));
220
221 if (context)
222 {
223 TextureID sourceIdPacked = PackParam<TextureID>(sourceId);
224 TextureTarget destTargetPacked = PackParam<TextureTarget>(destTarget);
225 TextureID destIdPacked = PackParam<TextureID>(destId);
226 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
227 bool isCallValid =
228 (context->skipValidation() ||
229 ValidateCopyTexture3DANGLE(context, angle::EntryPoint::GLCopyTexture3DANGLE,
230 sourceIdPacked, sourceLevel, destTargetPacked, destIdPacked,
231 destLevel, internalFormat, destType, unpackFlipY,
232 unpackPremultiplyAlpha, unpackUnmultiplyAlpha));
233 if (isCallValid)
234 {
235 context->copyTexture3D(sourceIdPacked, sourceLevel, destTargetPacked, destIdPacked,
236 destLevel, internalFormat, destType, unpackFlipY,
237 unpackPremultiplyAlpha, unpackUnmultiplyAlpha);
238 }
239 ANGLE_CAPTURE(CopyTexture3DANGLE, isCallValid, context, sourceIdPacked, sourceLevel,
240 destTargetPacked, destIdPacked, destLevel, internalFormat, destType,
241 unpackFlipY, unpackPremultiplyAlpha, unpackUnmultiplyAlpha);
242 }
243 else
244 {
245 GenerateContextLostErrorOnCurrentGlobalContext();
246 }
247 }
248
GL_CopySubTexture3DANGLE(GLuint sourceId,GLint sourceLevel,GLenum destTarget,GLuint destId,GLint destLevel,GLint xoffset,GLint yoffset,GLint zoffset,GLint x,GLint y,GLint z,GLint width,GLint height,GLint depth,GLboolean unpackFlipY,GLboolean unpackPremultiplyAlpha,GLboolean unpackUnmultiplyAlpha)249 void GL_APIENTRY GL_CopySubTexture3DANGLE(GLuint sourceId,
250 GLint sourceLevel,
251 GLenum destTarget,
252 GLuint destId,
253 GLint destLevel,
254 GLint xoffset,
255 GLint yoffset,
256 GLint zoffset,
257 GLint x,
258 GLint y,
259 GLint z,
260 GLint width,
261 GLint height,
262 GLint depth,
263 GLboolean unpackFlipY,
264 GLboolean unpackPremultiplyAlpha,
265 GLboolean unpackUnmultiplyAlpha)
266 {
267 Context *context = GetValidGlobalContext();
268 EVENT(context, GLCopySubTexture3DANGLE,
269 "context = %d, sourceId = %u, sourceLevel = %d, destTarget = %s, destId = %u, destLevel "
270 "= %d, xoffset = %d, yoffset = %d, zoffset = %d, x = %d, y = %d, z = %d, width = %d, "
271 "height = %d, depth = %d, unpackFlipY = %s, unpackPremultiplyAlpha = %s, "
272 "unpackUnmultiplyAlpha = %s",
273 CID(context), sourceId, sourceLevel,
274 GLenumToString(GLenumGroup::DefaultGroup, destTarget), destId, destLevel, xoffset,
275 yoffset, zoffset, x, y, z, width, height, depth, GLbooleanToString(unpackFlipY),
276 GLbooleanToString(unpackPremultiplyAlpha), GLbooleanToString(unpackUnmultiplyAlpha));
277
278 if (context)
279 {
280 TextureID sourceIdPacked = PackParam<TextureID>(sourceId);
281 TextureTarget destTargetPacked = PackParam<TextureTarget>(destTarget);
282 TextureID destIdPacked = PackParam<TextureID>(destId);
283 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
284 bool isCallValid =
285 (context->skipValidation() ||
286 ValidateCopySubTexture3DANGLE(
287 context, angle::EntryPoint::GLCopySubTexture3DANGLE, sourceIdPacked, sourceLevel,
288 destTargetPacked, destIdPacked, destLevel, xoffset, yoffset, zoffset, x, y, z,
289 width, height, depth, unpackFlipY, unpackPremultiplyAlpha, unpackUnmultiplyAlpha));
290 if (isCallValid)
291 {
292 context->copySubTexture3D(sourceIdPacked, sourceLevel, destTargetPacked, destIdPacked,
293 destLevel, xoffset, yoffset, zoffset, x, y, z, width, height,
294 depth, unpackFlipY, unpackPremultiplyAlpha,
295 unpackUnmultiplyAlpha);
296 }
297 ANGLE_CAPTURE(CopySubTexture3DANGLE, isCallValid, context, sourceIdPacked, sourceLevel,
298 destTargetPacked, destIdPacked, destLevel, xoffset, yoffset, zoffset, x, y, z,
299 width, height, depth, unpackFlipY, unpackPremultiplyAlpha,
300 unpackUnmultiplyAlpha);
301 }
302 else
303 {
304 GenerateContextLostErrorOnCurrentGlobalContext();
305 }
306 }
307
308 // GL_ANGLE_depth_texture
309
310 // GL_ANGLE_framebuffer_blit
GL_BlitFramebufferANGLE(GLint srcX0,GLint srcY0,GLint srcX1,GLint srcY1,GLint dstX0,GLint dstY0,GLint dstX1,GLint dstY1,GLbitfield mask,GLenum filter)311 void GL_APIENTRY GL_BlitFramebufferANGLE(GLint srcX0,
312 GLint srcY0,
313 GLint srcX1,
314 GLint srcY1,
315 GLint dstX0,
316 GLint dstY0,
317 GLint dstX1,
318 GLint dstY1,
319 GLbitfield mask,
320 GLenum filter)
321 {
322 Context *context = GetValidGlobalContext();
323 EVENT(context, GLBlitFramebufferANGLE,
324 "context = %d, srcX0 = %d, srcY0 = %d, srcX1 = %d, srcY1 = %d, dstX0 = %d, dstY0 = %d, "
325 "dstX1 = %d, dstY1 = %d, mask = %s, filter = %s",
326 CID(context), srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1,
327 GLbitfieldToString(GLenumGroup::ClearBufferMask, mask).c_str(),
328 GLenumToString(GLenumGroup::BlitFramebufferFilter, filter));
329
330 if (context)
331 {
332 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
333 bool isCallValid = (context->skipValidation() ||
334 ValidateBlitFramebufferANGLE(
335 context, angle::EntryPoint::GLBlitFramebufferANGLE, srcX0, srcY0,
336 srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask, filter));
337 if (isCallValid)
338 {
339 context->blitFramebuffer(srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask,
340 filter);
341 }
342 ANGLE_CAPTURE(BlitFramebufferANGLE, isCallValid, context, srcX0, srcY0, srcX1, srcY1, dstX0,
343 dstY0, dstX1, dstY1, mask, filter);
344 }
345 else
346 {
347 GenerateContextLostErrorOnCurrentGlobalContext();
348 }
349 }
350
351 // GL_ANGLE_framebuffer_multisample
GL_RenderbufferStorageMultisampleANGLE(GLenum target,GLsizei samples,GLenum internalformat,GLsizei width,GLsizei height)352 void GL_APIENTRY GL_RenderbufferStorageMultisampleANGLE(GLenum target,
353 GLsizei samples,
354 GLenum internalformat,
355 GLsizei width,
356 GLsizei height)
357 {
358 Context *context = GetValidGlobalContext();
359 EVENT(context, GLRenderbufferStorageMultisampleANGLE,
360 "context = %d, target = %s, samples = %d, internalformat = %s, width = %d, height = %d",
361 CID(context), GLenumToString(GLenumGroup::RenderbufferTarget, target), samples,
362 GLenumToString(GLenumGroup::InternalFormat, internalformat), width, height);
363
364 if (context)
365 {
366 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
367 bool isCallValid = (context->skipValidation() ||
368 ValidateRenderbufferStorageMultisampleANGLE(
369 context, angle::EntryPoint::GLRenderbufferStorageMultisampleANGLE,
370 target, samples, internalformat, width, height));
371 if (isCallValid)
372 {
373 context->renderbufferStorageMultisample(target, samples, internalformat, width, height);
374 }
375 ANGLE_CAPTURE(RenderbufferStorageMultisampleANGLE, isCallValid, context, target, samples,
376 internalformat, width, height);
377 }
378 else
379 {
380 GenerateContextLostErrorOnCurrentGlobalContext();
381 }
382 }
383
384 // GL_ANGLE_get_image
385 void GL_APIENTRY
GL_GetTexImageANGLE(GLenum target,GLint level,GLenum format,GLenum type,void * pixels)386 GL_GetTexImageANGLE(GLenum target, GLint level, GLenum format, GLenum type, void *pixels)
387 {
388 Context *context = GetValidGlobalContext();
389 EVENT(context, GLGetTexImageANGLE,
390 "context = %d, target = %s, level = %d, format = %s, type = %s, pixels = 0x%016" PRIxPTR
391 "",
392 CID(context), GLenumToString(GLenumGroup::TextureTarget, target), level,
393 GLenumToString(GLenumGroup::PixelFormat, format),
394 GLenumToString(GLenumGroup::PixelType, type), (uintptr_t)pixels);
395
396 if (context)
397 {
398 TextureTarget targetPacked = PackParam<TextureTarget>(target);
399 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
400 bool isCallValid = (context->skipValidation() ||
401 ValidateGetTexImageANGLE(context, angle::EntryPoint::GLGetTexImageANGLE,
402 targetPacked, level, format, type, pixels));
403 if (isCallValid)
404 {
405 context->getTexImage(targetPacked, level, format, type, pixels);
406 }
407 ANGLE_CAPTURE(GetTexImageANGLE, isCallValid, context, targetPacked, level, format, type,
408 pixels);
409 }
410 else
411 {
412 GenerateContextLostErrorOnCurrentGlobalContext();
413 }
414 }
415
GL_GetCompressedTexImageANGLE(GLenum target,GLint level,void * pixels)416 void GL_APIENTRY GL_GetCompressedTexImageANGLE(GLenum target, GLint level, void *pixels)
417 {
418 Context *context = GetValidGlobalContext();
419 EVENT(context, GLGetCompressedTexImageANGLE,
420 "context = %d, target = %s, level = %d, pixels = 0x%016" PRIxPTR "", CID(context),
421 GLenumToString(GLenumGroup::TextureTarget, target), level, (uintptr_t)pixels);
422
423 if (context)
424 {
425 TextureTarget targetPacked = PackParam<TextureTarget>(target);
426 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
427 bool isCallValid = (context->skipValidation() ||
428 ValidateGetCompressedTexImageANGLE(
429 context, angle::EntryPoint::GLGetCompressedTexImageANGLE,
430 targetPacked, level, pixels));
431 if (isCallValid)
432 {
433 context->getCompressedTexImage(targetPacked, level, pixels);
434 }
435 ANGLE_CAPTURE(GetCompressedTexImageANGLE, isCallValid, context, targetPacked, level,
436 pixels);
437 }
438 else
439 {
440 GenerateContextLostErrorOnCurrentGlobalContext();
441 }
442 }
443
GL_GetRenderbufferImageANGLE(GLenum target,GLenum format,GLenum type,void * pixels)444 void GL_APIENTRY GL_GetRenderbufferImageANGLE(GLenum target,
445 GLenum format,
446 GLenum type,
447 void *pixels)
448 {
449 Context *context = GetValidGlobalContext();
450 EVENT(context, GLGetRenderbufferImageANGLE,
451 "context = %d, target = %s, format = %s, type = %s, pixels = 0x%016" PRIxPTR "",
452 CID(context), GLenumToString(GLenumGroup::RenderbufferTarget, target),
453 GLenumToString(GLenumGroup::PixelFormat, format),
454 GLenumToString(GLenumGroup::PixelType, type), (uintptr_t)pixels);
455
456 if (context)
457 {
458 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
459 bool isCallValid = (context->skipValidation() ||
460 ValidateGetRenderbufferImageANGLE(
461 context, angle::EntryPoint::GLGetRenderbufferImageANGLE, target,
462 format, type, pixels));
463 if (isCallValid)
464 {
465 context->getRenderbufferImage(target, format, type, pixels);
466 }
467 ANGLE_CAPTURE(GetRenderbufferImageANGLE, isCallValid, context, target, format, type,
468 pixels);
469 }
470 else
471 {
472 GenerateContextLostErrorOnCurrentGlobalContext();
473 }
474 }
475
476 // GL_ANGLE_get_tex_level_parameter
GL_GetTexLevelParameterivANGLE(GLenum target,GLint level,GLenum pname,GLint * params)477 void GL_APIENTRY GL_GetTexLevelParameterivANGLE(GLenum target,
478 GLint level,
479 GLenum pname,
480 GLint *params)
481 {
482 Context *context = GetValidGlobalContext();
483 EVENT(context, GLGetTexLevelParameterivANGLE,
484 "context = %d, target = %s, level = %d, pname = %s, params = 0x%016" PRIxPTR "",
485 CID(context), GLenumToString(GLenumGroup::TextureTarget, target), level,
486 GLenumToString(GLenumGroup::GetTextureParameter, pname), (uintptr_t)params);
487
488 if (context)
489 {
490 TextureTarget targetPacked = PackParam<TextureTarget>(target);
491 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
492 bool isCallValid = (context->skipValidation() ||
493 ValidateGetTexLevelParameterivANGLE(
494 context, angle::EntryPoint::GLGetTexLevelParameterivANGLE,
495 targetPacked, level, pname, params));
496 if (isCallValid)
497 {
498 context->getTexLevelParameteriv(targetPacked, level, pname, params);
499 }
500 ANGLE_CAPTURE(GetTexLevelParameterivANGLE, isCallValid, context, targetPacked, level, pname,
501 params);
502 }
503 else
504 {
505 GenerateContextLostErrorOnCurrentGlobalContext();
506 }
507 }
508
GL_GetTexLevelParameterfvANGLE(GLenum target,GLint level,GLenum pname,GLfloat * params)509 void GL_APIENTRY GL_GetTexLevelParameterfvANGLE(GLenum target,
510 GLint level,
511 GLenum pname,
512 GLfloat *params)
513 {
514 Context *context = GetValidGlobalContext();
515 EVENT(context, GLGetTexLevelParameterfvANGLE,
516 "context = %d, target = %s, level = %d, pname = %s, params = 0x%016" PRIxPTR "",
517 CID(context), GLenumToString(GLenumGroup::DefaultGroup, target), level,
518 GLenumToString(GLenumGroup::DefaultGroup, pname), (uintptr_t)params);
519
520 if (context)
521 {
522 TextureTarget targetPacked = PackParam<TextureTarget>(target);
523 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
524 bool isCallValid = (context->skipValidation() ||
525 ValidateGetTexLevelParameterfvANGLE(
526 context, angle::EntryPoint::GLGetTexLevelParameterfvANGLE,
527 targetPacked, level, pname, params));
528 if (isCallValid)
529 {
530 context->getTexLevelParameterfv(targetPacked, level, pname, params);
531 }
532 ANGLE_CAPTURE(GetTexLevelParameterfvANGLE, isCallValid, context, targetPacked, level, pname,
533 params);
534 }
535 else
536 {
537 GenerateContextLostErrorOnCurrentGlobalContext();
538 }
539 }
540
541 // GL_ANGLE_instanced_arrays
GL_DrawArraysInstancedANGLE(GLenum mode,GLint first,GLsizei count,GLsizei primcount)542 void GL_APIENTRY GL_DrawArraysInstancedANGLE(GLenum mode,
543 GLint first,
544 GLsizei count,
545 GLsizei primcount)
546 {
547 Context *context = GetValidGlobalContext();
548 EVENT(context, GLDrawArraysInstancedANGLE,
549 "context = %d, mode = %s, first = %d, count = %d, primcount = %d", CID(context),
550 GLenumToString(GLenumGroup::PrimitiveType, mode), first, count, primcount);
551
552 if (context)
553 {
554 PrimitiveMode modePacked = PackParam<PrimitiveMode>(mode);
555 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
556 bool isCallValid = (context->skipValidation() ||
557 ValidateDrawArraysInstancedANGLE(
558 context, angle::EntryPoint::GLDrawArraysInstancedANGLE, modePacked,
559 first, count, primcount));
560 if (isCallValid)
561 {
562 context->drawArraysInstanced(modePacked, first, count, primcount);
563 }
564 ANGLE_CAPTURE(DrawArraysInstancedANGLE, isCallValid, context, modePacked, first, count,
565 primcount);
566 }
567 else
568 {
569 GenerateContextLostErrorOnCurrentGlobalContext();
570 }
571 }
572
GL_DrawElementsInstancedANGLE(GLenum mode,GLsizei count,GLenum type,const void * indices,GLsizei primcount)573 void GL_APIENTRY GL_DrawElementsInstancedANGLE(GLenum mode,
574 GLsizei count,
575 GLenum type,
576 const void *indices,
577 GLsizei primcount)
578 {
579 Context *context = GetValidGlobalContext();
580 EVENT(context, GLDrawElementsInstancedANGLE,
581 "context = %d, mode = %s, count = %d, type = %s, indices = 0x%016" PRIxPTR
582 ", primcount = %d",
583 CID(context), GLenumToString(GLenumGroup::PrimitiveType, mode), count,
584 GLenumToString(GLenumGroup::PrimitiveType, type), (uintptr_t)indices, primcount);
585
586 if (context)
587 {
588 PrimitiveMode modePacked = PackParam<PrimitiveMode>(mode);
589 DrawElementsType typePacked = PackParam<DrawElementsType>(type);
590 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
591 bool isCallValid = (context->skipValidation() ||
592 ValidateDrawElementsInstancedANGLE(
593 context, angle::EntryPoint::GLDrawElementsInstancedANGLE,
594 modePacked, count, typePacked, indices, primcount));
595 if (isCallValid)
596 {
597 context->drawElementsInstanced(modePacked, count, typePacked, indices, primcount);
598 }
599 ANGLE_CAPTURE(DrawElementsInstancedANGLE, isCallValid, context, modePacked, count,
600 typePacked, indices, primcount);
601 }
602 else
603 {
604 GenerateContextLostErrorOnCurrentGlobalContext();
605 }
606 }
607
GL_VertexAttribDivisorANGLE(GLuint index,GLuint divisor)608 void GL_APIENTRY GL_VertexAttribDivisorANGLE(GLuint index, GLuint divisor)
609 {
610 Context *context = GetValidGlobalContext();
611 EVENT(context, GLVertexAttribDivisorANGLE, "context = %d, index = %u, divisor = %u",
612 CID(context), index, divisor);
613
614 if (context)
615 {
616 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
617 bool isCallValid =
618 (context->skipValidation() ||
619 ValidateVertexAttribDivisorANGLE(
620 context, angle::EntryPoint::GLVertexAttribDivisorANGLE, index, divisor));
621 if (isCallValid)
622 {
623 context->vertexAttribDivisor(index, divisor);
624 }
625 ANGLE_CAPTURE(VertexAttribDivisorANGLE, isCallValid, context, index, divisor);
626 }
627 else
628 {
629 GenerateContextLostErrorOnCurrentGlobalContext();
630 }
631 }
632
633 // GL_ANGLE_memory_object_flags
GL_TexStorageMemFlags2DANGLE(GLenum target,GLsizei levels,GLenum internalFormat,GLsizei width,GLsizei height,GLuint memory,GLuint64 offset,GLbitfield createFlags,GLbitfield usageFlags,const void * imageCreateInfoPNext)634 void GL_APIENTRY GL_TexStorageMemFlags2DANGLE(GLenum target,
635 GLsizei levels,
636 GLenum internalFormat,
637 GLsizei width,
638 GLsizei height,
639 GLuint memory,
640 GLuint64 offset,
641 GLbitfield createFlags,
642 GLbitfield usageFlags,
643 const void *imageCreateInfoPNext)
644 {
645 Context *context = GetValidGlobalContext();
646 EVENT(context, GLTexStorageMemFlags2DANGLE,
647 "context = %d, target = %s, levels = %d, internalFormat = %s, width = %d, height = %d, "
648 "memory = %u, offset = %llu, createFlags = %s, usageFlags = %s, imageCreateInfoPNext = "
649 "0x%016" PRIxPTR "",
650 CID(context), GLenumToString(GLenumGroup::TextureTarget, target), levels,
651 GLenumToString(GLenumGroup::DefaultGroup, internalFormat), width, height, memory,
652 static_cast<unsigned long long>(offset),
653 GLbitfieldToString(GLenumGroup::DefaultGroup, createFlags).c_str(),
654 GLbitfieldToString(GLenumGroup::DefaultGroup, usageFlags).c_str(),
655 (uintptr_t)imageCreateInfoPNext);
656
657 if (context)
658 {
659 TextureType targetPacked = PackParam<TextureType>(target);
660 MemoryObjectID memoryPacked = PackParam<MemoryObjectID>(memory);
661 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
662 bool isCallValid = (context->skipValidation() ||
663 ValidateTexStorageMemFlags2DANGLE(
664 context, angle::EntryPoint::GLTexStorageMemFlags2DANGLE,
665 targetPacked, levels, internalFormat, width, height, memoryPacked,
666 offset, createFlags, usageFlags, imageCreateInfoPNext));
667 if (isCallValid)
668 {
669 context->texStorageMemFlags2D(targetPacked, levels, internalFormat, width, height,
670 memoryPacked, offset, createFlags, usageFlags,
671 imageCreateInfoPNext);
672 }
673 ANGLE_CAPTURE(TexStorageMemFlags2DANGLE, isCallValid, context, targetPacked, levels,
674 internalFormat, width, height, memoryPacked, offset, createFlags, usageFlags,
675 imageCreateInfoPNext);
676 }
677 else
678 {
679 GenerateContextLostErrorOnCurrentGlobalContext();
680 }
681 }
682
GL_TexStorageMemFlags2DMultisampleANGLE(GLenum target,GLsizei samples,GLenum internalFormat,GLsizei width,GLsizei height,GLboolean fixedSampleLocations,GLuint memory,GLuint64 offset,GLbitfield createFlags,GLbitfield usageFlags,const void * imageCreateInfoPNext)683 void GL_APIENTRY GL_TexStorageMemFlags2DMultisampleANGLE(GLenum target,
684 GLsizei samples,
685 GLenum internalFormat,
686 GLsizei width,
687 GLsizei height,
688 GLboolean fixedSampleLocations,
689 GLuint memory,
690 GLuint64 offset,
691 GLbitfield createFlags,
692 GLbitfield usageFlags,
693 const void *imageCreateInfoPNext)
694 {
695 Context *context = GetValidGlobalContext();
696 EVENT(context, GLTexStorageMemFlags2DMultisampleANGLE,
697 "context = %d, target = %s, samples = %d, internalFormat = %s, width = %d, height = %d, "
698 "fixedSampleLocations = %s, memory = %u, offset = %llu, createFlags = %s, usageFlags = "
699 "%s, imageCreateInfoPNext = 0x%016" PRIxPTR "",
700 CID(context), GLenumToString(GLenumGroup::TextureTarget, target), samples,
701 GLenumToString(GLenumGroup::DefaultGroup, internalFormat), width, height,
702 GLbooleanToString(fixedSampleLocations), memory, static_cast<unsigned long long>(offset),
703 GLbitfieldToString(GLenumGroup::DefaultGroup, createFlags).c_str(),
704 GLbitfieldToString(GLenumGroup::DefaultGroup, usageFlags).c_str(),
705 (uintptr_t)imageCreateInfoPNext);
706
707 if (context)
708 {
709 TextureType targetPacked = PackParam<TextureType>(target);
710 MemoryObjectID memoryPacked = PackParam<MemoryObjectID>(memory);
711 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
712 bool isCallValid =
713 (context->skipValidation() ||
714 ValidateTexStorageMemFlags2DMultisampleANGLE(
715 context, angle::EntryPoint::GLTexStorageMemFlags2DMultisampleANGLE, targetPacked,
716 samples, internalFormat, width, height, fixedSampleLocations, memoryPacked, offset,
717 createFlags, usageFlags, imageCreateInfoPNext));
718 if (isCallValid)
719 {
720 context->texStorageMemFlags2DMultisample(
721 targetPacked, samples, internalFormat, width, height, fixedSampleLocations,
722 memoryPacked, offset, createFlags, usageFlags, imageCreateInfoPNext);
723 }
724 ANGLE_CAPTURE(TexStorageMemFlags2DMultisampleANGLE, isCallValid, context, targetPacked,
725 samples, internalFormat, width, height, fixedSampleLocations, memoryPacked,
726 offset, createFlags, usageFlags, imageCreateInfoPNext);
727 }
728 else
729 {
730 GenerateContextLostErrorOnCurrentGlobalContext();
731 }
732 }
733
GL_TexStorageMemFlags3DANGLE(GLenum target,GLsizei levels,GLenum internalFormat,GLsizei width,GLsizei height,GLsizei depth,GLuint memory,GLuint64 offset,GLbitfield createFlags,GLbitfield usageFlags,const void * imageCreateInfoPNext)734 void GL_APIENTRY GL_TexStorageMemFlags3DANGLE(GLenum target,
735 GLsizei levels,
736 GLenum internalFormat,
737 GLsizei width,
738 GLsizei height,
739 GLsizei depth,
740 GLuint memory,
741 GLuint64 offset,
742 GLbitfield createFlags,
743 GLbitfield usageFlags,
744 const void *imageCreateInfoPNext)
745 {
746 Context *context = GetValidGlobalContext();
747 EVENT(context, GLTexStorageMemFlags3DANGLE,
748 "context = %d, target = %s, levels = %d, internalFormat = %s, width = %d, height = %d, "
749 "depth = %d, memory = %u, offset = %llu, createFlags = %s, usageFlags = %s, "
750 "imageCreateInfoPNext = 0x%016" PRIxPTR "",
751 CID(context), GLenumToString(GLenumGroup::TextureTarget, target), levels,
752 GLenumToString(GLenumGroup::DefaultGroup, internalFormat), width, height, depth, memory,
753 static_cast<unsigned long long>(offset),
754 GLbitfieldToString(GLenumGroup::DefaultGroup, createFlags).c_str(),
755 GLbitfieldToString(GLenumGroup::DefaultGroup, usageFlags).c_str(),
756 (uintptr_t)imageCreateInfoPNext);
757
758 if (context)
759 {
760 TextureType targetPacked = PackParam<TextureType>(target);
761 MemoryObjectID memoryPacked = PackParam<MemoryObjectID>(memory);
762 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
763 bool isCallValid =
764 (context->skipValidation() ||
765 ValidateTexStorageMemFlags3DANGLE(
766 context, angle::EntryPoint::GLTexStorageMemFlags3DANGLE, targetPacked, levels,
767 internalFormat, width, height, depth, memoryPacked, offset, createFlags,
768 usageFlags, imageCreateInfoPNext));
769 if (isCallValid)
770 {
771 context->texStorageMemFlags3D(targetPacked, levels, internalFormat, width, height,
772 depth, memoryPacked, offset, createFlags, usageFlags,
773 imageCreateInfoPNext);
774 }
775 ANGLE_CAPTURE(TexStorageMemFlags3DANGLE, isCallValid, context, targetPacked, levels,
776 internalFormat, width, height, depth, memoryPacked, offset, createFlags,
777 usageFlags, imageCreateInfoPNext);
778 }
779 else
780 {
781 GenerateContextLostErrorOnCurrentGlobalContext();
782 }
783 }
784
GL_TexStorageMemFlags3DMultisampleANGLE(GLenum target,GLsizei samples,GLenum internalFormat,GLsizei width,GLsizei height,GLsizei depth,GLboolean fixedSampleLocations,GLuint memory,GLuint64 offset,GLbitfield createFlags,GLbitfield usageFlags,const void * imageCreateInfoPNext)785 void GL_APIENTRY GL_TexStorageMemFlags3DMultisampleANGLE(GLenum target,
786 GLsizei samples,
787 GLenum internalFormat,
788 GLsizei width,
789 GLsizei height,
790 GLsizei depth,
791 GLboolean fixedSampleLocations,
792 GLuint memory,
793 GLuint64 offset,
794 GLbitfield createFlags,
795 GLbitfield usageFlags,
796 const void *imageCreateInfoPNext)
797 {
798 Context *context = GetValidGlobalContext();
799 EVENT(context, GLTexStorageMemFlags3DMultisampleANGLE,
800 "context = %d, target = %s, samples = %d, internalFormat = %s, width = %d, height = %d, "
801 "depth = %d, fixedSampleLocations = %s, memory = %u, offset = %llu, createFlags = %s, "
802 "usageFlags = %s, imageCreateInfoPNext = 0x%016" PRIxPTR "",
803 CID(context), GLenumToString(GLenumGroup::TextureTarget, target), samples,
804 GLenumToString(GLenumGroup::DefaultGroup, internalFormat), width, height, depth,
805 GLbooleanToString(fixedSampleLocations), memory, static_cast<unsigned long long>(offset),
806 GLbitfieldToString(GLenumGroup::DefaultGroup, createFlags).c_str(),
807 GLbitfieldToString(GLenumGroup::DefaultGroup, usageFlags).c_str(),
808 (uintptr_t)imageCreateInfoPNext);
809
810 if (context)
811 {
812 TextureType targetPacked = PackParam<TextureType>(target);
813 MemoryObjectID memoryPacked = PackParam<MemoryObjectID>(memory);
814 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
815 bool isCallValid =
816 (context->skipValidation() ||
817 ValidateTexStorageMemFlags3DMultisampleANGLE(
818 context, angle::EntryPoint::GLTexStorageMemFlags3DMultisampleANGLE, targetPacked,
819 samples, internalFormat, width, height, depth, fixedSampleLocations, memoryPacked,
820 offset, createFlags, usageFlags, imageCreateInfoPNext));
821 if (isCallValid)
822 {
823 context->texStorageMemFlags3DMultisample(
824 targetPacked, samples, internalFormat, width, height, depth, fixedSampleLocations,
825 memoryPacked, offset, createFlags, usageFlags, imageCreateInfoPNext);
826 }
827 ANGLE_CAPTURE(TexStorageMemFlags3DMultisampleANGLE, isCallValid, context, targetPacked,
828 samples, internalFormat, width, height, depth, fixedSampleLocations,
829 memoryPacked, offset, createFlags, usageFlags, imageCreateInfoPNext);
830 }
831 else
832 {
833 GenerateContextLostErrorOnCurrentGlobalContext();
834 }
835 }
836
837 // GL_ANGLE_memory_object_fuchsia
GL_ImportMemoryZirconHandleANGLE(GLuint memory,GLuint64 size,GLenum handleType,GLuint handle)838 void GL_APIENTRY GL_ImportMemoryZirconHandleANGLE(GLuint memory,
839 GLuint64 size,
840 GLenum handleType,
841 GLuint handle)
842 {
843 Context *context = GetValidGlobalContext();
844 EVENT(context, GLImportMemoryZirconHandleANGLE,
845 "context = %d, memory = %u, size = %llu, handleType = %s, handle = %u", CID(context),
846 memory, static_cast<unsigned long long>(size),
847 GLenumToString(GLenumGroup::ExternalHandleType, handleType), handle);
848
849 if (context)
850 {
851 MemoryObjectID memoryPacked = PackParam<MemoryObjectID>(memory);
852 HandleType handleTypePacked = PackParam<HandleType>(handleType);
853 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
854 bool isCallValid = (context->skipValidation() ||
855 ValidateImportMemoryZirconHandleANGLE(
856 context, angle::EntryPoint::GLImportMemoryZirconHandleANGLE,
857 memoryPacked, size, handleTypePacked, handle));
858 if (isCallValid)
859 {
860 context->importMemoryZirconHandle(memoryPacked, size, handleTypePacked, handle);
861 }
862 ANGLE_CAPTURE(ImportMemoryZirconHandleANGLE, isCallValid, context, memoryPacked, size,
863 handleTypePacked, handle);
864 }
865 else
866 {
867 GenerateContextLostErrorOnCurrentGlobalContext();
868 }
869 }
870
871 // GL_ANGLE_multi_draw
GL_MultiDrawArraysANGLE(GLenum mode,const GLint * firsts,const GLsizei * counts,GLsizei drawcount)872 void GL_APIENTRY GL_MultiDrawArraysANGLE(GLenum mode,
873 const GLint *firsts,
874 const GLsizei *counts,
875 GLsizei drawcount)
876 {
877 Context *context = GetValidGlobalContext();
878 EVENT(context, GLMultiDrawArraysANGLE,
879 "context = %d, mode = %s, firsts = 0x%016" PRIxPTR ", counts = 0x%016" PRIxPTR
880 ", drawcount = %d",
881 CID(context), GLenumToString(GLenumGroup::PrimitiveType, mode), (uintptr_t)firsts,
882 (uintptr_t)counts, drawcount);
883
884 if (context)
885 {
886 PrimitiveMode modePacked = PackParam<PrimitiveMode>(mode);
887 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
888 bool isCallValid =
889 (context->skipValidation() ||
890 ValidateMultiDrawArraysANGLE(context, angle::EntryPoint::GLMultiDrawArraysANGLE,
891 modePacked, firsts, counts, drawcount));
892 if (isCallValid)
893 {
894 context->multiDrawArrays(modePacked, firsts, counts, drawcount);
895 }
896 ANGLE_CAPTURE(MultiDrawArraysANGLE, isCallValid, context, modePacked, firsts, counts,
897 drawcount);
898 }
899 else
900 {
901 GenerateContextLostErrorOnCurrentGlobalContext();
902 }
903 }
904
GL_MultiDrawArraysInstancedANGLE(GLenum mode,const GLint * firsts,const GLsizei * counts,const GLsizei * instanceCounts,GLsizei drawcount)905 void GL_APIENTRY GL_MultiDrawArraysInstancedANGLE(GLenum mode,
906 const GLint *firsts,
907 const GLsizei *counts,
908 const GLsizei *instanceCounts,
909 GLsizei drawcount)
910 {
911 Context *context = GetValidGlobalContext();
912 EVENT(context, GLMultiDrawArraysInstancedANGLE,
913 "context = %d, mode = %s, firsts = 0x%016" PRIxPTR ", counts = 0x%016" PRIxPTR
914 ", instanceCounts = 0x%016" PRIxPTR ", drawcount = %d",
915 CID(context), GLenumToString(GLenumGroup::PrimitiveType, mode), (uintptr_t)firsts,
916 (uintptr_t)counts, (uintptr_t)instanceCounts, drawcount);
917
918 if (context)
919 {
920 PrimitiveMode modePacked = PackParam<PrimitiveMode>(mode);
921 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
922 bool isCallValid = (context->skipValidation() ||
923 ValidateMultiDrawArraysInstancedANGLE(
924 context, angle::EntryPoint::GLMultiDrawArraysInstancedANGLE,
925 modePacked, firsts, counts, instanceCounts, drawcount));
926 if (isCallValid)
927 {
928 context->multiDrawArraysInstanced(modePacked, firsts, counts, instanceCounts,
929 drawcount);
930 }
931 ANGLE_CAPTURE(MultiDrawArraysInstancedANGLE, isCallValid, context, modePacked, firsts,
932 counts, instanceCounts, drawcount);
933 }
934 else
935 {
936 GenerateContextLostErrorOnCurrentGlobalContext();
937 }
938 }
939
GL_MultiDrawElementsANGLE(GLenum mode,const GLsizei * counts,GLenum type,const GLvoid * const * indices,GLsizei drawcount)940 void GL_APIENTRY GL_MultiDrawElementsANGLE(GLenum mode,
941 const GLsizei *counts,
942 GLenum type,
943 const GLvoid *const *indices,
944 GLsizei drawcount)
945 {
946 Context *context = GetValidGlobalContext();
947 EVENT(context, GLMultiDrawElementsANGLE,
948 "context = %d, mode = %s, counts = 0x%016" PRIxPTR ", type = %s, indices = 0x%016" PRIxPTR
949 ", drawcount = %d",
950 CID(context), GLenumToString(GLenumGroup::PrimitiveType, mode), (uintptr_t)counts,
951 GLenumToString(GLenumGroup::DrawElementsType, type), (uintptr_t)indices, drawcount);
952
953 if (context)
954 {
955 PrimitiveMode modePacked = PackParam<PrimitiveMode>(mode);
956 DrawElementsType typePacked = PackParam<DrawElementsType>(type);
957 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
958 bool isCallValid =
959 (context->skipValidation() ||
960 ValidateMultiDrawElementsANGLE(context, angle::EntryPoint::GLMultiDrawElementsANGLE,
961 modePacked, counts, typePacked, indices, drawcount));
962 if (isCallValid)
963 {
964 context->multiDrawElements(modePacked, counts, typePacked, indices, drawcount);
965 }
966 ANGLE_CAPTURE(MultiDrawElementsANGLE, isCallValid, context, modePacked, counts, typePacked,
967 indices, drawcount);
968 }
969 else
970 {
971 GenerateContextLostErrorOnCurrentGlobalContext();
972 }
973 }
974
GL_MultiDrawElementsInstancedANGLE(GLenum mode,const GLsizei * counts,GLenum type,const GLvoid * const * indices,const GLsizei * instanceCounts,GLsizei drawcount)975 void GL_APIENTRY GL_MultiDrawElementsInstancedANGLE(GLenum mode,
976 const GLsizei *counts,
977 GLenum type,
978 const GLvoid *const *indices,
979 const GLsizei *instanceCounts,
980 GLsizei drawcount)
981 {
982 Context *context = GetValidGlobalContext();
983 EVENT(context, GLMultiDrawElementsInstancedANGLE,
984 "context = %d, mode = %s, counts = 0x%016" PRIxPTR ", type = %s, indices = 0x%016" PRIxPTR
985 ", instanceCounts = 0x%016" PRIxPTR ", drawcount = %d",
986 CID(context), GLenumToString(GLenumGroup::PrimitiveType, mode), (uintptr_t)counts,
987 GLenumToString(GLenumGroup::DrawElementsType, type), (uintptr_t)indices,
988 (uintptr_t)instanceCounts, drawcount);
989
990 if (context)
991 {
992 PrimitiveMode modePacked = PackParam<PrimitiveMode>(mode);
993 DrawElementsType typePacked = PackParam<DrawElementsType>(type);
994 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
995 bool isCallValid =
996 (context->skipValidation() ||
997 ValidateMultiDrawElementsInstancedANGLE(
998 context, angle::EntryPoint::GLMultiDrawElementsInstancedANGLE, modePacked, counts,
999 typePacked, indices, instanceCounts, drawcount));
1000 if (isCallValid)
1001 {
1002 context->multiDrawElementsInstanced(modePacked, counts, typePacked, indices,
1003 instanceCounts, drawcount);
1004 }
1005 ANGLE_CAPTURE(MultiDrawElementsInstancedANGLE, isCallValid, context, modePacked, counts,
1006 typePacked, indices, instanceCounts, drawcount);
1007 }
1008 else
1009 {
1010 GenerateContextLostErrorOnCurrentGlobalContext();
1011 }
1012 }
1013
1014 // GL_ANGLE_pack_reverse_row_order
1015
1016 // GL_ANGLE_program_binary
1017
1018 // GL_ANGLE_provoking_vertex
GL_ProvokingVertexANGLE(GLenum mode)1019 void GL_APIENTRY GL_ProvokingVertexANGLE(GLenum mode)
1020 {
1021 Context *context = GetValidGlobalContext();
1022 EVENT(context, GLProvokingVertexANGLE, "context = %d, mode = %s", CID(context),
1023 GLenumToString(GLenumGroup::VertexProvokingMode, mode));
1024
1025 if (context)
1026 {
1027 ProvokingVertexConvention modePacked = PackParam<ProvokingVertexConvention>(mode);
1028 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
1029 bool isCallValid = (context->skipValidation() ||
1030 ValidateProvokingVertexANGLE(
1031 context, angle::EntryPoint::GLProvokingVertexANGLE, modePacked));
1032 if (isCallValid)
1033 {
1034 context->provokingVertex(modePacked);
1035 }
1036 ANGLE_CAPTURE(ProvokingVertexANGLE, isCallValid, context, modePacked);
1037 }
1038 else
1039 {
1040 GenerateContextLostErrorOnCurrentGlobalContext();
1041 }
1042 }
1043
1044 // GL_ANGLE_request_extension
GL_RequestExtensionANGLE(const GLchar * name)1045 void GL_APIENTRY GL_RequestExtensionANGLE(const GLchar *name)
1046 {
1047 Context *context = GetValidGlobalContext();
1048 EVENT(context, GLRequestExtensionANGLE, "context = %d, name = 0x%016" PRIxPTR "", CID(context),
1049 (uintptr_t)name);
1050
1051 if (context)
1052 {
1053 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
1054 bool isCallValid = (context->skipValidation() ||
1055 ValidateRequestExtensionANGLE(
1056 context, angle::EntryPoint::GLRequestExtensionANGLE, name));
1057 if (isCallValid)
1058 {
1059 context->requestExtension(name);
1060 }
1061 ANGLE_CAPTURE(RequestExtensionANGLE, isCallValid, context, name);
1062 }
1063 else
1064 {
1065 GenerateContextLostErrorOnCurrentGlobalContext();
1066 }
1067 }
1068
GL_DisableExtensionANGLE(const GLchar * name)1069 void GL_APIENTRY GL_DisableExtensionANGLE(const GLchar *name)
1070 {
1071 Context *context = GetValidGlobalContext();
1072 EVENT(context, GLDisableExtensionANGLE, "context = %d, name = 0x%016" PRIxPTR "", CID(context),
1073 (uintptr_t)name);
1074
1075 if (context)
1076 {
1077 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
1078 bool isCallValid = (context->skipValidation() ||
1079 ValidateDisableExtensionANGLE(
1080 context, angle::EntryPoint::GLDisableExtensionANGLE, name));
1081 if (isCallValid)
1082 {
1083 context->disableExtension(name);
1084 }
1085 ANGLE_CAPTURE(DisableExtensionANGLE, isCallValid, context, name);
1086 }
1087 else
1088 {
1089 GenerateContextLostErrorOnCurrentGlobalContext();
1090 }
1091 }
1092
1093 // GL_ANGLE_robust_client_memory
GL_GetBooleanvRobustANGLE(GLenum pname,GLsizei bufSize,GLsizei * length,GLboolean * params)1094 void GL_APIENTRY GL_GetBooleanvRobustANGLE(GLenum pname,
1095 GLsizei bufSize,
1096 GLsizei *length,
1097 GLboolean *params)
1098 {
1099 Context *context = GetValidGlobalContext();
1100 EVENT(context, GLGetBooleanvRobustANGLE,
1101 "context = %d, pname = %s, bufSize = %d, length = 0x%016" PRIxPTR
1102 ", params = 0x%016" PRIxPTR "",
1103 CID(context), GLenumToString(GLenumGroup::DefaultGroup, pname), bufSize,
1104 (uintptr_t)length, (uintptr_t)params);
1105
1106 if (context)
1107 {
1108 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
1109 bool isCallValid =
1110 (context->skipValidation() ||
1111 ValidateGetBooleanvRobustANGLE(context, angle::EntryPoint::GLGetBooleanvRobustANGLE,
1112 pname, bufSize, length, params));
1113 if (isCallValid)
1114 {
1115 context->getBooleanvRobust(pname, bufSize, length, params);
1116 }
1117 ANGLE_CAPTURE(GetBooleanvRobustANGLE, isCallValid, context, pname, bufSize, length, params);
1118 }
1119 else
1120 {
1121 GenerateContextLostErrorOnCurrentGlobalContext();
1122 }
1123 }
1124
GL_GetBufferParameterivRobustANGLE(GLenum target,GLenum pname,GLsizei bufSize,GLsizei * length,GLint * params)1125 void GL_APIENTRY GL_GetBufferParameterivRobustANGLE(GLenum target,
1126 GLenum pname,
1127 GLsizei bufSize,
1128 GLsizei *length,
1129 GLint *params)
1130 {
1131 Context *context = GetValidGlobalContext();
1132 EVENT(context, GLGetBufferParameterivRobustANGLE,
1133 "context = %d, target = %s, pname = %s, bufSize = %d, length = 0x%016" PRIxPTR
1134 ", params = 0x%016" PRIxPTR "",
1135 CID(context), GLenumToString(GLenumGroup::DefaultGroup, target),
1136 GLenumToString(GLenumGroup::DefaultGroup, pname), bufSize, (uintptr_t)length,
1137 (uintptr_t)params);
1138
1139 if (context)
1140 {
1141 BufferBinding targetPacked = PackParam<BufferBinding>(target);
1142 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
1143 bool isCallValid = (context->skipValidation() ||
1144 ValidateGetBufferParameterivRobustANGLE(
1145 context, angle::EntryPoint::GLGetBufferParameterivRobustANGLE,
1146 targetPacked, pname, bufSize, length, params));
1147 if (isCallValid)
1148 {
1149 context->getBufferParameterivRobust(targetPacked, pname, bufSize, length, params);
1150 }
1151 ANGLE_CAPTURE(GetBufferParameterivRobustANGLE, isCallValid, context, targetPacked, pname,
1152 bufSize, length, params);
1153 }
1154 else
1155 {
1156 GenerateContextLostErrorOnCurrentGlobalContext();
1157 }
1158 }
1159
GL_GetFloatvRobustANGLE(GLenum pname,GLsizei bufSize,GLsizei * length,GLfloat * params)1160 void GL_APIENTRY GL_GetFloatvRobustANGLE(GLenum pname,
1161 GLsizei bufSize,
1162 GLsizei *length,
1163 GLfloat *params)
1164 {
1165 Context *context = GetValidGlobalContext();
1166 EVENT(context, GLGetFloatvRobustANGLE,
1167 "context = %d, pname = %s, bufSize = %d, length = 0x%016" PRIxPTR
1168 ", params = 0x%016" PRIxPTR "",
1169 CID(context), GLenumToString(GLenumGroup::DefaultGroup, pname), bufSize,
1170 (uintptr_t)length, (uintptr_t)params);
1171
1172 if (context)
1173 {
1174 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
1175 bool isCallValid =
1176 (context->skipValidation() ||
1177 ValidateGetFloatvRobustANGLE(context, angle::EntryPoint::GLGetFloatvRobustANGLE, pname,
1178 bufSize, length, params));
1179 if (isCallValid)
1180 {
1181 context->getFloatvRobust(pname, bufSize, length, params);
1182 }
1183 ANGLE_CAPTURE(GetFloatvRobustANGLE, isCallValid, context, pname, bufSize, length, params);
1184 }
1185 else
1186 {
1187 GenerateContextLostErrorOnCurrentGlobalContext();
1188 }
1189 }
1190
GL_GetFramebufferAttachmentParameterivRobustANGLE(GLenum target,GLenum attachment,GLenum pname,GLsizei bufSize,GLsizei * length,GLint * params)1191 void GL_APIENTRY GL_GetFramebufferAttachmentParameterivRobustANGLE(GLenum target,
1192 GLenum attachment,
1193 GLenum pname,
1194 GLsizei bufSize,
1195 GLsizei *length,
1196 GLint *params)
1197 {
1198 Context *context = GetValidGlobalContext();
1199 EVENT(context, GLGetFramebufferAttachmentParameterivRobustANGLE,
1200 "context = %d, target = %s, attachment = %s, pname = %s, bufSize = %d, length = "
1201 "0x%016" PRIxPTR ", params = 0x%016" PRIxPTR "",
1202 CID(context), GLenumToString(GLenumGroup::DefaultGroup, target),
1203 GLenumToString(GLenumGroup::DefaultGroup, attachment),
1204 GLenumToString(GLenumGroup::DefaultGroup, pname), bufSize, (uintptr_t)length,
1205 (uintptr_t)params);
1206
1207 if (context)
1208 {
1209 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
1210 bool isCallValid =
1211 (context->skipValidation() ||
1212 ValidateGetFramebufferAttachmentParameterivRobustANGLE(
1213 context, angle::EntryPoint::GLGetFramebufferAttachmentParameterivRobustANGLE,
1214 target, attachment, pname, bufSize, length, params));
1215 if (isCallValid)
1216 {
1217 context->getFramebufferAttachmentParameterivRobust(target, attachment, pname, bufSize,
1218 length, params);
1219 }
1220 ANGLE_CAPTURE(GetFramebufferAttachmentParameterivRobustANGLE, isCallValid, context, target,
1221 attachment, pname, bufSize, length, params);
1222 }
1223 else
1224 {
1225 GenerateContextLostErrorOnCurrentGlobalContext();
1226 }
1227 }
1228
GL_GetIntegervRobustANGLE(GLenum pname,GLsizei bufSize,GLsizei * length,GLint * data)1229 void GL_APIENTRY GL_GetIntegervRobustANGLE(GLenum pname,
1230 GLsizei bufSize,
1231 GLsizei *length,
1232 GLint *data)
1233 {
1234 Context *context = GetValidGlobalContext();
1235 EVENT(context, GLGetIntegervRobustANGLE,
1236 "context = %d, pname = %s, bufSize = %d, length = 0x%016" PRIxPTR
1237 ", data = 0x%016" PRIxPTR "",
1238 CID(context), GLenumToString(GLenumGroup::DefaultGroup, pname), bufSize,
1239 (uintptr_t)length, (uintptr_t)data);
1240
1241 if (context)
1242 {
1243 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
1244 bool isCallValid =
1245 (context->skipValidation() ||
1246 ValidateGetIntegervRobustANGLE(context, angle::EntryPoint::GLGetIntegervRobustANGLE,
1247 pname, bufSize, length, data));
1248 if (isCallValid)
1249 {
1250 context->getIntegervRobust(pname, bufSize, length, data);
1251 }
1252 ANGLE_CAPTURE(GetIntegervRobustANGLE, isCallValid, context, pname, bufSize, length, data);
1253 }
1254 else
1255 {
1256 GenerateContextLostErrorOnCurrentGlobalContext();
1257 }
1258 }
1259
GL_GetProgramivRobustANGLE(GLuint program,GLenum pname,GLsizei bufSize,GLsizei * length,GLint * params)1260 void GL_APIENTRY GL_GetProgramivRobustANGLE(GLuint program,
1261 GLenum pname,
1262 GLsizei bufSize,
1263 GLsizei *length,
1264 GLint *params)
1265 {
1266 Context *context = GetGlobalContext();
1267 EVENT(context, GLGetProgramivRobustANGLE,
1268 "context = %d, program = %u, pname = %s, bufSize = %d, length = 0x%016" PRIxPTR
1269 ", params = 0x%016" PRIxPTR "",
1270 CID(context), program, GLenumToString(GLenumGroup::DefaultGroup, pname), bufSize,
1271 (uintptr_t)length, (uintptr_t)params);
1272
1273 if (context)
1274 {
1275 ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);
1276 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
1277 bool isCallValid =
1278 (context->skipValidation() ||
1279 ValidateGetProgramivRobustANGLE(context, angle::EntryPoint::GLGetProgramivRobustANGLE,
1280 programPacked, pname, bufSize, length, params));
1281 if (isCallValid)
1282 {
1283 context->getProgramivRobust(programPacked, pname, bufSize, length, params);
1284 }
1285 ANGLE_CAPTURE(GetProgramivRobustANGLE, isCallValid, context, programPacked, pname, bufSize,
1286 length, params);
1287 }
1288 else
1289 {}
1290 }
1291
GL_GetRenderbufferParameterivRobustANGLE(GLenum target,GLenum pname,GLsizei bufSize,GLsizei * length,GLint * params)1292 void GL_APIENTRY GL_GetRenderbufferParameterivRobustANGLE(GLenum target,
1293 GLenum pname,
1294 GLsizei bufSize,
1295 GLsizei *length,
1296 GLint *params)
1297 {
1298 Context *context = GetValidGlobalContext();
1299 EVENT(context, GLGetRenderbufferParameterivRobustANGLE,
1300 "context = %d, target = %s, pname = %s, bufSize = %d, length = 0x%016" PRIxPTR
1301 ", params = 0x%016" PRIxPTR "",
1302 CID(context), GLenumToString(GLenumGroup::DefaultGroup, target),
1303 GLenumToString(GLenumGroup::DefaultGroup, pname), bufSize, (uintptr_t)length,
1304 (uintptr_t)params);
1305
1306 if (context)
1307 {
1308 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
1309 bool isCallValid = (context->skipValidation() ||
1310 ValidateGetRenderbufferParameterivRobustANGLE(
1311 context, angle::EntryPoint::GLGetRenderbufferParameterivRobustANGLE,
1312 target, pname, bufSize, length, params));
1313 if (isCallValid)
1314 {
1315 context->getRenderbufferParameterivRobust(target, pname, bufSize, length, params);
1316 }
1317 ANGLE_CAPTURE(GetRenderbufferParameterivRobustANGLE, isCallValid, context, target, pname,
1318 bufSize, length, params);
1319 }
1320 else
1321 {
1322 GenerateContextLostErrorOnCurrentGlobalContext();
1323 }
1324 }
1325
GL_GetShaderivRobustANGLE(GLuint shader,GLenum pname,GLsizei bufSize,GLsizei * length,GLint * params)1326 void GL_APIENTRY GL_GetShaderivRobustANGLE(GLuint shader,
1327 GLenum pname,
1328 GLsizei bufSize,
1329 GLsizei *length,
1330 GLint *params)
1331 {
1332 Context *context = GetGlobalContext();
1333 EVENT(context, GLGetShaderivRobustANGLE,
1334 "context = %d, shader = %u, pname = %s, bufSize = %d, length = 0x%016" PRIxPTR
1335 ", params = 0x%016" PRIxPTR "",
1336 CID(context), shader, GLenumToString(GLenumGroup::DefaultGroup, pname), bufSize,
1337 (uintptr_t)length, (uintptr_t)params);
1338
1339 if (context)
1340 {
1341 ShaderProgramID shaderPacked = PackParam<ShaderProgramID>(shader);
1342 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
1343 bool isCallValid =
1344 (context->skipValidation() ||
1345 ValidateGetShaderivRobustANGLE(context, angle::EntryPoint::GLGetShaderivRobustANGLE,
1346 shaderPacked, pname, bufSize, length, params));
1347 if (isCallValid)
1348 {
1349 context->getShaderivRobust(shaderPacked, pname, bufSize, length, params);
1350 }
1351 ANGLE_CAPTURE(GetShaderivRobustANGLE, isCallValid, context, shaderPacked, pname, bufSize,
1352 length, params);
1353 }
1354 else
1355 {}
1356 }
1357
GL_GetTexParameterfvRobustANGLE(GLenum target,GLenum pname,GLsizei bufSize,GLsizei * length,GLfloat * params)1358 void GL_APIENTRY GL_GetTexParameterfvRobustANGLE(GLenum target,
1359 GLenum pname,
1360 GLsizei bufSize,
1361 GLsizei *length,
1362 GLfloat *params)
1363 {
1364 Context *context = GetValidGlobalContext();
1365 EVENT(context, GLGetTexParameterfvRobustANGLE,
1366 "context = %d, target = %s, pname = %s, bufSize = %d, length = 0x%016" PRIxPTR
1367 ", params = 0x%016" PRIxPTR "",
1368 CID(context), GLenumToString(GLenumGroup::DefaultGroup, target),
1369 GLenumToString(GLenumGroup::DefaultGroup, pname), bufSize, (uintptr_t)length,
1370 (uintptr_t)params);
1371
1372 if (context)
1373 {
1374 TextureType targetPacked = PackParam<TextureType>(target);
1375 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
1376 bool isCallValid = (context->skipValidation() ||
1377 ValidateGetTexParameterfvRobustANGLE(
1378 context, angle::EntryPoint::GLGetTexParameterfvRobustANGLE,
1379 targetPacked, pname, bufSize, length, params));
1380 if (isCallValid)
1381 {
1382 context->getTexParameterfvRobust(targetPacked, pname, bufSize, length, params);
1383 }
1384 ANGLE_CAPTURE(GetTexParameterfvRobustANGLE, isCallValid, context, targetPacked, pname,
1385 bufSize, length, params);
1386 }
1387 else
1388 {
1389 GenerateContextLostErrorOnCurrentGlobalContext();
1390 }
1391 }
1392
GL_GetTexParameterivRobustANGLE(GLenum target,GLenum pname,GLsizei bufSize,GLsizei * length,GLint * params)1393 void GL_APIENTRY GL_GetTexParameterivRobustANGLE(GLenum target,
1394 GLenum pname,
1395 GLsizei bufSize,
1396 GLsizei *length,
1397 GLint *params)
1398 {
1399 Context *context = GetValidGlobalContext();
1400 EVENT(context, GLGetTexParameterivRobustANGLE,
1401 "context = %d, target = %s, pname = %s, bufSize = %d, length = 0x%016" PRIxPTR
1402 ", params = 0x%016" PRIxPTR "",
1403 CID(context), GLenumToString(GLenumGroup::DefaultGroup, target),
1404 GLenumToString(GLenumGroup::DefaultGroup, pname), bufSize, (uintptr_t)length,
1405 (uintptr_t)params);
1406
1407 if (context)
1408 {
1409 TextureType targetPacked = PackParam<TextureType>(target);
1410 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
1411 bool isCallValid = (context->skipValidation() ||
1412 ValidateGetTexParameterivRobustANGLE(
1413 context, angle::EntryPoint::GLGetTexParameterivRobustANGLE,
1414 targetPacked, pname, bufSize, length, params));
1415 if (isCallValid)
1416 {
1417 context->getTexParameterivRobust(targetPacked, pname, bufSize, length, params);
1418 }
1419 ANGLE_CAPTURE(GetTexParameterivRobustANGLE, isCallValid, context, targetPacked, pname,
1420 bufSize, length, params);
1421 }
1422 else
1423 {
1424 GenerateContextLostErrorOnCurrentGlobalContext();
1425 }
1426 }
1427
GL_GetUniformfvRobustANGLE(GLuint program,GLint location,GLsizei bufSize,GLsizei * length,GLfloat * params)1428 void GL_APIENTRY GL_GetUniformfvRobustANGLE(GLuint program,
1429 GLint location,
1430 GLsizei bufSize,
1431 GLsizei *length,
1432 GLfloat *params)
1433 {
1434 Context *context = GetValidGlobalContext();
1435 EVENT(context, GLGetUniformfvRobustANGLE,
1436 "context = %d, program = %u, location = %d, bufSize = %d, length = 0x%016" PRIxPTR
1437 ", params = 0x%016" PRIxPTR "",
1438 CID(context), program, location, bufSize, (uintptr_t)length, (uintptr_t)params);
1439
1440 if (context)
1441 {
1442 ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);
1443 UniformLocation locationPacked = PackParam<UniformLocation>(location);
1444 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
1445 bool isCallValid = (context->skipValidation() ||
1446 ValidateGetUniformfvRobustANGLE(
1447 context, angle::EntryPoint::GLGetUniformfvRobustANGLE,
1448 programPacked, locationPacked, bufSize, length, params));
1449 if (isCallValid)
1450 {
1451 context->getUniformfvRobust(programPacked, locationPacked, bufSize, length, params);
1452 }
1453 ANGLE_CAPTURE(GetUniformfvRobustANGLE, isCallValid, context, programPacked, locationPacked,
1454 bufSize, length, params);
1455 }
1456 else
1457 {
1458 GenerateContextLostErrorOnCurrentGlobalContext();
1459 }
1460 }
1461
GL_GetUniformivRobustANGLE(GLuint program,GLint location,GLsizei bufSize,GLsizei * length,GLint * params)1462 void GL_APIENTRY GL_GetUniformivRobustANGLE(GLuint program,
1463 GLint location,
1464 GLsizei bufSize,
1465 GLsizei *length,
1466 GLint *params)
1467 {
1468 Context *context = GetValidGlobalContext();
1469 EVENT(context, GLGetUniformivRobustANGLE,
1470 "context = %d, program = %u, location = %d, bufSize = %d, length = 0x%016" PRIxPTR
1471 ", params = 0x%016" PRIxPTR "",
1472 CID(context), program, location, bufSize, (uintptr_t)length, (uintptr_t)params);
1473
1474 if (context)
1475 {
1476 ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);
1477 UniformLocation locationPacked = PackParam<UniformLocation>(location);
1478 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
1479 bool isCallValid = (context->skipValidation() ||
1480 ValidateGetUniformivRobustANGLE(
1481 context, angle::EntryPoint::GLGetUniformivRobustANGLE,
1482 programPacked, locationPacked, bufSize, length, params));
1483 if (isCallValid)
1484 {
1485 context->getUniformivRobust(programPacked, locationPacked, bufSize, length, params);
1486 }
1487 ANGLE_CAPTURE(GetUniformivRobustANGLE, isCallValid, context, programPacked, locationPacked,
1488 bufSize, length, params);
1489 }
1490 else
1491 {
1492 GenerateContextLostErrorOnCurrentGlobalContext();
1493 }
1494 }
1495
GL_GetVertexAttribfvRobustANGLE(GLuint index,GLenum pname,GLsizei bufSize,GLsizei * length,GLfloat * params)1496 void GL_APIENTRY GL_GetVertexAttribfvRobustANGLE(GLuint index,
1497 GLenum pname,
1498 GLsizei bufSize,
1499 GLsizei *length,
1500 GLfloat *params)
1501 {
1502 Context *context = GetValidGlobalContext();
1503 EVENT(context, GLGetVertexAttribfvRobustANGLE,
1504 "context = %d, index = %u, pname = %s, bufSize = %d, length = 0x%016" PRIxPTR
1505 ", params = 0x%016" PRIxPTR "",
1506 CID(context), index, GLenumToString(GLenumGroup::DefaultGroup, pname), bufSize,
1507 (uintptr_t)length, (uintptr_t)params);
1508
1509 if (context)
1510 {
1511 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
1512 bool isCallValid = (context->skipValidation() ||
1513 ValidateGetVertexAttribfvRobustANGLE(
1514 context, angle::EntryPoint::GLGetVertexAttribfvRobustANGLE, index,
1515 pname, bufSize, length, params));
1516 if (isCallValid)
1517 {
1518 context->getVertexAttribfvRobust(index, pname, bufSize, length, params);
1519 }
1520 ANGLE_CAPTURE(GetVertexAttribfvRobustANGLE, isCallValid, context, index, pname, bufSize,
1521 length, params);
1522 }
1523 else
1524 {
1525 GenerateContextLostErrorOnCurrentGlobalContext();
1526 }
1527 }
1528
GL_GetVertexAttribivRobustANGLE(GLuint index,GLenum pname,GLsizei bufSize,GLsizei * length,GLint * params)1529 void GL_APIENTRY GL_GetVertexAttribivRobustANGLE(GLuint index,
1530 GLenum pname,
1531 GLsizei bufSize,
1532 GLsizei *length,
1533 GLint *params)
1534 {
1535 Context *context = GetValidGlobalContext();
1536 EVENT(context, GLGetVertexAttribivRobustANGLE,
1537 "context = %d, index = %u, pname = %s, bufSize = %d, length = 0x%016" PRIxPTR
1538 ", params = 0x%016" PRIxPTR "",
1539 CID(context), index, GLenumToString(GLenumGroup::DefaultGroup, pname), bufSize,
1540 (uintptr_t)length, (uintptr_t)params);
1541
1542 if (context)
1543 {
1544 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
1545 bool isCallValid = (context->skipValidation() ||
1546 ValidateGetVertexAttribivRobustANGLE(
1547 context, angle::EntryPoint::GLGetVertexAttribivRobustANGLE, index,
1548 pname, bufSize, length, params));
1549 if (isCallValid)
1550 {
1551 context->getVertexAttribivRobust(index, pname, bufSize, length, params);
1552 }
1553 ANGLE_CAPTURE(GetVertexAttribivRobustANGLE, isCallValid, context, index, pname, bufSize,
1554 length, params);
1555 }
1556 else
1557 {
1558 GenerateContextLostErrorOnCurrentGlobalContext();
1559 }
1560 }
1561
GL_GetVertexAttribPointervRobustANGLE(GLuint index,GLenum pname,GLsizei bufSize,GLsizei * length,void ** pointer)1562 void GL_APIENTRY GL_GetVertexAttribPointervRobustANGLE(GLuint index,
1563 GLenum pname,
1564 GLsizei bufSize,
1565 GLsizei *length,
1566 void **pointer)
1567 {
1568 Context *context = GetValidGlobalContext();
1569 EVENT(context, GLGetVertexAttribPointervRobustANGLE,
1570 "context = %d, index = %u, pname = %s, bufSize = %d, length = 0x%016" PRIxPTR
1571 ", pointer = 0x%016" PRIxPTR "",
1572 CID(context), index, GLenumToString(GLenumGroup::DefaultGroup, pname), bufSize,
1573 (uintptr_t)length, (uintptr_t)pointer);
1574
1575 if (context)
1576 {
1577 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
1578 bool isCallValid = (context->skipValidation() ||
1579 ValidateGetVertexAttribPointervRobustANGLE(
1580 context, angle::EntryPoint::GLGetVertexAttribPointervRobustANGLE,
1581 index, pname, bufSize, length, pointer));
1582 if (isCallValid)
1583 {
1584 context->getVertexAttribPointervRobust(index, pname, bufSize, length, pointer);
1585 }
1586 ANGLE_CAPTURE(GetVertexAttribPointervRobustANGLE, isCallValid, context, index, pname,
1587 bufSize, length, pointer);
1588 }
1589 else
1590 {
1591 GenerateContextLostErrorOnCurrentGlobalContext();
1592 }
1593 }
1594
GL_ReadPixelsRobustANGLE(GLint x,GLint y,GLsizei width,GLsizei height,GLenum format,GLenum type,GLsizei bufSize,GLsizei * length,GLsizei * columns,GLsizei * rows,void * pixels)1595 void GL_APIENTRY GL_ReadPixelsRobustANGLE(GLint x,
1596 GLint y,
1597 GLsizei width,
1598 GLsizei height,
1599 GLenum format,
1600 GLenum type,
1601 GLsizei bufSize,
1602 GLsizei *length,
1603 GLsizei *columns,
1604 GLsizei *rows,
1605 void *pixels)
1606 {
1607 Context *context = GetValidGlobalContext();
1608 EVENT(context, GLReadPixelsRobustANGLE,
1609 "context = %d, x = %d, y = %d, width = %d, height = %d, format = %s, type = %s, bufSize "
1610 "= %d, length = 0x%016" PRIxPTR ", columns = 0x%016" PRIxPTR ", rows = 0x%016" PRIxPTR
1611 ", pixels = 0x%016" PRIxPTR "",
1612 CID(context), x, y, width, height, GLenumToString(GLenumGroup::DefaultGroup, format),
1613 GLenumToString(GLenumGroup::DefaultGroup, type), bufSize, (uintptr_t)length,
1614 (uintptr_t)columns, (uintptr_t)rows, (uintptr_t)pixels);
1615
1616 if (context)
1617 {
1618 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
1619 bool isCallValid = (context->skipValidation() ||
1620 ValidateReadPixelsRobustANGLE(
1621 context, angle::EntryPoint::GLReadPixelsRobustANGLE, x, y, width,
1622 height, format, type, bufSize, length, columns, rows, pixels));
1623 if (isCallValid)
1624 {
1625 context->readPixelsRobust(x, y, width, height, format, type, bufSize, length, columns,
1626 rows, pixels);
1627 }
1628 ANGLE_CAPTURE(ReadPixelsRobustANGLE, isCallValid, context, x, y, width, height, format,
1629 type, bufSize, length, columns, rows, pixels);
1630 }
1631 else
1632 {
1633 GenerateContextLostErrorOnCurrentGlobalContext();
1634 }
1635 }
1636
GL_TexImage2DRobustANGLE(GLenum target,GLint level,GLint internalformat,GLsizei width,GLsizei height,GLint border,GLenum format,GLenum type,GLsizei bufSize,const void * pixels)1637 void GL_APIENTRY GL_TexImage2DRobustANGLE(GLenum target,
1638 GLint level,
1639 GLint internalformat,
1640 GLsizei width,
1641 GLsizei height,
1642 GLint border,
1643 GLenum format,
1644 GLenum type,
1645 GLsizei bufSize,
1646 const void *pixels)
1647 {
1648 Context *context = GetValidGlobalContext();
1649 EVENT(context, GLTexImage2DRobustANGLE,
1650 "context = %d, target = %s, level = %d, internalformat = %d, width = %d, height = %d, "
1651 "border = %d, format = %s, type = %s, bufSize = %d, pixels = 0x%016" PRIxPTR "",
1652 CID(context), GLenumToString(GLenumGroup::DefaultGroup, target), level, internalformat,
1653 width, height, border, GLenumToString(GLenumGroup::DefaultGroup, format),
1654 GLenumToString(GLenumGroup::DefaultGroup, type), bufSize, (uintptr_t)pixels);
1655
1656 if (context)
1657 {
1658 TextureTarget targetPacked = PackParam<TextureTarget>(target);
1659 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
1660 bool isCallValid =
1661 (context->skipValidation() ||
1662 ValidateTexImage2DRobustANGLE(context, angle::EntryPoint::GLTexImage2DRobustANGLE,
1663 targetPacked, level, internalformat, width, height,
1664 border, format, type, bufSize, pixels));
1665 if (isCallValid)
1666 {
1667 context->texImage2DRobust(targetPacked, level, internalformat, width, height, border,
1668 format, type, bufSize, pixels);
1669 }
1670 ANGLE_CAPTURE(TexImage2DRobustANGLE, isCallValid, context, targetPacked, level,
1671 internalformat, width, height, border, format, type, bufSize, pixels);
1672 }
1673 else
1674 {
1675 GenerateContextLostErrorOnCurrentGlobalContext();
1676 }
1677 }
1678
GL_TexParameterfvRobustANGLE(GLenum target,GLenum pname,GLsizei bufSize,const GLfloat * params)1679 void GL_APIENTRY GL_TexParameterfvRobustANGLE(GLenum target,
1680 GLenum pname,
1681 GLsizei bufSize,
1682 const GLfloat *params)
1683 {
1684 Context *context = GetValidGlobalContext();
1685 EVENT(context, GLTexParameterfvRobustANGLE,
1686 "context = %d, target = %s, pname = %s, bufSize = %d, params = 0x%016" PRIxPTR "",
1687 CID(context), GLenumToString(GLenumGroup::DefaultGroup, target),
1688 GLenumToString(GLenumGroup::DefaultGroup, pname), bufSize, (uintptr_t)params);
1689
1690 if (context)
1691 {
1692 TextureType targetPacked = PackParam<TextureType>(target);
1693 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
1694 bool isCallValid = (context->skipValidation() ||
1695 ValidateTexParameterfvRobustANGLE(
1696 context, angle::EntryPoint::GLTexParameterfvRobustANGLE,
1697 targetPacked, pname, bufSize, params));
1698 if (isCallValid)
1699 {
1700 context->texParameterfvRobust(targetPacked, pname, bufSize, params);
1701 }
1702 ANGLE_CAPTURE(TexParameterfvRobustANGLE, isCallValid, context, targetPacked, pname, bufSize,
1703 params);
1704 }
1705 else
1706 {
1707 GenerateContextLostErrorOnCurrentGlobalContext();
1708 }
1709 }
1710
GL_TexParameterivRobustANGLE(GLenum target,GLenum pname,GLsizei bufSize,const GLint * params)1711 void GL_APIENTRY GL_TexParameterivRobustANGLE(GLenum target,
1712 GLenum pname,
1713 GLsizei bufSize,
1714 const GLint *params)
1715 {
1716 Context *context = GetValidGlobalContext();
1717 EVENT(context, GLTexParameterivRobustANGLE,
1718 "context = %d, target = %s, pname = %s, bufSize = %d, params = 0x%016" PRIxPTR "",
1719 CID(context), GLenumToString(GLenumGroup::DefaultGroup, target),
1720 GLenumToString(GLenumGroup::DefaultGroup, pname), bufSize, (uintptr_t)params);
1721
1722 if (context)
1723 {
1724 TextureType targetPacked = PackParam<TextureType>(target);
1725 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
1726 bool isCallValid = (context->skipValidation() ||
1727 ValidateTexParameterivRobustANGLE(
1728 context, angle::EntryPoint::GLTexParameterivRobustANGLE,
1729 targetPacked, pname, bufSize, params));
1730 if (isCallValid)
1731 {
1732 context->texParameterivRobust(targetPacked, pname, bufSize, params);
1733 }
1734 ANGLE_CAPTURE(TexParameterivRobustANGLE, isCallValid, context, targetPacked, pname, bufSize,
1735 params);
1736 }
1737 else
1738 {
1739 GenerateContextLostErrorOnCurrentGlobalContext();
1740 }
1741 }
1742
GL_TexSubImage2DRobustANGLE(GLenum target,GLint level,GLint xoffset,GLint yoffset,GLsizei width,GLsizei height,GLenum format,GLenum type,GLsizei bufSize,const void * pixels)1743 void GL_APIENTRY GL_TexSubImage2DRobustANGLE(GLenum target,
1744 GLint level,
1745 GLint xoffset,
1746 GLint yoffset,
1747 GLsizei width,
1748 GLsizei height,
1749 GLenum format,
1750 GLenum type,
1751 GLsizei bufSize,
1752 const void *pixels)
1753 {
1754 Context *context = GetValidGlobalContext();
1755 EVENT(context, GLTexSubImage2DRobustANGLE,
1756 "context = %d, target = %s, level = %d, xoffset = %d, yoffset = %d, width = %d, height = "
1757 "%d, format = %s, type = %s, bufSize = %d, pixels = 0x%016" PRIxPTR "",
1758 CID(context), GLenumToString(GLenumGroup::DefaultGroup, target), level, xoffset, yoffset,
1759 width, height, GLenumToString(GLenumGroup::DefaultGroup, format),
1760 GLenumToString(GLenumGroup::DefaultGroup, type), bufSize, (uintptr_t)pixels);
1761
1762 if (context)
1763 {
1764 TextureTarget targetPacked = PackParam<TextureTarget>(target);
1765 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
1766 bool isCallValid =
1767 (context->skipValidation() ||
1768 ValidateTexSubImage2DRobustANGLE(
1769 context, angle::EntryPoint::GLTexSubImage2DRobustANGLE, targetPacked, level,
1770 xoffset, yoffset, width, height, format, type, bufSize, pixels));
1771 if (isCallValid)
1772 {
1773 context->texSubImage2DRobust(targetPacked, level, xoffset, yoffset, width, height,
1774 format, type, bufSize, pixels);
1775 }
1776 ANGLE_CAPTURE(TexSubImage2DRobustANGLE, isCallValid, context, targetPacked, level, xoffset,
1777 yoffset, width, height, format, type, bufSize, pixels);
1778 }
1779 else
1780 {
1781 GenerateContextLostErrorOnCurrentGlobalContext();
1782 }
1783 }
1784
GL_TexImage3DRobustANGLE(GLenum target,GLint level,GLint internalformat,GLsizei width,GLsizei height,GLsizei depth,GLint border,GLenum format,GLenum type,GLsizei bufSize,const void * pixels)1785 void GL_APIENTRY GL_TexImage3DRobustANGLE(GLenum target,
1786 GLint level,
1787 GLint internalformat,
1788 GLsizei width,
1789 GLsizei height,
1790 GLsizei depth,
1791 GLint border,
1792 GLenum format,
1793 GLenum type,
1794 GLsizei bufSize,
1795 const void *pixels)
1796 {
1797 Context *context = GetValidGlobalContext();
1798 EVENT(context, GLTexImage3DRobustANGLE,
1799 "context = %d, target = %s, level = %d, internalformat = %d, width = %d, height = %d, "
1800 "depth = %d, border = %d, format = %s, type = %s, bufSize = %d, pixels = 0x%016" PRIxPTR
1801 "",
1802 CID(context), GLenumToString(GLenumGroup::DefaultGroup, target), level, internalformat,
1803 width, height, depth, border, GLenumToString(GLenumGroup::DefaultGroup, format),
1804 GLenumToString(GLenumGroup::DefaultGroup, type), bufSize, (uintptr_t)pixels);
1805
1806 if (context)
1807 {
1808 TextureTarget targetPacked = PackParam<TextureTarget>(target);
1809 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
1810 bool isCallValid =
1811 (context->skipValidation() ||
1812 ValidateTexImage3DRobustANGLE(context, angle::EntryPoint::GLTexImage3DRobustANGLE,
1813 targetPacked, level, internalformat, width, height,
1814 depth, border, format, type, bufSize, pixels));
1815 if (isCallValid)
1816 {
1817 context->texImage3DRobust(targetPacked, level, internalformat, width, height, depth,
1818 border, format, type, bufSize, pixels);
1819 }
1820 ANGLE_CAPTURE(TexImage3DRobustANGLE, isCallValid, context, targetPacked, level,
1821 internalformat, width, height, depth, border, format, type, bufSize, pixels);
1822 }
1823 else
1824 {
1825 GenerateContextLostErrorOnCurrentGlobalContext();
1826 }
1827 }
1828
GL_TexSubImage3DRobustANGLE(GLenum target,GLint level,GLint xoffset,GLint yoffset,GLint zoffset,GLsizei width,GLsizei height,GLsizei depth,GLenum format,GLenum type,GLsizei bufSize,const void * pixels)1829 void GL_APIENTRY GL_TexSubImage3DRobustANGLE(GLenum target,
1830 GLint level,
1831 GLint xoffset,
1832 GLint yoffset,
1833 GLint zoffset,
1834 GLsizei width,
1835 GLsizei height,
1836 GLsizei depth,
1837 GLenum format,
1838 GLenum type,
1839 GLsizei bufSize,
1840 const void *pixels)
1841 {
1842 Context *context = GetValidGlobalContext();
1843 EVENT(
1844 context, GLTexSubImage3DRobustANGLE,
1845 "context = %d, target = %s, level = %d, xoffset = %d, yoffset = %d, zoffset = %d, width = "
1846 "%d, height = %d, depth = %d, format = %s, type = %s, bufSize = %d, pixels = 0x%016" PRIxPTR
1847 "",
1848 CID(context), GLenumToString(GLenumGroup::DefaultGroup, target), level, xoffset, yoffset,
1849 zoffset, width, height, depth, GLenumToString(GLenumGroup::DefaultGroup, format),
1850 GLenumToString(GLenumGroup::DefaultGroup, type), bufSize, (uintptr_t)pixels);
1851
1852 if (context)
1853 {
1854 TextureTarget targetPacked = PackParam<TextureTarget>(target);
1855 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
1856 bool isCallValid =
1857 (context->skipValidation() ||
1858 ValidateTexSubImage3DRobustANGLE(
1859 context, angle::EntryPoint::GLTexSubImage3DRobustANGLE, targetPacked, level,
1860 xoffset, yoffset, zoffset, width, height, depth, format, type, bufSize, pixels));
1861 if (isCallValid)
1862 {
1863 context->texSubImage3DRobust(targetPacked, level, xoffset, yoffset, zoffset, width,
1864 height, depth, format, type, bufSize, pixels);
1865 }
1866 ANGLE_CAPTURE(TexSubImage3DRobustANGLE, isCallValid, context, targetPacked, level, xoffset,
1867 yoffset, zoffset, width, height, depth, format, type, bufSize, pixels);
1868 }
1869 else
1870 {
1871 GenerateContextLostErrorOnCurrentGlobalContext();
1872 }
1873 }
1874
GL_CompressedTexImage2DRobustANGLE(GLenum target,GLint level,GLenum internalformat,GLsizei width,GLsizei height,GLint border,GLsizei imageSize,GLsizei dataSize,const GLvoid * data)1875 void GL_APIENTRY GL_CompressedTexImage2DRobustANGLE(GLenum target,
1876 GLint level,
1877 GLenum internalformat,
1878 GLsizei width,
1879 GLsizei height,
1880 GLint border,
1881 GLsizei imageSize,
1882 GLsizei dataSize,
1883 const GLvoid *data)
1884 {
1885 Context *context = GetValidGlobalContext();
1886 EVENT(context, GLCompressedTexImage2DRobustANGLE,
1887 "context = %d, target = %s, level = %d, internalformat = %s, width = %d, height = %d, "
1888 "border = %d, imageSize = %d, dataSize = %d, data = 0x%016" PRIxPTR "",
1889 CID(context), GLenumToString(GLenumGroup::DefaultGroup, target), level,
1890 GLenumToString(GLenumGroup::DefaultGroup, internalformat), width, height, border,
1891 imageSize, dataSize, (uintptr_t)data);
1892
1893 if (context)
1894 {
1895 TextureTarget targetPacked = PackParam<TextureTarget>(target);
1896 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
1897 bool isCallValid =
1898 (context->skipValidation() ||
1899 ValidateCompressedTexImage2DRobustANGLE(
1900 context, angle::EntryPoint::GLCompressedTexImage2DRobustANGLE, targetPacked, level,
1901 internalformat, width, height, border, imageSize, dataSize, data));
1902 if (isCallValid)
1903 {
1904 context->compressedTexImage2DRobust(targetPacked, level, internalformat, width, height,
1905 border, imageSize, dataSize, data);
1906 }
1907 ANGLE_CAPTURE(CompressedTexImage2DRobustANGLE, isCallValid, context, targetPacked, level,
1908 internalformat, width, height, border, imageSize, dataSize, data);
1909 }
1910 else
1911 {
1912 GenerateContextLostErrorOnCurrentGlobalContext();
1913 }
1914 }
1915
GL_CompressedTexSubImage2DRobustANGLE(GLenum target,GLint level,GLsizei xoffset,GLsizei yoffset,GLsizei width,GLsizei height,GLenum format,GLsizei imageSize,GLsizei dataSize,const GLvoid * data)1916 void GL_APIENTRY GL_CompressedTexSubImage2DRobustANGLE(GLenum target,
1917 GLint level,
1918 GLsizei xoffset,
1919 GLsizei yoffset,
1920 GLsizei width,
1921 GLsizei height,
1922 GLenum format,
1923 GLsizei imageSize,
1924 GLsizei dataSize,
1925 const GLvoid *data)
1926 {
1927 Context *context = GetValidGlobalContext();
1928 EVENT(context, GLCompressedTexSubImage2DRobustANGLE,
1929 "context = %d, target = %s, level = %d, xoffset = %d, yoffset = %d, width = %d, height = "
1930 "%d, format = %s, imageSize = %d, dataSize = %d, data = 0x%016" PRIxPTR "",
1931 CID(context), GLenumToString(GLenumGroup::DefaultGroup, target), level, xoffset, yoffset,
1932 width, height, GLenumToString(GLenumGroup::DefaultGroup, format), imageSize, dataSize,
1933 (uintptr_t)data);
1934
1935 if (context)
1936 {
1937 TextureTarget targetPacked = PackParam<TextureTarget>(target);
1938 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
1939 bool isCallValid =
1940 (context->skipValidation() ||
1941 ValidateCompressedTexSubImage2DRobustANGLE(
1942 context, angle::EntryPoint::GLCompressedTexSubImage2DRobustANGLE, targetPacked,
1943 level, xoffset, yoffset, width, height, format, imageSize, dataSize, data));
1944 if (isCallValid)
1945 {
1946 context->compressedTexSubImage2DRobust(targetPacked, level, xoffset, yoffset, width,
1947 height, format, imageSize, dataSize, data);
1948 }
1949 ANGLE_CAPTURE(CompressedTexSubImage2DRobustANGLE, isCallValid, context, targetPacked, level,
1950 xoffset, yoffset, width, height, format, imageSize, dataSize, data);
1951 }
1952 else
1953 {
1954 GenerateContextLostErrorOnCurrentGlobalContext();
1955 }
1956 }
1957
GL_CompressedTexImage3DRobustANGLE(GLenum target,GLint level,GLenum internalformat,GLsizei width,GLsizei height,GLsizei depth,GLint border,GLsizei imageSize,GLsizei dataSize,const GLvoid * data)1958 void GL_APIENTRY GL_CompressedTexImage3DRobustANGLE(GLenum target,
1959 GLint level,
1960 GLenum internalformat,
1961 GLsizei width,
1962 GLsizei height,
1963 GLsizei depth,
1964 GLint border,
1965 GLsizei imageSize,
1966 GLsizei dataSize,
1967 const GLvoid *data)
1968 {
1969 Context *context = GetValidGlobalContext();
1970 EVENT(context, GLCompressedTexImage3DRobustANGLE,
1971 "context = %d, target = %s, level = %d, internalformat = %s, width = %d, height = %d, "
1972 "depth = %d, border = %d, imageSize = %d, dataSize = %d, data = 0x%016" PRIxPTR "",
1973 CID(context), GLenumToString(GLenumGroup::DefaultGroup, target), level,
1974 GLenumToString(GLenumGroup::DefaultGroup, internalformat), width, height, depth, border,
1975 imageSize, dataSize, (uintptr_t)data);
1976
1977 if (context)
1978 {
1979 TextureTarget targetPacked = PackParam<TextureTarget>(target);
1980 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
1981 bool isCallValid =
1982 (context->skipValidation() ||
1983 ValidateCompressedTexImage3DRobustANGLE(
1984 context, angle::EntryPoint::GLCompressedTexImage3DRobustANGLE, targetPacked, level,
1985 internalformat, width, height, depth, border, imageSize, dataSize, data));
1986 if (isCallValid)
1987 {
1988 context->compressedTexImage3DRobust(targetPacked, level, internalformat, width, height,
1989 depth, border, imageSize, dataSize, data);
1990 }
1991 ANGLE_CAPTURE(CompressedTexImage3DRobustANGLE, isCallValid, context, targetPacked, level,
1992 internalformat, width, height, depth, border, imageSize, dataSize, data);
1993 }
1994 else
1995 {
1996 GenerateContextLostErrorOnCurrentGlobalContext();
1997 }
1998 }
1999
GL_CompressedTexSubImage3DRobustANGLE(GLenum target,GLint level,GLint xoffset,GLint yoffset,GLint zoffset,GLsizei width,GLsizei height,GLsizei depth,GLenum format,GLsizei imageSize,GLsizei dataSize,const GLvoid * data)2000 void GL_APIENTRY GL_CompressedTexSubImage3DRobustANGLE(GLenum target,
2001 GLint level,
2002 GLint xoffset,
2003 GLint yoffset,
2004 GLint zoffset,
2005 GLsizei width,
2006 GLsizei height,
2007 GLsizei depth,
2008 GLenum format,
2009 GLsizei imageSize,
2010 GLsizei dataSize,
2011 const GLvoid *data)
2012 {
2013 Context *context = GetValidGlobalContext();
2014 EVENT(context, GLCompressedTexSubImage3DRobustANGLE,
2015 "context = %d, target = %s, level = %d, xoffset = %d, yoffset = %d, zoffset = %d, width "
2016 "= %d, height = %d, depth = %d, format = %s, imageSize = %d, dataSize = %d, data = "
2017 "0x%016" PRIxPTR "",
2018 CID(context), GLenumToString(GLenumGroup::DefaultGroup, target), level, xoffset, yoffset,
2019 zoffset, width, height, depth, GLenumToString(GLenumGroup::DefaultGroup, format),
2020 imageSize, dataSize, (uintptr_t)data);
2021
2022 if (context)
2023 {
2024 TextureTarget targetPacked = PackParam<TextureTarget>(target);
2025 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
2026 bool isCallValid = (context->skipValidation() ||
2027 ValidateCompressedTexSubImage3DRobustANGLE(
2028 context, angle::EntryPoint::GLCompressedTexSubImage3DRobustANGLE,
2029 targetPacked, level, xoffset, yoffset, zoffset, width, height,
2030 depth, format, imageSize, dataSize, data));
2031 if (isCallValid)
2032 {
2033 context->compressedTexSubImage3DRobust(targetPacked, level, xoffset, yoffset, zoffset,
2034 width, height, depth, format, imageSize,
2035 dataSize, data);
2036 }
2037 ANGLE_CAPTURE(CompressedTexSubImage3DRobustANGLE, isCallValid, context, targetPacked, level,
2038 xoffset, yoffset, zoffset, width, height, depth, format, imageSize, dataSize,
2039 data);
2040 }
2041 else
2042 {
2043 GenerateContextLostErrorOnCurrentGlobalContext();
2044 }
2045 }
2046
GL_GetQueryivRobustANGLE(GLenum target,GLenum pname,GLsizei bufSize,GLsizei * length,GLint * params)2047 void GL_APIENTRY GL_GetQueryivRobustANGLE(GLenum target,
2048 GLenum pname,
2049 GLsizei bufSize,
2050 GLsizei *length,
2051 GLint *params)
2052 {
2053 Context *context = GetValidGlobalContext();
2054 EVENT(context, GLGetQueryivRobustANGLE,
2055 "context = %d, target = %s, pname = %s, bufSize = %d, length = 0x%016" PRIxPTR
2056 ", params = 0x%016" PRIxPTR "",
2057 CID(context), GLenumToString(GLenumGroup::DefaultGroup, target),
2058 GLenumToString(GLenumGroup::DefaultGroup, pname), bufSize, (uintptr_t)length,
2059 (uintptr_t)params);
2060
2061 if (context)
2062 {
2063 QueryType targetPacked = PackParam<QueryType>(target);
2064 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
2065 bool isCallValid =
2066 (context->skipValidation() ||
2067 ValidateGetQueryivRobustANGLE(context, angle::EntryPoint::GLGetQueryivRobustANGLE,
2068 targetPacked, pname, bufSize, length, params));
2069 if (isCallValid)
2070 {
2071 context->getQueryivRobust(targetPacked, pname, bufSize, length, params);
2072 }
2073 ANGLE_CAPTURE(GetQueryivRobustANGLE, isCallValid, context, targetPacked, pname, bufSize,
2074 length, params);
2075 }
2076 else
2077 {
2078 GenerateContextLostErrorOnCurrentGlobalContext();
2079 }
2080 }
2081
GL_GetQueryObjectuivRobustANGLE(GLuint id,GLenum pname,GLsizei bufSize,GLsizei * length,GLuint * params)2082 void GL_APIENTRY GL_GetQueryObjectuivRobustANGLE(GLuint id,
2083 GLenum pname,
2084 GLsizei bufSize,
2085 GLsizei *length,
2086 GLuint *params)
2087 {
2088 Context *context = GetValidGlobalContext();
2089 EVENT(context, GLGetQueryObjectuivRobustANGLE,
2090 "context = %d, id = %u, pname = %s, bufSize = %d, length = 0x%016" PRIxPTR
2091 ", params = 0x%016" PRIxPTR "",
2092 CID(context), id, GLenumToString(GLenumGroup::DefaultGroup, pname), bufSize,
2093 (uintptr_t)length, (uintptr_t)params);
2094
2095 if (context)
2096 {
2097 QueryID idPacked = PackParam<QueryID>(id);
2098 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
2099 bool isCallValid = (context->skipValidation() ||
2100 ValidateGetQueryObjectuivRobustANGLE(
2101 context, angle::EntryPoint::GLGetQueryObjectuivRobustANGLE,
2102 idPacked, pname, bufSize, length, params));
2103 if (isCallValid)
2104 {
2105 context->getQueryObjectuivRobust(idPacked, pname, bufSize, length, params);
2106 }
2107 ANGLE_CAPTURE(GetQueryObjectuivRobustANGLE, isCallValid, context, idPacked, pname, bufSize,
2108 length, params);
2109 }
2110 else
2111 {
2112 GenerateContextLostErrorOnCurrentGlobalContext();
2113 }
2114 }
2115
GL_GetBufferPointervRobustANGLE(GLenum target,GLenum pname,GLsizei bufSize,GLsizei * length,void ** params)2116 void GL_APIENTRY GL_GetBufferPointervRobustANGLE(GLenum target,
2117 GLenum pname,
2118 GLsizei bufSize,
2119 GLsizei *length,
2120 void **params)
2121 {
2122 Context *context = GetValidGlobalContext();
2123 EVENT(context, GLGetBufferPointervRobustANGLE,
2124 "context = %d, target = %s, pname = %s, bufSize = %d, length = 0x%016" PRIxPTR
2125 ", params = 0x%016" PRIxPTR "",
2126 CID(context), GLenumToString(GLenumGroup::DefaultGroup, target),
2127 GLenumToString(GLenumGroup::DefaultGroup, pname), bufSize, (uintptr_t)length,
2128 (uintptr_t)params);
2129
2130 if (context)
2131 {
2132 BufferBinding targetPacked = PackParam<BufferBinding>(target);
2133 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
2134 bool isCallValid = (context->skipValidation() ||
2135 ValidateGetBufferPointervRobustANGLE(
2136 context, angle::EntryPoint::GLGetBufferPointervRobustANGLE,
2137 targetPacked, pname, bufSize, length, params));
2138 if (isCallValid)
2139 {
2140 context->getBufferPointervRobust(targetPacked, pname, bufSize, length, params);
2141 }
2142 ANGLE_CAPTURE(GetBufferPointervRobustANGLE, isCallValid, context, targetPacked, pname,
2143 bufSize, length, params);
2144 }
2145 else
2146 {
2147 GenerateContextLostErrorOnCurrentGlobalContext();
2148 }
2149 }
2150
GL_GetIntegeri_vRobustANGLE(GLenum target,GLuint index,GLsizei bufSize,GLsizei * length,GLint * data)2151 void GL_APIENTRY GL_GetIntegeri_vRobustANGLE(GLenum target,
2152 GLuint index,
2153 GLsizei bufSize,
2154 GLsizei *length,
2155 GLint *data)
2156 {
2157 Context *context = GetValidGlobalContext();
2158 EVENT(context, GLGetIntegeri_vRobustANGLE,
2159 "context = %d, target = %s, index = %u, bufSize = %d, length = 0x%016" PRIxPTR
2160 ", data = 0x%016" PRIxPTR "",
2161 CID(context), GLenumToString(GLenumGroup::DefaultGroup, target), index, bufSize,
2162 (uintptr_t)length, (uintptr_t)data);
2163
2164 if (context)
2165 {
2166 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
2167 bool isCallValid = (context->skipValidation() ||
2168 ValidateGetIntegeri_vRobustANGLE(
2169 context, angle::EntryPoint::GLGetIntegeri_vRobustANGLE, target,
2170 index, bufSize, length, data));
2171 if (isCallValid)
2172 {
2173 context->getIntegeri_vRobust(target, index, bufSize, length, data);
2174 }
2175 ANGLE_CAPTURE(GetIntegeri_vRobustANGLE, isCallValid, context, target, index, bufSize,
2176 length, data);
2177 }
2178 else
2179 {
2180 GenerateContextLostErrorOnCurrentGlobalContext();
2181 }
2182 }
2183
GL_GetInternalformativRobustANGLE(GLenum target,GLenum internalformat,GLenum pname,GLsizei bufSize,GLsizei * length,GLint * params)2184 void GL_APIENTRY GL_GetInternalformativRobustANGLE(GLenum target,
2185 GLenum internalformat,
2186 GLenum pname,
2187 GLsizei bufSize,
2188 GLsizei *length,
2189 GLint *params)
2190 {
2191 Context *context = GetValidGlobalContext();
2192 EVENT(context, GLGetInternalformativRobustANGLE,
2193 "context = %d, target = %s, internalformat = %s, pname = %s, bufSize = %d, length = "
2194 "0x%016" PRIxPTR ", params = 0x%016" PRIxPTR "",
2195 CID(context), GLenumToString(GLenumGroup::DefaultGroup, target),
2196 GLenumToString(GLenumGroup::DefaultGroup, internalformat),
2197 GLenumToString(GLenumGroup::DefaultGroup, pname), bufSize, (uintptr_t)length,
2198 (uintptr_t)params);
2199
2200 if (context)
2201 {
2202 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
2203 bool isCallValid = (context->skipValidation() ||
2204 ValidateGetInternalformativRobustANGLE(
2205 context, angle::EntryPoint::GLGetInternalformativRobustANGLE,
2206 target, internalformat, pname, bufSize, length, params));
2207 if (isCallValid)
2208 {
2209 context->getInternalformativRobust(target, internalformat, pname, bufSize, length,
2210 params);
2211 }
2212 ANGLE_CAPTURE(GetInternalformativRobustANGLE, isCallValid, context, target, internalformat,
2213 pname, bufSize, length, params);
2214 }
2215 else
2216 {
2217 GenerateContextLostErrorOnCurrentGlobalContext();
2218 }
2219 }
2220
GL_GetVertexAttribIivRobustANGLE(GLuint index,GLenum pname,GLsizei bufSize,GLsizei * length,GLint * params)2221 void GL_APIENTRY GL_GetVertexAttribIivRobustANGLE(GLuint index,
2222 GLenum pname,
2223 GLsizei bufSize,
2224 GLsizei *length,
2225 GLint *params)
2226 {
2227 Context *context = GetValidGlobalContext();
2228 EVENT(context, GLGetVertexAttribIivRobustANGLE,
2229 "context = %d, index = %u, pname = %s, bufSize = %d, length = 0x%016" PRIxPTR
2230 ", params = 0x%016" PRIxPTR "",
2231 CID(context), index, GLenumToString(GLenumGroup::DefaultGroup, pname), bufSize,
2232 (uintptr_t)length, (uintptr_t)params);
2233
2234 if (context)
2235 {
2236 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
2237 bool isCallValid = (context->skipValidation() ||
2238 ValidateGetVertexAttribIivRobustANGLE(
2239 context, angle::EntryPoint::GLGetVertexAttribIivRobustANGLE, index,
2240 pname, bufSize, length, params));
2241 if (isCallValid)
2242 {
2243 context->getVertexAttribIivRobust(index, pname, bufSize, length, params);
2244 }
2245 ANGLE_CAPTURE(GetVertexAttribIivRobustANGLE, isCallValid, context, index, pname, bufSize,
2246 length, params);
2247 }
2248 else
2249 {
2250 GenerateContextLostErrorOnCurrentGlobalContext();
2251 }
2252 }
2253
GL_GetVertexAttribIuivRobustANGLE(GLuint index,GLenum pname,GLsizei bufSize,GLsizei * length,GLuint * params)2254 void GL_APIENTRY GL_GetVertexAttribIuivRobustANGLE(GLuint index,
2255 GLenum pname,
2256 GLsizei bufSize,
2257 GLsizei *length,
2258 GLuint *params)
2259 {
2260 Context *context = GetValidGlobalContext();
2261 EVENT(context, GLGetVertexAttribIuivRobustANGLE,
2262 "context = %d, index = %u, pname = %s, bufSize = %d, length = 0x%016" PRIxPTR
2263 ", params = 0x%016" PRIxPTR "",
2264 CID(context), index, GLenumToString(GLenumGroup::DefaultGroup, pname), bufSize,
2265 (uintptr_t)length, (uintptr_t)params);
2266
2267 if (context)
2268 {
2269 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
2270 bool isCallValid = (context->skipValidation() ||
2271 ValidateGetVertexAttribIuivRobustANGLE(
2272 context, angle::EntryPoint::GLGetVertexAttribIuivRobustANGLE, index,
2273 pname, bufSize, length, params));
2274 if (isCallValid)
2275 {
2276 context->getVertexAttribIuivRobust(index, pname, bufSize, length, params);
2277 }
2278 ANGLE_CAPTURE(GetVertexAttribIuivRobustANGLE, isCallValid, context, index, pname, bufSize,
2279 length, params);
2280 }
2281 else
2282 {
2283 GenerateContextLostErrorOnCurrentGlobalContext();
2284 }
2285 }
2286
GL_GetUniformuivRobustANGLE(GLuint program,GLint location,GLsizei bufSize,GLsizei * length,GLuint * params)2287 void GL_APIENTRY GL_GetUniformuivRobustANGLE(GLuint program,
2288 GLint location,
2289 GLsizei bufSize,
2290 GLsizei *length,
2291 GLuint *params)
2292 {
2293 Context *context = GetValidGlobalContext();
2294 EVENT(context, GLGetUniformuivRobustANGLE,
2295 "context = %d, program = %u, location = %d, bufSize = %d, length = 0x%016" PRIxPTR
2296 ", params = 0x%016" PRIxPTR "",
2297 CID(context), program, location, bufSize, (uintptr_t)length, (uintptr_t)params);
2298
2299 if (context)
2300 {
2301 ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);
2302 UniformLocation locationPacked = PackParam<UniformLocation>(location);
2303 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
2304 bool isCallValid = (context->skipValidation() ||
2305 ValidateGetUniformuivRobustANGLE(
2306 context, angle::EntryPoint::GLGetUniformuivRobustANGLE,
2307 programPacked, locationPacked, bufSize, length, params));
2308 if (isCallValid)
2309 {
2310 context->getUniformuivRobust(programPacked, locationPacked, bufSize, length, params);
2311 }
2312 ANGLE_CAPTURE(GetUniformuivRobustANGLE, isCallValid, context, programPacked, locationPacked,
2313 bufSize, length, params);
2314 }
2315 else
2316 {
2317 GenerateContextLostErrorOnCurrentGlobalContext();
2318 }
2319 }
2320
GL_GetActiveUniformBlockivRobustANGLE(GLuint program,GLuint uniformBlockIndex,GLenum pname,GLsizei bufSize,GLsizei * length,GLint * params)2321 void GL_APIENTRY GL_GetActiveUniformBlockivRobustANGLE(GLuint program,
2322 GLuint uniformBlockIndex,
2323 GLenum pname,
2324 GLsizei bufSize,
2325 GLsizei *length,
2326 GLint *params)
2327 {
2328 Context *context = GetValidGlobalContext();
2329 EVENT(context, GLGetActiveUniformBlockivRobustANGLE,
2330 "context = %d, program = %u, uniformBlockIndex = %u, pname = %s, bufSize = %d, length = "
2331 "0x%016" PRIxPTR ", params = 0x%016" PRIxPTR "",
2332 CID(context), program, uniformBlockIndex,
2333 GLenumToString(GLenumGroup::DefaultGroup, pname), bufSize, (uintptr_t)length,
2334 (uintptr_t)params);
2335
2336 if (context)
2337 {
2338 ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);
2339 UniformBlockIndex uniformBlockIndexPacked = PackParam<UniformBlockIndex>(uniformBlockIndex);
2340 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
2341 bool isCallValid =
2342 (context->skipValidation() ||
2343 ValidateGetActiveUniformBlockivRobustANGLE(
2344 context, angle::EntryPoint::GLGetActiveUniformBlockivRobustANGLE, programPacked,
2345 uniformBlockIndexPacked, pname, bufSize, length, params));
2346 if (isCallValid)
2347 {
2348 context->getActiveUniformBlockivRobust(programPacked, uniformBlockIndexPacked, pname,
2349 bufSize, length, params);
2350 }
2351 ANGLE_CAPTURE(GetActiveUniformBlockivRobustANGLE, isCallValid, context, programPacked,
2352 uniformBlockIndexPacked, pname, bufSize, length, params);
2353 }
2354 else
2355 {
2356 GenerateContextLostErrorOnCurrentGlobalContext();
2357 }
2358 }
2359
GL_GetInteger64vRobustANGLE(GLenum pname,GLsizei bufSize,GLsizei * length,GLint64 * data)2360 void GL_APIENTRY GL_GetInteger64vRobustANGLE(GLenum pname,
2361 GLsizei bufSize,
2362 GLsizei *length,
2363 GLint64 *data)
2364 {
2365 Context *context = GetValidGlobalContext();
2366 EVENT(context, GLGetInteger64vRobustANGLE,
2367 "context = %d, pname = %s, bufSize = %d, length = 0x%016" PRIxPTR
2368 ", data = 0x%016" PRIxPTR "",
2369 CID(context), GLenumToString(GLenumGroup::DefaultGroup, pname), bufSize,
2370 (uintptr_t)length, (uintptr_t)data);
2371
2372 if (context)
2373 {
2374 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
2375 bool isCallValid = (context->skipValidation() ||
2376 ValidateGetInteger64vRobustANGLE(
2377 context, angle::EntryPoint::GLGetInteger64vRobustANGLE, pname,
2378 bufSize, length, data));
2379 if (isCallValid)
2380 {
2381 context->getInteger64vRobust(pname, bufSize, length, data);
2382 }
2383 ANGLE_CAPTURE(GetInteger64vRobustANGLE, isCallValid, context, pname, bufSize, length, data);
2384 }
2385 else
2386 {
2387 GenerateContextLostErrorOnCurrentGlobalContext();
2388 }
2389 }
2390
GL_GetInteger64i_vRobustANGLE(GLenum target,GLuint index,GLsizei bufSize,GLsizei * length,GLint64 * data)2391 void GL_APIENTRY GL_GetInteger64i_vRobustANGLE(GLenum target,
2392 GLuint index,
2393 GLsizei bufSize,
2394 GLsizei *length,
2395 GLint64 *data)
2396 {
2397 Context *context = GetValidGlobalContext();
2398 EVENT(context, GLGetInteger64i_vRobustANGLE,
2399 "context = %d, target = %s, index = %u, bufSize = %d, length = 0x%016" PRIxPTR
2400 ", data = 0x%016" PRIxPTR "",
2401 CID(context), GLenumToString(GLenumGroup::DefaultGroup, target), index, bufSize,
2402 (uintptr_t)length, (uintptr_t)data);
2403
2404 if (context)
2405 {
2406 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
2407 bool isCallValid = (context->skipValidation() ||
2408 ValidateGetInteger64i_vRobustANGLE(
2409 context, angle::EntryPoint::GLGetInteger64i_vRobustANGLE, target,
2410 index, bufSize, length, data));
2411 if (isCallValid)
2412 {
2413 context->getInteger64i_vRobust(target, index, bufSize, length, data);
2414 }
2415 ANGLE_CAPTURE(GetInteger64i_vRobustANGLE, isCallValid, context, target, index, bufSize,
2416 length, data);
2417 }
2418 else
2419 {
2420 GenerateContextLostErrorOnCurrentGlobalContext();
2421 }
2422 }
2423
GL_GetBufferParameteri64vRobustANGLE(GLenum target,GLenum pname,GLsizei bufSize,GLsizei * length,GLint64 * params)2424 void GL_APIENTRY GL_GetBufferParameteri64vRobustANGLE(GLenum target,
2425 GLenum pname,
2426 GLsizei bufSize,
2427 GLsizei *length,
2428 GLint64 *params)
2429 {
2430 Context *context = GetValidGlobalContext();
2431 EVENT(context, GLGetBufferParameteri64vRobustANGLE,
2432 "context = %d, target = %s, pname = %s, bufSize = %d, length = 0x%016" PRIxPTR
2433 ", params = 0x%016" PRIxPTR "",
2434 CID(context), GLenumToString(GLenumGroup::DefaultGroup, target),
2435 GLenumToString(GLenumGroup::DefaultGroup, pname), bufSize, (uintptr_t)length,
2436 (uintptr_t)params);
2437
2438 if (context)
2439 {
2440 BufferBinding targetPacked = PackParam<BufferBinding>(target);
2441 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
2442 bool isCallValid = (context->skipValidation() ||
2443 ValidateGetBufferParameteri64vRobustANGLE(
2444 context, angle::EntryPoint::GLGetBufferParameteri64vRobustANGLE,
2445 targetPacked, pname, bufSize, length, params));
2446 if (isCallValid)
2447 {
2448 context->getBufferParameteri64vRobust(targetPacked, pname, bufSize, length, params);
2449 }
2450 ANGLE_CAPTURE(GetBufferParameteri64vRobustANGLE, isCallValid, context, targetPacked, pname,
2451 bufSize, length, params);
2452 }
2453 else
2454 {
2455 GenerateContextLostErrorOnCurrentGlobalContext();
2456 }
2457 }
2458
GL_SamplerParameterivRobustANGLE(GLuint sampler,GLuint pname,GLsizei bufSize,const GLint * param)2459 void GL_APIENTRY GL_SamplerParameterivRobustANGLE(GLuint sampler,
2460 GLuint pname,
2461 GLsizei bufSize,
2462 const GLint *param)
2463 {
2464 Context *context = GetValidGlobalContext();
2465 EVENT(context, GLSamplerParameterivRobustANGLE,
2466 "context = %d, sampler = %u, pname = %u, bufSize = %d, param = 0x%016" PRIxPTR "",
2467 CID(context), sampler, pname, bufSize, (uintptr_t)param);
2468
2469 if (context)
2470 {
2471 SamplerID samplerPacked = PackParam<SamplerID>(sampler);
2472 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
2473 bool isCallValid = (context->skipValidation() ||
2474 ValidateSamplerParameterivRobustANGLE(
2475 context, angle::EntryPoint::GLSamplerParameterivRobustANGLE,
2476 samplerPacked, pname, bufSize, param));
2477 if (isCallValid)
2478 {
2479 context->samplerParameterivRobust(samplerPacked, pname, bufSize, param);
2480 }
2481 ANGLE_CAPTURE(SamplerParameterivRobustANGLE, isCallValid, context, samplerPacked, pname,
2482 bufSize, param);
2483 }
2484 else
2485 {
2486 GenerateContextLostErrorOnCurrentGlobalContext();
2487 }
2488 }
2489
GL_SamplerParameterfvRobustANGLE(GLuint sampler,GLenum pname,GLsizei bufSize,const GLfloat * param)2490 void GL_APIENTRY GL_SamplerParameterfvRobustANGLE(GLuint sampler,
2491 GLenum pname,
2492 GLsizei bufSize,
2493 const GLfloat *param)
2494 {
2495 Context *context = GetValidGlobalContext();
2496 EVENT(context, GLSamplerParameterfvRobustANGLE,
2497 "context = %d, sampler = %u, pname = %s, bufSize = %d, param = 0x%016" PRIxPTR "",
2498 CID(context), sampler, GLenumToString(GLenumGroup::DefaultGroup, pname), bufSize,
2499 (uintptr_t)param);
2500
2501 if (context)
2502 {
2503 SamplerID samplerPacked = PackParam<SamplerID>(sampler);
2504 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
2505 bool isCallValid = (context->skipValidation() ||
2506 ValidateSamplerParameterfvRobustANGLE(
2507 context, angle::EntryPoint::GLSamplerParameterfvRobustANGLE,
2508 samplerPacked, pname, bufSize, param));
2509 if (isCallValid)
2510 {
2511 context->samplerParameterfvRobust(samplerPacked, pname, bufSize, param);
2512 }
2513 ANGLE_CAPTURE(SamplerParameterfvRobustANGLE, isCallValid, context, samplerPacked, pname,
2514 bufSize, param);
2515 }
2516 else
2517 {
2518 GenerateContextLostErrorOnCurrentGlobalContext();
2519 }
2520 }
2521
GL_GetSamplerParameterivRobustANGLE(GLuint sampler,GLenum pname,GLsizei bufSize,GLsizei * length,GLint * params)2522 void GL_APIENTRY GL_GetSamplerParameterivRobustANGLE(GLuint sampler,
2523 GLenum pname,
2524 GLsizei bufSize,
2525 GLsizei *length,
2526 GLint *params)
2527 {
2528 Context *context = GetValidGlobalContext();
2529 EVENT(context, GLGetSamplerParameterivRobustANGLE,
2530 "context = %d, sampler = %u, pname = %s, bufSize = %d, length = 0x%016" PRIxPTR
2531 ", params = 0x%016" PRIxPTR "",
2532 CID(context), sampler, GLenumToString(GLenumGroup::DefaultGroup, pname), bufSize,
2533 (uintptr_t)length, (uintptr_t)params);
2534
2535 if (context)
2536 {
2537 SamplerID samplerPacked = PackParam<SamplerID>(sampler);
2538 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
2539 bool isCallValid = (context->skipValidation() ||
2540 ValidateGetSamplerParameterivRobustANGLE(
2541 context, angle::EntryPoint::GLGetSamplerParameterivRobustANGLE,
2542 samplerPacked, pname, bufSize, length, params));
2543 if (isCallValid)
2544 {
2545 context->getSamplerParameterivRobust(samplerPacked, pname, bufSize, length, params);
2546 }
2547 ANGLE_CAPTURE(GetSamplerParameterivRobustANGLE, isCallValid, context, samplerPacked, pname,
2548 bufSize, length, params);
2549 }
2550 else
2551 {
2552 GenerateContextLostErrorOnCurrentGlobalContext();
2553 }
2554 }
2555
GL_GetSamplerParameterfvRobustANGLE(GLuint sampler,GLenum pname,GLsizei bufSize,GLsizei * length,GLfloat * params)2556 void GL_APIENTRY GL_GetSamplerParameterfvRobustANGLE(GLuint sampler,
2557 GLenum pname,
2558 GLsizei bufSize,
2559 GLsizei *length,
2560 GLfloat *params)
2561 {
2562 Context *context = GetValidGlobalContext();
2563 EVENT(context, GLGetSamplerParameterfvRobustANGLE,
2564 "context = %d, sampler = %u, pname = %s, bufSize = %d, length = 0x%016" PRIxPTR
2565 ", params = 0x%016" PRIxPTR "",
2566 CID(context), sampler, GLenumToString(GLenumGroup::DefaultGroup, pname), bufSize,
2567 (uintptr_t)length, (uintptr_t)params);
2568
2569 if (context)
2570 {
2571 SamplerID samplerPacked = PackParam<SamplerID>(sampler);
2572 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
2573 bool isCallValid = (context->skipValidation() ||
2574 ValidateGetSamplerParameterfvRobustANGLE(
2575 context, angle::EntryPoint::GLGetSamplerParameterfvRobustANGLE,
2576 samplerPacked, pname, bufSize, length, params));
2577 if (isCallValid)
2578 {
2579 context->getSamplerParameterfvRobust(samplerPacked, pname, bufSize, length, params);
2580 }
2581 ANGLE_CAPTURE(GetSamplerParameterfvRobustANGLE, isCallValid, context, samplerPacked, pname,
2582 bufSize, length, params);
2583 }
2584 else
2585 {
2586 GenerateContextLostErrorOnCurrentGlobalContext();
2587 }
2588 }
2589
GL_GetFramebufferParameterivRobustANGLE(GLenum target,GLenum pname,GLsizei bufSize,GLsizei * length,GLint * params)2590 void GL_APIENTRY GL_GetFramebufferParameterivRobustANGLE(GLenum target,
2591 GLenum pname,
2592 GLsizei bufSize,
2593 GLsizei *length,
2594 GLint *params)
2595 {
2596 Context *context = GetValidGlobalContext();
2597 EVENT(context, GLGetFramebufferParameterivRobustANGLE,
2598 "context = %d, target = %s, pname = %s, bufSize = %d, length = 0x%016" PRIxPTR
2599 ", params = 0x%016" PRIxPTR "",
2600 CID(context), GLenumToString(GLenumGroup::DefaultGroup, target),
2601 GLenumToString(GLenumGroup::DefaultGroup, pname), bufSize, (uintptr_t)length,
2602 (uintptr_t)params);
2603
2604 if (context)
2605 {
2606 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
2607 bool isCallValid = (context->skipValidation() ||
2608 ValidateGetFramebufferParameterivRobustANGLE(
2609 context, angle::EntryPoint::GLGetFramebufferParameterivRobustANGLE,
2610 target, pname, bufSize, length, params));
2611 if (isCallValid)
2612 {
2613 context->getFramebufferParameterivRobust(target, pname, bufSize, length, params);
2614 }
2615 ANGLE_CAPTURE(GetFramebufferParameterivRobustANGLE, isCallValid, context, target, pname,
2616 bufSize, length, params);
2617 }
2618 else
2619 {
2620 GenerateContextLostErrorOnCurrentGlobalContext();
2621 }
2622 }
2623
GL_GetProgramInterfaceivRobustANGLE(GLuint program,GLenum programInterface,GLenum pname,GLsizei bufSize,GLsizei * length,GLint * params)2624 void GL_APIENTRY GL_GetProgramInterfaceivRobustANGLE(GLuint program,
2625 GLenum programInterface,
2626 GLenum pname,
2627 GLsizei bufSize,
2628 GLsizei *length,
2629 GLint *params)
2630 {
2631 Context *context = GetValidGlobalContext();
2632 EVENT(context, GLGetProgramInterfaceivRobustANGLE,
2633 "context = %d, program = %u, programInterface = %s, pname = %s, bufSize = %d, length = "
2634 "0x%016" PRIxPTR ", params = 0x%016" PRIxPTR "",
2635 CID(context), program, GLenumToString(GLenumGroup::DefaultGroup, programInterface),
2636 GLenumToString(GLenumGroup::DefaultGroup, pname), bufSize, (uintptr_t)length,
2637 (uintptr_t)params);
2638
2639 if (context)
2640 {
2641 ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);
2642 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
2643 bool isCallValid = (context->skipValidation() ||
2644 ValidateGetProgramInterfaceivRobustANGLE(
2645 context, angle::EntryPoint::GLGetProgramInterfaceivRobustANGLE,
2646 programPacked, programInterface, pname, bufSize, length, params));
2647 if (isCallValid)
2648 {
2649 context->getProgramInterfaceivRobust(programPacked, programInterface, pname, bufSize,
2650 length, params);
2651 }
2652 ANGLE_CAPTURE(GetProgramInterfaceivRobustANGLE, isCallValid, context, programPacked,
2653 programInterface, pname, bufSize, length, params);
2654 }
2655 else
2656 {
2657 GenerateContextLostErrorOnCurrentGlobalContext();
2658 }
2659 }
2660
GL_GetBooleani_vRobustANGLE(GLenum target,GLuint index,GLsizei bufSize,GLsizei * length,GLboolean * data)2661 void GL_APIENTRY GL_GetBooleani_vRobustANGLE(GLenum target,
2662 GLuint index,
2663 GLsizei bufSize,
2664 GLsizei *length,
2665 GLboolean *data)
2666 {
2667 Context *context = GetValidGlobalContext();
2668 EVENT(context, GLGetBooleani_vRobustANGLE,
2669 "context = %d, target = %s, index = %u, bufSize = %d, length = 0x%016" PRIxPTR
2670 ", data = 0x%016" PRIxPTR "",
2671 CID(context), GLenumToString(GLenumGroup::DefaultGroup, target), index, bufSize,
2672 (uintptr_t)length, (uintptr_t)data);
2673
2674 if (context)
2675 {
2676 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
2677 bool isCallValid = (context->skipValidation() ||
2678 ValidateGetBooleani_vRobustANGLE(
2679 context, angle::EntryPoint::GLGetBooleani_vRobustANGLE, target,
2680 index, bufSize, length, data));
2681 if (isCallValid)
2682 {
2683 context->getBooleani_vRobust(target, index, bufSize, length, data);
2684 }
2685 ANGLE_CAPTURE(GetBooleani_vRobustANGLE, isCallValid, context, target, index, bufSize,
2686 length, data);
2687 }
2688 else
2689 {
2690 GenerateContextLostErrorOnCurrentGlobalContext();
2691 }
2692 }
2693
GL_GetMultisamplefvRobustANGLE(GLenum pname,GLuint index,GLsizei bufSize,GLsizei * length,GLfloat * val)2694 void GL_APIENTRY GL_GetMultisamplefvRobustANGLE(GLenum pname,
2695 GLuint index,
2696 GLsizei bufSize,
2697 GLsizei *length,
2698 GLfloat *val)
2699 {
2700 Context *context = GetValidGlobalContext();
2701 EVENT(context, GLGetMultisamplefvRobustANGLE,
2702 "context = %d, pname = %s, index = %u, bufSize = %d, length = 0x%016" PRIxPTR
2703 ", val = 0x%016" PRIxPTR "",
2704 CID(context), GLenumToString(GLenumGroup::DefaultGroup, pname), index, bufSize,
2705 (uintptr_t)length, (uintptr_t)val);
2706
2707 if (context)
2708 {
2709 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
2710 bool isCallValid = (context->skipValidation() ||
2711 ValidateGetMultisamplefvRobustANGLE(
2712 context, angle::EntryPoint::GLGetMultisamplefvRobustANGLE, pname,
2713 index, bufSize, length, val));
2714 if (isCallValid)
2715 {
2716 context->getMultisamplefvRobust(pname, index, bufSize, length, val);
2717 }
2718 ANGLE_CAPTURE(GetMultisamplefvRobustANGLE, isCallValid, context, pname, index, bufSize,
2719 length, val);
2720 }
2721 else
2722 {
2723 GenerateContextLostErrorOnCurrentGlobalContext();
2724 }
2725 }
2726
GL_GetTexLevelParameterivRobustANGLE(GLenum target,GLint level,GLenum pname,GLsizei bufSize,GLsizei * length,GLint * params)2727 void GL_APIENTRY GL_GetTexLevelParameterivRobustANGLE(GLenum target,
2728 GLint level,
2729 GLenum pname,
2730 GLsizei bufSize,
2731 GLsizei *length,
2732 GLint *params)
2733 {
2734 Context *context = GetValidGlobalContext();
2735 EVENT(context, GLGetTexLevelParameterivRobustANGLE,
2736 "context = %d, target = %s, level = %d, pname = %s, bufSize = %d, length = 0x%016" PRIxPTR
2737 ", params = 0x%016" PRIxPTR "",
2738 CID(context), GLenumToString(GLenumGroup::DefaultGroup, target), level,
2739 GLenumToString(GLenumGroup::DefaultGroup, pname), bufSize, (uintptr_t)length,
2740 (uintptr_t)params);
2741
2742 if (context)
2743 {
2744 TextureTarget targetPacked = PackParam<TextureTarget>(target);
2745 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
2746 bool isCallValid = (context->skipValidation() ||
2747 ValidateGetTexLevelParameterivRobustANGLE(
2748 context, angle::EntryPoint::GLGetTexLevelParameterivRobustANGLE,
2749 targetPacked, level, pname, bufSize, length, params));
2750 if (isCallValid)
2751 {
2752 context->getTexLevelParameterivRobust(targetPacked, level, pname, bufSize, length,
2753 params);
2754 }
2755 ANGLE_CAPTURE(GetTexLevelParameterivRobustANGLE, isCallValid, context, targetPacked, level,
2756 pname, bufSize, length, params);
2757 }
2758 else
2759 {
2760 GenerateContextLostErrorOnCurrentGlobalContext();
2761 }
2762 }
2763
GL_GetTexLevelParameterfvRobustANGLE(GLenum target,GLint level,GLenum pname,GLsizei bufSize,GLsizei * length,GLfloat * params)2764 void GL_APIENTRY GL_GetTexLevelParameterfvRobustANGLE(GLenum target,
2765 GLint level,
2766 GLenum pname,
2767 GLsizei bufSize,
2768 GLsizei *length,
2769 GLfloat *params)
2770 {
2771 Context *context = GetValidGlobalContext();
2772 EVENT(context, GLGetTexLevelParameterfvRobustANGLE,
2773 "context = %d, target = %s, level = %d, pname = %s, bufSize = %d, length = 0x%016" PRIxPTR
2774 ", params = 0x%016" PRIxPTR "",
2775 CID(context), GLenumToString(GLenumGroup::DefaultGroup, target), level,
2776 GLenumToString(GLenumGroup::DefaultGroup, pname), bufSize, (uintptr_t)length,
2777 (uintptr_t)params);
2778
2779 if (context)
2780 {
2781 TextureTarget targetPacked = PackParam<TextureTarget>(target);
2782 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
2783 bool isCallValid = (context->skipValidation() ||
2784 ValidateGetTexLevelParameterfvRobustANGLE(
2785 context, angle::EntryPoint::GLGetTexLevelParameterfvRobustANGLE,
2786 targetPacked, level, pname, bufSize, length, params));
2787 if (isCallValid)
2788 {
2789 context->getTexLevelParameterfvRobust(targetPacked, level, pname, bufSize, length,
2790 params);
2791 }
2792 ANGLE_CAPTURE(GetTexLevelParameterfvRobustANGLE, isCallValid, context, targetPacked, level,
2793 pname, bufSize, length, params);
2794 }
2795 else
2796 {
2797 GenerateContextLostErrorOnCurrentGlobalContext();
2798 }
2799 }
2800
GL_GetPointervRobustANGLERobustANGLE(GLenum pname,GLsizei bufSize,GLsizei * length,void ** params)2801 void GL_APIENTRY GL_GetPointervRobustANGLERobustANGLE(GLenum pname,
2802 GLsizei bufSize,
2803 GLsizei *length,
2804 void **params)
2805 {
2806 Context *context = GetValidGlobalContext();
2807 EVENT(context, GLGetPointervRobustANGLERobustANGLE,
2808 "context = %d, pname = %s, bufSize = %d, length = 0x%016" PRIxPTR
2809 ", params = 0x%016" PRIxPTR "",
2810 CID(context), GLenumToString(GLenumGroup::DefaultGroup, pname), bufSize,
2811 (uintptr_t)length, (uintptr_t)params);
2812
2813 if (context)
2814 {
2815 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
2816 bool isCallValid = (context->skipValidation() ||
2817 ValidateGetPointervRobustANGLERobustANGLE(
2818 context, angle::EntryPoint::GLGetPointervRobustANGLERobustANGLE,
2819 pname, bufSize, length, params));
2820 if (isCallValid)
2821 {
2822 context->getPointervRobustANGLERobust(pname, bufSize, length, params);
2823 }
2824 ANGLE_CAPTURE(GetPointervRobustANGLERobustANGLE, isCallValid, context, pname, bufSize,
2825 length, params);
2826 }
2827 else
2828 {
2829 GenerateContextLostErrorOnCurrentGlobalContext();
2830 }
2831 }
2832
GL_ReadnPixelsRobustANGLE(GLint x,GLint y,GLsizei width,GLsizei height,GLenum format,GLenum type,GLsizei bufSize,GLsizei * length,GLsizei * columns,GLsizei * rows,void * data)2833 void GL_APIENTRY GL_ReadnPixelsRobustANGLE(GLint x,
2834 GLint y,
2835 GLsizei width,
2836 GLsizei height,
2837 GLenum format,
2838 GLenum type,
2839 GLsizei bufSize,
2840 GLsizei *length,
2841 GLsizei *columns,
2842 GLsizei *rows,
2843 void *data)
2844 {
2845 Context *context = GetValidGlobalContext();
2846 EVENT(context, GLReadnPixelsRobustANGLE,
2847 "context = %d, x = %d, y = %d, width = %d, height = %d, format = %s, type = %s, bufSize "
2848 "= %d, length = 0x%016" PRIxPTR ", columns = 0x%016" PRIxPTR ", rows = 0x%016" PRIxPTR
2849 ", data = 0x%016" PRIxPTR "",
2850 CID(context), x, y, width, height, GLenumToString(GLenumGroup::DefaultGroup, format),
2851 GLenumToString(GLenumGroup::DefaultGroup, type), bufSize, (uintptr_t)length,
2852 (uintptr_t)columns, (uintptr_t)rows, (uintptr_t)data);
2853
2854 if (context)
2855 {
2856 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
2857 bool isCallValid = (context->skipValidation() ||
2858 ValidateReadnPixelsRobustANGLE(
2859 context, angle::EntryPoint::GLReadnPixelsRobustANGLE, x, y, width,
2860 height, format, type, bufSize, length, columns, rows, data));
2861 if (isCallValid)
2862 {
2863 context->readnPixelsRobust(x, y, width, height, format, type, bufSize, length, columns,
2864 rows, data);
2865 }
2866 ANGLE_CAPTURE(ReadnPixelsRobustANGLE, isCallValid, context, x, y, width, height, format,
2867 type, bufSize, length, columns, rows, data);
2868 }
2869 else
2870 {
2871 GenerateContextLostErrorOnCurrentGlobalContext();
2872 }
2873 }
2874
GL_GetnUniformfvRobustANGLE(GLuint program,GLint location,GLsizei bufSize,GLsizei * length,GLfloat * params)2875 void GL_APIENTRY GL_GetnUniformfvRobustANGLE(GLuint program,
2876 GLint location,
2877 GLsizei bufSize,
2878 GLsizei *length,
2879 GLfloat *params)
2880 {
2881 Context *context = GetValidGlobalContext();
2882 EVENT(context, GLGetnUniformfvRobustANGLE,
2883 "context = %d, program = %u, location = %d, bufSize = %d, length = 0x%016" PRIxPTR
2884 ", params = 0x%016" PRIxPTR "",
2885 CID(context), program, location, bufSize, (uintptr_t)length, (uintptr_t)params);
2886
2887 if (context)
2888 {
2889 ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);
2890 UniformLocation locationPacked = PackParam<UniformLocation>(location);
2891 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
2892 bool isCallValid = (context->skipValidation() ||
2893 ValidateGetnUniformfvRobustANGLE(
2894 context, angle::EntryPoint::GLGetnUniformfvRobustANGLE,
2895 programPacked, locationPacked, bufSize, length, params));
2896 if (isCallValid)
2897 {
2898 context->getnUniformfvRobust(programPacked, locationPacked, bufSize, length, params);
2899 }
2900 ANGLE_CAPTURE(GetnUniformfvRobustANGLE, isCallValid, context, programPacked, locationPacked,
2901 bufSize, length, params);
2902 }
2903 else
2904 {
2905 GenerateContextLostErrorOnCurrentGlobalContext();
2906 }
2907 }
2908
GL_GetnUniformivRobustANGLE(GLuint program,GLint location,GLsizei bufSize,GLsizei * length,GLint * params)2909 void GL_APIENTRY GL_GetnUniformivRobustANGLE(GLuint program,
2910 GLint location,
2911 GLsizei bufSize,
2912 GLsizei *length,
2913 GLint *params)
2914 {
2915 Context *context = GetValidGlobalContext();
2916 EVENT(context, GLGetnUniformivRobustANGLE,
2917 "context = %d, program = %u, location = %d, bufSize = %d, length = 0x%016" PRIxPTR
2918 ", params = 0x%016" PRIxPTR "",
2919 CID(context), program, location, bufSize, (uintptr_t)length, (uintptr_t)params);
2920
2921 if (context)
2922 {
2923 ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);
2924 UniformLocation locationPacked = PackParam<UniformLocation>(location);
2925 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
2926 bool isCallValid = (context->skipValidation() ||
2927 ValidateGetnUniformivRobustANGLE(
2928 context, angle::EntryPoint::GLGetnUniformivRobustANGLE,
2929 programPacked, locationPacked, bufSize, length, params));
2930 if (isCallValid)
2931 {
2932 context->getnUniformivRobust(programPacked, locationPacked, bufSize, length, params);
2933 }
2934 ANGLE_CAPTURE(GetnUniformivRobustANGLE, isCallValid, context, programPacked, locationPacked,
2935 bufSize, length, params);
2936 }
2937 else
2938 {
2939 GenerateContextLostErrorOnCurrentGlobalContext();
2940 }
2941 }
2942
GL_GetnUniformuivRobustANGLE(GLuint program,GLint location,GLsizei bufSize,GLsizei * length,GLuint * params)2943 void GL_APIENTRY GL_GetnUniformuivRobustANGLE(GLuint program,
2944 GLint location,
2945 GLsizei bufSize,
2946 GLsizei *length,
2947 GLuint *params)
2948 {
2949 Context *context = GetValidGlobalContext();
2950 EVENT(context, GLGetnUniformuivRobustANGLE,
2951 "context = %d, program = %u, location = %d, bufSize = %d, length = 0x%016" PRIxPTR
2952 ", params = 0x%016" PRIxPTR "",
2953 CID(context), program, location, bufSize, (uintptr_t)length, (uintptr_t)params);
2954
2955 if (context)
2956 {
2957 ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);
2958 UniformLocation locationPacked = PackParam<UniformLocation>(location);
2959 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
2960 bool isCallValid = (context->skipValidation() ||
2961 ValidateGetnUniformuivRobustANGLE(
2962 context, angle::EntryPoint::GLGetnUniformuivRobustANGLE,
2963 programPacked, locationPacked, bufSize, length, params));
2964 if (isCallValid)
2965 {
2966 context->getnUniformuivRobust(programPacked, locationPacked, bufSize, length, params);
2967 }
2968 ANGLE_CAPTURE(GetnUniformuivRobustANGLE, isCallValid, context, programPacked,
2969 locationPacked, bufSize, length, params);
2970 }
2971 else
2972 {
2973 GenerateContextLostErrorOnCurrentGlobalContext();
2974 }
2975 }
2976
GL_TexParameterIivRobustANGLE(GLenum target,GLenum pname,GLsizei bufSize,const GLint * params)2977 void GL_APIENTRY GL_TexParameterIivRobustANGLE(GLenum target,
2978 GLenum pname,
2979 GLsizei bufSize,
2980 const GLint *params)
2981 {
2982 Context *context = GetValidGlobalContext();
2983 EVENT(context, GLTexParameterIivRobustANGLE,
2984 "context = %d, target = %s, pname = %s, bufSize = %d, params = 0x%016" PRIxPTR "",
2985 CID(context), GLenumToString(GLenumGroup::DefaultGroup, target),
2986 GLenumToString(GLenumGroup::DefaultGroup, pname), bufSize, (uintptr_t)params);
2987
2988 if (context)
2989 {
2990 TextureType targetPacked = PackParam<TextureType>(target);
2991 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
2992 bool isCallValid = (context->skipValidation() ||
2993 ValidateTexParameterIivRobustANGLE(
2994 context, angle::EntryPoint::GLTexParameterIivRobustANGLE,
2995 targetPacked, pname, bufSize, params));
2996 if (isCallValid)
2997 {
2998 context->texParameterIivRobust(targetPacked, pname, bufSize, params);
2999 }
3000 ANGLE_CAPTURE(TexParameterIivRobustANGLE, isCallValid, context, targetPacked, pname,
3001 bufSize, params);
3002 }
3003 else
3004 {
3005 GenerateContextLostErrorOnCurrentGlobalContext();
3006 }
3007 }
3008
GL_TexParameterIuivRobustANGLE(GLenum target,GLenum pname,GLsizei bufSize,const GLuint * params)3009 void GL_APIENTRY GL_TexParameterIuivRobustANGLE(GLenum target,
3010 GLenum pname,
3011 GLsizei bufSize,
3012 const GLuint *params)
3013 {
3014 Context *context = GetValidGlobalContext();
3015 EVENT(context, GLTexParameterIuivRobustANGLE,
3016 "context = %d, target = %s, pname = %s, bufSize = %d, params = 0x%016" PRIxPTR "",
3017 CID(context), GLenumToString(GLenumGroup::DefaultGroup, target),
3018 GLenumToString(GLenumGroup::DefaultGroup, pname), bufSize, (uintptr_t)params);
3019
3020 if (context)
3021 {
3022 TextureType targetPacked = PackParam<TextureType>(target);
3023 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
3024 bool isCallValid = (context->skipValidation() ||
3025 ValidateTexParameterIuivRobustANGLE(
3026 context, angle::EntryPoint::GLTexParameterIuivRobustANGLE,
3027 targetPacked, pname, bufSize, params));
3028 if (isCallValid)
3029 {
3030 context->texParameterIuivRobust(targetPacked, pname, bufSize, params);
3031 }
3032 ANGLE_CAPTURE(TexParameterIuivRobustANGLE, isCallValid, context, targetPacked, pname,
3033 bufSize, params);
3034 }
3035 else
3036 {
3037 GenerateContextLostErrorOnCurrentGlobalContext();
3038 }
3039 }
3040
GL_GetTexParameterIivRobustANGLE(GLenum target,GLenum pname,GLsizei bufSize,GLsizei * length,GLint * params)3041 void GL_APIENTRY GL_GetTexParameterIivRobustANGLE(GLenum target,
3042 GLenum pname,
3043 GLsizei bufSize,
3044 GLsizei *length,
3045 GLint *params)
3046 {
3047 Context *context = GetValidGlobalContext();
3048 EVENT(context, GLGetTexParameterIivRobustANGLE,
3049 "context = %d, target = %s, pname = %s, bufSize = %d, length = 0x%016" PRIxPTR
3050 ", params = 0x%016" PRIxPTR "",
3051 CID(context), GLenumToString(GLenumGroup::DefaultGroup, target),
3052 GLenumToString(GLenumGroup::DefaultGroup, pname), bufSize, (uintptr_t)length,
3053 (uintptr_t)params);
3054
3055 if (context)
3056 {
3057 TextureType targetPacked = PackParam<TextureType>(target);
3058 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
3059 bool isCallValid = (context->skipValidation() ||
3060 ValidateGetTexParameterIivRobustANGLE(
3061 context, angle::EntryPoint::GLGetTexParameterIivRobustANGLE,
3062 targetPacked, pname, bufSize, length, params));
3063 if (isCallValid)
3064 {
3065 context->getTexParameterIivRobust(targetPacked, pname, bufSize, length, params);
3066 }
3067 ANGLE_CAPTURE(GetTexParameterIivRobustANGLE, isCallValid, context, targetPacked, pname,
3068 bufSize, length, params);
3069 }
3070 else
3071 {
3072 GenerateContextLostErrorOnCurrentGlobalContext();
3073 }
3074 }
3075
GL_GetTexParameterIuivRobustANGLE(GLenum target,GLenum pname,GLsizei bufSize,GLsizei * length,GLuint * params)3076 void GL_APIENTRY GL_GetTexParameterIuivRobustANGLE(GLenum target,
3077 GLenum pname,
3078 GLsizei bufSize,
3079 GLsizei *length,
3080 GLuint *params)
3081 {
3082 Context *context = GetValidGlobalContext();
3083 EVENT(context, GLGetTexParameterIuivRobustANGLE,
3084 "context = %d, target = %s, pname = %s, bufSize = %d, length = 0x%016" PRIxPTR
3085 ", params = 0x%016" PRIxPTR "",
3086 CID(context), GLenumToString(GLenumGroup::DefaultGroup, target),
3087 GLenumToString(GLenumGroup::DefaultGroup, pname), bufSize, (uintptr_t)length,
3088 (uintptr_t)params);
3089
3090 if (context)
3091 {
3092 TextureType targetPacked = PackParam<TextureType>(target);
3093 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
3094 bool isCallValid = (context->skipValidation() ||
3095 ValidateGetTexParameterIuivRobustANGLE(
3096 context, angle::EntryPoint::GLGetTexParameterIuivRobustANGLE,
3097 targetPacked, pname, bufSize, length, params));
3098 if (isCallValid)
3099 {
3100 context->getTexParameterIuivRobust(targetPacked, pname, bufSize, length, params);
3101 }
3102 ANGLE_CAPTURE(GetTexParameterIuivRobustANGLE, isCallValid, context, targetPacked, pname,
3103 bufSize, length, params);
3104 }
3105 else
3106 {
3107 GenerateContextLostErrorOnCurrentGlobalContext();
3108 }
3109 }
3110
GL_SamplerParameterIivRobustANGLE(GLuint sampler,GLenum pname,GLsizei bufSize,const GLint * param)3111 void GL_APIENTRY GL_SamplerParameterIivRobustANGLE(GLuint sampler,
3112 GLenum pname,
3113 GLsizei bufSize,
3114 const GLint *param)
3115 {
3116 Context *context = GetValidGlobalContext();
3117 EVENT(context, GLSamplerParameterIivRobustANGLE,
3118 "context = %d, sampler = %u, pname = %s, bufSize = %d, param = 0x%016" PRIxPTR "",
3119 CID(context), sampler, GLenumToString(GLenumGroup::DefaultGroup, pname), bufSize,
3120 (uintptr_t)param);
3121
3122 if (context)
3123 {
3124 SamplerID samplerPacked = PackParam<SamplerID>(sampler);
3125 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
3126 bool isCallValid = (context->skipValidation() ||
3127 ValidateSamplerParameterIivRobustANGLE(
3128 context, angle::EntryPoint::GLSamplerParameterIivRobustANGLE,
3129 samplerPacked, pname, bufSize, param));
3130 if (isCallValid)
3131 {
3132 context->samplerParameterIivRobust(samplerPacked, pname, bufSize, param);
3133 }
3134 ANGLE_CAPTURE(SamplerParameterIivRobustANGLE, isCallValid, context, samplerPacked, pname,
3135 bufSize, param);
3136 }
3137 else
3138 {
3139 GenerateContextLostErrorOnCurrentGlobalContext();
3140 }
3141 }
3142
GL_SamplerParameterIuivRobustANGLE(GLuint sampler,GLenum pname,GLsizei bufSize,const GLuint * param)3143 void GL_APIENTRY GL_SamplerParameterIuivRobustANGLE(GLuint sampler,
3144 GLenum pname,
3145 GLsizei bufSize,
3146 const GLuint *param)
3147 {
3148 Context *context = GetValidGlobalContext();
3149 EVENT(context, GLSamplerParameterIuivRobustANGLE,
3150 "context = %d, sampler = %u, pname = %s, bufSize = %d, param = 0x%016" PRIxPTR "",
3151 CID(context), sampler, GLenumToString(GLenumGroup::DefaultGroup, pname), bufSize,
3152 (uintptr_t)param);
3153
3154 if (context)
3155 {
3156 SamplerID samplerPacked = PackParam<SamplerID>(sampler);
3157 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
3158 bool isCallValid = (context->skipValidation() ||
3159 ValidateSamplerParameterIuivRobustANGLE(
3160 context, angle::EntryPoint::GLSamplerParameterIuivRobustANGLE,
3161 samplerPacked, pname, bufSize, param));
3162 if (isCallValid)
3163 {
3164 context->samplerParameterIuivRobust(samplerPacked, pname, bufSize, param);
3165 }
3166 ANGLE_CAPTURE(SamplerParameterIuivRobustANGLE, isCallValid, context, samplerPacked, pname,
3167 bufSize, param);
3168 }
3169 else
3170 {
3171 GenerateContextLostErrorOnCurrentGlobalContext();
3172 }
3173 }
3174
GL_GetSamplerParameterIivRobustANGLE(GLuint sampler,GLenum pname,GLsizei bufSize,GLsizei * length,GLint * params)3175 void GL_APIENTRY GL_GetSamplerParameterIivRobustANGLE(GLuint sampler,
3176 GLenum pname,
3177 GLsizei bufSize,
3178 GLsizei *length,
3179 GLint *params)
3180 {
3181 Context *context = GetValidGlobalContext();
3182 EVENT(context, GLGetSamplerParameterIivRobustANGLE,
3183 "context = %d, sampler = %u, pname = %s, bufSize = %d, length = 0x%016" PRIxPTR
3184 ", params = 0x%016" PRIxPTR "",
3185 CID(context), sampler, GLenumToString(GLenumGroup::DefaultGroup, pname), bufSize,
3186 (uintptr_t)length, (uintptr_t)params);
3187
3188 if (context)
3189 {
3190 SamplerID samplerPacked = PackParam<SamplerID>(sampler);
3191 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
3192 bool isCallValid = (context->skipValidation() ||
3193 ValidateGetSamplerParameterIivRobustANGLE(
3194 context, angle::EntryPoint::GLGetSamplerParameterIivRobustANGLE,
3195 samplerPacked, pname, bufSize, length, params));
3196 if (isCallValid)
3197 {
3198 context->getSamplerParameterIivRobust(samplerPacked, pname, bufSize, length, params);
3199 }
3200 ANGLE_CAPTURE(GetSamplerParameterIivRobustANGLE, isCallValid, context, samplerPacked, pname,
3201 bufSize, length, params);
3202 }
3203 else
3204 {
3205 GenerateContextLostErrorOnCurrentGlobalContext();
3206 }
3207 }
3208
GL_GetSamplerParameterIuivRobustANGLE(GLuint sampler,GLenum pname,GLsizei bufSize,GLsizei * length,GLuint * params)3209 void GL_APIENTRY GL_GetSamplerParameterIuivRobustANGLE(GLuint sampler,
3210 GLenum pname,
3211 GLsizei bufSize,
3212 GLsizei *length,
3213 GLuint *params)
3214 {
3215 Context *context = GetValidGlobalContext();
3216 EVENT(context, GLGetSamplerParameterIuivRobustANGLE,
3217 "context = %d, sampler = %u, pname = %s, bufSize = %d, length = 0x%016" PRIxPTR
3218 ", params = 0x%016" PRIxPTR "",
3219 CID(context), sampler, GLenumToString(GLenumGroup::DefaultGroup, pname), bufSize,
3220 (uintptr_t)length, (uintptr_t)params);
3221
3222 if (context)
3223 {
3224 SamplerID samplerPacked = PackParam<SamplerID>(sampler);
3225 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
3226 bool isCallValid = (context->skipValidation() ||
3227 ValidateGetSamplerParameterIuivRobustANGLE(
3228 context, angle::EntryPoint::GLGetSamplerParameterIuivRobustANGLE,
3229 samplerPacked, pname, bufSize, length, params));
3230 if (isCallValid)
3231 {
3232 context->getSamplerParameterIuivRobust(samplerPacked, pname, bufSize, length, params);
3233 }
3234 ANGLE_CAPTURE(GetSamplerParameterIuivRobustANGLE, isCallValid, context, samplerPacked,
3235 pname, bufSize, length, params);
3236 }
3237 else
3238 {
3239 GenerateContextLostErrorOnCurrentGlobalContext();
3240 }
3241 }
3242
GL_GetQueryObjectivRobustANGLE(GLuint id,GLenum pname,GLsizei bufSize,GLsizei * length,GLint * params)3243 void GL_APIENTRY GL_GetQueryObjectivRobustANGLE(GLuint id,
3244 GLenum pname,
3245 GLsizei bufSize,
3246 GLsizei *length,
3247 GLint *params)
3248 {
3249 Context *context = GetGlobalContext();
3250 EVENT(context, GLGetQueryObjectivRobustANGLE,
3251 "context = %d, id = %u, pname = %s, bufSize = %d, length = 0x%016" PRIxPTR
3252 ", params = 0x%016" PRIxPTR "",
3253 CID(context), id, GLenumToString(GLenumGroup::DefaultGroup, pname), bufSize,
3254 (uintptr_t)length, (uintptr_t)params);
3255
3256 if (context)
3257 {
3258 QueryID idPacked = PackParam<QueryID>(id);
3259 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
3260 bool isCallValid = (context->skipValidation() ||
3261 ValidateGetQueryObjectivRobustANGLE(
3262 context, angle::EntryPoint::GLGetQueryObjectivRobustANGLE, idPacked,
3263 pname, bufSize, length, params));
3264 if (isCallValid)
3265 {
3266 context->getQueryObjectivRobust(idPacked, pname, bufSize, length, params);
3267 }
3268 ANGLE_CAPTURE(GetQueryObjectivRobustANGLE, isCallValid, context, idPacked, pname, bufSize,
3269 length, params);
3270 }
3271 else
3272 {}
3273 }
3274
GL_GetQueryObjecti64vRobustANGLE(GLuint id,GLenum pname,GLsizei bufSize,GLsizei * length,GLint64 * params)3275 void GL_APIENTRY GL_GetQueryObjecti64vRobustANGLE(GLuint id,
3276 GLenum pname,
3277 GLsizei bufSize,
3278 GLsizei *length,
3279 GLint64 *params)
3280 {
3281 Context *context = GetGlobalContext();
3282 EVENT(context, GLGetQueryObjecti64vRobustANGLE,
3283 "context = %d, id = %u, pname = %s, bufSize = %d, length = 0x%016" PRIxPTR
3284 ", params = 0x%016" PRIxPTR "",
3285 CID(context), id, GLenumToString(GLenumGroup::DefaultGroup, pname), bufSize,
3286 (uintptr_t)length, (uintptr_t)params);
3287
3288 if (context)
3289 {
3290 QueryID idPacked = PackParam<QueryID>(id);
3291 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
3292 bool isCallValid = (context->skipValidation() ||
3293 ValidateGetQueryObjecti64vRobustANGLE(
3294 context, angle::EntryPoint::GLGetQueryObjecti64vRobustANGLE,
3295 idPacked, pname, bufSize, length, params));
3296 if (isCallValid)
3297 {
3298 context->getQueryObjecti64vRobust(idPacked, pname, bufSize, length, params);
3299 }
3300 ANGLE_CAPTURE(GetQueryObjecti64vRobustANGLE, isCallValid, context, idPacked, pname, bufSize,
3301 length, params);
3302 }
3303 else
3304 {}
3305 }
3306
GL_GetQueryObjectui64vRobustANGLE(GLuint id,GLenum pname,GLsizei bufSize,GLsizei * length,GLuint64 * params)3307 void GL_APIENTRY GL_GetQueryObjectui64vRobustANGLE(GLuint id,
3308 GLenum pname,
3309 GLsizei bufSize,
3310 GLsizei *length,
3311 GLuint64 *params)
3312 {
3313 Context *context = GetValidGlobalContext();
3314 EVENT(context, GLGetQueryObjectui64vRobustANGLE,
3315 "context = %d, id = %u, pname = %s, bufSize = %d, length = 0x%016" PRIxPTR
3316 ", params = 0x%016" PRIxPTR "",
3317 CID(context), id, GLenumToString(GLenumGroup::DefaultGroup, pname), bufSize,
3318 (uintptr_t)length, (uintptr_t)params);
3319
3320 if (context)
3321 {
3322 QueryID idPacked = PackParam<QueryID>(id);
3323 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
3324 bool isCallValid = (context->skipValidation() ||
3325 ValidateGetQueryObjectui64vRobustANGLE(
3326 context, angle::EntryPoint::GLGetQueryObjectui64vRobustANGLE,
3327 idPacked, pname, bufSize, length, params));
3328 if (isCallValid)
3329 {
3330 context->getQueryObjectui64vRobust(idPacked, pname, bufSize, length, params);
3331 }
3332 ANGLE_CAPTURE(GetQueryObjectui64vRobustANGLE, isCallValid, context, idPacked, pname,
3333 bufSize, length, params);
3334 }
3335 else
3336 {
3337 GenerateContextLostErrorOnCurrentGlobalContext();
3338 }
3339 }
3340
3341 // GL_ANGLE_semaphore_fuchsia
GL_ImportSemaphoreZirconHandleANGLE(GLuint semaphore,GLenum handleType,GLuint handle)3342 void GL_APIENTRY GL_ImportSemaphoreZirconHandleANGLE(GLuint semaphore,
3343 GLenum handleType,
3344 GLuint handle)
3345 {
3346 Context *context = GetValidGlobalContext();
3347 EVENT(context, GLImportSemaphoreZirconHandleANGLE,
3348 "context = %d, semaphore = %u, handleType = %s, handle = %u", CID(context), semaphore,
3349 GLenumToString(GLenumGroup::ExternalHandleType, handleType), handle);
3350
3351 if (context)
3352 {
3353 SemaphoreID semaphorePacked = PackParam<SemaphoreID>(semaphore);
3354 HandleType handleTypePacked = PackParam<HandleType>(handleType);
3355 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
3356 bool isCallValid = (context->skipValidation() ||
3357 ValidateImportSemaphoreZirconHandleANGLE(
3358 context, angle::EntryPoint::GLImportSemaphoreZirconHandleANGLE,
3359 semaphorePacked, handleTypePacked, handle));
3360 if (isCallValid)
3361 {
3362 context->importSemaphoreZirconHandle(semaphorePacked, handleTypePacked, handle);
3363 }
3364 ANGLE_CAPTURE(ImportSemaphoreZirconHandleANGLE, isCallValid, context, semaphorePacked,
3365 handleTypePacked, handle);
3366 }
3367 else
3368 {
3369 GenerateContextLostErrorOnCurrentGlobalContext();
3370 }
3371 }
3372
3373 // GL_ANGLE_texture_compression_dxt3
3374
3375 // GL_ANGLE_texture_compression_dxt5
3376
3377 // GL_ANGLE_texture_external_update
GL_TexImage2DExternalANGLE(GLenum target,GLint level,GLint internalformat,GLsizei width,GLsizei height,GLint border,GLenum format,GLenum type)3378 void GL_APIENTRY GL_TexImage2DExternalANGLE(GLenum target,
3379 GLint level,
3380 GLint internalformat,
3381 GLsizei width,
3382 GLsizei height,
3383 GLint border,
3384 GLenum format,
3385 GLenum type)
3386 {
3387 Context *context = GetValidGlobalContext();
3388 EVENT(context, GLTexImage2DExternalANGLE,
3389 "context = %d, target = %s, level = %d, internalformat = %d, width = %d, height = %d, "
3390 "border = %d, format = %s, type = %s",
3391 CID(context), GLenumToString(GLenumGroup::TextureTarget, target), level, internalformat,
3392 width, height, border, GLenumToString(GLenumGroup::PixelFormat, format),
3393 GLenumToString(GLenumGroup::PixelType, type));
3394
3395 if (context)
3396 {
3397 TextureTarget targetPacked = PackParam<TextureTarget>(target);
3398 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
3399 bool isCallValid = (context->skipValidation() ||
3400 ValidateTexImage2DExternalANGLE(
3401 context, angle::EntryPoint::GLTexImage2DExternalANGLE, targetPacked,
3402 level, internalformat, width, height, border, format, type));
3403 if (isCallValid)
3404 {
3405 context->texImage2DExternal(targetPacked, level, internalformat, width, height, border,
3406 format, type);
3407 }
3408 ANGLE_CAPTURE(TexImage2DExternalANGLE, isCallValid, context, targetPacked, level,
3409 internalformat, width, height, border, format, type);
3410 }
3411 else
3412 {
3413 GenerateContextLostErrorOnCurrentGlobalContext();
3414 }
3415 }
3416
GL_InvalidateTextureANGLE(GLenum target)3417 void GL_APIENTRY GL_InvalidateTextureANGLE(GLenum target)
3418 {
3419 Context *context = GetValidGlobalContext();
3420 EVENT(context, GLInvalidateTextureANGLE, "context = %d, target = %s", CID(context),
3421 GLenumToString(GLenumGroup::TextureTarget, target));
3422
3423 if (context)
3424 {
3425 TextureType targetPacked = PackParam<TextureType>(target);
3426 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
3427 bool isCallValid =
3428 (context->skipValidation() ||
3429 ValidateInvalidateTextureANGLE(context, angle::EntryPoint::GLInvalidateTextureANGLE,
3430 targetPacked));
3431 if (isCallValid)
3432 {
3433 context->invalidateTexture(targetPacked);
3434 }
3435 ANGLE_CAPTURE(InvalidateTextureANGLE, isCallValid, context, targetPacked);
3436 }
3437 else
3438 {
3439 GenerateContextLostErrorOnCurrentGlobalContext();
3440 }
3441 }
3442
3443 // GL_ANGLE_texture_multisample
GL_TexStorage2DMultisampleANGLE(GLenum target,GLsizei samples,GLenum internalformat,GLsizei width,GLsizei height,GLboolean fixedsamplelocations)3444 void GL_APIENTRY GL_TexStorage2DMultisampleANGLE(GLenum target,
3445 GLsizei samples,
3446 GLenum internalformat,
3447 GLsizei width,
3448 GLsizei height,
3449 GLboolean fixedsamplelocations)
3450 {
3451 Context *context = GetValidGlobalContext();
3452 EVENT(context, GLTexStorage2DMultisampleANGLE,
3453 "context = %d, target = %s, samples = %d, internalformat = %s, width = %d, height = %d, "
3454 "fixedsamplelocations = %s",
3455 CID(context), GLenumToString(GLenumGroup::DefaultGroup, target), samples,
3456 GLenumToString(GLenumGroup::DefaultGroup, internalformat), width, height,
3457 GLbooleanToString(fixedsamplelocations));
3458
3459 if (context)
3460 {
3461 TextureType targetPacked = PackParam<TextureType>(target);
3462 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
3463 bool isCallValid =
3464 (context->skipValidation() ||
3465 ValidateTexStorage2DMultisampleANGLE(
3466 context, angle::EntryPoint::GLTexStorage2DMultisampleANGLE, targetPacked, samples,
3467 internalformat, width, height, fixedsamplelocations));
3468 if (isCallValid)
3469 {
3470 context->texStorage2DMultisample(targetPacked, samples, internalformat, width, height,
3471 fixedsamplelocations);
3472 }
3473 ANGLE_CAPTURE(TexStorage2DMultisampleANGLE, isCallValid, context, targetPacked, samples,
3474 internalformat, width, height, fixedsamplelocations);
3475 }
3476 else
3477 {
3478 GenerateContextLostErrorOnCurrentGlobalContext();
3479 }
3480 }
3481
GL_GetMultisamplefvANGLE(GLenum pname,GLuint index,GLfloat * val)3482 void GL_APIENTRY GL_GetMultisamplefvANGLE(GLenum pname, GLuint index, GLfloat *val)
3483 {
3484 Context *context = GetValidGlobalContext();
3485 EVENT(context, GLGetMultisamplefvANGLE,
3486 "context = %d, pname = %s, index = %u, val = 0x%016" PRIxPTR "", CID(context),
3487 GLenumToString(GLenumGroup::DefaultGroup, pname), index, (uintptr_t)val);
3488
3489 if (context)
3490 {
3491 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
3492 bool isCallValid =
3493 (context->skipValidation() ||
3494 ValidateGetMultisamplefvANGLE(context, angle::EntryPoint::GLGetMultisamplefvANGLE,
3495 pname, index, val));
3496 if (isCallValid)
3497 {
3498 context->getMultisamplefv(pname, index, val);
3499 }
3500 ANGLE_CAPTURE(GetMultisamplefvANGLE, isCallValid, context, pname, index, val);
3501 }
3502 else
3503 {
3504 GenerateContextLostErrorOnCurrentGlobalContext();
3505 }
3506 }
3507
GL_SampleMaskiANGLE(GLuint maskNumber,GLbitfield mask)3508 void GL_APIENTRY GL_SampleMaskiANGLE(GLuint maskNumber, GLbitfield mask)
3509 {
3510 Context *context = GetValidGlobalContext();
3511 EVENT(context, GLSampleMaskiANGLE, "context = %d, maskNumber = %u, mask = %s", CID(context),
3512 maskNumber, GLbitfieldToString(GLenumGroup::DefaultGroup, mask).c_str());
3513
3514 if (context)
3515 {
3516 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
3517 bool isCallValid = (context->skipValidation() ||
3518 ValidateSampleMaskiANGLE(context, angle::EntryPoint::GLSampleMaskiANGLE,
3519 maskNumber, mask));
3520 if (isCallValid)
3521 {
3522 context->sampleMaski(maskNumber, mask);
3523 }
3524 ANGLE_CAPTURE(SampleMaskiANGLE, isCallValid, context, maskNumber, mask);
3525 }
3526 else
3527 {
3528 GenerateContextLostErrorOnCurrentGlobalContext();
3529 }
3530 }
3531
3532 // GetTexLevelParameterfvANGLE is already defined.
3533
3534 // GetTexLevelParameterivANGLE is already defined.
3535
3536 // GL_ANGLE_texture_usage
3537
3538 // GL_ANGLE_translated_shader_source
GL_GetTranslatedShaderSourceANGLE(GLuint shader,GLsizei bufsize,GLsizei * length,GLchar * source)3539 void GL_APIENTRY GL_GetTranslatedShaderSourceANGLE(GLuint shader,
3540 GLsizei bufsize,
3541 GLsizei *length,
3542 GLchar *source)
3543 {
3544 Context *context = GetValidGlobalContext();
3545 EVENT(context, GLGetTranslatedShaderSourceANGLE,
3546 "context = %d, shader = %u, bufsize = %d, length = 0x%016" PRIxPTR
3547 ", source = 0x%016" PRIxPTR "",
3548 CID(context), shader, bufsize, (uintptr_t)length, (uintptr_t)source);
3549
3550 if (context)
3551 {
3552 ShaderProgramID shaderPacked = PackParam<ShaderProgramID>(shader);
3553 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
3554 bool isCallValid = (context->skipValidation() ||
3555 ValidateGetTranslatedShaderSourceANGLE(
3556 context, angle::EntryPoint::GLGetTranslatedShaderSourceANGLE,
3557 shaderPacked, bufsize, length, source));
3558 if (isCallValid)
3559 {
3560 context->getTranslatedShaderSource(shaderPacked, bufsize, length, source);
3561 }
3562 ANGLE_CAPTURE(GetTranslatedShaderSourceANGLE, isCallValid, context, shaderPacked, bufsize,
3563 length, source);
3564 }
3565 else
3566 {
3567 GenerateContextLostErrorOnCurrentGlobalContext();
3568 }
3569 }
3570
3571 // GL_ANGLE_vulkan_image
GL_AcquireTexturesANGLE(GLuint numTextures,const GLuint * textures,const GLenum * layouts)3572 void GL_APIENTRY GL_AcquireTexturesANGLE(GLuint numTextures,
3573 const GLuint *textures,
3574 const GLenum *layouts)
3575 {
3576 Context *context = GetValidGlobalContext();
3577 EVENT(context, GLAcquireTexturesANGLE,
3578 "context = %d, numTextures = %u, textures = 0x%016" PRIxPTR ", layouts = 0x%016" PRIxPTR
3579 "",
3580 CID(context), numTextures, (uintptr_t)textures, (uintptr_t)layouts);
3581
3582 if (context)
3583 {
3584 const TextureID *texturesPacked = PackParam<const TextureID *>(textures);
3585 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
3586 bool isCallValid =
3587 (context->skipValidation() ||
3588 ValidateAcquireTexturesANGLE(context, angle::EntryPoint::GLAcquireTexturesANGLE,
3589 numTextures, texturesPacked, layouts));
3590 if (isCallValid)
3591 {
3592 context->acquireTextures(numTextures, texturesPacked, layouts);
3593 }
3594 ANGLE_CAPTURE(AcquireTexturesANGLE, isCallValid, context, numTextures, texturesPacked,
3595 layouts);
3596 }
3597 else
3598 {
3599 GenerateContextLostErrorOnCurrentGlobalContext();
3600 }
3601 }
3602
GL_ReleaseTexturesANGLE(GLuint numTextures,const GLuint * textures,GLenum * layouts)3603 void GL_APIENTRY GL_ReleaseTexturesANGLE(GLuint numTextures,
3604 const GLuint *textures,
3605 GLenum *layouts)
3606 {
3607 Context *context = GetValidGlobalContext();
3608 EVENT(context, GLReleaseTexturesANGLE,
3609 "context = %d, numTextures = %u, textures = 0x%016" PRIxPTR ", layouts = 0x%016" PRIxPTR
3610 "",
3611 CID(context), numTextures, (uintptr_t)textures, (uintptr_t)layouts);
3612
3613 if (context)
3614 {
3615 const TextureID *texturesPacked = PackParam<const TextureID *>(textures);
3616 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
3617 bool isCallValid =
3618 (context->skipValidation() ||
3619 ValidateReleaseTexturesANGLE(context, angle::EntryPoint::GLReleaseTexturesANGLE,
3620 numTextures, texturesPacked, layouts));
3621 if (isCallValid)
3622 {
3623 context->releaseTextures(numTextures, texturesPacked, layouts);
3624 }
3625 ANGLE_CAPTURE(ReleaseTexturesANGLE, isCallValid, context, numTextures, texturesPacked,
3626 layouts);
3627 }
3628 else
3629 {
3630 GenerateContextLostErrorOnCurrentGlobalContext();
3631 }
3632 }
3633
3634 // GL_APPLE_clip_distance
3635
3636 // GL_ARB_sync
3637 // ClientWaitSync is already defined.
3638
3639 // DeleteSync is already defined.
3640
3641 // FenceSync is already defined.
3642
3643 // GetInteger64v is already defined.
3644
3645 // GetSynciv is already defined.
3646
3647 // IsSync is already defined.
3648
3649 // WaitSync is already defined.
3650
3651 // GL_CHROMIUM_bind_uniform_location
GL_BindUniformLocationCHROMIUM(GLuint program,GLint location,const GLchar * name)3652 void GL_APIENTRY GL_BindUniformLocationCHROMIUM(GLuint program, GLint location, const GLchar *name)
3653 {
3654 Context *context = GetValidGlobalContext();
3655 EVENT(context, GLBindUniformLocationCHROMIUM,
3656 "context = %d, program = %u, location = %d, name = 0x%016" PRIxPTR "", CID(context),
3657 program, location, (uintptr_t)name);
3658
3659 if (context)
3660 {
3661 ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);
3662 UniformLocation locationPacked = PackParam<UniformLocation>(location);
3663 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
3664 bool isCallValid = (context->skipValidation() ||
3665 ValidateBindUniformLocationCHROMIUM(
3666 context, angle::EntryPoint::GLBindUniformLocationCHROMIUM,
3667 programPacked, locationPacked, name));
3668 if (isCallValid)
3669 {
3670 context->bindUniformLocation(programPacked, locationPacked, name);
3671 }
3672 ANGLE_CAPTURE(BindUniformLocationCHROMIUM, isCallValid, context, programPacked,
3673 locationPacked, name);
3674 }
3675 else
3676 {
3677 GenerateContextLostErrorOnCurrentGlobalContext();
3678 }
3679 }
3680
3681 // GL_CHROMIUM_copy_compressed_texture
GL_CompressedCopyTextureCHROMIUM(GLuint sourceId,GLuint destId)3682 void GL_APIENTRY GL_CompressedCopyTextureCHROMIUM(GLuint sourceId, GLuint destId)
3683 {
3684 Context *context = GetValidGlobalContext();
3685 EVENT(context, GLCompressedCopyTextureCHROMIUM, "context = %d, sourceId = %u, destId = %u",
3686 CID(context), sourceId, destId);
3687
3688 if (context)
3689 {
3690 TextureID sourceIdPacked = PackParam<TextureID>(sourceId);
3691 TextureID destIdPacked = PackParam<TextureID>(destId);
3692 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
3693 bool isCallValid = (context->skipValidation() ||
3694 ValidateCompressedCopyTextureCHROMIUM(
3695 context, angle::EntryPoint::GLCompressedCopyTextureCHROMIUM,
3696 sourceIdPacked, destIdPacked));
3697 if (isCallValid)
3698 {
3699 context->compressedCopyTexture(sourceIdPacked, destIdPacked);
3700 }
3701 ANGLE_CAPTURE(CompressedCopyTextureCHROMIUM, isCallValid, context, sourceIdPacked,
3702 destIdPacked);
3703 }
3704 else
3705 {
3706 GenerateContextLostErrorOnCurrentGlobalContext();
3707 }
3708 }
3709
3710 // GL_CHROMIUM_copy_texture
GL_CopyTextureCHROMIUM(GLuint sourceId,GLint sourceLevel,GLenum destTarget,GLuint destId,GLint destLevel,GLint internalFormat,GLenum destType,GLboolean unpackFlipY,GLboolean unpackPremultiplyAlpha,GLboolean unpackUnmultiplyAlpha)3711 void GL_APIENTRY GL_CopyTextureCHROMIUM(GLuint sourceId,
3712 GLint sourceLevel,
3713 GLenum destTarget,
3714 GLuint destId,
3715 GLint destLevel,
3716 GLint internalFormat,
3717 GLenum destType,
3718 GLboolean unpackFlipY,
3719 GLboolean unpackPremultiplyAlpha,
3720 GLboolean unpackUnmultiplyAlpha)
3721 {
3722 Context *context = GetValidGlobalContext();
3723 EVENT(context, GLCopyTextureCHROMIUM,
3724 "context = %d, sourceId = %u, sourceLevel = %d, destTarget = %s, destId = %u, destLevel "
3725 "= %d, internalFormat = %d, destType = %s, unpackFlipY = %s, unpackPremultiplyAlpha = "
3726 "%s, unpackUnmultiplyAlpha = %s",
3727 CID(context), sourceId, sourceLevel,
3728 GLenumToString(GLenumGroup::DefaultGroup, destTarget), destId, destLevel, internalFormat,
3729 GLenumToString(GLenumGroup::DefaultGroup, destType), GLbooleanToString(unpackFlipY),
3730 GLbooleanToString(unpackPremultiplyAlpha), GLbooleanToString(unpackUnmultiplyAlpha));
3731
3732 if (context)
3733 {
3734 TextureID sourceIdPacked = PackParam<TextureID>(sourceId);
3735 TextureTarget destTargetPacked = PackParam<TextureTarget>(destTarget);
3736 TextureID destIdPacked = PackParam<TextureID>(destId);
3737 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
3738 bool isCallValid =
3739 (context->skipValidation() ||
3740 ValidateCopyTextureCHROMIUM(
3741 context, angle::EntryPoint::GLCopyTextureCHROMIUM, sourceIdPacked, sourceLevel,
3742 destTargetPacked, destIdPacked, destLevel, internalFormat, destType, unpackFlipY,
3743 unpackPremultiplyAlpha, unpackUnmultiplyAlpha));
3744 if (isCallValid)
3745 {
3746 context->copyTexture(sourceIdPacked, sourceLevel, destTargetPacked, destIdPacked,
3747 destLevel, internalFormat, destType, unpackFlipY,
3748 unpackPremultiplyAlpha, unpackUnmultiplyAlpha);
3749 }
3750 ANGLE_CAPTURE(CopyTextureCHROMIUM, isCallValid, context, sourceIdPacked, sourceLevel,
3751 destTargetPacked, destIdPacked, destLevel, internalFormat, destType,
3752 unpackFlipY, unpackPremultiplyAlpha, unpackUnmultiplyAlpha);
3753 }
3754 else
3755 {
3756 GenerateContextLostErrorOnCurrentGlobalContext();
3757 }
3758 }
3759
GL_CopySubTextureCHROMIUM(GLuint sourceId,GLint sourceLevel,GLenum destTarget,GLuint destId,GLint destLevel,GLint xoffset,GLint yoffset,GLint x,GLint y,GLint width,GLint height,GLboolean unpackFlipY,GLboolean unpackPremultiplyAlpha,GLboolean unpackUnmultiplyAlpha)3760 void GL_APIENTRY GL_CopySubTextureCHROMIUM(GLuint sourceId,
3761 GLint sourceLevel,
3762 GLenum destTarget,
3763 GLuint destId,
3764 GLint destLevel,
3765 GLint xoffset,
3766 GLint yoffset,
3767 GLint x,
3768 GLint y,
3769 GLint width,
3770 GLint height,
3771 GLboolean unpackFlipY,
3772 GLboolean unpackPremultiplyAlpha,
3773 GLboolean unpackUnmultiplyAlpha)
3774 {
3775 Context *context = GetValidGlobalContext();
3776 EVENT(context, GLCopySubTextureCHROMIUM,
3777 "context = %d, sourceId = %u, sourceLevel = %d, destTarget = %s, destId = %u, destLevel "
3778 "= %d, xoffset = %d, yoffset = %d, x = %d, y = %d, width = %d, height = %d, unpackFlipY "
3779 "= %s, unpackPremultiplyAlpha = %s, unpackUnmultiplyAlpha = %s",
3780 CID(context), sourceId, sourceLevel,
3781 GLenumToString(GLenumGroup::DefaultGroup, destTarget), destId, destLevel, xoffset,
3782 yoffset, x, y, width, height, GLbooleanToString(unpackFlipY),
3783 GLbooleanToString(unpackPremultiplyAlpha), GLbooleanToString(unpackUnmultiplyAlpha));
3784
3785 if (context)
3786 {
3787 TextureID sourceIdPacked = PackParam<TextureID>(sourceId);
3788 TextureTarget destTargetPacked = PackParam<TextureTarget>(destTarget);
3789 TextureID destIdPacked = PackParam<TextureID>(destId);
3790 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
3791 bool isCallValid =
3792 (context->skipValidation() ||
3793 ValidateCopySubTextureCHROMIUM(
3794 context, angle::EntryPoint::GLCopySubTextureCHROMIUM, sourceIdPacked, sourceLevel,
3795 destTargetPacked, destIdPacked, destLevel, xoffset, yoffset, x, y, width, height,
3796 unpackFlipY, unpackPremultiplyAlpha, unpackUnmultiplyAlpha));
3797 if (isCallValid)
3798 {
3799 context->copySubTexture(sourceIdPacked, sourceLevel, destTargetPacked, destIdPacked,
3800 destLevel, xoffset, yoffset, x, y, width, height, unpackFlipY,
3801 unpackPremultiplyAlpha, unpackUnmultiplyAlpha);
3802 }
3803 ANGLE_CAPTURE(CopySubTextureCHROMIUM, isCallValid, context, sourceIdPacked, sourceLevel,
3804 destTargetPacked, destIdPacked, destLevel, xoffset, yoffset, x, y, width,
3805 height, unpackFlipY, unpackPremultiplyAlpha, unpackUnmultiplyAlpha);
3806 }
3807 else
3808 {
3809 GenerateContextLostErrorOnCurrentGlobalContext();
3810 }
3811 }
3812
3813 // GL_CHROMIUM_framebuffer_mixed_samples
GL_CoverageModulationCHROMIUM(GLenum components)3814 void GL_APIENTRY GL_CoverageModulationCHROMIUM(GLenum components)
3815 {
3816 Context *context = GetValidGlobalContext();
3817 EVENT(context, GLCoverageModulationCHROMIUM, "context = %d, components = %s", CID(context),
3818 GLenumToString(GLenumGroup::DefaultGroup, components));
3819
3820 if (context)
3821 {
3822 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
3823 bool isCallValid =
3824 (context->skipValidation() ||
3825 ValidateCoverageModulationCHROMIUM(
3826 context, angle::EntryPoint::GLCoverageModulationCHROMIUM, components));
3827 if (isCallValid)
3828 {
3829 context->coverageModulation(components);
3830 }
3831 ANGLE_CAPTURE(CoverageModulationCHROMIUM, isCallValid, context, components);
3832 }
3833 else
3834 {
3835 GenerateContextLostErrorOnCurrentGlobalContext();
3836 }
3837 }
3838
3839 // GL_CHROMIUM_lose_context
GL_LoseContextCHROMIUM(GLenum current,GLenum other)3840 void GL_APIENTRY GL_LoseContextCHROMIUM(GLenum current, GLenum other)
3841 {
3842 Context *context = GetValidGlobalContext();
3843 EVENT(context, GLLoseContextCHROMIUM, "context = %d, current = %s, other = %s", CID(context),
3844 GLenumToString(GLenumGroup::GraphicsResetStatus, current),
3845 GLenumToString(GLenumGroup::GraphicsResetStatus, other));
3846
3847 if (context)
3848 {
3849 GraphicsResetStatus currentPacked = PackParam<GraphicsResetStatus>(current);
3850 GraphicsResetStatus otherPacked = PackParam<GraphicsResetStatus>(other);
3851 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
3852 bool isCallValid =
3853 (context->skipValidation() ||
3854 ValidateLoseContextCHROMIUM(context, angle::EntryPoint::GLLoseContextCHROMIUM,
3855 currentPacked, otherPacked));
3856 if (isCallValid)
3857 {
3858 context->loseContext(currentPacked, otherPacked);
3859 }
3860 ANGLE_CAPTURE(LoseContextCHROMIUM, isCallValid, context, currentPacked, otherPacked);
3861 }
3862 else
3863 {
3864 GenerateContextLostErrorOnCurrentGlobalContext();
3865 }
3866 }
3867
3868 // GL_EXT_EGL_image_array
3869
3870 // GL_EXT_EGL_image_storage
GL_EGLImageTargetTexStorageEXT(GLenum target,GLeglImageOES image,const GLint * attrib_list)3871 void GL_APIENTRY GL_EGLImageTargetTexStorageEXT(GLenum target,
3872 GLeglImageOES image,
3873 const GLint *attrib_list)
3874 {
3875 Context *context = GetValidGlobalContext();
3876 EVENT(context, GLEGLImageTargetTexStorageEXT,
3877 "context = %d, target = %s, image = 0x%016" PRIxPTR ", attrib_list = 0x%016" PRIxPTR "",
3878 CID(context), GLenumToString(GLenumGroup::DefaultGroup, target), (uintptr_t)image,
3879 (uintptr_t)attrib_list);
3880
3881 if (context)
3882 {
3883 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
3884 bool isCallValid = (context->skipValidation() ||
3885 ValidateEGLImageTargetTexStorageEXT(
3886 context, angle::EntryPoint::GLEGLImageTargetTexStorageEXT, target,
3887 image, attrib_list));
3888 if (isCallValid)
3889 {
3890 context->eGLImageTargetTexStorage(target, image, attrib_list);
3891 }
3892 ANGLE_CAPTURE(EGLImageTargetTexStorageEXT, isCallValid, context, target, image,
3893 attrib_list);
3894 }
3895 else
3896 {
3897 GenerateContextLostErrorOnCurrentGlobalContext();
3898 }
3899 }
3900
GL_EGLImageTargetTextureStorageEXT(GLuint texture,GLeglImageOES image,const GLint * attrib_list)3901 void GL_APIENTRY GL_EGLImageTargetTextureStorageEXT(GLuint texture,
3902 GLeglImageOES image,
3903 const GLint *attrib_list)
3904 {
3905 Context *context = GetValidGlobalContext();
3906 EVENT(context, GLEGLImageTargetTextureStorageEXT,
3907 "context = %d, texture = %u, image = 0x%016" PRIxPTR ", attrib_list = 0x%016" PRIxPTR "",
3908 CID(context), texture, (uintptr_t)image, (uintptr_t)attrib_list);
3909
3910 if (context)
3911 {
3912 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
3913 bool isCallValid = (context->skipValidation() ||
3914 ValidateEGLImageTargetTextureStorageEXT(
3915 context, angle::EntryPoint::GLEGLImageTargetTextureStorageEXT,
3916 texture, image, attrib_list));
3917 if (isCallValid)
3918 {
3919 context->eGLImageTargetTextureStorage(texture, image, attrib_list);
3920 }
3921 ANGLE_CAPTURE(EGLImageTargetTextureStorageEXT, isCallValid, context, texture, image,
3922 attrib_list);
3923 }
3924 else
3925 {
3926 GenerateContextLostErrorOnCurrentGlobalContext();
3927 }
3928 }
3929
3930 // GL_EXT_YUV_target
3931
3932 // GL_EXT_blend_func_extended
GL_BindFragDataLocationEXT(GLuint program,GLuint color,const GLchar * name)3933 void GL_APIENTRY GL_BindFragDataLocationEXT(GLuint program, GLuint color, const GLchar *name)
3934 {
3935 Context *context = GetValidGlobalContext();
3936 EVENT(context, GLBindFragDataLocationEXT,
3937 "context = %d, program = %u, color = %u, name = 0x%016" PRIxPTR "", CID(context), program,
3938 color, (uintptr_t)name);
3939
3940 if (context)
3941 {
3942 ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);
3943 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
3944 bool isCallValid =
3945 (context->skipValidation() ||
3946 ValidateBindFragDataLocationEXT(context, angle::EntryPoint::GLBindFragDataLocationEXT,
3947 programPacked, color, name));
3948 if (isCallValid)
3949 {
3950 context->bindFragDataLocation(programPacked, color, name);
3951 }
3952 ANGLE_CAPTURE(BindFragDataLocationEXT, isCallValid, context, programPacked, color, name);
3953 }
3954 else
3955 {
3956 GenerateContextLostErrorOnCurrentGlobalContext();
3957 }
3958 }
3959
GL_BindFragDataLocationIndexedEXT(GLuint program,GLuint colorNumber,GLuint index,const GLchar * name)3960 void GL_APIENTRY GL_BindFragDataLocationIndexedEXT(GLuint program,
3961 GLuint colorNumber,
3962 GLuint index,
3963 const GLchar *name)
3964 {
3965 Context *context = GetValidGlobalContext();
3966 EVENT(context, GLBindFragDataLocationIndexedEXT,
3967 "context = %d, program = %u, colorNumber = %u, index = %u, name = 0x%016" PRIxPTR "",
3968 CID(context), program, colorNumber, index, (uintptr_t)name);
3969
3970 if (context)
3971 {
3972 ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);
3973 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
3974 bool isCallValid = (context->skipValidation() ||
3975 ValidateBindFragDataLocationIndexedEXT(
3976 context, angle::EntryPoint::GLBindFragDataLocationIndexedEXT,
3977 programPacked, colorNumber, index, name));
3978 if (isCallValid)
3979 {
3980 context->bindFragDataLocationIndexed(programPacked, colorNumber, index, name);
3981 }
3982 ANGLE_CAPTURE(BindFragDataLocationIndexedEXT, isCallValid, context, programPacked,
3983 colorNumber, index, name);
3984 }
3985 else
3986 {
3987 GenerateContextLostErrorOnCurrentGlobalContext();
3988 }
3989 }
3990
GL_GetFragDataIndexEXT(GLuint program,const GLchar * name)3991 GLint GL_APIENTRY GL_GetFragDataIndexEXT(GLuint program, const GLchar *name)
3992 {
3993 Context *context = GetValidGlobalContext();
3994 EVENT(context, GLGetFragDataIndexEXT, "context = %d, program = %u, name = 0x%016" PRIxPTR "",
3995 CID(context), program, (uintptr_t)name);
3996
3997 GLint returnValue;
3998 if (context)
3999 {
4000 ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);
4001 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
4002 bool isCallValid =
4003 (context->skipValidation() ||
4004 ValidateGetFragDataIndexEXT(context, angle::EntryPoint::GLGetFragDataIndexEXT,
4005 programPacked, name));
4006 if (isCallValid)
4007 {
4008 returnValue = context->getFragDataIndex(programPacked, name);
4009 }
4010 else
4011 {
4012 returnValue = GetDefaultReturnValue<angle::EntryPoint::GLGetFragDataIndexEXT, GLint>();
4013 }
4014 ANGLE_CAPTURE(GetFragDataIndexEXT, isCallValid, context, programPacked, name, returnValue);
4015 }
4016 else
4017 {
4018 GenerateContextLostErrorOnCurrentGlobalContext();
4019 returnValue = GetDefaultReturnValue<angle::EntryPoint::GLGetFragDataIndexEXT, GLint>();
4020 }
4021 return returnValue;
4022 }
4023
GL_GetProgramResourceLocationIndexEXT(GLuint program,GLenum programInterface,const GLchar * name)4024 GLint GL_APIENTRY GL_GetProgramResourceLocationIndexEXT(GLuint program,
4025 GLenum programInterface,
4026 const GLchar *name)
4027 {
4028 Context *context = GetValidGlobalContext();
4029 EVENT(context, GLGetProgramResourceLocationIndexEXT,
4030 "context = %d, program = %u, programInterface = %s, name = 0x%016" PRIxPTR "",
4031 CID(context), program, GLenumToString(GLenumGroup::ProgramInterface, programInterface),
4032 (uintptr_t)name);
4033
4034 GLint returnValue;
4035 if (context)
4036 {
4037 ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);
4038 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
4039 bool isCallValid = (context->skipValidation() ||
4040 ValidateGetProgramResourceLocationIndexEXT(
4041 context, angle::EntryPoint::GLGetProgramResourceLocationIndexEXT,
4042 programPacked, programInterface, name));
4043 if (isCallValid)
4044 {
4045 returnValue =
4046 context->getProgramResourceLocationIndex(programPacked, programInterface, name);
4047 }
4048 else
4049 {
4050 returnValue =
4051 GetDefaultReturnValue<angle::EntryPoint::GLGetProgramResourceLocationIndexEXT,
4052 GLint>();
4053 }
4054 ANGLE_CAPTURE(GetProgramResourceLocationIndexEXT, isCallValid, context, programPacked,
4055 programInterface, name, returnValue);
4056 }
4057 else
4058 {
4059 GenerateContextLostErrorOnCurrentGlobalContext();
4060 returnValue =
4061 GetDefaultReturnValue<angle::EntryPoint::GLGetProgramResourceLocationIndexEXT, GLint>();
4062 }
4063 return returnValue;
4064 }
4065
4066 // GL_EXT_blend_minmax
4067
4068 // GL_EXT_buffer_storage
GL_BufferStorageEXT(GLenum target,GLsizeiptr size,const void * data,GLbitfield flags)4069 void GL_APIENTRY GL_BufferStorageEXT(GLenum target,
4070 GLsizeiptr size,
4071 const void *data,
4072 GLbitfield flags)
4073 {
4074 Context *context = GetValidGlobalContext();
4075 EVENT(context, GLBufferStorageEXT,
4076 "context = %d, target = %s, size = %llu, data = 0x%016" PRIxPTR ", flags = %s",
4077 CID(context), GLenumToString(GLenumGroup::BufferStorageTarget, target),
4078 static_cast<unsigned long long>(size), (uintptr_t)data,
4079 GLbitfieldToString(GLenumGroup::MapBufferUsageMask, flags).c_str());
4080
4081 if (context)
4082 {
4083 BufferBinding targetPacked = PackParam<BufferBinding>(target);
4084 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
4085 bool isCallValid = (context->skipValidation() ||
4086 ValidateBufferStorageEXT(context, angle::EntryPoint::GLBufferStorageEXT,
4087 targetPacked, size, data, flags));
4088 if (isCallValid)
4089 {
4090 context->bufferStorage(targetPacked, size, data, flags);
4091 }
4092 ANGLE_CAPTURE(BufferStorageEXT, isCallValid, context, targetPacked, size, data, flags);
4093 }
4094 else
4095 {
4096 GenerateContextLostErrorOnCurrentGlobalContext();
4097 }
4098 }
4099
4100 // GL_EXT_clip_control
GL_ClipControlEXT(GLenum origin,GLenum depth)4101 void GL_APIENTRY GL_ClipControlEXT(GLenum origin, GLenum depth)
4102 {
4103 Context *context = GetValidGlobalContext();
4104 EVENT(context, GLClipControlEXT, "context = %d, origin = %s, depth = %s", CID(context),
4105 GLenumToString(GLenumGroup::DefaultGroup, origin),
4106 GLenumToString(GLenumGroup::DefaultGroup, depth));
4107
4108 if (context)
4109 {
4110 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
4111 bool isCallValid =
4112 (context->skipValidation() ||
4113 ValidateClipControlEXT(context, angle::EntryPoint::GLClipControlEXT, origin, depth));
4114 if (isCallValid)
4115 {
4116 context->clipControl(origin, depth);
4117 }
4118 ANGLE_CAPTURE(ClipControlEXT, isCallValid, context, origin, depth);
4119 }
4120 else
4121 {
4122 GenerateContextLostErrorOnCurrentGlobalContext();
4123 }
4124 }
4125
4126 // GL_EXT_clip_cull_distance
4127
4128 // GL_EXT_color_buffer_float
4129
4130 // GL_EXT_color_buffer_half_float
4131
4132 // GL_EXT_copy_image
GL_CopyImageSubDataEXT(GLuint srcName,GLenum srcTarget,GLint srcLevel,GLint srcX,GLint srcY,GLint srcZ,GLuint dstName,GLenum dstTarget,GLint dstLevel,GLint dstX,GLint dstY,GLint dstZ,GLsizei srcWidth,GLsizei srcHeight,GLsizei srcDepth)4133 void GL_APIENTRY GL_CopyImageSubDataEXT(GLuint srcName,
4134 GLenum srcTarget,
4135 GLint srcLevel,
4136 GLint srcX,
4137 GLint srcY,
4138 GLint srcZ,
4139 GLuint dstName,
4140 GLenum dstTarget,
4141 GLint dstLevel,
4142 GLint dstX,
4143 GLint dstY,
4144 GLint dstZ,
4145 GLsizei srcWidth,
4146 GLsizei srcHeight,
4147 GLsizei srcDepth)
4148 {
4149 Context *context = GetValidGlobalContext();
4150 EVENT(context, GLCopyImageSubDataEXT,
4151 "context = %d, srcName = %u, srcTarget = %s, srcLevel = %d, srcX = %d, srcY = %d, srcZ = "
4152 "%d, dstName = %u, dstTarget = %s, dstLevel = %d, dstX = %d, dstY = %d, dstZ = %d, "
4153 "srcWidth = %d, srcHeight = %d, srcDepth = %d",
4154 CID(context), srcName, GLenumToString(GLenumGroup::CopyBufferSubDataTarget, srcTarget),
4155 srcLevel, srcX, srcY, srcZ, dstName,
4156 GLenumToString(GLenumGroup::CopyBufferSubDataTarget, dstTarget), dstLevel, dstX, dstY,
4157 dstZ, srcWidth, srcHeight, srcDepth);
4158
4159 if (context)
4160 {
4161 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
4162 bool isCallValid = (context->skipValidation() ||
4163 ValidateCopyImageSubDataEXT(
4164 context, angle::EntryPoint::GLCopyImageSubDataEXT, srcName,
4165 srcTarget, srcLevel, srcX, srcY, srcZ, dstName, dstTarget, dstLevel,
4166 dstX, dstY, dstZ, srcWidth, srcHeight, srcDepth));
4167 if (isCallValid)
4168 {
4169 context->copyImageSubData(srcName, srcTarget, srcLevel, srcX, srcY, srcZ, dstName,
4170 dstTarget, dstLevel, dstX, dstY, dstZ, srcWidth, srcHeight,
4171 srcDepth);
4172 }
4173 ANGLE_CAPTURE(CopyImageSubDataEXT, isCallValid, context, srcName, srcTarget, srcLevel, srcX,
4174 srcY, srcZ, dstName, dstTarget, dstLevel, dstX, dstY, dstZ, srcWidth,
4175 srcHeight, srcDepth);
4176 }
4177 else
4178 {
4179 GenerateContextLostErrorOnCurrentGlobalContext();
4180 }
4181 }
4182
4183 // GL_EXT_debug_label
4184 void GL_APIENTRY
GL_GetObjectLabelEXT(GLenum type,GLuint object,GLsizei bufSize,GLsizei * length,GLchar * label)4185 GL_GetObjectLabelEXT(GLenum type, GLuint object, GLsizei bufSize, GLsizei *length, GLchar *label)
4186 {
4187 Context *context = GetValidGlobalContext();
4188 EVENT(context, GLGetObjectLabelEXT,
4189 "context = %d, type = %s, object = %u, bufSize = %d, length = 0x%016" PRIxPTR
4190 ", label = 0x%016" PRIxPTR "",
4191 CID(context), GLenumToString(GLenumGroup::DefaultGroup, type), object, bufSize,
4192 (uintptr_t)length, (uintptr_t)label);
4193
4194 if (context)
4195 {
4196 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
4197 bool isCallValid =
4198 (context->skipValidation() ||
4199 ValidateGetObjectLabelEXT(context, angle::EntryPoint::GLGetObjectLabelEXT, type,
4200 object, bufSize, length, label));
4201 if (isCallValid)
4202 {
4203 context->getObjectLabel(type, object, bufSize, length, label);
4204 }
4205 ANGLE_CAPTURE(GetObjectLabelEXT, isCallValid, context, type, object, bufSize, length,
4206 label);
4207 }
4208 else
4209 {
4210 GenerateContextLostErrorOnCurrentGlobalContext();
4211 }
4212 }
4213
GL_LabelObjectEXT(GLenum type,GLuint object,GLsizei length,const GLchar * label)4214 void GL_APIENTRY GL_LabelObjectEXT(GLenum type, GLuint object, GLsizei length, const GLchar *label)
4215 {
4216 Context *context = GetValidGlobalContext();
4217 EVENT(context, GLLabelObjectEXT,
4218 "context = %d, type = %s, object = %u, length = %d, label = 0x%016" PRIxPTR "",
4219 CID(context), GLenumToString(GLenumGroup::DefaultGroup, type), object, length,
4220 (uintptr_t)label);
4221
4222 if (context)
4223 {
4224 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
4225 bool isCallValid = (context->skipValidation() ||
4226 ValidateLabelObjectEXT(context, angle::EntryPoint::GLLabelObjectEXT,
4227 type, object, length, label));
4228 if (isCallValid)
4229 {
4230 context->labelObject(type, object, length, label);
4231 }
4232 ANGLE_CAPTURE(LabelObjectEXT, isCallValid, context, type, object, length, label);
4233 }
4234 else
4235 {
4236 GenerateContextLostErrorOnCurrentGlobalContext();
4237 }
4238 }
4239
4240 // GL_EXT_debug_marker
GL_InsertEventMarkerEXT(GLsizei length,const GLchar * marker)4241 void GL_APIENTRY GL_InsertEventMarkerEXT(GLsizei length, const GLchar *marker)
4242 {
4243 Context *context = GetValidGlobalContext();
4244 // Don't run the EVENT() macro on the EXT_debug_marker entry points.
4245 // It can interfere with the debug events being set by the caller.
4246 // EVENT(context, GLInsertEventMarkerEXT, "context = %d, length = %d, marker = 0x%016" PRIxPTR
4247 // "", CID(context), length, (uintptr_t)marker);
4248
4249 if (context)
4250 {
4251 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
4252 bool isCallValid =
4253 (context->skipValidation() ||
4254 ValidateInsertEventMarkerEXT(context, angle::EntryPoint::GLInsertEventMarkerEXT,
4255 length, marker));
4256 if (isCallValid)
4257 {
4258 context->insertEventMarker(length, marker);
4259 }
4260 ANGLE_CAPTURE(InsertEventMarkerEXT, isCallValid, context, length, marker);
4261 }
4262 else
4263 {
4264 GenerateContextLostErrorOnCurrentGlobalContext();
4265 }
4266 }
4267
GL_PopGroupMarkerEXT()4268 void GL_APIENTRY GL_PopGroupMarkerEXT()
4269 {
4270 Context *context = GetValidGlobalContext();
4271 // Don't run the EVENT() macro on the EXT_debug_marker entry points.
4272 // It can interfere with the debug events being set by the caller.
4273 // EVENT(context, GLPopGroupMarkerEXT, "context = %d", CID(context));
4274
4275 if (context)
4276 {
4277 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
4278 bool isCallValid =
4279 (context->skipValidation() ||
4280 ValidatePopGroupMarkerEXT(context, angle::EntryPoint::GLPopGroupMarkerEXT));
4281 if (isCallValid)
4282 {
4283 context->popGroupMarker();
4284 }
4285 ANGLE_CAPTURE(PopGroupMarkerEXT, isCallValid, context);
4286 }
4287 else
4288 {
4289 GenerateContextLostErrorOnCurrentGlobalContext();
4290 }
4291 }
4292
GL_PushGroupMarkerEXT(GLsizei length,const GLchar * marker)4293 void GL_APIENTRY GL_PushGroupMarkerEXT(GLsizei length, const GLchar *marker)
4294 {
4295 Context *context = GetValidGlobalContext();
4296 // Don't run the EVENT() macro on the EXT_debug_marker entry points.
4297 // It can interfere with the debug events being set by the caller.
4298 // EVENT(context, GLPushGroupMarkerEXT, "context = %d, length = %d, marker = 0x%016" PRIxPTR "",
4299 // CID(context), length, (uintptr_t)marker);
4300
4301 if (context)
4302 {
4303 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
4304 bool isCallValid = (context->skipValidation() ||
4305 ValidatePushGroupMarkerEXT(
4306 context, angle::EntryPoint::GLPushGroupMarkerEXT, length, marker));
4307 if (isCallValid)
4308 {
4309 context->pushGroupMarker(length, marker);
4310 }
4311 ANGLE_CAPTURE(PushGroupMarkerEXT, isCallValid, context, length, marker);
4312 }
4313 else
4314 {
4315 GenerateContextLostErrorOnCurrentGlobalContext();
4316 }
4317 }
4318
4319 // GL_EXT_discard_framebuffer
GL_DiscardFramebufferEXT(GLenum target,GLsizei numAttachments,const GLenum * attachments)4320 void GL_APIENTRY GL_DiscardFramebufferEXT(GLenum target,
4321 GLsizei numAttachments,
4322 const GLenum *attachments)
4323 {
4324 Context *context = GetValidGlobalContext();
4325 EVENT(context, GLDiscardFramebufferEXT,
4326 "context = %d, target = %s, numAttachments = %d, attachments = 0x%016" PRIxPTR "",
4327 CID(context), GLenumToString(GLenumGroup::FramebufferTarget, target), numAttachments,
4328 (uintptr_t)attachments);
4329
4330 if (context)
4331 {
4332 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
4333 bool isCallValid =
4334 (context->skipValidation() ||
4335 ValidateDiscardFramebufferEXT(context, angle::EntryPoint::GLDiscardFramebufferEXT,
4336 target, numAttachments, attachments));
4337 if (isCallValid)
4338 {
4339 context->discardFramebuffer(target, numAttachments, attachments);
4340 }
4341 ANGLE_CAPTURE(DiscardFramebufferEXT, isCallValid, context, target, numAttachments,
4342 attachments);
4343 }
4344 else
4345 {
4346 GenerateContextLostErrorOnCurrentGlobalContext();
4347 }
4348 }
4349
4350 // GL_EXT_disjoint_timer_query
GL_BeginQueryEXT(GLenum target,GLuint id)4351 void GL_APIENTRY GL_BeginQueryEXT(GLenum target, GLuint id)
4352 {
4353 Context *context = GetValidGlobalContext();
4354 EVENT(context, GLBeginQueryEXT, "context = %d, target = %s, id = %u", CID(context),
4355 GLenumToString(GLenumGroup::QueryTarget, target), id);
4356
4357 if (context)
4358 {
4359 QueryType targetPacked = PackParam<QueryType>(target);
4360 QueryID idPacked = PackParam<QueryID>(id);
4361 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
4362 bool isCallValid = (context->skipValidation() ||
4363 ValidateBeginQueryEXT(context, angle::EntryPoint::GLBeginQueryEXT,
4364 targetPacked, idPacked));
4365 if (isCallValid)
4366 {
4367 context->beginQuery(targetPacked, idPacked);
4368 }
4369 ANGLE_CAPTURE(BeginQueryEXT, isCallValid, context, targetPacked, idPacked);
4370 }
4371 else
4372 {
4373 GenerateContextLostErrorOnCurrentGlobalContext();
4374 }
4375 }
4376
GL_DeleteQueriesEXT(GLsizei n,const GLuint * ids)4377 void GL_APIENTRY GL_DeleteQueriesEXT(GLsizei n, const GLuint *ids)
4378 {
4379 Context *context = GetValidGlobalContext();
4380 EVENT(context, GLDeleteQueriesEXT, "context = %d, n = %d, ids = 0x%016" PRIxPTR "",
4381 CID(context), n, (uintptr_t)ids);
4382
4383 if (context)
4384 {
4385 const QueryID *idsPacked = PackParam<const QueryID *>(ids);
4386 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
4387 bool isCallValid = (context->skipValidation() ||
4388 ValidateDeleteQueriesEXT(context, angle::EntryPoint::GLDeleteQueriesEXT,
4389 n, idsPacked));
4390 if (isCallValid)
4391 {
4392 context->deleteQueries(n, idsPacked);
4393 }
4394 ANGLE_CAPTURE(DeleteQueriesEXT, isCallValid, context, n, idsPacked);
4395 }
4396 else
4397 {
4398 GenerateContextLostErrorOnCurrentGlobalContext();
4399 }
4400 }
4401
GL_EndQueryEXT(GLenum target)4402 void GL_APIENTRY GL_EndQueryEXT(GLenum target)
4403 {
4404 Context *context = GetValidGlobalContext();
4405 EVENT(context, GLEndQueryEXT, "context = %d, target = %s", CID(context),
4406 GLenumToString(GLenumGroup::QueryTarget, target));
4407
4408 if (context)
4409 {
4410 QueryType targetPacked = PackParam<QueryType>(target);
4411 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
4412 bool isCallValid =
4413 (context->skipValidation() ||
4414 ValidateEndQueryEXT(context, angle::EntryPoint::GLEndQueryEXT, targetPacked));
4415 if (isCallValid)
4416 {
4417 context->endQuery(targetPacked);
4418 }
4419 ANGLE_CAPTURE(EndQueryEXT, isCallValid, context, targetPacked);
4420 }
4421 else
4422 {
4423 GenerateContextLostErrorOnCurrentGlobalContext();
4424 }
4425 }
4426
GL_GenQueriesEXT(GLsizei n,GLuint * ids)4427 void GL_APIENTRY GL_GenQueriesEXT(GLsizei n, GLuint *ids)
4428 {
4429 Context *context = GetValidGlobalContext();
4430 EVENT(context, GLGenQueriesEXT, "context = %d, n = %d, ids = 0x%016" PRIxPTR "", CID(context),
4431 n, (uintptr_t)ids);
4432
4433 if (context)
4434 {
4435 QueryID *idsPacked = PackParam<QueryID *>(ids);
4436 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
4437 bool isCallValid =
4438 (context->skipValidation() ||
4439 ValidateGenQueriesEXT(context, angle::EntryPoint::GLGenQueriesEXT, n, idsPacked));
4440 if (isCallValid)
4441 {
4442 context->genQueries(n, idsPacked);
4443 }
4444 ANGLE_CAPTURE(GenQueriesEXT, isCallValid, context, n, idsPacked);
4445 }
4446 else
4447 {
4448 GenerateContextLostErrorOnCurrentGlobalContext();
4449 }
4450 }
4451
GL_GetInteger64vEXT(GLenum pname,GLint64 * data)4452 void GL_APIENTRY GL_GetInteger64vEXT(GLenum pname, GLint64 *data)
4453 {
4454 Context *context = GetValidGlobalContext();
4455 EVENT(context, GLGetInteger64vEXT, "context = %d, pname = %s, data = 0x%016" PRIxPTR "",
4456 CID(context), GLenumToString(GLenumGroup::GetPName, pname), (uintptr_t)data);
4457
4458 if (context)
4459 {
4460 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
4461 bool isCallValid =
4462 (context->skipValidation() ||
4463 ValidateGetInteger64vEXT(context, angle::EntryPoint::GLGetInteger64vEXT, pname, data));
4464 if (isCallValid)
4465 {
4466 context->getInteger64v(pname, data);
4467 }
4468 ANGLE_CAPTURE(GetInteger64vEXT, isCallValid, context, pname, data);
4469 }
4470 else
4471 {
4472 GenerateContextLostErrorOnCurrentGlobalContext();
4473 }
4474 }
4475
GL_GetQueryObjecti64vEXT(GLuint id,GLenum pname,GLint64 * params)4476 void GL_APIENTRY GL_GetQueryObjecti64vEXT(GLuint id, GLenum pname, GLint64 *params)
4477 {
4478 Context *context = GetGlobalContext();
4479 EVENT(context, GLGetQueryObjecti64vEXT,
4480 "context = %d, id = %u, pname = %s, params = 0x%016" PRIxPTR "", CID(context), id,
4481 GLenumToString(GLenumGroup::QueryObjectParameterName, pname), (uintptr_t)params);
4482
4483 if (context)
4484 {
4485 QueryID idPacked = PackParam<QueryID>(id);
4486 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
4487 bool isCallValid =
4488 (context->skipValidation() ||
4489 ValidateGetQueryObjecti64vEXT(context, angle::EntryPoint::GLGetQueryObjecti64vEXT,
4490 idPacked, pname, params));
4491 if (isCallValid)
4492 {
4493 context->getQueryObjecti64v(idPacked, pname, params);
4494 }
4495 ANGLE_CAPTURE(GetQueryObjecti64vEXT, isCallValid, context, idPacked, pname, params);
4496 }
4497 else
4498 {}
4499 }
4500
GL_GetQueryObjectivEXT(GLuint id,GLenum pname,GLint * params)4501 void GL_APIENTRY GL_GetQueryObjectivEXT(GLuint id, GLenum pname, GLint *params)
4502 {
4503 Context *context = GetGlobalContext();
4504 EVENT(context, GLGetQueryObjectivEXT,
4505 "context = %d, id = %u, pname = %s, params = 0x%016" PRIxPTR "", CID(context), id,
4506 GLenumToString(GLenumGroup::QueryObjectParameterName, pname), (uintptr_t)params);
4507
4508 if (context)
4509 {
4510 QueryID idPacked = PackParam<QueryID>(id);
4511 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
4512 bool isCallValid =
4513 (context->skipValidation() ||
4514 ValidateGetQueryObjectivEXT(context, angle::EntryPoint::GLGetQueryObjectivEXT,
4515 idPacked, pname, params));
4516 if (isCallValid)
4517 {
4518 context->getQueryObjectiv(idPacked, pname, params);
4519 }
4520 ANGLE_CAPTURE(GetQueryObjectivEXT, isCallValid, context, idPacked, pname, params);
4521 }
4522 else
4523 {}
4524 }
4525
GL_GetQueryObjectui64vEXT(GLuint id,GLenum pname,GLuint64 * params)4526 void GL_APIENTRY GL_GetQueryObjectui64vEXT(GLuint id, GLenum pname, GLuint64 *params)
4527 {
4528 Context *context = GetValidGlobalContext();
4529 EVENT(context, GLGetQueryObjectui64vEXT,
4530 "context = %d, id = %u, pname = %s, params = 0x%016" PRIxPTR "", CID(context), id,
4531 GLenumToString(GLenumGroup::QueryObjectParameterName, pname), (uintptr_t)params);
4532
4533 if (context)
4534 {
4535 QueryID idPacked = PackParam<QueryID>(id);
4536 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
4537 bool isCallValid =
4538 (context->skipValidation() ||
4539 ValidateGetQueryObjectui64vEXT(context, angle::EntryPoint::GLGetQueryObjectui64vEXT,
4540 idPacked, pname, params));
4541 if (isCallValid)
4542 {
4543 context->getQueryObjectui64v(idPacked, pname, params);
4544 }
4545 ANGLE_CAPTURE(GetQueryObjectui64vEXT, isCallValid, context, idPacked, pname, params);
4546 }
4547 else
4548 {
4549 GenerateContextLostErrorOnCurrentGlobalContext();
4550 }
4551 }
4552
GL_GetQueryObjectuivEXT(GLuint id,GLenum pname,GLuint * params)4553 void GL_APIENTRY GL_GetQueryObjectuivEXT(GLuint id, GLenum pname, GLuint *params)
4554 {
4555 Context *context = GetValidGlobalContext();
4556 EVENT(context, GLGetQueryObjectuivEXT,
4557 "context = %d, id = %u, pname = %s, params = 0x%016" PRIxPTR "", CID(context), id,
4558 GLenumToString(GLenumGroup::QueryObjectParameterName, pname), (uintptr_t)params);
4559
4560 if (context)
4561 {
4562 QueryID idPacked = PackParam<QueryID>(id);
4563 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
4564 bool isCallValid =
4565 (context->skipValidation() ||
4566 ValidateGetQueryObjectuivEXT(context, angle::EntryPoint::GLGetQueryObjectuivEXT,
4567 idPacked, pname, params));
4568 if (isCallValid)
4569 {
4570 context->getQueryObjectuiv(idPacked, pname, params);
4571 }
4572 ANGLE_CAPTURE(GetQueryObjectuivEXT, isCallValid, context, idPacked, pname, params);
4573 }
4574 else
4575 {
4576 GenerateContextLostErrorOnCurrentGlobalContext();
4577 }
4578 }
4579
GL_GetQueryivEXT(GLenum target,GLenum pname,GLint * params)4580 void GL_APIENTRY GL_GetQueryivEXT(GLenum target, GLenum pname, GLint *params)
4581 {
4582 Context *context = GetValidGlobalContext();
4583 EVENT(context, GLGetQueryivEXT,
4584 "context = %d, target = %s, pname = %s, params = 0x%016" PRIxPTR "", CID(context),
4585 GLenumToString(GLenumGroup::QueryTarget, target),
4586 GLenumToString(GLenumGroup::QueryParameterName, pname), (uintptr_t)params);
4587
4588 if (context)
4589 {
4590 QueryType targetPacked = PackParam<QueryType>(target);
4591 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
4592 bool isCallValid = (context->skipValidation() ||
4593 ValidateGetQueryivEXT(context, angle::EntryPoint::GLGetQueryivEXT,
4594 targetPacked, pname, params));
4595 if (isCallValid)
4596 {
4597 context->getQueryiv(targetPacked, pname, params);
4598 }
4599 ANGLE_CAPTURE(GetQueryivEXT, isCallValid, context, targetPacked, pname, params);
4600 }
4601 else
4602 {
4603 GenerateContextLostErrorOnCurrentGlobalContext();
4604 }
4605 }
4606
GL_IsQueryEXT(GLuint id)4607 GLboolean GL_APIENTRY GL_IsQueryEXT(GLuint id)
4608 {
4609 Context *context = GetValidGlobalContext();
4610 EVENT(context, GLIsQueryEXT, "context = %d, id = %u", CID(context), id);
4611
4612 GLboolean returnValue;
4613 if (context)
4614 {
4615 QueryID idPacked = PackParam<QueryID>(id);
4616 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
4617 bool isCallValid = (context->skipValidation() ||
4618 ValidateIsQueryEXT(context, angle::EntryPoint::GLIsQueryEXT, idPacked));
4619 if (isCallValid)
4620 {
4621 returnValue = context->isQuery(idPacked);
4622 }
4623 else
4624 {
4625 returnValue = GetDefaultReturnValue<angle::EntryPoint::GLIsQueryEXT, GLboolean>();
4626 }
4627 ANGLE_CAPTURE(IsQueryEXT, isCallValid, context, idPacked, returnValue);
4628 }
4629 else
4630 {
4631 GenerateContextLostErrorOnCurrentGlobalContext();
4632 returnValue = GetDefaultReturnValue<angle::EntryPoint::GLIsQueryEXT, GLboolean>();
4633 }
4634 return returnValue;
4635 }
4636
GL_QueryCounterEXT(GLuint id,GLenum target)4637 void GL_APIENTRY GL_QueryCounterEXT(GLuint id, GLenum target)
4638 {
4639 Context *context = GetValidGlobalContext();
4640 EVENT(context, GLQueryCounterEXT, "context = %d, id = %u, target = %s", CID(context), id,
4641 GLenumToString(GLenumGroup::QueryTarget, target));
4642
4643 if (context)
4644 {
4645 QueryID idPacked = PackParam<QueryID>(id);
4646 QueryType targetPacked = PackParam<QueryType>(target);
4647 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
4648 bool isCallValid = (context->skipValidation() ||
4649 ValidateQueryCounterEXT(context, angle::EntryPoint::GLQueryCounterEXT,
4650 idPacked, targetPacked));
4651 if (isCallValid)
4652 {
4653 context->queryCounter(idPacked, targetPacked);
4654 }
4655 ANGLE_CAPTURE(QueryCounterEXT, isCallValid, context, idPacked, targetPacked);
4656 }
4657 else
4658 {
4659 GenerateContextLostErrorOnCurrentGlobalContext();
4660 }
4661 }
4662
4663 // GL_EXT_draw_buffers
GL_DrawBuffersEXT(GLsizei n,const GLenum * bufs)4664 void GL_APIENTRY GL_DrawBuffersEXT(GLsizei n, const GLenum *bufs)
4665 {
4666 Context *context = GetValidGlobalContext();
4667 EVENT(context, GLDrawBuffersEXT, "context = %d, n = %d, bufs = 0x%016" PRIxPTR "", CID(context),
4668 n, (uintptr_t)bufs);
4669
4670 if (context)
4671 {
4672 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
4673 bool isCallValid =
4674 (context->skipValidation() ||
4675 ValidateDrawBuffersEXT(context, angle::EntryPoint::GLDrawBuffersEXT, n, bufs));
4676 if (isCallValid)
4677 {
4678 context->drawBuffers(n, bufs);
4679 }
4680 ANGLE_CAPTURE(DrawBuffersEXT, isCallValid, context, n, bufs);
4681 }
4682 else
4683 {
4684 GenerateContextLostErrorOnCurrentGlobalContext();
4685 }
4686 }
4687
4688 // GL_EXT_draw_buffers_indexed
GL_BlendEquationSeparateiEXT(GLuint buf,GLenum modeRGB,GLenum modeAlpha)4689 void GL_APIENTRY GL_BlendEquationSeparateiEXT(GLuint buf, GLenum modeRGB, GLenum modeAlpha)
4690 {
4691 Context *context = GetValidGlobalContext();
4692 EVENT(context, GLBlendEquationSeparateiEXT,
4693 "context = %d, buf = %u, modeRGB = %s, modeAlpha = %s", CID(context), buf,
4694 GLenumToString(GLenumGroup::BlendEquationModeEXT, modeRGB),
4695 GLenumToString(GLenumGroup::BlendEquationModeEXT, modeAlpha));
4696
4697 if (context)
4698 {
4699 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
4700 bool isCallValid =
4701 (context->skipValidation() ||
4702 ValidateBlendEquationSeparateiEXT(
4703 context, angle::EntryPoint::GLBlendEquationSeparateiEXT, buf, modeRGB, modeAlpha));
4704 if (isCallValid)
4705 {
4706 context->blendEquationSeparatei(buf, modeRGB, modeAlpha);
4707 }
4708 ANGLE_CAPTURE(BlendEquationSeparateiEXT, isCallValid, context, buf, modeRGB, modeAlpha);
4709 }
4710 else
4711 {
4712 GenerateContextLostErrorOnCurrentGlobalContext();
4713 }
4714 }
4715
GL_BlendEquationiEXT(GLuint buf,GLenum mode)4716 void GL_APIENTRY GL_BlendEquationiEXT(GLuint buf, GLenum mode)
4717 {
4718 Context *context = GetValidGlobalContext();
4719 EVENT(context, GLBlendEquationiEXT, "context = %d, buf = %u, mode = %s", CID(context), buf,
4720 GLenumToString(GLenumGroup::BlendEquationModeEXT, mode));
4721
4722 if (context)
4723 {
4724 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
4725 bool isCallValid =
4726 (context->skipValidation() ||
4727 ValidateBlendEquationiEXT(context, angle::EntryPoint::GLBlendEquationiEXT, buf, mode));
4728 if (isCallValid)
4729 {
4730 context->blendEquationi(buf, mode);
4731 }
4732 ANGLE_CAPTURE(BlendEquationiEXT, isCallValid, context, buf, mode);
4733 }
4734 else
4735 {
4736 GenerateContextLostErrorOnCurrentGlobalContext();
4737 }
4738 }
4739
4740 void GL_APIENTRY
GL_BlendFuncSeparateiEXT(GLuint buf,GLenum srcRGB,GLenum dstRGB,GLenum srcAlpha,GLenum dstAlpha)4741 GL_BlendFuncSeparateiEXT(GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha)
4742 {
4743 Context *context = GetValidGlobalContext();
4744 EVENT(context, GLBlendFuncSeparateiEXT,
4745 "context = %d, buf = %u, srcRGB = %s, dstRGB = %s, srcAlpha = %s, dstAlpha = %s",
4746 CID(context), buf, GLenumToString(GLenumGroup::BlendingFactor, srcRGB),
4747 GLenumToString(GLenumGroup::BlendingFactor, dstRGB),
4748 GLenumToString(GLenumGroup::BlendingFactor, srcAlpha),
4749 GLenumToString(GLenumGroup::BlendingFactor, dstAlpha));
4750
4751 if (context)
4752 {
4753 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
4754 bool isCallValid =
4755 (context->skipValidation() ||
4756 ValidateBlendFuncSeparateiEXT(context, angle::EntryPoint::GLBlendFuncSeparateiEXT, buf,
4757 srcRGB, dstRGB, srcAlpha, dstAlpha));
4758 if (isCallValid)
4759 {
4760 context->blendFuncSeparatei(buf, srcRGB, dstRGB, srcAlpha, dstAlpha);
4761 }
4762 ANGLE_CAPTURE(BlendFuncSeparateiEXT, isCallValid, context, buf, srcRGB, dstRGB, srcAlpha,
4763 dstAlpha);
4764 }
4765 else
4766 {
4767 GenerateContextLostErrorOnCurrentGlobalContext();
4768 }
4769 }
4770
GL_BlendFunciEXT(GLuint buf,GLenum src,GLenum dst)4771 void GL_APIENTRY GL_BlendFunciEXT(GLuint buf, GLenum src, GLenum dst)
4772 {
4773 Context *context = GetValidGlobalContext();
4774 EVENT(context, GLBlendFunciEXT, "context = %d, buf = %u, src = %s, dst = %s", CID(context), buf,
4775 GLenumToString(GLenumGroup::BlendingFactor, src),
4776 GLenumToString(GLenumGroup::BlendingFactor, dst));
4777
4778 if (context)
4779 {
4780 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
4781 bool isCallValid =
4782 (context->skipValidation() ||
4783 ValidateBlendFunciEXT(context, angle::EntryPoint::GLBlendFunciEXT, buf, src, dst));
4784 if (isCallValid)
4785 {
4786 context->blendFunci(buf, src, dst);
4787 }
4788 ANGLE_CAPTURE(BlendFunciEXT, isCallValid, context, buf, src, dst);
4789 }
4790 else
4791 {
4792 GenerateContextLostErrorOnCurrentGlobalContext();
4793 }
4794 }
4795
GL_ColorMaskiEXT(GLuint index,GLboolean r,GLboolean g,GLboolean b,GLboolean a)4796 void GL_APIENTRY GL_ColorMaskiEXT(GLuint index, GLboolean r, GLboolean g, GLboolean b, GLboolean a)
4797 {
4798 Context *context = GetValidGlobalContext();
4799 EVENT(context, GLColorMaskiEXT, "context = %d, index = %u, r = %s, g = %s, b = %s, a = %s",
4800 CID(context), index, GLbooleanToString(r), GLbooleanToString(g), GLbooleanToString(b),
4801 GLbooleanToString(a));
4802
4803 if (context)
4804 {
4805 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
4806 bool isCallValid =
4807 (context->skipValidation() ||
4808 ValidateColorMaskiEXT(context, angle::EntryPoint::GLColorMaskiEXT, index, r, g, b, a));
4809 if (isCallValid)
4810 {
4811 context->colorMaski(index, r, g, b, a);
4812 }
4813 ANGLE_CAPTURE(ColorMaskiEXT, isCallValid, context, index, r, g, b, a);
4814 }
4815 else
4816 {
4817 GenerateContextLostErrorOnCurrentGlobalContext();
4818 }
4819 }
4820
GL_DisableiEXT(GLenum target,GLuint index)4821 void GL_APIENTRY GL_DisableiEXT(GLenum target, GLuint index)
4822 {
4823 Context *context = GetValidGlobalContext();
4824 EVENT(context, GLDisableiEXT, "context = %d, target = %s, index = %u", CID(context),
4825 GLenumToString(GLenumGroup::EnableCap, target), index);
4826
4827 if (context)
4828 {
4829 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
4830 bool isCallValid =
4831 (context->skipValidation() ||
4832 ValidateDisableiEXT(context, angle::EntryPoint::GLDisableiEXT, target, index));
4833 if (isCallValid)
4834 {
4835 context->disablei(target, index);
4836 }
4837 ANGLE_CAPTURE(DisableiEXT, isCallValid, context, target, index);
4838 }
4839 else
4840 {
4841 GenerateContextLostErrorOnCurrentGlobalContext();
4842 }
4843 }
4844
GL_EnableiEXT(GLenum target,GLuint index)4845 void GL_APIENTRY GL_EnableiEXT(GLenum target, GLuint index)
4846 {
4847 Context *context = GetValidGlobalContext();
4848 EVENT(context, GLEnableiEXT, "context = %d, target = %s, index = %u", CID(context),
4849 GLenumToString(GLenumGroup::EnableCap, target), index);
4850
4851 if (context)
4852 {
4853 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
4854 bool isCallValid =
4855 (context->skipValidation() ||
4856 ValidateEnableiEXT(context, angle::EntryPoint::GLEnableiEXT, target, index));
4857 if (isCallValid)
4858 {
4859 context->enablei(target, index);
4860 }
4861 ANGLE_CAPTURE(EnableiEXT, isCallValid, context, target, index);
4862 }
4863 else
4864 {
4865 GenerateContextLostErrorOnCurrentGlobalContext();
4866 }
4867 }
4868
GL_IsEnablediEXT(GLenum target,GLuint index)4869 GLboolean GL_APIENTRY GL_IsEnablediEXT(GLenum target, GLuint index)
4870 {
4871 Context *context = GetValidGlobalContext();
4872 EVENT(context, GLIsEnablediEXT, "context = %d, target = %s, index = %u", CID(context),
4873 GLenumToString(GLenumGroup::EnableCap, target), index);
4874
4875 GLboolean returnValue;
4876 if (context)
4877 {
4878 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
4879 bool isCallValid =
4880 (context->skipValidation() ||
4881 ValidateIsEnablediEXT(context, angle::EntryPoint::GLIsEnablediEXT, target, index));
4882 if (isCallValid)
4883 {
4884 returnValue = context->isEnabledi(target, index);
4885 }
4886 else
4887 {
4888 returnValue = GetDefaultReturnValue<angle::EntryPoint::GLIsEnablediEXT, GLboolean>();
4889 }
4890 ANGLE_CAPTURE(IsEnablediEXT, isCallValid, context, target, index, returnValue);
4891 }
4892 else
4893 {
4894 GenerateContextLostErrorOnCurrentGlobalContext();
4895 returnValue = GetDefaultReturnValue<angle::EntryPoint::GLIsEnablediEXT, GLboolean>();
4896 }
4897 return returnValue;
4898 }
4899
4900 // GL_EXT_draw_elements_base_vertex
GL_DrawElementsBaseVertexEXT(GLenum mode,GLsizei count,GLenum type,const void * indices,GLint basevertex)4901 void GL_APIENTRY GL_DrawElementsBaseVertexEXT(GLenum mode,
4902 GLsizei count,
4903 GLenum type,
4904 const void *indices,
4905 GLint basevertex)
4906 {
4907 Context *context = GetValidGlobalContext();
4908 EVENT(context, GLDrawElementsBaseVertexEXT,
4909 "context = %d, mode = %s, count = %d, type = %s, indices = 0x%016" PRIxPTR
4910 ", basevertex = %d",
4911 CID(context), GLenumToString(GLenumGroup::PrimitiveType, mode), count,
4912 GLenumToString(GLenumGroup::DrawElementsType, type), (uintptr_t)indices, basevertex);
4913
4914 if (context)
4915 {
4916 PrimitiveMode modePacked = PackParam<PrimitiveMode>(mode);
4917 DrawElementsType typePacked = PackParam<DrawElementsType>(type);
4918 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
4919 bool isCallValid = (context->skipValidation() ||
4920 ValidateDrawElementsBaseVertexEXT(
4921 context, angle::EntryPoint::GLDrawElementsBaseVertexEXT, modePacked,
4922 count, typePacked, indices, basevertex));
4923 if (isCallValid)
4924 {
4925 context->drawElementsBaseVertex(modePacked, count, typePacked, indices, basevertex);
4926 }
4927 ANGLE_CAPTURE(DrawElementsBaseVertexEXT, isCallValid, context, modePacked, count,
4928 typePacked, indices, basevertex);
4929 }
4930 else
4931 {
4932 GenerateContextLostErrorOnCurrentGlobalContext();
4933 }
4934 }
4935
GL_DrawElementsInstancedBaseVertexEXT(GLenum mode,GLsizei count,GLenum type,const void * indices,GLsizei instancecount,GLint basevertex)4936 void GL_APIENTRY GL_DrawElementsInstancedBaseVertexEXT(GLenum mode,
4937 GLsizei count,
4938 GLenum type,
4939 const void *indices,
4940 GLsizei instancecount,
4941 GLint basevertex)
4942 {
4943 Context *context = GetValidGlobalContext();
4944 EVENT(context, GLDrawElementsInstancedBaseVertexEXT,
4945 "context = %d, mode = %s, count = %d, type = %s, indices = 0x%016" PRIxPTR
4946 ", instancecount = %d, basevertex = %d",
4947 CID(context), GLenumToString(GLenumGroup::PrimitiveType, mode), count,
4948 GLenumToString(GLenumGroup::DrawElementsType, type), (uintptr_t)indices, instancecount,
4949 basevertex);
4950
4951 if (context)
4952 {
4953 PrimitiveMode modePacked = PackParam<PrimitiveMode>(mode);
4954 DrawElementsType typePacked = PackParam<DrawElementsType>(type);
4955 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
4956 bool isCallValid = (context->skipValidation() ||
4957 ValidateDrawElementsInstancedBaseVertexEXT(
4958 context, angle::EntryPoint::GLDrawElementsInstancedBaseVertexEXT,
4959 modePacked, count, typePacked, indices, instancecount, basevertex));
4960 if (isCallValid)
4961 {
4962 context->drawElementsInstancedBaseVertex(modePacked, count, typePacked, indices,
4963 instancecount, basevertex);
4964 }
4965 ANGLE_CAPTURE(DrawElementsInstancedBaseVertexEXT, isCallValid, context, modePacked, count,
4966 typePacked, indices, instancecount, basevertex);
4967 }
4968 else
4969 {
4970 GenerateContextLostErrorOnCurrentGlobalContext();
4971 }
4972 }
4973
GL_DrawRangeElementsBaseVertexEXT(GLenum mode,GLuint start,GLuint end,GLsizei count,GLenum type,const void * indices,GLint basevertex)4974 void GL_APIENTRY GL_DrawRangeElementsBaseVertexEXT(GLenum mode,
4975 GLuint start,
4976 GLuint end,
4977 GLsizei count,
4978 GLenum type,
4979 const void *indices,
4980 GLint basevertex)
4981 {
4982 Context *context = GetValidGlobalContext();
4983 EVENT(context, GLDrawRangeElementsBaseVertexEXT,
4984 "context = %d, mode = %s, start = %u, end = %u, count = %d, type = %s, indices = "
4985 "0x%016" PRIxPTR ", basevertex = %d",
4986 CID(context), GLenumToString(GLenumGroup::PrimitiveType, mode), start, end, count,
4987 GLenumToString(GLenumGroup::DrawElementsType, type), (uintptr_t)indices, basevertex);
4988
4989 if (context)
4990 {
4991 PrimitiveMode modePacked = PackParam<PrimitiveMode>(mode);
4992 DrawElementsType typePacked = PackParam<DrawElementsType>(type);
4993 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
4994 bool isCallValid = (context->skipValidation() ||
4995 ValidateDrawRangeElementsBaseVertexEXT(
4996 context, angle::EntryPoint::GLDrawRangeElementsBaseVertexEXT,
4997 modePacked, start, end, count, typePacked, indices, basevertex));
4998 if (isCallValid)
4999 {
5000 context->drawRangeElementsBaseVertex(modePacked, start, end, count, typePacked, indices,
5001 basevertex);
5002 }
5003 ANGLE_CAPTURE(DrawRangeElementsBaseVertexEXT, isCallValid, context, modePacked, start, end,
5004 count, typePacked, indices, basevertex);
5005 }
5006 else
5007 {
5008 GenerateContextLostErrorOnCurrentGlobalContext();
5009 }
5010 }
5011
GL_MultiDrawElementsBaseVertexEXT(GLenum mode,const GLsizei * count,GLenum type,const void * const * indices,GLsizei primcount,const GLint * basevertex)5012 void GL_APIENTRY GL_MultiDrawElementsBaseVertexEXT(GLenum mode,
5013 const GLsizei *count,
5014 GLenum type,
5015 const void *const *indices,
5016 GLsizei primcount,
5017 const GLint *basevertex)
5018 {
5019 Context *context = GetValidGlobalContext();
5020 EVENT(context, GLMultiDrawElementsBaseVertexEXT,
5021 "context = %d, mode = %s, count = 0x%016" PRIxPTR ", type = %s, indices = 0x%016" PRIxPTR
5022 ", primcount = %d, basevertex = 0x%016" PRIxPTR "",
5023 CID(context), GLenumToString(GLenumGroup::PrimitiveType, mode), (uintptr_t)count,
5024 GLenumToString(GLenumGroup::DrawElementsType, type), (uintptr_t)indices, primcount,
5025 (uintptr_t)basevertex);
5026
5027 if (context)
5028 {
5029 PrimitiveMode modePacked = PackParam<PrimitiveMode>(mode);
5030 DrawElementsType typePacked = PackParam<DrawElementsType>(type);
5031 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
5032 bool isCallValid = (context->skipValidation() ||
5033 ValidateMultiDrawElementsBaseVertexEXT(
5034 context, angle::EntryPoint::GLMultiDrawElementsBaseVertexEXT,
5035 modePacked, count, typePacked, indices, primcount, basevertex));
5036 if (isCallValid)
5037 {
5038 context->multiDrawElementsBaseVertex(modePacked, count, typePacked, indices, primcount,
5039 basevertex);
5040 }
5041 ANGLE_CAPTURE(MultiDrawElementsBaseVertexEXT, isCallValid, context, modePacked, count,
5042 typePacked, indices, primcount, basevertex);
5043 }
5044 else
5045 {
5046 GenerateContextLostErrorOnCurrentGlobalContext();
5047 }
5048 }
5049
5050 // GL_EXT_external_buffer
GL_BufferStorageExternalEXT(GLenum target,GLintptr offset,GLsizeiptr size,GLeglClientBufferEXT clientBuffer,GLbitfield flags)5051 void GL_APIENTRY GL_BufferStorageExternalEXT(GLenum target,
5052 GLintptr offset,
5053 GLsizeiptr size,
5054 GLeglClientBufferEXT clientBuffer,
5055 GLbitfield flags)
5056 {
5057 Context *context = GetValidGlobalContext();
5058 EVENT(context, GLBufferStorageExternalEXT,
5059 "context = %d, target = %s, offset = %llu, size = %llu, clientBuffer = 0x%016" PRIxPTR
5060 ", flags = %s",
5061 CID(context), GLenumToString(GLenumGroup::DefaultGroup, target),
5062 static_cast<unsigned long long>(offset), static_cast<unsigned long long>(size),
5063 (uintptr_t)clientBuffer,
5064 GLbitfieldToString(GLenumGroup::MapBufferUsageMask, flags).c_str());
5065
5066 if (context)
5067 {
5068 BufferBinding targetPacked = PackParam<BufferBinding>(target);
5069 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
5070 bool isCallValid = (context->skipValidation() ||
5071 ValidateBufferStorageExternalEXT(
5072 context, angle::EntryPoint::GLBufferStorageExternalEXT,
5073 targetPacked, offset, size, clientBuffer, flags));
5074 if (isCallValid)
5075 {
5076 context->bufferStorageExternal(targetPacked, offset, size, clientBuffer, flags);
5077 }
5078 ANGLE_CAPTURE(BufferStorageExternalEXT, isCallValid, context, targetPacked, offset, size,
5079 clientBuffer, flags);
5080 }
5081 else
5082 {
5083 GenerateContextLostErrorOnCurrentGlobalContext();
5084 }
5085 }
5086
GL_NamedBufferStorageExternalEXT(GLuint buffer,GLintptr offset,GLsizeiptr size,GLeglClientBufferEXT clientBuffer,GLbitfield flags)5087 void GL_APIENTRY GL_NamedBufferStorageExternalEXT(GLuint buffer,
5088 GLintptr offset,
5089 GLsizeiptr size,
5090 GLeglClientBufferEXT clientBuffer,
5091 GLbitfield flags)
5092 {
5093 Context *context = GetValidGlobalContext();
5094 EVENT(context, GLNamedBufferStorageExternalEXT,
5095 "context = %d, buffer = %u, offset = %llu, size = %llu, clientBuffer = 0x%016" PRIxPTR
5096 ", flags = %s",
5097 CID(context), buffer, static_cast<unsigned long long>(offset),
5098 static_cast<unsigned long long>(size), (uintptr_t)clientBuffer,
5099 GLbitfieldToString(GLenumGroup::MapBufferUsageMask, flags).c_str());
5100
5101 if (context)
5102 {
5103 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
5104 bool isCallValid = (context->skipValidation() ||
5105 ValidateNamedBufferStorageExternalEXT(
5106 context, angle::EntryPoint::GLNamedBufferStorageExternalEXT, buffer,
5107 offset, size, clientBuffer, flags));
5108 if (isCallValid)
5109 {
5110 context->namedBufferStorageExternal(buffer, offset, size, clientBuffer, flags);
5111 }
5112 ANGLE_CAPTURE(NamedBufferStorageExternalEXT, isCallValid, context, buffer, offset, size,
5113 clientBuffer, flags);
5114 }
5115 else
5116 {
5117 GenerateContextLostErrorOnCurrentGlobalContext();
5118 }
5119 }
5120
5121 // GL_EXT_float_blend
5122
5123 // GL_EXT_geometry_shader
GL_FramebufferTextureEXT(GLenum target,GLenum attachment,GLuint texture,GLint level)5124 void GL_APIENTRY GL_FramebufferTextureEXT(GLenum target,
5125 GLenum attachment,
5126 GLuint texture,
5127 GLint level)
5128 {
5129 Context *context = GetValidGlobalContext();
5130 EVENT(context, GLFramebufferTextureEXT,
5131 "context = %d, target = %s, attachment = %s, texture = %u, level = %d", CID(context),
5132 GLenumToString(GLenumGroup::FramebufferTarget, target),
5133 GLenumToString(GLenumGroup::FramebufferAttachment, attachment), texture, level);
5134
5135 if (context)
5136 {
5137 TextureID texturePacked = PackParam<TextureID>(texture);
5138 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
5139 bool isCallValid =
5140 (context->skipValidation() ||
5141 ValidateFramebufferTextureEXT(context, angle::EntryPoint::GLFramebufferTextureEXT,
5142 target, attachment, texturePacked, level));
5143 if (isCallValid)
5144 {
5145 context->framebufferTexture(target, attachment, texturePacked, level);
5146 }
5147 ANGLE_CAPTURE(FramebufferTextureEXT, isCallValid, context, target, attachment,
5148 texturePacked, level);
5149 }
5150 else
5151 {
5152 GenerateContextLostErrorOnCurrentGlobalContext();
5153 }
5154 }
5155
5156 // GL_EXT_gpu_shader5
5157
5158 // GL_EXT_instanced_arrays
GL_DrawArraysInstancedEXT(GLenum mode,GLint start,GLsizei count,GLsizei primcount)5159 void GL_APIENTRY GL_DrawArraysInstancedEXT(GLenum mode,
5160 GLint start,
5161 GLsizei count,
5162 GLsizei primcount)
5163 {
5164 Context *context = GetValidGlobalContext();
5165 EVENT(context, GLDrawArraysInstancedEXT,
5166 "context = %d, mode = %s, start = %d, count = %d, primcount = %d", CID(context),
5167 GLenumToString(GLenumGroup::PrimitiveType, mode), start, count, primcount);
5168
5169 if (context)
5170 {
5171 PrimitiveMode modePacked = PackParam<PrimitiveMode>(mode);
5172 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
5173 bool isCallValid =
5174 (context->skipValidation() ||
5175 ValidateDrawArraysInstancedEXT(context, angle::EntryPoint::GLDrawArraysInstancedEXT,
5176 modePacked, start, count, primcount));
5177 if (isCallValid)
5178 {
5179 context->drawArraysInstanced(modePacked, start, count, primcount);
5180 }
5181 ANGLE_CAPTURE(DrawArraysInstancedEXT, isCallValid, context, modePacked, start, count,
5182 primcount);
5183 }
5184 else
5185 {
5186 GenerateContextLostErrorOnCurrentGlobalContext();
5187 }
5188 }
5189
GL_DrawElementsInstancedEXT(GLenum mode,GLsizei count,GLenum type,const void * indices,GLsizei primcount)5190 void GL_APIENTRY GL_DrawElementsInstancedEXT(GLenum mode,
5191 GLsizei count,
5192 GLenum type,
5193 const void *indices,
5194 GLsizei primcount)
5195 {
5196 Context *context = GetValidGlobalContext();
5197 EVENT(context, GLDrawElementsInstancedEXT,
5198 "context = %d, mode = %s, count = %d, type = %s, indices = 0x%016" PRIxPTR
5199 ", primcount = %d",
5200 CID(context), GLenumToString(GLenumGroup::PrimitiveType, mode), count,
5201 GLenumToString(GLenumGroup::DrawElementsType, type), (uintptr_t)indices, primcount);
5202
5203 if (context)
5204 {
5205 PrimitiveMode modePacked = PackParam<PrimitiveMode>(mode);
5206 DrawElementsType typePacked = PackParam<DrawElementsType>(type);
5207 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
5208 bool isCallValid = (context->skipValidation() ||
5209 ValidateDrawElementsInstancedEXT(
5210 context, angle::EntryPoint::GLDrawElementsInstancedEXT, modePacked,
5211 count, typePacked, indices, primcount));
5212 if (isCallValid)
5213 {
5214 context->drawElementsInstanced(modePacked, count, typePacked, indices, primcount);
5215 }
5216 ANGLE_CAPTURE(DrawElementsInstancedEXT, isCallValid, context, modePacked, count, typePacked,
5217 indices, primcount);
5218 }
5219 else
5220 {
5221 GenerateContextLostErrorOnCurrentGlobalContext();
5222 }
5223 }
5224
GL_VertexAttribDivisorEXT(GLuint index,GLuint divisor)5225 void GL_APIENTRY GL_VertexAttribDivisorEXT(GLuint index, GLuint divisor)
5226 {
5227 Context *context = GetValidGlobalContext();
5228 EVENT(context, GLVertexAttribDivisorEXT, "context = %d, index = %u, divisor = %u", CID(context),
5229 index, divisor);
5230
5231 if (context)
5232 {
5233 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
5234 bool isCallValid =
5235 (context->skipValidation() ||
5236 ValidateVertexAttribDivisorEXT(context, angle::EntryPoint::GLVertexAttribDivisorEXT,
5237 index, divisor));
5238 if (isCallValid)
5239 {
5240 context->vertexAttribDivisor(index, divisor);
5241 }
5242 ANGLE_CAPTURE(VertexAttribDivisorEXT, isCallValid, context, index, divisor);
5243 }
5244 else
5245 {
5246 GenerateContextLostErrorOnCurrentGlobalContext();
5247 }
5248 }
5249
5250 // GL_EXT_map_buffer_range
GL_FlushMappedBufferRangeEXT(GLenum target,GLintptr offset,GLsizeiptr length)5251 void GL_APIENTRY GL_FlushMappedBufferRangeEXT(GLenum target, GLintptr offset, GLsizeiptr length)
5252 {
5253 Context *context = GetValidGlobalContext();
5254 EVENT(context, GLFlushMappedBufferRangeEXT,
5255 "context = %d, target = %s, offset = %llu, length = %llu", CID(context),
5256 GLenumToString(GLenumGroup::BufferTargetARB, target),
5257 static_cast<unsigned long long>(offset), static_cast<unsigned long long>(length));
5258
5259 if (context)
5260 {
5261 BufferBinding targetPacked = PackParam<BufferBinding>(target);
5262 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
5263 bool isCallValid = (context->skipValidation() ||
5264 ValidateFlushMappedBufferRangeEXT(
5265 context, angle::EntryPoint::GLFlushMappedBufferRangeEXT,
5266 targetPacked, offset, length));
5267 if (isCallValid)
5268 {
5269 context->flushMappedBufferRange(targetPacked, offset, length);
5270 }
5271 ANGLE_CAPTURE(FlushMappedBufferRangeEXT, isCallValid, context, targetPacked, offset,
5272 length);
5273 }
5274 else
5275 {
5276 GenerateContextLostErrorOnCurrentGlobalContext();
5277 }
5278 }
5279
GL_MapBufferRangeEXT(GLenum target,GLintptr offset,GLsizeiptr length,GLbitfield access)5280 void *GL_APIENTRY GL_MapBufferRangeEXT(GLenum target,
5281 GLintptr offset,
5282 GLsizeiptr length,
5283 GLbitfield access)
5284 {
5285 Context *context = GetValidGlobalContext();
5286 EVENT(context, GLMapBufferRangeEXT,
5287 "context = %d, target = %s, offset = %llu, length = %llu, access = %s", CID(context),
5288 GLenumToString(GLenumGroup::BufferTargetARB, target),
5289 static_cast<unsigned long long>(offset), static_cast<unsigned long long>(length),
5290 GLbitfieldToString(GLenumGroup::BufferAccessMask, access).c_str());
5291
5292 void *returnValue;
5293 if (context)
5294 {
5295 BufferBinding targetPacked = PackParam<BufferBinding>(target);
5296 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
5297 bool isCallValid =
5298 (context->skipValidation() ||
5299 ValidateMapBufferRangeEXT(context, angle::EntryPoint::GLMapBufferRangeEXT,
5300 targetPacked, offset, length, access));
5301 if (isCallValid)
5302 {
5303 returnValue = context->mapBufferRange(targetPacked, offset, length, access);
5304 }
5305 else
5306 {
5307 returnValue = GetDefaultReturnValue<angle::EntryPoint::GLMapBufferRangeEXT, void *>();
5308 }
5309 ANGLE_CAPTURE(MapBufferRangeEXT, isCallValid, context, targetPacked, offset, length, access,
5310 returnValue);
5311 }
5312 else
5313 {
5314 GenerateContextLostErrorOnCurrentGlobalContext();
5315 returnValue = GetDefaultReturnValue<angle::EntryPoint::GLMapBufferRangeEXT, void *>();
5316 }
5317 return returnValue;
5318 }
5319
5320 // GL_EXT_memory_object
GL_BufferStorageMemEXT(GLenum target,GLsizeiptr size,GLuint memory,GLuint64 offset)5321 void GL_APIENTRY GL_BufferStorageMemEXT(GLenum target,
5322 GLsizeiptr size,
5323 GLuint memory,
5324 GLuint64 offset)
5325 {
5326 Context *context = GetValidGlobalContext();
5327 EVENT(context, GLBufferStorageMemEXT,
5328 "context = %d, target = %s, size = %llu, memory = %u, offset = %llu", CID(context),
5329 GLenumToString(GLenumGroup::BufferTargetARB, target),
5330 static_cast<unsigned long long>(size), memory, static_cast<unsigned long long>(offset));
5331
5332 if (context)
5333 {
5334 TextureType targetPacked = PackParam<TextureType>(target);
5335 MemoryObjectID memoryPacked = PackParam<MemoryObjectID>(memory);
5336 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
5337 bool isCallValid =
5338 (context->skipValidation() ||
5339 ValidateBufferStorageMemEXT(context, angle::EntryPoint::GLBufferStorageMemEXT,
5340 targetPacked, size, memoryPacked, offset));
5341 if (isCallValid)
5342 {
5343 context->bufferStorageMem(targetPacked, size, memoryPacked, offset);
5344 }
5345 ANGLE_CAPTURE(BufferStorageMemEXT, isCallValid, context, targetPacked, size, memoryPacked,
5346 offset);
5347 }
5348 else
5349 {
5350 GenerateContextLostErrorOnCurrentGlobalContext();
5351 }
5352 }
5353
GL_CreateMemoryObjectsEXT(GLsizei n,GLuint * memoryObjects)5354 void GL_APIENTRY GL_CreateMemoryObjectsEXT(GLsizei n, GLuint *memoryObjects)
5355 {
5356 Context *context = GetValidGlobalContext();
5357 EVENT(context, GLCreateMemoryObjectsEXT,
5358 "context = %d, n = %d, memoryObjects = 0x%016" PRIxPTR "", CID(context), n,
5359 (uintptr_t)memoryObjects);
5360
5361 if (context)
5362 {
5363 MemoryObjectID *memoryObjectsPacked = PackParam<MemoryObjectID *>(memoryObjects);
5364 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
5365 bool isCallValid =
5366 (context->skipValidation() ||
5367 ValidateCreateMemoryObjectsEXT(context, angle::EntryPoint::GLCreateMemoryObjectsEXT, n,
5368 memoryObjectsPacked));
5369 if (isCallValid)
5370 {
5371 context->createMemoryObjects(n, memoryObjectsPacked);
5372 }
5373 ANGLE_CAPTURE(CreateMemoryObjectsEXT, isCallValid, context, n, memoryObjectsPacked);
5374 }
5375 else
5376 {
5377 GenerateContextLostErrorOnCurrentGlobalContext();
5378 }
5379 }
5380
GL_DeleteMemoryObjectsEXT(GLsizei n,const GLuint * memoryObjects)5381 void GL_APIENTRY GL_DeleteMemoryObjectsEXT(GLsizei n, const GLuint *memoryObjects)
5382 {
5383 Context *context = GetValidGlobalContext();
5384 EVENT(context, GLDeleteMemoryObjectsEXT,
5385 "context = %d, n = %d, memoryObjects = 0x%016" PRIxPTR "", CID(context), n,
5386 (uintptr_t)memoryObjects);
5387
5388 if (context)
5389 {
5390 const MemoryObjectID *memoryObjectsPacked =
5391 PackParam<const MemoryObjectID *>(memoryObjects);
5392 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
5393 bool isCallValid =
5394 (context->skipValidation() ||
5395 ValidateDeleteMemoryObjectsEXT(context, angle::EntryPoint::GLDeleteMemoryObjectsEXT, n,
5396 memoryObjectsPacked));
5397 if (isCallValid)
5398 {
5399 context->deleteMemoryObjects(n, memoryObjectsPacked);
5400 }
5401 ANGLE_CAPTURE(DeleteMemoryObjectsEXT, isCallValid, context, n, memoryObjectsPacked);
5402 }
5403 else
5404 {
5405 GenerateContextLostErrorOnCurrentGlobalContext();
5406 }
5407 }
5408
GL_GetMemoryObjectParameterivEXT(GLuint memoryObject,GLenum pname,GLint * params)5409 void GL_APIENTRY GL_GetMemoryObjectParameterivEXT(GLuint memoryObject, GLenum pname, GLint *params)
5410 {
5411 Context *context = GetValidGlobalContext();
5412 EVENT(context, GLGetMemoryObjectParameterivEXT,
5413 "context = %d, memoryObject = %u, pname = %s, params = 0x%016" PRIxPTR "", CID(context),
5414 memoryObject, GLenumToString(GLenumGroup::MemoryObjectParameterName, pname),
5415 (uintptr_t)params);
5416
5417 if (context)
5418 {
5419 MemoryObjectID memoryObjectPacked = PackParam<MemoryObjectID>(memoryObject);
5420 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
5421 bool isCallValid = (context->skipValidation() ||
5422 ValidateGetMemoryObjectParameterivEXT(
5423 context, angle::EntryPoint::GLGetMemoryObjectParameterivEXT,
5424 memoryObjectPacked, pname, params));
5425 if (isCallValid)
5426 {
5427 context->getMemoryObjectParameteriv(memoryObjectPacked, pname, params);
5428 }
5429 ANGLE_CAPTURE(GetMemoryObjectParameterivEXT, isCallValid, context, memoryObjectPacked,
5430 pname, params);
5431 }
5432 else
5433 {
5434 GenerateContextLostErrorOnCurrentGlobalContext();
5435 }
5436 }
5437
GL_GetUnsignedBytevEXT(GLenum pname,GLubyte * data)5438 void GL_APIENTRY GL_GetUnsignedBytevEXT(GLenum pname, GLubyte *data)
5439 {
5440 Context *context = GetValidGlobalContext();
5441 EVENT(context, GLGetUnsignedBytevEXT, "context = %d, pname = %s, data = 0x%016" PRIxPTR "",
5442 CID(context), GLenumToString(GLenumGroup::GetPName, pname), (uintptr_t)data);
5443
5444 if (context)
5445 {
5446 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
5447 bool isCallValid = (context->skipValidation() ||
5448 ValidateGetUnsignedBytevEXT(
5449 context, angle::EntryPoint::GLGetUnsignedBytevEXT, pname, data));
5450 if (isCallValid)
5451 {
5452 context->getUnsignedBytev(pname, data);
5453 }
5454 ANGLE_CAPTURE(GetUnsignedBytevEXT, isCallValid, context, pname, data);
5455 }
5456 else
5457 {
5458 GenerateContextLostErrorOnCurrentGlobalContext();
5459 }
5460 }
5461
GL_GetUnsignedBytei_vEXT(GLenum target,GLuint index,GLubyte * data)5462 void GL_APIENTRY GL_GetUnsignedBytei_vEXT(GLenum target, GLuint index, GLubyte *data)
5463 {
5464 Context *context = GetValidGlobalContext();
5465 EVENT(context, GLGetUnsignedBytei_vEXT,
5466 "context = %d, target = %s, index = %u, data = 0x%016" PRIxPTR "", CID(context),
5467 GLenumToString(GLenumGroup::DefaultGroup, target), index, (uintptr_t)data);
5468
5469 if (context)
5470 {
5471 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
5472 bool isCallValid =
5473 (context->skipValidation() ||
5474 ValidateGetUnsignedBytei_vEXT(context, angle::EntryPoint::GLGetUnsignedBytei_vEXT,
5475 target, index, data));
5476 if (isCallValid)
5477 {
5478 context->getUnsignedBytei_v(target, index, data);
5479 }
5480 ANGLE_CAPTURE(GetUnsignedBytei_vEXT, isCallValid, context, target, index, data);
5481 }
5482 else
5483 {
5484 GenerateContextLostErrorOnCurrentGlobalContext();
5485 }
5486 }
5487
GL_IsMemoryObjectEXT(GLuint memoryObject)5488 GLboolean GL_APIENTRY GL_IsMemoryObjectEXT(GLuint memoryObject)
5489 {
5490 Context *context = GetValidGlobalContext();
5491 EVENT(context, GLIsMemoryObjectEXT, "context = %d, memoryObject = %u", CID(context),
5492 memoryObject);
5493
5494 GLboolean returnValue;
5495 if (context)
5496 {
5497 MemoryObjectID memoryObjectPacked = PackParam<MemoryObjectID>(memoryObject);
5498 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
5499 bool isCallValid =
5500 (context->skipValidation() ||
5501 ValidateIsMemoryObjectEXT(context, angle::EntryPoint::GLIsMemoryObjectEXT,
5502 memoryObjectPacked));
5503 if (isCallValid)
5504 {
5505 returnValue = context->isMemoryObject(memoryObjectPacked);
5506 }
5507 else
5508 {
5509 returnValue =
5510 GetDefaultReturnValue<angle::EntryPoint::GLIsMemoryObjectEXT, GLboolean>();
5511 }
5512 ANGLE_CAPTURE(IsMemoryObjectEXT, isCallValid, context, memoryObjectPacked, returnValue);
5513 }
5514 else
5515 {
5516 GenerateContextLostErrorOnCurrentGlobalContext();
5517 returnValue = GetDefaultReturnValue<angle::EntryPoint::GLIsMemoryObjectEXT, GLboolean>();
5518 }
5519 return returnValue;
5520 }
5521
GL_MemoryObjectParameterivEXT(GLuint memoryObject,GLenum pname,const GLint * params)5522 void GL_APIENTRY GL_MemoryObjectParameterivEXT(GLuint memoryObject,
5523 GLenum pname,
5524 const GLint *params)
5525 {
5526 Context *context = GetValidGlobalContext();
5527 EVENT(context, GLMemoryObjectParameterivEXT,
5528 "context = %d, memoryObject = %u, pname = %s, params = 0x%016" PRIxPTR "", CID(context),
5529 memoryObject, GLenumToString(GLenumGroup::MemoryObjectParameterName, pname),
5530 (uintptr_t)params);
5531
5532 if (context)
5533 {
5534 MemoryObjectID memoryObjectPacked = PackParam<MemoryObjectID>(memoryObject);
5535 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
5536 bool isCallValid = (context->skipValidation() ||
5537 ValidateMemoryObjectParameterivEXT(
5538 context, angle::EntryPoint::GLMemoryObjectParameterivEXT,
5539 memoryObjectPacked, pname, params));
5540 if (isCallValid)
5541 {
5542 context->memoryObjectParameteriv(memoryObjectPacked, pname, params);
5543 }
5544 ANGLE_CAPTURE(MemoryObjectParameterivEXT, isCallValid, context, memoryObjectPacked, pname,
5545 params);
5546 }
5547 else
5548 {
5549 GenerateContextLostErrorOnCurrentGlobalContext();
5550 }
5551 }
5552
GL_TexStorageMem2DEXT(GLenum target,GLsizei levels,GLenum internalFormat,GLsizei width,GLsizei height,GLuint memory,GLuint64 offset)5553 void GL_APIENTRY GL_TexStorageMem2DEXT(GLenum target,
5554 GLsizei levels,
5555 GLenum internalFormat,
5556 GLsizei width,
5557 GLsizei height,
5558 GLuint memory,
5559 GLuint64 offset)
5560 {
5561 Context *context = GetValidGlobalContext();
5562 EVENT(context, GLTexStorageMem2DEXT,
5563 "context = %d, target = %s, levels = %d, internalFormat = %s, width = %d, height = %d, "
5564 "memory = %u, offset = %llu",
5565 CID(context), GLenumToString(GLenumGroup::TextureTarget, target), levels,
5566 GLenumToString(GLenumGroup::DefaultGroup, internalFormat), width, height, memory,
5567 static_cast<unsigned long long>(offset));
5568
5569 if (context)
5570 {
5571 TextureType targetPacked = PackParam<TextureType>(target);
5572 MemoryObjectID memoryPacked = PackParam<MemoryObjectID>(memory);
5573 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
5574 bool isCallValid = (context->skipValidation() ||
5575 ValidateTexStorageMem2DEXT(
5576 context, angle::EntryPoint::GLTexStorageMem2DEXT, targetPacked,
5577 levels, internalFormat, width, height, memoryPacked, offset));
5578 if (isCallValid)
5579 {
5580 context->texStorageMem2D(targetPacked, levels, internalFormat, width, height,
5581 memoryPacked, offset);
5582 }
5583 ANGLE_CAPTURE(TexStorageMem2DEXT, isCallValid, context, targetPacked, levels,
5584 internalFormat, width, height, memoryPacked, offset);
5585 }
5586 else
5587 {
5588 GenerateContextLostErrorOnCurrentGlobalContext();
5589 }
5590 }
5591
GL_TexStorageMem2DMultisampleEXT(GLenum target,GLsizei samples,GLenum internalFormat,GLsizei width,GLsizei height,GLboolean fixedSampleLocations,GLuint memory,GLuint64 offset)5592 void GL_APIENTRY GL_TexStorageMem2DMultisampleEXT(GLenum target,
5593 GLsizei samples,
5594 GLenum internalFormat,
5595 GLsizei width,
5596 GLsizei height,
5597 GLboolean fixedSampleLocations,
5598 GLuint memory,
5599 GLuint64 offset)
5600 {
5601 Context *context = GetValidGlobalContext();
5602 EVENT(context, GLTexStorageMem2DMultisampleEXT,
5603 "context = %d, target = %s, samples = %d, internalFormat = %s, width = %d, height = %d, "
5604 "fixedSampleLocations = %s, memory = %u, offset = %llu",
5605 CID(context), GLenumToString(GLenumGroup::TextureTarget, target), samples,
5606 GLenumToString(GLenumGroup::DefaultGroup, internalFormat), width, height,
5607 GLbooleanToString(fixedSampleLocations), memory, static_cast<unsigned long long>(offset));
5608
5609 if (context)
5610 {
5611 TextureType targetPacked = PackParam<TextureType>(target);
5612 MemoryObjectID memoryPacked = PackParam<MemoryObjectID>(memory);
5613 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
5614 bool isCallValid =
5615 (context->skipValidation() ||
5616 ValidateTexStorageMem2DMultisampleEXT(
5617 context, angle::EntryPoint::GLTexStorageMem2DMultisampleEXT, targetPacked, samples,
5618 internalFormat, width, height, fixedSampleLocations, memoryPacked, offset));
5619 if (isCallValid)
5620 {
5621 context->texStorageMem2DMultisample(targetPacked, samples, internalFormat, width,
5622 height, fixedSampleLocations, memoryPacked, offset);
5623 }
5624 ANGLE_CAPTURE(TexStorageMem2DMultisampleEXT, isCallValid, context, targetPacked, samples,
5625 internalFormat, width, height, fixedSampleLocations, memoryPacked, offset);
5626 }
5627 else
5628 {
5629 GenerateContextLostErrorOnCurrentGlobalContext();
5630 }
5631 }
5632
GL_TexStorageMem3DEXT(GLenum target,GLsizei levels,GLenum internalFormat,GLsizei width,GLsizei height,GLsizei depth,GLuint memory,GLuint64 offset)5633 void GL_APIENTRY GL_TexStorageMem3DEXT(GLenum target,
5634 GLsizei levels,
5635 GLenum internalFormat,
5636 GLsizei width,
5637 GLsizei height,
5638 GLsizei depth,
5639 GLuint memory,
5640 GLuint64 offset)
5641 {
5642 Context *context = GetValidGlobalContext();
5643 EVENT(context, GLTexStorageMem3DEXT,
5644 "context = %d, target = %s, levels = %d, internalFormat = %s, width = %d, height = %d, "
5645 "depth = %d, memory = %u, offset = %llu",
5646 CID(context), GLenumToString(GLenumGroup::TextureTarget, target), levels,
5647 GLenumToString(GLenumGroup::DefaultGroup, internalFormat), width, height, depth, memory,
5648 static_cast<unsigned long long>(offset));
5649
5650 if (context)
5651 {
5652 TextureType targetPacked = PackParam<TextureType>(target);
5653 MemoryObjectID memoryPacked = PackParam<MemoryObjectID>(memory);
5654 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
5655 bool isCallValid =
5656 (context->skipValidation() ||
5657 ValidateTexStorageMem3DEXT(context, angle::EntryPoint::GLTexStorageMem3DEXT,
5658 targetPacked, levels, internalFormat, width, height, depth,
5659 memoryPacked, offset));
5660 if (isCallValid)
5661 {
5662 context->texStorageMem3D(targetPacked, levels, internalFormat, width, height, depth,
5663 memoryPacked, offset);
5664 }
5665 ANGLE_CAPTURE(TexStorageMem3DEXT, isCallValid, context, targetPacked, levels,
5666 internalFormat, width, height, depth, memoryPacked, offset);
5667 }
5668 else
5669 {
5670 GenerateContextLostErrorOnCurrentGlobalContext();
5671 }
5672 }
5673
GL_TexStorageMem3DMultisampleEXT(GLenum target,GLsizei samples,GLenum internalFormat,GLsizei width,GLsizei height,GLsizei depth,GLboolean fixedSampleLocations,GLuint memory,GLuint64 offset)5674 void GL_APIENTRY GL_TexStorageMem3DMultisampleEXT(GLenum target,
5675 GLsizei samples,
5676 GLenum internalFormat,
5677 GLsizei width,
5678 GLsizei height,
5679 GLsizei depth,
5680 GLboolean fixedSampleLocations,
5681 GLuint memory,
5682 GLuint64 offset)
5683 {
5684 Context *context = GetValidGlobalContext();
5685 EVENT(context, GLTexStorageMem3DMultisampleEXT,
5686 "context = %d, target = %s, samples = %d, internalFormat = %s, width = %d, height = %d, "
5687 "depth = %d, fixedSampleLocations = %s, memory = %u, offset = %llu",
5688 CID(context), GLenumToString(GLenumGroup::TextureTarget, target), samples,
5689 GLenumToString(GLenumGroup::DefaultGroup, internalFormat), width, height, depth,
5690 GLbooleanToString(fixedSampleLocations), memory, static_cast<unsigned long long>(offset));
5691
5692 if (context)
5693 {
5694 TextureType targetPacked = PackParam<TextureType>(target);
5695 MemoryObjectID memoryPacked = PackParam<MemoryObjectID>(memory);
5696 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
5697 bool isCallValid =
5698 (context->skipValidation() ||
5699 ValidateTexStorageMem3DMultisampleEXT(
5700 context, angle::EntryPoint::GLTexStorageMem3DMultisampleEXT, targetPacked, samples,
5701 internalFormat, width, height, depth, fixedSampleLocations, memoryPacked, offset));
5702 if (isCallValid)
5703 {
5704 context->texStorageMem3DMultisample(targetPacked, samples, internalFormat, width,
5705 height, depth, fixedSampleLocations, memoryPacked,
5706 offset);
5707 }
5708 ANGLE_CAPTURE(TexStorageMem3DMultisampleEXT, isCallValid, context, targetPacked, samples,
5709 internalFormat, width, height, depth, fixedSampleLocations, memoryPacked,
5710 offset);
5711 }
5712 else
5713 {
5714 GenerateContextLostErrorOnCurrentGlobalContext();
5715 }
5716 }
5717
5718 // GL_EXT_memory_object_fd
GL_ImportMemoryFdEXT(GLuint memory,GLuint64 size,GLenum handleType,GLint fd)5719 void GL_APIENTRY GL_ImportMemoryFdEXT(GLuint memory, GLuint64 size, GLenum handleType, GLint fd)
5720 {
5721 Context *context = GetValidGlobalContext();
5722 EVENT(context, GLImportMemoryFdEXT,
5723 "context = %d, memory = %u, size = %llu, handleType = %s, fd = %d", CID(context), memory,
5724 static_cast<unsigned long long>(size),
5725 GLenumToString(GLenumGroup::ExternalHandleType, handleType), fd);
5726
5727 if (context)
5728 {
5729 MemoryObjectID memoryPacked = PackParam<MemoryObjectID>(memory);
5730 HandleType handleTypePacked = PackParam<HandleType>(handleType);
5731 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
5732 bool isCallValid =
5733 (context->skipValidation() ||
5734 ValidateImportMemoryFdEXT(context, angle::EntryPoint::GLImportMemoryFdEXT,
5735 memoryPacked, size, handleTypePacked, fd));
5736 if (isCallValid)
5737 {
5738 context->importMemoryFd(memoryPacked, size, handleTypePacked, fd);
5739 }
5740 ANGLE_CAPTURE(ImportMemoryFdEXT, isCallValid, context, memoryPacked, size, handleTypePacked,
5741 fd);
5742 }
5743 else
5744 {
5745 GenerateContextLostErrorOnCurrentGlobalContext();
5746 }
5747 }
5748
5749 // GL_EXT_multi_draw_indirect
GL_MultiDrawArraysIndirectEXT(GLenum mode,const void * indirect,GLsizei drawcount,GLsizei stride)5750 void GL_APIENTRY GL_MultiDrawArraysIndirectEXT(GLenum mode,
5751 const void *indirect,
5752 GLsizei drawcount,
5753 GLsizei stride)
5754 {
5755 Context *context = GetValidGlobalContext();
5756 EVENT(context, GLMultiDrawArraysIndirectEXT,
5757 "context = %d, mode = %s, indirect = 0x%016" PRIxPTR ", drawcount = %d, stride = %d",
5758 CID(context), GLenumToString(GLenumGroup::PrimitiveType, mode), (uintptr_t)indirect,
5759 drawcount, stride);
5760
5761 if (context)
5762 {
5763 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
5764 bool isCallValid = (context->skipValidation() ||
5765 ValidateMultiDrawArraysIndirectEXT(
5766 context, angle::EntryPoint::GLMultiDrawArraysIndirectEXT, mode,
5767 indirect, drawcount, stride));
5768 if (isCallValid)
5769 {
5770 context->multiDrawArraysIndirect(mode, indirect, drawcount, stride);
5771 }
5772 ANGLE_CAPTURE(MultiDrawArraysIndirectEXT, isCallValid, context, mode, indirect, drawcount,
5773 stride);
5774 }
5775 else
5776 {
5777 GenerateContextLostErrorOnCurrentGlobalContext();
5778 }
5779 }
5780
GL_MultiDrawElementsIndirectEXT(GLenum mode,GLenum type,const void * indirect,GLsizei drawcount,GLsizei stride)5781 void GL_APIENTRY GL_MultiDrawElementsIndirectEXT(GLenum mode,
5782 GLenum type,
5783 const void *indirect,
5784 GLsizei drawcount,
5785 GLsizei stride)
5786 {
5787 Context *context = GetValidGlobalContext();
5788 EVENT(context, GLMultiDrawElementsIndirectEXT,
5789 "context = %d, mode = %s, type = %s, indirect = 0x%016" PRIxPTR
5790 ", drawcount = %d, stride = %d",
5791 CID(context), GLenumToString(GLenumGroup::PrimitiveType, mode),
5792 GLenumToString(GLenumGroup::DrawElementsType, type), (uintptr_t)indirect, drawcount,
5793 stride);
5794
5795 if (context)
5796 {
5797 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
5798 bool isCallValid = (context->skipValidation() ||
5799 ValidateMultiDrawElementsIndirectEXT(
5800 context, angle::EntryPoint::GLMultiDrawElementsIndirectEXT, mode,
5801 type, indirect, drawcount, stride));
5802 if (isCallValid)
5803 {
5804 context->multiDrawElementsIndirect(mode, type, indirect, drawcount, stride);
5805 }
5806 ANGLE_CAPTURE(MultiDrawElementsIndirectEXT, isCallValid, context, mode, type, indirect,
5807 drawcount, stride);
5808 }
5809 else
5810 {
5811 GenerateContextLostErrorOnCurrentGlobalContext();
5812 }
5813 }
5814
5815 // GL_EXT_multisampled_render_to_texture
GL_FramebufferTexture2DMultisampleEXT(GLenum target,GLenum attachment,GLenum textarget,GLuint texture,GLint level,GLsizei samples)5816 void GL_APIENTRY GL_FramebufferTexture2DMultisampleEXT(GLenum target,
5817 GLenum attachment,
5818 GLenum textarget,
5819 GLuint texture,
5820 GLint level,
5821 GLsizei samples)
5822 {
5823 Context *context = GetValidGlobalContext();
5824 EVENT(context, GLFramebufferTexture2DMultisampleEXT,
5825 "context = %d, target = %s, attachment = %s, textarget = %s, texture = %u, level = %d, "
5826 "samples = %d",
5827 CID(context), GLenumToString(GLenumGroup::FramebufferTarget, target),
5828 GLenumToString(GLenumGroup::FramebufferAttachment, attachment),
5829 GLenumToString(GLenumGroup::TextureTarget, textarget), texture, level, samples);
5830
5831 if (context)
5832 {
5833 TextureTarget textargetPacked = PackParam<TextureTarget>(textarget);
5834 TextureID texturePacked = PackParam<TextureID>(texture);
5835 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
5836 bool isCallValid =
5837 (context->skipValidation() ||
5838 ValidateFramebufferTexture2DMultisampleEXT(
5839 context, angle::EntryPoint::GLFramebufferTexture2DMultisampleEXT, target,
5840 attachment, textargetPacked, texturePacked, level, samples));
5841 if (isCallValid)
5842 {
5843 context->framebufferTexture2DMultisample(target, attachment, textargetPacked,
5844 texturePacked, level, samples);
5845 }
5846 ANGLE_CAPTURE(FramebufferTexture2DMultisampleEXT, isCallValid, context, target, attachment,
5847 textargetPacked, texturePacked, level, samples);
5848 }
5849 else
5850 {
5851 GenerateContextLostErrorOnCurrentGlobalContext();
5852 }
5853 }
5854
GL_RenderbufferStorageMultisampleEXT(GLenum target,GLsizei samples,GLenum internalformat,GLsizei width,GLsizei height)5855 void GL_APIENTRY GL_RenderbufferStorageMultisampleEXT(GLenum target,
5856 GLsizei samples,
5857 GLenum internalformat,
5858 GLsizei width,
5859 GLsizei height)
5860 {
5861 Context *context = GetValidGlobalContext();
5862 EVENT(context, GLRenderbufferStorageMultisampleEXT,
5863 "context = %d, target = %s, samples = %d, internalformat = %s, width = %d, height = %d",
5864 CID(context), GLenumToString(GLenumGroup::RenderbufferTarget, target), samples,
5865 GLenumToString(GLenumGroup::InternalFormat, internalformat), width, height);
5866
5867 if (context)
5868 {
5869 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
5870 bool isCallValid = (context->skipValidation() ||
5871 ValidateRenderbufferStorageMultisampleEXT(
5872 context, angle::EntryPoint::GLRenderbufferStorageMultisampleEXT,
5873 target, samples, internalformat, width, height));
5874 if (isCallValid)
5875 {
5876 context->renderbufferStorageMultisampleEXT(target, samples, internalformat, width,
5877 height);
5878 }
5879 ANGLE_CAPTURE(RenderbufferStorageMultisampleEXT, isCallValid, context, target, samples,
5880 internalformat, width, height);
5881 }
5882 else
5883 {
5884 GenerateContextLostErrorOnCurrentGlobalContext();
5885 }
5886 }
5887
5888 // GL_EXT_occlusion_query_boolean
5889 // BeginQueryEXT is already defined.
5890
5891 // DeleteQueriesEXT is already defined.
5892
5893 // EndQueryEXT is already defined.
5894
5895 // GenQueriesEXT is already defined.
5896
5897 // GetQueryObjectuivEXT is already defined.
5898
5899 // GetQueryivEXT is already defined.
5900
5901 // IsQueryEXT is already defined.
5902
5903 // GL_EXT_primitive_bounding_box
GL_PrimitiveBoundingBoxEXT(GLfloat minX,GLfloat minY,GLfloat minZ,GLfloat minW,GLfloat maxX,GLfloat maxY,GLfloat maxZ,GLfloat maxW)5904 void GL_APIENTRY GL_PrimitiveBoundingBoxEXT(GLfloat minX,
5905 GLfloat minY,
5906 GLfloat minZ,
5907 GLfloat minW,
5908 GLfloat maxX,
5909 GLfloat maxY,
5910 GLfloat maxZ,
5911 GLfloat maxW)
5912 {
5913 Context *context = GetValidGlobalContext();
5914 EVENT(context, GLPrimitiveBoundingBoxEXT,
5915 "context = %d, minX = %f, minY = %f, minZ = %f, minW = %f, maxX = %f, maxY = %f, maxZ = "
5916 "%f, maxW = %f",
5917 CID(context), minX, minY, minZ, minW, maxX, maxY, maxZ, maxW);
5918
5919 if (context)
5920 {
5921 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
5922 bool isCallValid =
5923 (context->skipValidation() ||
5924 ValidatePrimitiveBoundingBoxEXT(context, angle::EntryPoint::GLPrimitiveBoundingBoxEXT,
5925 minX, minY, minZ, minW, maxX, maxY, maxZ, maxW));
5926 if (isCallValid)
5927 {
5928 context->primitiveBoundingBox(minX, minY, minZ, minW, maxX, maxY, maxZ, maxW);
5929 }
5930 ANGLE_CAPTURE(PrimitiveBoundingBoxEXT, isCallValid, context, minX, minY, minZ, minW, maxX,
5931 maxY, maxZ, maxW);
5932 }
5933 else
5934 {
5935 GenerateContextLostErrorOnCurrentGlobalContext();
5936 }
5937 }
5938
5939 // GL_EXT_protected_textures
5940
5941 // GL_EXT_pvrtc_sRGB
5942
5943 // GL_EXT_read_format_bgra
5944
5945 // GL_EXT_robustness
GL_GetGraphicsResetStatusEXT()5946 GLenum GL_APIENTRY GL_GetGraphicsResetStatusEXT()
5947 {
5948 Context *context = GetGlobalContext();
5949 EVENT(context, GLGetGraphicsResetStatusEXT, "context = %d", CID(context));
5950
5951 GLenum returnValue;
5952 if (context)
5953 {
5954 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
5955 bool isCallValid = (context->skipValidation() ||
5956 ValidateGetGraphicsResetStatusEXT(
5957 context, angle::EntryPoint::GLGetGraphicsResetStatusEXT));
5958 if (isCallValid)
5959 {
5960 returnValue = context->getGraphicsResetStatus();
5961 }
5962 else
5963 {
5964 returnValue =
5965 GetDefaultReturnValue<angle::EntryPoint::GLGetGraphicsResetStatusEXT, GLenum>();
5966 }
5967 ANGLE_CAPTURE(GetGraphicsResetStatusEXT, isCallValid, context, returnValue);
5968 }
5969 else
5970 {
5971
5972 returnValue =
5973 GetDefaultReturnValue<angle::EntryPoint::GLGetGraphicsResetStatusEXT, GLenum>();
5974 }
5975 return returnValue;
5976 }
5977
GL_GetnUniformfvEXT(GLuint program,GLint location,GLsizei bufSize,GLfloat * params)5978 void GL_APIENTRY GL_GetnUniformfvEXT(GLuint program,
5979 GLint location,
5980 GLsizei bufSize,
5981 GLfloat *params)
5982 {
5983 Context *context = GetValidGlobalContext();
5984 EVENT(context, GLGetnUniformfvEXT,
5985 "context = %d, program = %u, location = %d, bufSize = %d, params = 0x%016" PRIxPTR "",
5986 CID(context), program, location, bufSize, (uintptr_t)params);
5987
5988 if (context)
5989 {
5990 ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);
5991 UniformLocation locationPacked = PackParam<UniformLocation>(location);
5992 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
5993 bool isCallValid =
5994 (context->skipValidation() ||
5995 ValidateGetnUniformfvEXT(context, angle::EntryPoint::GLGetnUniformfvEXT, programPacked,
5996 locationPacked, bufSize, params));
5997 if (isCallValid)
5998 {
5999 context->getnUniformfv(programPacked, locationPacked, bufSize, params);
6000 }
6001 ANGLE_CAPTURE(GetnUniformfvEXT, isCallValid, context, programPacked, locationPacked,
6002 bufSize, params);
6003 }
6004 else
6005 {
6006 GenerateContextLostErrorOnCurrentGlobalContext();
6007 }
6008 }
6009
GL_GetnUniformivEXT(GLuint program,GLint location,GLsizei bufSize,GLint * params)6010 void GL_APIENTRY GL_GetnUniformivEXT(GLuint program, GLint location, GLsizei bufSize, GLint *params)
6011 {
6012 Context *context = GetValidGlobalContext();
6013 EVENT(context, GLGetnUniformivEXT,
6014 "context = %d, program = %u, location = %d, bufSize = %d, params = 0x%016" PRIxPTR "",
6015 CID(context), program, location, bufSize, (uintptr_t)params);
6016
6017 if (context)
6018 {
6019 ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);
6020 UniformLocation locationPacked = PackParam<UniformLocation>(location);
6021 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
6022 bool isCallValid =
6023 (context->skipValidation() ||
6024 ValidateGetnUniformivEXT(context, angle::EntryPoint::GLGetnUniformivEXT, programPacked,
6025 locationPacked, bufSize, params));
6026 if (isCallValid)
6027 {
6028 context->getnUniformiv(programPacked, locationPacked, bufSize, params);
6029 }
6030 ANGLE_CAPTURE(GetnUniformivEXT, isCallValid, context, programPacked, locationPacked,
6031 bufSize, params);
6032 }
6033 else
6034 {
6035 GenerateContextLostErrorOnCurrentGlobalContext();
6036 }
6037 }
6038
GL_ReadnPixelsEXT(GLint x,GLint y,GLsizei width,GLsizei height,GLenum format,GLenum type,GLsizei bufSize,void * data)6039 void GL_APIENTRY GL_ReadnPixelsEXT(GLint x,
6040 GLint y,
6041 GLsizei width,
6042 GLsizei height,
6043 GLenum format,
6044 GLenum type,
6045 GLsizei bufSize,
6046 void *data)
6047 {
6048 Context *context = GetValidGlobalContext();
6049 EVENT(context, GLReadnPixelsEXT,
6050 "context = %d, x = %d, y = %d, width = %d, height = %d, format = %s, type = %s, bufSize "
6051 "= %d, data = 0x%016" PRIxPTR "",
6052 CID(context), x, y, width, height, GLenumToString(GLenumGroup::PixelFormat, format),
6053 GLenumToString(GLenumGroup::PixelType, type), bufSize, (uintptr_t)data);
6054
6055 if (context)
6056 {
6057 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
6058 bool isCallValid = (context->skipValidation() ||
6059 ValidateReadnPixelsEXT(context, angle::EntryPoint::GLReadnPixelsEXT, x,
6060 y, width, height, format, type, bufSize, data));
6061 if (isCallValid)
6062 {
6063 context->readnPixels(x, y, width, height, format, type, bufSize, data);
6064 }
6065 ANGLE_CAPTURE(ReadnPixelsEXT, isCallValid, context, x, y, width, height, format, type,
6066 bufSize, data);
6067 }
6068 else
6069 {
6070 GenerateContextLostErrorOnCurrentGlobalContext();
6071 }
6072 }
6073
6074 // GL_EXT_sRGB
6075
6076 // GL_EXT_sRGB_write_control
6077
6078 // GL_EXT_semaphore
GL_DeleteSemaphoresEXT(GLsizei n,const GLuint * semaphores)6079 void GL_APIENTRY GL_DeleteSemaphoresEXT(GLsizei n, const GLuint *semaphores)
6080 {
6081 Context *context = GetValidGlobalContext();
6082 EVENT(context, GLDeleteSemaphoresEXT, "context = %d, n = %d, semaphores = 0x%016" PRIxPTR "",
6083 CID(context), n, (uintptr_t)semaphores);
6084
6085 if (context)
6086 {
6087 const SemaphoreID *semaphoresPacked = PackParam<const SemaphoreID *>(semaphores);
6088 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
6089 bool isCallValid =
6090 (context->skipValidation() ||
6091 ValidateDeleteSemaphoresEXT(context, angle::EntryPoint::GLDeleteSemaphoresEXT, n,
6092 semaphoresPacked));
6093 if (isCallValid)
6094 {
6095 context->deleteSemaphores(n, semaphoresPacked);
6096 }
6097 ANGLE_CAPTURE(DeleteSemaphoresEXT, isCallValid, context, n, semaphoresPacked);
6098 }
6099 else
6100 {
6101 GenerateContextLostErrorOnCurrentGlobalContext();
6102 }
6103 }
6104
GL_GenSemaphoresEXT(GLsizei n,GLuint * semaphores)6105 void GL_APIENTRY GL_GenSemaphoresEXT(GLsizei n, GLuint *semaphores)
6106 {
6107 Context *context = GetValidGlobalContext();
6108 EVENT(context, GLGenSemaphoresEXT, "context = %d, n = %d, semaphores = 0x%016" PRIxPTR "",
6109 CID(context), n, (uintptr_t)semaphores);
6110
6111 if (context)
6112 {
6113 SemaphoreID *semaphoresPacked = PackParam<SemaphoreID *>(semaphores);
6114 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
6115 bool isCallValid = (context->skipValidation() ||
6116 ValidateGenSemaphoresEXT(context, angle::EntryPoint::GLGenSemaphoresEXT,
6117 n, semaphoresPacked));
6118 if (isCallValid)
6119 {
6120 context->genSemaphores(n, semaphoresPacked);
6121 }
6122 ANGLE_CAPTURE(GenSemaphoresEXT, isCallValid, context, n, semaphoresPacked);
6123 }
6124 else
6125 {
6126 GenerateContextLostErrorOnCurrentGlobalContext();
6127 }
6128 }
6129
GL_GetSemaphoreParameterui64vEXT(GLuint semaphore,GLenum pname,GLuint64 * params)6130 void GL_APIENTRY GL_GetSemaphoreParameterui64vEXT(GLuint semaphore, GLenum pname, GLuint64 *params)
6131 {
6132 Context *context = GetValidGlobalContext();
6133 EVENT(context, GLGetSemaphoreParameterui64vEXT,
6134 "context = %d, semaphore = %u, pname = %s, params = 0x%016" PRIxPTR "", CID(context),
6135 semaphore, GLenumToString(GLenumGroup::SemaphoreParameterName, pname), (uintptr_t)params);
6136
6137 if (context)
6138 {
6139 SemaphoreID semaphorePacked = PackParam<SemaphoreID>(semaphore);
6140 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
6141 bool isCallValid = (context->skipValidation() ||
6142 ValidateGetSemaphoreParameterui64vEXT(
6143 context, angle::EntryPoint::GLGetSemaphoreParameterui64vEXT,
6144 semaphorePacked, pname, params));
6145 if (isCallValid)
6146 {
6147 context->getSemaphoreParameterui64v(semaphorePacked, pname, params);
6148 }
6149 ANGLE_CAPTURE(GetSemaphoreParameterui64vEXT, isCallValid, context, semaphorePacked, pname,
6150 params);
6151 }
6152 else
6153 {
6154 GenerateContextLostErrorOnCurrentGlobalContext();
6155 }
6156 }
6157
GL_IsSemaphoreEXT(GLuint semaphore)6158 GLboolean GL_APIENTRY GL_IsSemaphoreEXT(GLuint semaphore)
6159 {
6160 Context *context = GetValidGlobalContext();
6161 EVENT(context, GLIsSemaphoreEXT, "context = %d, semaphore = %u", CID(context), semaphore);
6162
6163 GLboolean returnValue;
6164 if (context)
6165 {
6166 SemaphoreID semaphorePacked = PackParam<SemaphoreID>(semaphore);
6167 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
6168 bool isCallValid =
6169 (context->skipValidation() ||
6170 ValidateIsSemaphoreEXT(context, angle::EntryPoint::GLIsSemaphoreEXT, semaphorePacked));
6171 if (isCallValid)
6172 {
6173 returnValue = context->isSemaphore(semaphorePacked);
6174 }
6175 else
6176 {
6177 returnValue = GetDefaultReturnValue<angle::EntryPoint::GLIsSemaphoreEXT, GLboolean>();
6178 }
6179 ANGLE_CAPTURE(IsSemaphoreEXT, isCallValid, context, semaphorePacked, returnValue);
6180 }
6181 else
6182 {
6183 GenerateContextLostErrorOnCurrentGlobalContext();
6184 returnValue = GetDefaultReturnValue<angle::EntryPoint::GLIsSemaphoreEXT, GLboolean>();
6185 }
6186 return returnValue;
6187 }
6188
GL_SemaphoreParameterui64vEXT(GLuint semaphore,GLenum pname,const GLuint64 * params)6189 void GL_APIENTRY GL_SemaphoreParameterui64vEXT(GLuint semaphore,
6190 GLenum pname,
6191 const GLuint64 *params)
6192 {
6193 Context *context = GetValidGlobalContext();
6194 EVENT(context, GLSemaphoreParameterui64vEXT,
6195 "context = %d, semaphore = %u, pname = %s, params = 0x%016" PRIxPTR "", CID(context),
6196 semaphore, GLenumToString(GLenumGroup::SemaphoreParameterName, pname), (uintptr_t)params);
6197
6198 if (context)
6199 {
6200 SemaphoreID semaphorePacked = PackParam<SemaphoreID>(semaphore);
6201 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
6202 bool isCallValid = (context->skipValidation() ||
6203 ValidateSemaphoreParameterui64vEXT(
6204 context, angle::EntryPoint::GLSemaphoreParameterui64vEXT,
6205 semaphorePacked, pname, params));
6206 if (isCallValid)
6207 {
6208 context->semaphoreParameterui64v(semaphorePacked, pname, params);
6209 }
6210 ANGLE_CAPTURE(SemaphoreParameterui64vEXT, isCallValid, context, semaphorePacked, pname,
6211 params);
6212 }
6213 else
6214 {
6215 GenerateContextLostErrorOnCurrentGlobalContext();
6216 }
6217 }
6218
GL_SignalSemaphoreEXT(GLuint semaphore,GLuint numBufferBarriers,const GLuint * buffers,GLuint numTextureBarriers,const GLuint * textures,const GLenum * dstLayouts)6219 void GL_APIENTRY GL_SignalSemaphoreEXT(GLuint semaphore,
6220 GLuint numBufferBarriers,
6221 const GLuint *buffers,
6222 GLuint numTextureBarriers,
6223 const GLuint *textures,
6224 const GLenum *dstLayouts)
6225 {
6226 Context *context = GetValidGlobalContext();
6227 EVENT(context, GLSignalSemaphoreEXT,
6228 "context = %d, semaphore = %u, numBufferBarriers = %u, buffers = 0x%016" PRIxPTR
6229 ", numTextureBarriers = %u, textures = 0x%016" PRIxPTR ", dstLayouts = 0x%016" PRIxPTR "",
6230 CID(context), semaphore, numBufferBarriers, (uintptr_t)buffers, numTextureBarriers,
6231 (uintptr_t)textures, (uintptr_t)dstLayouts);
6232
6233 if (context)
6234 {
6235 SemaphoreID semaphorePacked = PackParam<SemaphoreID>(semaphore);
6236 const BufferID *buffersPacked = PackParam<const BufferID *>(buffers);
6237 const TextureID *texturesPacked = PackParam<const TextureID *>(textures);
6238 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
6239 bool isCallValid =
6240 (context->skipValidation() ||
6241 ValidateSignalSemaphoreEXT(context, angle::EntryPoint::GLSignalSemaphoreEXT,
6242 semaphorePacked, numBufferBarriers, buffersPacked,
6243 numTextureBarriers, texturesPacked, dstLayouts));
6244 if (isCallValid)
6245 {
6246 context->signalSemaphore(semaphorePacked, numBufferBarriers, buffersPacked,
6247 numTextureBarriers, texturesPacked, dstLayouts);
6248 }
6249 ANGLE_CAPTURE(SignalSemaphoreEXT, isCallValid, context, semaphorePacked, numBufferBarriers,
6250 buffersPacked, numTextureBarriers, texturesPacked, dstLayouts);
6251 }
6252 else
6253 {
6254 GenerateContextLostErrorOnCurrentGlobalContext();
6255 }
6256 }
6257
GL_WaitSemaphoreEXT(GLuint semaphore,GLuint numBufferBarriers,const GLuint * buffers,GLuint numTextureBarriers,const GLuint * textures,const GLenum * srcLayouts)6258 void GL_APIENTRY GL_WaitSemaphoreEXT(GLuint semaphore,
6259 GLuint numBufferBarriers,
6260 const GLuint *buffers,
6261 GLuint numTextureBarriers,
6262 const GLuint *textures,
6263 const GLenum *srcLayouts)
6264 {
6265 Context *context = GetValidGlobalContext();
6266 EVENT(context, GLWaitSemaphoreEXT,
6267 "context = %d, semaphore = %u, numBufferBarriers = %u, buffers = 0x%016" PRIxPTR
6268 ", numTextureBarriers = %u, textures = 0x%016" PRIxPTR ", srcLayouts = 0x%016" PRIxPTR "",
6269 CID(context), semaphore, numBufferBarriers, (uintptr_t)buffers, numTextureBarriers,
6270 (uintptr_t)textures, (uintptr_t)srcLayouts);
6271
6272 if (context)
6273 {
6274 SemaphoreID semaphorePacked = PackParam<SemaphoreID>(semaphore);
6275 const BufferID *buffersPacked = PackParam<const BufferID *>(buffers);
6276 const TextureID *texturesPacked = PackParam<const TextureID *>(textures);
6277 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
6278 bool isCallValid =
6279 (context->skipValidation() ||
6280 ValidateWaitSemaphoreEXT(context, angle::EntryPoint::GLWaitSemaphoreEXT,
6281 semaphorePacked, numBufferBarriers, buffersPacked,
6282 numTextureBarriers, texturesPacked, srcLayouts));
6283 if (isCallValid)
6284 {
6285 context->waitSemaphore(semaphorePacked, numBufferBarriers, buffersPacked,
6286 numTextureBarriers, texturesPacked, srcLayouts);
6287 }
6288 ANGLE_CAPTURE(WaitSemaphoreEXT, isCallValid, context, semaphorePacked, numBufferBarriers,
6289 buffersPacked, numTextureBarriers, texturesPacked, srcLayouts);
6290 }
6291 else
6292 {
6293 GenerateContextLostErrorOnCurrentGlobalContext();
6294 }
6295 }
6296
6297 // GetUnsignedBytei_vEXT is already defined.
6298
6299 // GetUnsignedBytevEXT is already defined.
6300
6301 // GL_EXT_semaphore_fd
GL_ImportSemaphoreFdEXT(GLuint semaphore,GLenum handleType,GLint fd)6302 void GL_APIENTRY GL_ImportSemaphoreFdEXT(GLuint semaphore, GLenum handleType, GLint fd)
6303 {
6304 Context *context = GetValidGlobalContext();
6305 EVENT(context, GLImportSemaphoreFdEXT, "context = %d, semaphore = %u, handleType = %s, fd = %d",
6306 CID(context), semaphore, GLenumToString(GLenumGroup::ExternalHandleType, handleType), fd);
6307
6308 if (context)
6309 {
6310 SemaphoreID semaphorePacked = PackParam<SemaphoreID>(semaphore);
6311 HandleType handleTypePacked = PackParam<HandleType>(handleType);
6312 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
6313 bool isCallValid =
6314 (context->skipValidation() ||
6315 ValidateImportSemaphoreFdEXT(context, angle::EntryPoint::GLImportSemaphoreFdEXT,
6316 semaphorePacked, handleTypePacked, fd));
6317 if (isCallValid)
6318 {
6319 context->importSemaphoreFd(semaphorePacked, handleTypePacked, fd);
6320 }
6321 ANGLE_CAPTURE(ImportSemaphoreFdEXT, isCallValid, context, semaphorePacked, handleTypePacked,
6322 fd);
6323 }
6324 else
6325 {
6326 GenerateContextLostErrorOnCurrentGlobalContext();
6327 }
6328 }
6329
6330 // GL_EXT_separate_shader_objects
GL_ActiveShaderProgramEXT(GLuint pipeline,GLuint program)6331 void GL_APIENTRY GL_ActiveShaderProgramEXT(GLuint pipeline, GLuint program)
6332 {
6333 Context *context = GetValidGlobalContext();
6334 EVENT(context, GLActiveShaderProgramEXT, "context = %d, pipeline = %u, program = %u",
6335 CID(context), pipeline, program);
6336
6337 if (context)
6338 {
6339 ProgramPipelineID pipelinePacked = PackParam<ProgramPipelineID>(pipeline);
6340 ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);
6341 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
6342 bool isCallValid =
6343 (context->skipValidation() ||
6344 ValidateActiveShaderProgramEXT(context, angle::EntryPoint::GLActiveShaderProgramEXT,
6345 pipelinePacked, programPacked));
6346 if (isCallValid)
6347 {
6348 context->activeShaderProgram(pipelinePacked, programPacked);
6349 }
6350 ANGLE_CAPTURE(ActiveShaderProgramEXT, isCallValid, context, pipelinePacked, programPacked);
6351 }
6352 else
6353 {
6354 GenerateContextLostErrorOnCurrentGlobalContext();
6355 }
6356 }
6357
GL_BindProgramPipelineEXT(GLuint pipeline)6358 void GL_APIENTRY GL_BindProgramPipelineEXT(GLuint pipeline)
6359 {
6360 Context *context = GetValidGlobalContext();
6361 EVENT(context, GLBindProgramPipelineEXT, "context = %d, pipeline = %u", CID(context), pipeline);
6362
6363 if (context)
6364 {
6365 ProgramPipelineID pipelinePacked = PackParam<ProgramPipelineID>(pipeline);
6366 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
6367 bool isCallValid =
6368 (context->skipValidation() ||
6369 ValidateBindProgramPipelineEXT(context, angle::EntryPoint::GLBindProgramPipelineEXT,
6370 pipelinePacked));
6371 if (isCallValid)
6372 {
6373 context->bindProgramPipeline(pipelinePacked);
6374 }
6375 ANGLE_CAPTURE(BindProgramPipelineEXT, isCallValid, context, pipelinePacked);
6376 }
6377 else
6378 {
6379 GenerateContextLostErrorOnCurrentGlobalContext();
6380 }
6381 }
6382
GL_CreateShaderProgramvEXT(GLenum type,GLsizei count,const GLchar ** strings)6383 GLuint GL_APIENTRY GL_CreateShaderProgramvEXT(GLenum type, GLsizei count, const GLchar **strings)
6384 {
6385 Context *context = GetValidGlobalContext();
6386 EVENT(context, GLCreateShaderProgramvEXT,
6387 "context = %d, type = %s, count = %d, strings = 0x%016" PRIxPTR "", CID(context),
6388 GLenumToString(GLenumGroup::ShaderType, type), count, (uintptr_t)strings);
6389
6390 GLuint returnValue;
6391 if (context)
6392 {
6393 ShaderType typePacked = PackParam<ShaderType>(type);
6394 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
6395 bool isCallValid =
6396 (context->skipValidation() ||
6397 ValidateCreateShaderProgramvEXT(context, angle::EntryPoint::GLCreateShaderProgramvEXT,
6398 typePacked, count, strings));
6399 if (isCallValid)
6400 {
6401 returnValue = context->createShaderProgramv(typePacked, count, strings);
6402 }
6403 else
6404 {
6405 returnValue =
6406 GetDefaultReturnValue<angle::EntryPoint::GLCreateShaderProgramvEXT, GLuint>();
6407 }
6408 ANGLE_CAPTURE(CreateShaderProgramvEXT, isCallValid, context, typePacked, count, strings,
6409 returnValue);
6410 }
6411 else
6412 {
6413 GenerateContextLostErrorOnCurrentGlobalContext();
6414 returnValue = GetDefaultReturnValue<angle::EntryPoint::GLCreateShaderProgramvEXT, GLuint>();
6415 }
6416 return returnValue;
6417 }
6418
GL_DeleteProgramPipelinesEXT(GLsizei n,const GLuint * pipelines)6419 void GL_APIENTRY GL_DeleteProgramPipelinesEXT(GLsizei n, const GLuint *pipelines)
6420 {
6421 Context *context = GetValidGlobalContext();
6422 EVENT(context, GLDeleteProgramPipelinesEXT,
6423 "context = %d, n = %d, pipelines = 0x%016" PRIxPTR "", CID(context), n,
6424 (uintptr_t)pipelines);
6425
6426 if (context)
6427 {
6428 const ProgramPipelineID *pipelinesPacked = PackParam<const ProgramPipelineID *>(pipelines);
6429 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
6430 bool isCallValid =
6431 (context->skipValidation() ||
6432 ValidateDeleteProgramPipelinesEXT(
6433 context, angle::EntryPoint::GLDeleteProgramPipelinesEXT, n, pipelinesPacked));
6434 if (isCallValid)
6435 {
6436 context->deleteProgramPipelines(n, pipelinesPacked);
6437 }
6438 ANGLE_CAPTURE(DeleteProgramPipelinesEXT, isCallValid, context, n, pipelinesPacked);
6439 }
6440 else
6441 {
6442 GenerateContextLostErrorOnCurrentGlobalContext();
6443 }
6444 }
6445
GL_GenProgramPipelinesEXT(GLsizei n,GLuint * pipelines)6446 void GL_APIENTRY GL_GenProgramPipelinesEXT(GLsizei n, GLuint *pipelines)
6447 {
6448 Context *context = GetValidGlobalContext();
6449 EVENT(context, GLGenProgramPipelinesEXT, "context = %d, n = %d, pipelines = 0x%016" PRIxPTR "",
6450 CID(context), n, (uintptr_t)pipelines);
6451
6452 if (context)
6453 {
6454 ProgramPipelineID *pipelinesPacked = PackParam<ProgramPipelineID *>(pipelines);
6455 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
6456 bool isCallValid =
6457 (context->skipValidation() ||
6458 ValidateGenProgramPipelinesEXT(context, angle::EntryPoint::GLGenProgramPipelinesEXT, n,
6459 pipelinesPacked));
6460 if (isCallValid)
6461 {
6462 context->genProgramPipelines(n, pipelinesPacked);
6463 }
6464 ANGLE_CAPTURE(GenProgramPipelinesEXT, isCallValid, context, n, pipelinesPacked);
6465 }
6466 else
6467 {
6468 GenerateContextLostErrorOnCurrentGlobalContext();
6469 }
6470 }
6471
GL_GetProgramPipelineInfoLogEXT(GLuint pipeline,GLsizei bufSize,GLsizei * length,GLchar * infoLog)6472 void GL_APIENTRY GL_GetProgramPipelineInfoLogEXT(GLuint pipeline,
6473 GLsizei bufSize,
6474 GLsizei *length,
6475 GLchar *infoLog)
6476 {
6477 Context *context = GetValidGlobalContext();
6478 EVENT(context, GLGetProgramPipelineInfoLogEXT,
6479 "context = %d, pipeline = %u, bufSize = %d, length = 0x%016" PRIxPTR
6480 ", infoLog = 0x%016" PRIxPTR "",
6481 CID(context), pipeline, bufSize, (uintptr_t)length, (uintptr_t)infoLog);
6482
6483 if (context)
6484 {
6485 ProgramPipelineID pipelinePacked = PackParam<ProgramPipelineID>(pipeline);
6486 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
6487 bool isCallValid = (context->skipValidation() ||
6488 ValidateGetProgramPipelineInfoLogEXT(
6489 context, angle::EntryPoint::GLGetProgramPipelineInfoLogEXT,
6490 pipelinePacked, bufSize, length, infoLog));
6491 if (isCallValid)
6492 {
6493 context->getProgramPipelineInfoLog(pipelinePacked, bufSize, length, infoLog);
6494 }
6495 ANGLE_CAPTURE(GetProgramPipelineInfoLogEXT, isCallValid, context, pipelinePacked, bufSize,
6496 length, infoLog);
6497 }
6498 else
6499 {
6500 GenerateContextLostErrorOnCurrentGlobalContext();
6501 }
6502 }
6503
GL_GetProgramPipelineivEXT(GLuint pipeline,GLenum pname,GLint * params)6504 void GL_APIENTRY GL_GetProgramPipelineivEXT(GLuint pipeline, GLenum pname, GLint *params)
6505 {
6506 Context *context = GetValidGlobalContext();
6507 EVENT(context, GLGetProgramPipelineivEXT,
6508 "context = %d, pipeline = %u, pname = %s, params = 0x%016" PRIxPTR "", CID(context),
6509 pipeline, GLenumToString(GLenumGroup::PipelineParameterName, pname), (uintptr_t)params);
6510
6511 if (context)
6512 {
6513 ProgramPipelineID pipelinePacked = PackParam<ProgramPipelineID>(pipeline);
6514 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
6515 bool isCallValid =
6516 (context->skipValidation() ||
6517 ValidateGetProgramPipelineivEXT(context, angle::EntryPoint::GLGetProgramPipelineivEXT,
6518 pipelinePacked, pname, params));
6519 if (isCallValid)
6520 {
6521 context->getProgramPipelineiv(pipelinePacked, pname, params);
6522 }
6523 ANGLE_CAPTURE(GetProgramPipelineivEXT, isCallValid, context, pipelinePacked, pname, params);
6524 }
6525 else
6526 {
6527 GenerateContextLostErrorOnCurrentGlobalContext();
6528 }
6529 }
6530
GL_IsProgramPipelineEXT(GLuint pipeline)6531 GLboolean GL_APIENTRY GL_IsProgramPipelineEXT(GLuint pipeline)
6532 {
6533 Context *context = GetValidGlobalContext();
6534 EVENT(context, GLIsProgramPipelineEXT, "context = %d, pipeline = %u", CID(context), pipeline);
6535
6536 GLboolean returnValue;
6537 if (context)
6538 {
6539 ProgramPipelineID pipelinePacked = PackParam<ProgramPipelineID>(pipeline);
6540 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
6541 bool isCallValid =
6542 (context->skipValidation() ||
6543 ValidateIsProgramPipelineEXT(context, angle::EntryPoint::GLIsProgramPipelineEXT,
6544 pipelinePacked));
6545 if (isCallValid)
6546 {
6547 returnValue = context->isProgramPipeline(pipelinePacked);
6548 }
6549 else
6550 {
6551 returnValue =
6552 GetDefaultReturnValue<angle::EntryPoint::GLIsProgramPipelineEXT, GLboolean>();
6553 }
6554 ANGLE_CAPTURE(IsProgramPipelineEXT, isCallValid, context, pipelinePacked, returnValue);
6555 }
6556 else
6557 {
6558 GenerateContextLostErrorOnCurrentGlobalContext();
6559 returnValue = GetDefaultReturnValue<angle::EntryPoint::GLIsProgramPipelineEXT, GLboolean>();
6560 }
6561 return returnValue;
6562 }
6563
GL_ProgramParameteriEXT(GLuint program,GLenum pname,GLint value)6564 void GL_APIENTRY GL_ProgramParameteriEXT(GLuint program, GLenum pname, GLint value)
6565 {
6566 Context *context = GetValidGlobalContext();
6567 EVENT(context, GLProgramParameteriEXT, "context = %d, program = %u, pname = %s, value = %d",
6568 CID(context), program, GLenumToString(GLenumGroup::ProgramParameterPName, pname), value);
6569
6570 if (context)
6571 {
6572 ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);
6573 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
6574 bool isCallValid =
6575 (context->skipValidation() ||
6576 ValidateProgramParameteriEXT(context, angle::EntryPoint::GLProgramParameteriEXT,
6577 programPacked, pname, value));
6578 if (isCallValid)
6579 {
6580 context->programParameteri(programPacked, pname, value);
6581 }
6582 ANGLE_CAPTURE(ProgramParameteriEXT, isCallValid, context, programPacked, pname, value);
6583 }
6584 else
6585 {
6586 GenerateContextLostErrorOnCurrentGlobalContext();
6587 }
6588 }
6589
GL_ProgramUniform1fEXT(GLuint program,GLint location,GLfloat v0)6590 void GL_APIENTRY GL_ProgramUniform1fEXT(GLuint program, GLint location, GLfloat v0)
6591 {
6592 Context *context = GetValidGlobalContext();
6593 EVENT(context, GLProgramUniform1fEXT, "context = %d, program = %u, location = %d, v0 = %f",
6594 CID(context), program, location, v0);
6595
6596 if (context)
6597 {
6598 ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);
6599 UniformLocation locationPacked = PackParam<UniformLocation>(location);
6600 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
6601 bool isCallValid =
6602 (context->skipValidation() ||
6603 ValidateProgramUniform1fEXT(context, angle::EntryPoint::GLProgramUniform1fEXT,
6604 programPacked, locationPacked, v0));
6605 if (isCallValid)
6606 {
6607 context->programUniform1f(programPacked, locationPacked, v0);
6608 }
6609 ANGLE_CAPTURE(ProgramUniform1fEXT, isCallValid, context, programPacked, locationPacked, v0);
6610 }
6611 else
6612 {
6613 GenerateContextLostErrorOnCurrentGlobalContext();
6614 }
6615 }
6616
GL_ProgramUniform1fvEXT(GLuint program,GLint location,GLsizei count,const GLfloat * value)6617 void GL_APIENTRY GL_ProgramUniform1fvEXT(GLuint program,
6618 GLint location,
6619 GLsizei count,
6620 const GLfloat *value)
6621 {
6622 Context *context = GetValidGlobalContext();
6623 EVENT(context, GLProgramUniform1fvEXT,
6624 "context = %d, program = %u, location = %d, count = %d, value = 0x%016" PRIxPTR "",
6625 CID(context), program, location, count, (uintptr_t)value);
6626
6627 if (context)
6628 {
6629 ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);
6630 UniformLocation locationPacked = PackParam<UniformLocation>(location);
6631 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
6632 bool isCallValid =
6633 (context->skipValidation() ||
6634 ValidateProgramUniform1fvEXT(context, angle::EntryPoint::GLProgramUniform1fvEXT,
6635 programPacked, locationPacked, count, value));
6636 if (isCallValid)
6637 {
6638 context->programUniform1fv(programPacked, locationPacked, count, value);
6639 }
6640 ANGLE_CAPTURE(ProgramUniform1fvEXT, isCallValid, context, programPacked, locationPacked,
6641 count, value);
6642 }
6643 else
6644 {
6645 GenerateContextLostErrorOnCurrentGlobalContext();
6646 }
6647 }
6648
GL_ProgramUniform1iEXT(GLuint program,GLint location,GLint v0)6649 void GL_APIENTRY GL_ProgramUniform1iEXT(GLuint program, GLint location, GLint v0)
6650 {
6651 Context *context = GetValidGlobalContext();
6652 EVENT(context, GLProgramUniform1iEXT, "context = %d, program = %u, location = %d, v0 = %d",
6653 CID(context), program, location, v0);
6654
6655 if (context)
6656 {
6657 ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);
6658 UniformLocation locationPacked = PackParam<UniformLocation>(location);
6659 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
6660 bool isCallValid =
6661 (context->skipValidation() ||
6662 ValidateProgramUniform1iEXT(context, angle::EntryPoint::GLProgramUniform1iEXT,
6663 programPacked, locationPacked, v0));
6664 if (isCallValid)
6665 {
6666 context->programUniform1i(programPacked, locationPacked, v0);
6667 }
6668 ANGLE_CAPTURE(ProgramUniform1iEXT, isCallValid, context, programPacked, locationPacked, v0);
6669 }
6670 else
6671 {
6672 GenerateContextLostErrorOnCurrentGlobalContext();
6673 }
6674 }
6675
GL_ProgramUniform1ivEXT(GLuint program,GLint location,GLsizei count,const GLint * value)6676 void GL_APIENTRY GL_ProgramUniform1ivEXT(GLuint program,
6677 GLint location,
6678 GLsizei count,
6679 const GLint *value)
6680 {
6681 Context *context = GetValidGlobalContext();
6682 EVENT(context, GLProgramUniform1ivEXT,
6683 "context = %d, program = %u, location = %d, count = %d, value = 0x%016" PRIxPTR "",
6684 CID(context), program, location, count, (uintptr_t)value);
6685
6686 if (context)
6687 {
6688 ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);
6689 UniformLocation locationPacked = PackParam<UniformLocation>(location);
6690 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
6691 bool isCallValid =
6692 (context->skipValidation() ||
6693 ValidateProgramUniform1ivEXT(context, angle::EntryPoint::GLProgramUniform1ivEXT,
6694 programPacked, locationPacked, count, value));
6695 if (isCallValid)
6696 {
6697 context->programUniform1iv(programPacked, locationPacked, count, value);
6698 }
6699 ANGLE_CAPTURE(ProgramUniform1ivEXT, isCallValid, context, programPacked, locationPacked,
6700 count, value);
6701 }
6702 else
6703 {
6704 GenerateContextLostErrorOnCurrentGlobalContext();
6705 }
6706 }
6707
GL_ProgramUniform1uiEXT(GLuint program,GLint location,GLuint v0)6708 void GL_APIENTRY GL_ProgramUniform1uiEXT(GLuint program, GLint location, GLuint v0)
6709 {
6710 Context *context = GetValidGlobalContext();
6711 EVENT(context, GLProgramUniform1uiEXT, "context = %d, program = %u, location = %d, v0 = %u",
6712 CID(context), program, location, v0);
6713
6714 if (context)
6715 {
6716 ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);
6717 UniformLocation locationPacked = PackParam<UniformLocation>(location);
6718 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
6719 bool isCallValid =
6720 (context->skipValidation() ||
6721 ValidateProgramUniform1uiEXT(context, angle::EntryPoint::GLProgramUniform1uiEXT,
6722 programPacked, locationPacked, v0));
6723 if (isCallValid)
6724 {
6725 context->programUniform1ui(programPacked, locationPacked, v0);
6726 }
6727 ANGLE_CAPTURE(ProgramUniform1uiEXT, isCallValid, context, programPacked, locationPacked,
6728 v0);
6729 }
6730 else
6731 {
6732 GenerateContextLostErrorOnCurrentGlobalContext();
6733 }
6734 }
6735
GL_ProgramUniform1uivEXT(GLuint program,GLint location,GLsizei count,const GLuint * value)6736 void GL_APIENTRY GL_ProgramUniform1uivEXT(GLuint program,
6737 GLint location,
6738 GLsizei count,
6739 const GLuint *value)
6740 {
6741 Context *context = GetValidGlobalContext();
6742 EVENT(context, GLProgramUniform1uivEXT,
6743 "context = %d, program = %u, location = %d, count = %d, value = 0x%016" PRIxPTR "",
6744 CID(context), program, location, count, (uintptr_t)value);
6745
6746 if (context)
6747 {
6748 ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);
6749 UniformLocation locationPacked = PackParam<UniformLocation>(location);
6750 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
6751 bool isCallValid =
6752 (context->skipValidation() ||
6753 ValidateProgramUniform1uivEXT(context, angle::EntryPoint::GLProgramUniform1uivEXT,
6754 programPacked, locationPacked, count, value));
6755 if (isCallValid)
6756 {
6757 context->programUniform1uiv(programPacked, locationPacked, count, value);
6758 }
6759 ANGLE_CAPTURE(ProgramUniform1uivEXT, isCallValid, context, programPacked, locationPacked,
6760 count, value);
6761 }
6762 else
6763 {
6764 GenerateContextLostErrorOnCurrentGlobalContext();
6765 }
6766 }
6767
GL_ProgramUniform2fEXT(GLuint program,GLint location,GLfloat v0,GLfloat v1)6768 void GL_APIENTRY GL_ProgramUniform2fEXT(GLuint program, GLint location, GLfloat v0, GLfloat v1)
6769 {
6770 Context *context = GetValidGlobalContext();
6771 EVENT(context, GLProgramUniform2fEXT,
6772 "context = %d, program = %u, location = %d, v0 = %f, v1 = %f", CID(context), program,
6773 location, v0, v1);
6774
6775 if (context)
6776 {
6777 ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);
6778 UniformLocation locationPacked = PackParam<UniformLocation>(location);
6779 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
6780 bool isCallValid =
6781 (context->skipValidation() ||
6782 ValidateProgramUniform2fEXT(context, angle::EntryPoint::GLProgramUniform2fEXT,
6783 programPacked, locationPacked, v0, v1));
6784 if (isCallValid)
6785 {
6786 context->programUniform2f(programPacked, locationPacked, v0, v1);
6787 }
6788 ANGLE_CAPTURE(ProgramUniform2fEXT, isCallValid, context, programPacked, locationPacked, v0,
6789 v1);
6790 }
6791 else
6792 {
6793 GenerateContextLostErrorOnCurrentGlobalContext();
6794 }
6795 }
6796
GL_ProgramUniform2fvEXT(GLuint program,GLint location,GLsizei count,const GLfloat * value)6797 void GL_APIENTRY GL_ProgramUniform2fvEXT(GLuint program,
6798 GLint location,
6799 GLsizei count,
6800 const GLfloat *value)
6801 {
6802 Context *context = GetValidGlobalContext();
6803 EVENT(context, GLProgramUniform2fvEXT,
6804 "context = %d, program = %u, location = %d, count = %d, value = 0x%016" PRIxPTR "",
6805 CID(context), program, location, count, (uintptr_t)value);
6806
6807 if (context)
6808 {
6809 ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);
6810 UniformLocation locationPacked = PackParam<UniformLocation>(location);
6811 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
6812 bool isCallValid =
6813 (context->skipValidation() ||
6814 ValidateProgramUniform2fvEXT(context, angle::EntryPoint::GLProgramUniform2fvEXT,
6815 programPacked, locationPacked, count, value));
6816 if (isCallValid)
6817 {
6818 context->programUniform2fv(programPacked, locationPacked, count, value);
6819 }
6820 ANGLE_CAPTURE(ProgramUniform2fvEXT, isCallValid, context, programPacked, locationPacked,
6821 count, value);
6822 }
6823 else
6824 {
6825 GenerateContextLostErrorOnCurrentGlobalContext();
6826 }
6827 }
6828
GL_ProgramUniform2iEXT(GLuint program,GLint location,GLint v0,GLint v1)6829 void GL_APIENTRY GL_ProgramUniform2iEXT(GLuint program, GLint location, GLint v0, GLint v1)
6830 {
6831 Context *context = GetValidGlobalContext();
6832 EVENT(context, GLProgramUniform2iEXT,
6833 "context = %d, program = %u, location = %d, v0 = %d, v1 = %d", CID(context), program,
6834 location, v0, v1);
6835
6836 if (context)
6837 {
6838 ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);
6839 UniformLocation locationPacked = PackParam<UniformLocation>(location);
6840 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
6841 bool isCallValid =
6842 (context->skipValidation() ||
6843 ValidateProgramUniform2iEXT(context, angle::EntryPoint::GLProgramUniform2iEXT,
6844 programPacked, locationPacked, v0, v1));
6845 if (isCallValid)
6846 {
6847 context->programUniform2i(programPacked, locationPacked, v0, v1);
6848 }
6849 ANGLE_CAPTURE(ProgramUniform2iEXT, isCallValid, context, programPacked, locationPacked, v0,
6850 v1);
6851 }
6852 else
6853 {
6854 GenerateContextLostErrorOnCurrentGlobalContext();
6855 }
6856 }
6857
GL_ProgramUniform2ivEXT(GLuint program,GLint location,GLsizei count,const GLint * value)6858 void GL_APIENTRY GL_ProgramUniform2ivEXT(GLuint program,
6859 GLint location,
6860 GLsizei count,
6861 const GLint *value)
6862 {
6863 Context *context = GetValidGlobalContext();
6864 EVENT(context, GLProgramUniform2ivEXT,
6865 "context = %d, program = %u, location = %d, count = %d, value = 0x%016" PRIxPTR "",
6866 CID(context), program, location, count, (uintptr_t)value);
6867
6868 if (context)
6869 {
6870 ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);
6871 UniformLocation locationPacked = PackParam<UniformLocation>(location);
6872 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
6873 bool isCallValid =
6874 (context->skipValidation() ||
6875 ValidateProgramUniform2ivEXT(context, angle::EntryPoint::GLProgramUniform2ivEXT,
6876 programPacked, locationPacked, count, value));
6877 if (isCallValid)
6878 {
6879 context->programUniform2iv(programPacked, locationPacked, count, value);
6880 }
6881 ANGLE_CAPTURE(ProgramUniform2ivEXT, isCallValid, context, programPacked, locationPacked,
6882 count, value);
6883 }
6884 else
6885 {
6886 GenerateContextLostErrorOnCurrentGlobalContext();
6887 }
6888 }
6889
GL_ProgramUniform2uiEXT(GLuint program,GLint location,GLuint v0,GLuint v1)6890 void GL_APIENTRY GL_ProgramUniform2uiEXT(GLuint program, GLint location, GLuint v0, GLuint v1)
6891 {
6892 Context *context = GetValidGlobalContext();
6893 EVENT(context, GLProgramUniform2uiEXT,
6894 "context = %d, program = %u, location = %d, v0 = %u, v1 = %u", CID(context), program,
6895 location, v0, v1);
6896
6897 if (context)
6898 {
6899 ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);
6900 UniformLocation locationPacked = PackParam<UniformLocation>(location);
6901 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
6902 bool isCallValid =
6903 (context->skipValidation() ||
6904 ValidateProgramUniform2uiEXT(context, angle::EntryPoint::GLProgramUniform2uiEXT,
6905 programPacked, locationPacked, v0, v1));
6906 if (isCallValid)
6907 {
6908 context->programUniform2ui(programPacked, locationPacked, v0, v1);
6909 }
6910 ANGLE_CAPTURE(ProgramUniform2uiEXT, isCallValid, context, programPacked, locationPacked, v0,
6911 v1);
6912 }
6913 else
6914 {
6915 GenerateContextLostErrorOnCurrentGlobalContext();
6916 }
6917 }
6918
GL_ProgramUniform2uivEXT(GLuint program,GLint location,GLsizei count,const GLuint * value)6919 void GL_APIENTRY GL_ProgramUniform2uivEXT(GLuint program,
6920 GLint location,
6921 GLsizei count,
6922 const GLuint *value)
6923 {
6924 Context *context = GetValidGlobalContext();
6925 EVENT(context, GLProgramUniform2uivEXT,
6926 "context = %d, program = %u, location = %d, count = %d, value = 0x%016" PRIxPTR "",
6927 CID(context), program, location, count, (uintptr_t)value);
6928
6929 if (context)
6930 {
6931 ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);
6932 UniformLocation locationPacked = PackParam<UniformLocation>(location);
6933 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
6934 bool isCallValid =
6935 (context->skipValidation() ||
6936 ValidateProgramUniform2uivEXT(context, angle::EntryPoint::GLProgramUniform2uivEXT,
6937 programPacked, locationPacked, count, value));
6938 if (isCallValid)
6939 {
6940 context->programUniform2uiv(programPacked, locationPacked, count, value);
6941 }
6942 ANGLE_CAPTURE(ProgramUniform2uivEXT, isCallValid, context, programPacked, locationPacked,
6943 count, value);
6944 }
6945 else
6946 {
6947 GenerateContextLostErrorOnCurrentGlobalContext();
6948 }
6949 }
6950
6951 void GL_APIENTRY
GL_ProgramUniform3fEXT(GLuint program,GLint location,GLfloat v0,GLfloat v1,GLfloat v2)6952 GL_ProgramUniform3fEXT(GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2)
6953 {
6954 Context *context = GetValidGlobalContext();
6955 EVENT(context, GLProgramUniform3fEXT,
6956 "context = %d, program = %u, location = %d, v0 = %f, v1 = %f, v2 = %f", CID(context),
6957 program, location, v0, v1, v2);
6958
6959 if (context)
6960 {
6961 ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);
6962 UniformLocation locationPacked = PackParam<UniformLocation>(location);
6963 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
6964 bool isCallValid =
6965 (context->skipValidation() ||
6966 ValidateProgramUniform3fEXT(context, angle::EntryPoint::GLProgramUniform3fEXT,
6967 programPacked, locationPacked, v0, v1, v2));
6968 if (isCallValid)
6969 {
6970 context->programUniform3f(programPacked, locationPacked, v0, v1, v2);
6971 }
6972 ANGLE_CAPTURE(ProgramUniform3fEXT, isCallValid, context, programPacked, locationPacked, v0,
6973 v1, v2);
6974 }
6975 else
6976 {
6977 GenerateContextLostErrorOnCurrentGlobalContext();
6978 }
6979 }
6980
GL_ProgramUniform3fvEXT(GLuint program,GLint location,GLsizei count,const GLfloat * value)6981 void GL_APIENTRY GL_ProgramUniform3fvEXT(GLuint program,
6982 GLint location,
6983 GLsizei count,
6984 const GLfloat *value)
6985 {
6986 Context *context = GetValidGlobalContext();
6987 EVENT(context, GLProgramUniform3fvEXT,
6988 "context = %d, program = %u, location = %d, count = %d, value = 0x%016" PRIxPTR "",
6989 CID(context), program, location, count, (uintptr_t)value);
6990
6991 if (context)
6992 {
6993 ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);
6994 UniformLocation locationPacked = PackParam<UniformLocation>(location);
6995 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
6996 bool isCallValid =
6997 (context->skipValidation() ||
6998 ValidateProgramUniform3fvEXT(context, angle::EntryPoint::GLProgramUniform3fvEXT,
6999 programPacked, locationPacked, count, value));
7000 if (isCallValid)
7001 {
7002 context->programUniform3fv(programPacked, locationPacked, count, value);
7003 }
7004 ANGLE_CAPTURE(ProgramUniform3fvEXT, isCallValid, context, programPacked, locationPacked,
7005 count, value);
7006 }
7007 else
7008 {
7009 GenerateContextLostErrorOnCurrentGlobalContext();
7010 }
7011 }
7012
7013 void GL_APIENTRY
GL_ProgramUniform3iEXT(GLuint program,GLint location,GLint v0,GLint v1,GLint v2)7014 GL_ProgramUniform3iEXT(GLuint program, GLint location, GLint v0, GLint v1, GLint v2)
7015 {
7016 Context *context = GetValidGlobalContext();
7017 EVENT(context, GLProgramUniform3iEXT,
7018 "context = %d, program = %u, location = %d, v0 = %d, v1 = %d, v2 = %d", CID(context),
7019 program, location, v0, v1, v2);
7020
7021 if (context)
7022 {
7023 ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);
7024 UniformLocation locationPacked = PackParam<UniformLocation>(location);
7025 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
7026 bool isCallValid =
7027 (context->skipValidation() ||
7028 ValidateProgramUniform3iEXT(context, angle::EntryPoint::GLProgramUniform3iEXT,
7029 programPacked, locationPacked, v0, v1, v2));
7030 if (isCallValid)
7031 {
7032 context->programUniform3i(programPacked, locationPacked, v0, v1, v2);
7033 }
7034 ANGLE_CAPTURE(ProgramUniform3iEXT, isCallValid, context, programPacked, locationPacked, v0,
7035 v1, v2);
7036 }
7037 else
7038 {
7039 GenerateContextLostErrorOnCurrentGlobalContext();
7040 }
7041 }
7042
GL_ProgramUniform3ivEXT(GLuint program,GLint location,GLsizei count,const GLint * value)7043 void GL_APIENTRY GL_ProgramUniform3ivEXT(GLuint program,
7044 GLint location,
7045 GLsizei count,
7046 const GLint *value)
7047 {
7048 Context *context = GetValidGlobalContext();
7049 EVENT(context, GLProgramUniform3ivEXT,
7050 "context = %d, program = %u, location = %d, count = %d, value = 0x%016" PRIxPTR "",
7051 CID(context), program, location, count, (uintptr_t)value);
7052
7053 if (context)
7054 {
7055 ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);
7056 UniformLocation locationPacked = PackParam<UniformLocation>(location);
7057 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
7058 bool isCallValid =
7059 (context->skipValidation() ||
7060 ValidateProgramUniform3ivEXT(context, angle::EntryPoint::GLProgramUniform3ivEXT,
7061 programPacked, locationPacked, count, value));
7062 if (isCallValid)
7063 {
7064 context->programUniform3iv(programPacked, locationPacked, count, value);
7065 }
7066 ANGLE_CAPTURE(ProgramUniform3ivEXT, isCallValid, context, programPacked, locationPacked,
7067 count, value);
7068 }
7069 else
7070 {
7071 GenerateContextLostErrorOnCurrentGlobalContext();
7072 }
7073 }
7074
7075 void GL_APIENTRY
GL_ProgramUniform3uiEXT(GLuint program,GLint location,GLuint v0,GLuint v1,GLuint v2)7076 GL_ProgramUniform3uiEXT(GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2)
7077 {
7078 Context *context = GetValidGlobalContext();
7079 EVENT(context, GLProgramUniform3uiEXT,
7080 "context = %d, program = %u, location = %d, v0 = %u, v1 = %u, v2 = %u", CID(context),
7081 program, location, v0, v1, v2);
7082
7083 if (context)
7084 {
7085 ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);
7086 UniformLocation locationPacked = PackParam<UniformLocation>(location);
7087 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
7088 bool isCallValid =
7089 (context->skipValidation() ||
7090 ValidateProgramUniform3uiEXT(context, angle::EntryPoint::GLProgramUniform3uiEXT,
7091 programPacked, locationPacked, v0, v1, v2));
7092 if (isCallValid)
7093 {
7094 context->programUniform3ui(programPacked, locationPacked, v0, v1, v2);
7095 }
7096 ANGLE_CAPTURE(ProgramUniform3uiEXT, isCallValid, context, programPacked, locationPacked, v0,
7097 v1, v2);
7098 }
7099 else
7100 {
7101 GenerateContextLostErrorOnCurrentGlobalContext();
7102 }
7103 }
7104
GL_ProgramUniform3uivEXT(GLuint program,GLint location,GLsizei count,const GLuint * value)7105 void GL_APIENTRY GL_ProgramUniform3uivEXT(GLuint program,
7106 GLint location,
7107 GLsizei count,
7108 const GLuint *value)
7109 {
7110 Context *context = GetValidGlobalContext();
7111 EVENT(context, GLProgramUniform3uivEXT,
7112 "context = %d, program = %u, location = %d, count = %d, value = 0x%016" PRIxPTR "",
7113 CID(context), program, location, count, (uintptr_t)value);
7114
7115 if (context)
7116 {
7117 ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);
7118 UniformLocation locationPacked = PackParam<UniformLocation>(location);
7119 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
7120 bool isCallValid =
7121 (context->skipValidation() ||
7122 ValidateProgramUniform3uivEXT(context, angle::EntryPoint::GLProgramUniform3uivEXT,
7123 programPacked, locationPacked, count, value));
7124 if (isCallValid)
7125 {
7126 context->programUniform3uiv(programPacked, locationPacked, count, value);
7127 }
7128 ANGLE_CAPTURE(ProgramUniform3uivEXT, isCallValid, context, programPacked, locationPacked,
7129 count, value);
7130 }
7131 else
7132 {
7133 GenerateContextLostErrorOnCurrentGlobalContext();
7134 }
7135 }
7136
GL_ProgramUniform4fEXT(GLuint program,GLint location,GLfloat v0,GLfloat v1,GLfloat v2,GLfloat v3)7137 void GL_APIENTRY GL_ProgramUniform4fEXT(GLuint program,
7138 GLint location,
7139 GLfloat v0,
7140 GLfloat v1,
7141 GLfloat v2,
7142 GLfloat v3)
7143 {
7144 Context *context = GetValidGlobalContext();
7145 EVENT(context, GLProgramUniform4fEXT,
7146 "context = %d, program = %u, location = %d, v0 = %f, v1 = %f, v2 = %f, v3 = %f",
7147 CID(context), program, location, v0, v1, v2, v3);
7148
7149 if (context)
7150 {
7151 ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);
7152 UniformLocation locationPacked = PackParam<UniformLocation>(location);
7153 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
7154 bool isCallValid =
7155 (context->skipValidation() ||
7156 ValidateProgramUniform4fEXT(context, angle::EntryPoint::GLProgramUniform4fEXT,
7157 programPacked, locationPacked, v0, v1, v2, v3));
7158 if (isCallValid)
7159 {
7160 context->programUniform4f(programPacked, locationPacked, v0, v1, v2, v3);
7161 }
7162 ANGLE_CAPTURE(ProgramUniform4fEXT, isCallValid, context, programPacked, locationPacked, v0,
7163 v1, v2, v3);
7164 }
7165 else
7166 {
7167 GenerateContextLostErrorOnCurrentGlobalContext();
7168 }
7169 }
7170
GL_ProgramUniform4fvEXT(GLuint program,GLint location,GLsizei count,const GLfloat * value)7171 void GL_APIENTRY GL_ProgramUniform4fvEXT(GLuint program,
7172 GLint location,
7173 GLsizei count,
7174 const GLfloat *value)
7175 {
7176 Context *context = GetValidGlobalContext();
7177 EVENT(context, GLProgramUniform4fvEXT,
7178 "context = %d, program = %u, location = %d, count = %d, value = 0x%016" PRIxPTR "",
7179 CID(context), program, location, count, (uintptr_t)value);
7180
7181 if (context)
7182 {
7183 ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);
7184 UniformLocation locationPacked = PackParam<UniformLocation>(location);
7185 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
7186 bool isCallValid =
7187 (context->skipValidation() ||
7188 ValidateProgramUniform4fvEXT(context, angle::EntryPoint::GLProgramUniform4fvEXT,
7189 programPacked, locationPacked, count, value));
7190 if (isCallValid)
7191 {
7192 context->programUniform4fv(programPacked, locationPacked, count, value);
7193 }
7194 ANGLE_CAPTURE(ProgramUniform4fvEXT, isCallValid, context, programPacked, locationPacked,
7195 count, value);
7196 }
7197 else
7198 {
7199 GenerateContextLostErrorOnCurrentGlobalContext();
7200 }
7201 }
7202
7203 void GL_APIENTRY
GL_ProgramUniform4iEXT(GLuint program,GLint location,GLint v0,GLint v1,GLint v2,GLint v3)7204 GL_ProgramUniform4iEXT(GLuint program, GLint location, GLint v0, GLint v1, GLint v2, GLint v3)
7205 {
7206 Context *context = GetValidGlobalContext();
7207 EVENT(context, GLProgramUniform4iEXT,
7208 "context = %d, program = %u, location = %d, v0 = %d, v1 = %d, v2 = %d, v3 = %d",
7209 CID(context), program, location, v0, v1, v2, v3);
7210
7211 if (context)
7212 {
7213 ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);
7214 UniformLocation locationPacked = PackParam<UniformLocation>(location);
7215 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
7216 bool isCallValid =
7217 (context->skipValidation() ||
7218 ValidateProgramUniform4iEXT(context, angle::EntryPoint::GLProgramUniform4iEXT,
7219 programPacked, locationPacked, v0, v1, v2, v3));
7220 if (isCallValid)
7221 {
7222 context->programUniform4i(programPacked, locationPacked, v0, v1, v2, v3);
7223 }
7224 ANGLE_CAPTURE(ProgramUniform4iEXT, isCallValid, context, programPacked, locationPacked, v0,
7225 v1, v2, v3);
7226 }
7227 else
7228 {
7229 GenerateContextLostErrorOnCurrentGlobalContext();
7230 }
7231 }
7232
GL_ProgramUniform4ivEXT(GLuint program,GLint location,GLsizei count,const GLint * value)7233 void GL_APIENTRY GL_ProgramUniform4ivEXT(GLuint program,
7234 GLint location,
7235 GLsizei count,
7236 const GLint *value)
7237 {
7238 Context *context = GetValidGlobalContext();
7239 EVENT(context, GLProgramUniform4ivEXT,
7240 "context = %d, program = %u, location = %d, count = %d, value = 0x%016" PRIxPTR "",
7241 CID(context), program, location, count, (uintptr_t)value);
7242
7243 if (context)
7244 {
7245 ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);
7246 UniformLocation locationPacked = PackParam<UniformLocation>(location);
7247 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
7248 bool isCallValid =
7249 (context->skipValidation() ||
7250 ValidateProgramUniform4ivEXT(context, angle::EntryPoint::GLProgramUniform4ivEXT,
7251 programPacked, locationPacked, count, value));
7252 if (isCallValid)
7253 {
7254 context->programUniform4iv(programPacked, locationPacked, count, value);
7255 }
7256 ANGLE_CAPTURE(ProgramUniform4ivEXT, isCallValid, context, programPacked, locationPacked,
7257 count, value);
7258 }
7259 else
7260 {
7261 GenerateContextLostErrorOnCurrentGlobalContext();
7262 }
7263 }
7264
7265 void GL_APIENTRY
GL_ProgramUniform4uiEXT(GLuint program,GLint location,GLuint v0,GLuint v1,GLuint v2,GLuint v3)7266 GL_ProgramUniform4uiEXT(GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3)
7267 {
7268 Context *context = GetValidGlobalContext();
7269 EVENT(context, GLProgramUniform4uiEXT,
7270 "context = %d, program = %u, location = %d, v0 = %u, v1 = %u, v2 = %u, v3 = %u",
7271 CID(context), program, location, v0, v1, v2, v3);
7272
7273 if (context)
7274 {
7275 ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);
7276 UniformLocation locationPacked = PackParam<UniformLocation>(location);
7277 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
7278 bool isCallValid =
7279 (context->skipValidation() ||
7280 ValidateProgramUniform4uiEXT(context, angle::EntryPoint::GLProgramUniform4uiEXT,
7281 programPacked, locationPacked, v0, v1, v2, v3));
7282 if (isCallValid)
7283 {
7284 context->programUniform4ui(programPacked, locationPacked, v0, v1, v2, v3);
7285 }
7286 ANGLE_CAPTURE(ProgramUniform4uiEXT, isCallValid, context, programPacked, locationPacked, v0,
7287 v1, v2, v3);
7288 }
7289 else
7290 {
7291 GenerateContextLostErrorOnCurrentGlobalContext();
7292 }
7293 }
7294
GL_ProgramUniform4uivEXT(GLuint program,GLint location,GLsizei count,const GLuint * value)7295 void GL_APIENTRY GL_ProgramUniform4uivEXT(GLuint program,
7296 GLint location,
7297 GLsizei count,
7298 const GLuint *value)
7299 {
7300 Context *context = GetValidGlobalContext();
7301 EVENT(context, GLProgramUniform4uivEXT,
7302 "context = %d, program = %u, location = %d, count = %d, value = 0x%016" PRIxPTR "",
7303 CID(context), program, location, count, (uintptr_t)value);
7304
7305 if (context)
7306 {
7307 ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);
7308 UniformLocation locationPacked = PackParam<UniformLocation>(location);
7309 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
7310 bool isCallValid =
7311 (context->skipValidation() ||
7312 ValidateProgramUniform4uivEXT(context, angle::EntryPoint::GLProgramUniform4uivEXT,
7313 programPacked, locationPacked, count, value));
7314 if (isCallValid)
7315 {
7316 context->programUniform4uiv(programPacked, locationPacked, count, value);
7317 }
7318 ANGLE_CAPTURE(ProgramUniform4uivEXT, isCallValid, context, programPacked, locationPacked,
7319 count, value);
7320 }
7321 else
7322 {
7323 GenerateContextLostErrorOnCurrentGlobalContext();
7324 }
7325 }
7326
GL_ProgramUniformMatrix2fvEXT(GLuint program,GLint location,GLsizei count,GLboolean transpose,const GLfloat * value)7327 void GL_APIENTRY GL_ProgramUniformMatrix2fvEXT(GLuint program,
7328 GLint location,
7329 GLsizei count,
7330 GLboolean transpose,
7331 const GLfloat *value)
7332 {
7333 Context *context = GetValidGlobalContext();
7334 EVENT(context, GLProgramUniformMatrix2fvEXT,
7335 "context = %d, program = %u, location = %d, count = %d, transpose = %s, value = "
7336 "0x%016" PRIxPTR "",
7337 CID(context), program, location, count, GLbooleanToString(transpose), (uintptr_t)value);
7338
7339 if (context)
7340 {
7341 ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);
7342 UniformLocation locationPacked = PackParam<UniformLocation>(location);
7343 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
7344 bool isCallValid = (context->skipValidation() ||
7345 ValidateProgramUniformMatrix2fvEXT(
7346 context, angle::EntryPoint::GLProgramUniformMatrix2fvEXT,
7347 programPacked, locationPacked, count, transpose, value));
7348 if (isCallValid)
7349 {
7350 context->programUniformMatrix2fv(programPacked, locationPacked, count, transpose,
7351 value);
7352 }
7353 ANGLE_CAPTURE(ProgramUniformMatrix2fvEXT, isCallValid, context, programPacked,
7354 locationPacked, count, transpose, value);
7355 }
7356 else
7357 {
7358 GenerateContextLostErrorOnCurrentGlobalContext();
7359 }
7360 }
7361
GL_ProgramUniformMatrix2x3fvEXT(GLuint program,GLint location,GLsizei count,GLboolean transpose,const GLfloat * value)7362 void GL_APIENTRY GL_ProgramUniformMatrix2x3fvEXT(GLuint program,
7363 GLint location,
7364 GLsizei count,
7365 GLboolean transpose,
7366 const GLfloat *value)
7367 {
7368 Context *context = GetValidGlobalContext();
7369 EVENT(context, GLProgramUniformMatrix2x3fvEXT,
7370 "context = %d, program = %u, location = %d, count = %d, transpose = %s, value = "
7371 "0x%016" PRIxPTR "",
7372 CID(context), program, location, count, GLbooleanToString(transpose), (uintptr_t)value);
7373
7374 if (context)
7375 {
7376 ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);
7377 UniformLocation locationPacked = PackParam<UniformLocation>(location);
7378 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
7379 bool isCallValid = (context->skipValidation() ||
7380 ValidateProgramUniformMatrix2x3fvEXT(
7381 context, angle::EntryPoint::GLProgramUniformMatrix2x3fvEXT,
7382 programPacked, locationPacked, count, transpose, value));
7383 if (isCallValid)
7384 {
7385 context->programUniformMatrix2x3fv(programPacked, locationPacked, count, transpose,
7386 value);
7387 }
7388 ANGLE_CAPTURE(ProgramUniformMatrix2x3fvEXT, isCallValid, context, programPacked,
7389 locationPacked, count, transpose, value);
7390 }
7391 else
7392 {
7393 GenerateContextLostErrorOnCurrentGlobalContext();
7394 }
7395 }
7396
GL_ProgramUniformMatrix2x4fvEXT(GLuint program,GLint location,GLsizei count,GLboolean transpose,const GLfloat * value)7397 void GL_APIENTRY GL_ProgramUniformMatrix2x4fvEXT(GLuint program,
7398 GLint location,
7399 GLsizei count,
7400 GLboolean transpose,
7401 const GLfloat *value)
7402 {
7403 Context *context = GetValidGlobalContext();
7404 EVENT(context, GLProgramUniformMatrix2x4fvEXT,
7405 "context = %d, program = %u, location = %d, count = %d, transpose = %s, value = "
7406 "0x%016" PRIxPTR "",
7407 CID(context), program, location, count, GLbooleanToString(transpose), (uintptr_t)value);
7408
7409 if (context)
7410 {
7411 ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);
7412 UniformLocation locationPacked = PackParam<UniformLocation>(location);
7413 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
7414 bool isCallValid = (context->skipValidation() ||
7415 ValidateProgramUniformMatrix2x4fvEXT(
7416 context, angle::EntryPoint::GLProgramUniformMatrix2x4fvEXT,
7417 programPacked, locationPacked, count, transpose, value));
7418 if (isCallValid)
7419 {
7420 context->programUniformMatrix2x4fv(programPacked, locationPacked, count, transpose,
7421 value);
7422 }
7423 ANGLE_CAPTURE(ProgramUniformMatrix2x4fvEXT, isCallValid, context, programPacked,
7424 locationPacked, count, transpose, value);
7425 }
7426 else
7427 {
7428 GenerateContextLostErrorOnCurrentGlobalContext();
7429 }
7430 }
7431
GL_ProgramUniformMatrix3fvEXT(GLuint program,GLint location,GLsizei count,GLboolean transpose,const GLfloat * value)7432 void GL_APIENTRY GL_ProgramUniformMatrix3fvEXT(GLuint program,
7433 GLint location,
7434 GLsizei count,
7435 GLboolean transpose,
7436 const GLfloat *value)
7437 {
7438 Context *context = GetValidGlobalContext();
7439 EVENT(context, GLProgramUniformMatrix3fvEXT,
7440 "context = %d, program = %u, location = %d, count = %d, transpose = %s, value = "
7441 "0x%016" PRIxPTR "",
7442 CID(context), program, location, count, GLbooleanToString(transpose), (uintptr_t)value);
7443
7444 if (context)
7445 {
7446 ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);
7447 UniformLocation locationPacked = PackParam<UniformLocation>(location);
7448 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
7449 bool isCallValid = (context->skipValidation() ||
7450 ValidateProgramUniformMatrix3fvEXT(
7451 context, angle::EntryPoint::GLProgramUniformMatrix3fvEXT,
7452 programPacked, locationPacked, count, transpose, value));
7453 if (isCallValid)
7454 {
7455 context->programUniformMatrix3fv(programPacked, locationPacked, count, transpose,
7456 value);
7457 }
7458 ANGLE_CAPTURE(ProgramUniformMatrix3fvEXT, isCallValid, context, programPacked,
7459 locationPacked, count, transpose, value);
7460 }
7461 else
7462 {
7463 GenerateContextLostErrorOnCurrentGlobalContext();
7464 }
7465 }
7466
GL_ProgramUniformMatrix3x2fvEXT(GLuint program,GLint location,GLsizei count,GLboolean transpose,const GLfloat * value)7467 void GL_APIENTRY GL_ProgramUniformMatrix3x2fvEXT(GLuint program,
7468 GLint location,
7469 GLsizei count,
7470 GLboolean transpose,
7471 const GLfloat *value)
7472 {
7473 Context *context = GetValidGlobalContext();
7474 EVENT(context, GLProgramUniformMatrix3x2fvEXT,
7475 "context = %d, program = %u, location = %d, count = %d, transpose = %s, value = "
7476 "0x%016" PRIxPTR "",
7477 CID(context), program, location, count, GLbooleanToString(transpose), (uintptr_t)value);
7478
7479 if (context)
7480 {
7481 ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);
7482 UniformLocation locationPacked = PackParam<UniformLocation>(location);
7483 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
7484 bool isCallValid = (context->skipValidation() ||
7485 ValidateProgramUniformMatrix3x2fvEXT(
7486 context, angle::EntryPoint::GLProgramUniformMatrix3x2fvEXT,
7487 programPacked, locationPacked, count, transpose, value));
7488 if (isCallValid)
7489 {
7490 context->programUniformMatrix3x2fv(programPacked, locationPacked, count, transpose,
7491 value);
7492 }
7493 ANGLE_CAPTURE(ProgramUniformMatrix3x2fvEXT, isCallValid, context, programPacked,
7494 locationPacked, count, transpose, value);
7495 }
7496 else
7497 {
7498 GenerateContextLostErrorOnCurrentGlobalContext();
7499 }
7500 }
7501
GL_ProgramUniformMatrix3x4fvEXT(GLuint program,GLint location,GLsizei count,GLboolean transpose,const GLfloat * value)7502 void GL_APIENTRY GL_ProgramUniformMatrix3x4fvEXT(GLuint program,
7503 GLint location,
7504 GLsizei count,
7505 GLboolean transpose,
7506 const GLfloat *value)
7507 {
7508 Context *context = GetValidGlobalContext();
7509 EVENT(context, GLProgramUniformMatrix3x4fvEXT,
7510 "context = %d, program = %u, location = %d, count = %d, transpose = %s, value = "
7511 "0x%016" PRIxPTR "",
7512 CID(context), program, location, count, GLbooleanToString(transpose), (uintptr_t)value);
7513
7514 if (context)
7515 {
7516 ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);
7517 UniformLocation locationPacked = PackParam<UniformLocation>(location);
7518 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
7519 bool isCallValid = (context->skipValidation() ||
7520 ValidateProgramUniformMatrix3x4fvEXT(
7521 context, angle::EntryPoint::GLProgramUniformMatrix3x4fvEXT,
7522 programPacked, locationPacked, count, transpose, value));
7523 if (isCallValid)
7524 {
7525 context->programUniformMatrix3x4fv(programPacked, locationPacked, count, transpose,
7526 value);
7527 }
7528 ANGLE_CAPTURE(ProgramUniformMatrix3x4fvEXT, isCallValid, context, programPacked,
7529 locationPacked, count, transpose, value);
7530 }
7531 else
7532 {
7533 GenerateContextLostErrorOnCurrentGlobalContext();
7534 }
7535 }
7536
GL_ProgramUniformMatrix4fvEXT(GLuint program,GLint location,GLsizei count,GLboolean transpose,const GLfloat * value)7537 void GL_APIENTRY GL_ProgramUniformMatrix4fvEXT(GLuint program,
7538 GLint location,
7539 GLsizei count,
7540 GLboolean transpose,
7541 const GLfloat *value)
7542 {
7543 Context *context = GetValidGlobalContext();
7544 EVENT(context, GLProgramUniformMatrix4fvEXT,
7545 "context = %d, program = %u, location = %d, count = %d, transpose = %s, value = "
7546 "0x%016" PRIxPTR "",
7547 CID(context), program, location, count, GLbooleanToString(transpose), (uintptr_t)value);
7548
7549 if (context)
7550 {
7551 ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);
7552 UniformLocation locationPacked = PackParam<UniformLocation>(location);
7553 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
7554 bool isCallValid = (context->skipValidation() ||
7555 ValidateProgramUniformMatrix4fvEXT(
7556 context, angle::EntryPoint::GLProgramUniformMatrix4fvEXT,
7557 programPacked, locationPacked, count, transpose, value));
7558 if (isCallValid)
7559 {
7560 context->programUniformMatrix4fv(programPacked, locationPacked, count, transpose,
7561 value);
7562 }
7563 ANGLE_CAPTURE(ProgramUniformMatrix4fvEXT, isCallValid, context, programPacked,
7564 locationPacked, count, transpose, value);
7565 }
7566 else
7567 {
7568 GenerateContextLostErrorOnCurrentGlobalContext();
7569 }
7570 }
7571
GL_ProgramUniformMatrix4x2fvEXT(GLuint program,GLint location,GLsizei count,GLboolean transpose,const GLfloat * value)7572 void GL_APIENTRY GL_ProgramUniformMatrix4x2fvEXT(GLuint program,
7573 GLint location,
7574 GLsizei count,
7575 GLboolean transpose,
7576 const GLfloat *value)
7577 {
7578 Context *context = GetValidGlobalContext();
7579 EVENT(context, GLProgramUniformMatrix4x2fvEXT,
7580 "context = %d, program = %u, location = %d, count = %d, transpose = %s, value = "
7581 "0x%016" PRIxPTR "",
7582 CID(context), program, location, count, GLbooleanToString(transpose), (uintptr_t)value);
7583
7584 if (context)
7585 {
7586 ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);
7587 UniformLocation locationPacked = PackParam<UniformLocation>(location);
7588 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
7589 bool isCallValid = (context->skipValidation() ||
7590 ValidateProgramUniformMatrix4x2fvEXT(
7591 context, angle::EntryPoint::GLProgramUniformMatrix4x2fvEXT,
7592 programPacked, locationPacked, count, transpose, value));
7593 if (isCallValid)
7594 {
7595 context->programUniformMatrix4x2fv(programPacked, locationPacked, count, transpose,
7596 value);
7597 }
7598 ANGLE_CAPTURE(ProgramUniformMatrix4x2fvEXT, isCallValid, context, programPacked,
7599 locationPacked, count, transpose, value);
7600 }
7601 else
7602 {
7603 GenerateContextLostErrorOnCurrentGlobalContext();
7604 }
7605 }
7606
GL_ProgramUniformMatrix4x3fvEXT(GLuint program,GLint location,GLsizei count,GLboolean transpose,const GLfloat * value)7607 void GL_APIENTRY GL_ProgramUniformMatrix4x3fvEXT(GLuint program,
7608 GLint location,
7609 GLsizei count,
7610 GLboolean transpose,
7611 const GLfloat *value)
7612 {
7613 Context *context = GetValidGlobalContext();
7614 EVENT(context, GLProgramUniformMatrix4x3fvEXT,
7615 "context = %d, program = %u, location = %d, count = %d, transpose = %s, value = "
7616 "0x%016" PRIxPTR "",
7617 CID(context), program, location, count, GLbooleanToString(transpose), (uintptr_t)value);
7618
7619 if (context)
7620 {
7621 ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);
7622 UniformLocation locationPacked = PackParam<UniformLocation>(location);
7623 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
7624 bool isCallValid = (context->skipValidation() ||
7625 ValidateProgramUniformMatrix4x3fvEXT(
7626 context, angle::EntryPoint::GLProgramUniformMatrix4x3fvEXT,
7627 programPacked, locationPacked, count, transpose, value));
7628 if (isCallValid)
7629 {
7630 context->programUniformMatrix4x3fv(programPacked, locationPacked, count, transpose,
7631 value);
7632 }
7633 ANGLE_CAPTURE(ProgramUniformMatrix4x3fvEXT, isCallValid, context, programPacked,
7634 locationPacked, count, transpose, value);
7635 }
7636 else
7637 {
7638 GenerateContextLostErrorOnCurrentGlobalContext();
7639 }
7640 }
7641
GL_UseProgramStagesEXT(GLuint pipeline,GLbitfield stages,GLuint program)7642 void GL_APIENTRY GL_UseProgramStagesEXT(GLuint pipeline, GLbitfield stages, GLuint program)
7643 {
7644 Context *context = GetValidGlobalContext();
7645 EVENT(context, GLUseProgramStagesEXT, "context = %d, pipeline = %u, stages = %s, program = %u",
7646 CID(context), pipeline,
7647 GLbitfieldToString(GLenumGroup::UseProgramStageMask, stages).c_str(), program);
7648
7649 if (context)
7650 {
7651 ProgramPipelineID pipelinePacked = PackParam<ProgramPipelineID>(pipeline);
7652 ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);
7653 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
7654 bool isCallValid =
7655 (context->skipValidation() ||
7656 ValidateUseProgramStagesEXT(context, angle::EntryPoint::GLUseProgramStagesEXT,
7657 pipelinePacked, stages, programPacked));
7658 if (isCallValid)
7659 {
7660 context->useProgramStages(pipelinePacked, stages, programPacked);
7661 }
7662 ANGLE_CAPTURE(UseProgramStagesEXT, isCallValid, context, pipelinePacked, stages,
7663 programPacked);
7664 }
7665 else
7666 {
7667 GenerateContextLostErrorOnCurrentGlobalContext();
7668 }
7669 }
7670
GL_ValidateProgramPipelineEXT(GLuint pipeline)7671 void GL_APIENTRY GL_ValidateProgramPipelineEXT(GLuint pipeline)
7672 {
7673 Context *context = GetValidGlobalContext();
7674 EVENT(context, GLValidateProgramPipelineEXT, "context = %d, pipeline = %u", CID(context),
7675 pipeline);
7676
7677 if (context)
7678 {
7679 ProgramPipelineID pipelinePacked = PackParam<ProgramPipelineID>(pipeline);
7680 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
7681 bool isCallValid =
7682 (context->skipValidation() ||
7683 ValidateValidateProgramPipelineEXT(
7684 context, angle::EntryPoint::GLValidateProgramPipelineEXT, pipelinePacked));
7685 if (isCallValid)
7686 {
7687 context->validateProgramPipeline(pipelinePacked);
7688 }
7689 ANGLE_CAPTURE(ValidateProgramPipelineEXT, isCallValid, context, pipelinePacked);
7690 }
7691 else
7692 {
7693 GenerateContextLostErrorOnCurrentGlobalContext();
7694 }
7695 }
7696
7697 // GL_EXT_shader_framebuffer_fetch_non_coherent
GL_FramebufferFetchBarrierEXT()7698 void GL_APIENTRY GL_FramebufferFetchBarrierEXT()
7699 {
7700 Context *context = GetValidGlobalContext();
7701 EVENT(context, GLFramebufferFetchBarrierEXT, "context = %d", CID(context));
7702
7703 if (context)
7704 {
7705 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
7706 bool isCallValid = (context->skipValidation() ||
7707 ValidateFramebufferFetchBarrierEXT(
7708 context, angle::EntryPoint::GLFramebufferFetchBarrierEXT));
7709 if (isCallValid)
7710 {
7711 context->framebufferFetchBarrier();
7712 }
7713 ANGLE_CAPTURE(FramebufferFetchBarrierEXT, isCallValid, context);
7714 }
7715 else
7716 {
7717 GenerateContextLostErrorOnCurrentGlobalContext();
7718 }
7719 }
7720
7721 // GL_EXT_shader_io_blocks
7722
7723 // GL_EXT_shader_non_constant_global_initializers
7724
7725 // GL_EXT_shader_texture_lod
7726
7727 // GL_EXT_shadow_samplers
7728
7729 // GL_EXT_tessellation_shader
GL_PatchParameteriEXT(GLenum pname,GLint value)7730 void GL_APIENTRY GL_PatchParameteriEXT(GLenum pname, GLint value)
7731 {
7732 Context *context = GetValidGlobalContext();
7733 EVENT(context, GLPatchParameteriEXT, "context = %d, pname = %s, value = %d", CID(context),
7734 GLenumToString(GLenumGroup::PatchParameterName, pname), value);
7735
7736 if (context)
7737 {
7738 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
7739 bool isCallValid = (context->skipValidation() ||
7740 ValidatePatchParameteriEXT(
7741 context, angle::EntryPoint::GLPatchParameteriEXT, pname, value));
7742 if (isCallValid)
7743 {
7744 context->patchParameteri(pname, value);
7745 }
7746 ANGLE_CAPTURE(PatchParameteriEXT, isCallValid, context, pname, value);
7747 }
7748 else
7749 {
7750 GenerateContextLostErrorOnCurrentGlobalContext();
7751 }
7752 }
7753
7754 // GL_EXT_texture_border_clamp
GL_GetSamplerParameterIivEXT(GLuint sampler,GLenum pname,GLint * params)7755 void GL_APIENTRY GL_GetSamplerParameterIivEXT(GLuint sampler, GLenum pname, GLint *params)
7756 {
7757 Context *context = GetValidGlobalContext();
7758 EVENT(context, GLGetSamplerParameterIivEXT,
7759 "context = %d, sampler = %u, pname = %s, params = 0x%016" PRIxPTR "", CID(context),
7760 sampler, GLenumToString(GLenumGroup::SamplerParameterName, pname), (uintptr_t)params);
7761
7762 if (context)
7763 {
7764 SamplerID samplerPacked = PackParam<SamplerID>(sampler);
7765 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
7766 bool isCallValid = (context->skipValidation() ||
7767 ValidateGetSamplerParameterIivEXT(
7768 context, angle::EntryPoint::GLGetSamplerParameterIivEXT,
7769 samplerPacked, pname, params));
7770 if (isCallValid)
7771 {
7772 context->getSamplerParameterIiv(samplerPacked, pname, params);
7773 }
7774 ANGLE_CAPTURE(GetSamplerParameterIivEXT, isCallValid, context, samplerPacked, pname,
7775 params);
7776 }
7777 else
7778 {
7779 GenerateContextLostErrorOnCurrentGlobalContext();
7780 }
7781 }
7782
GL_GetSamplerParameterIuivEXT(GLuint sampler,GLenum pname,GLuint * params)7783 void GL_APIENTRY GL_GetSamplerParameterIuivEXT(GLuint sampler, GLenum pname, GLuint *params)
7784 {
7785 Context *context = GetValidGlobalContext();
7786 EVENT(context, GLGetSamplerParameterIuivEXT,
7787 "context = %d, sampler = %u, pname = %s, params = 0x%016" PRIxPTR "", CID(context),
7788 sampler, GLenumToString(GLenumGroup::SamplerParameterName, pname), (uintptr_t)params);
7789
7790 if (context)
7791 {
7792 SamplerID samplerPacked = PackParam<SamplerID>(sampler);
7793 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
7794 bool isCallValid = (context->skipValidation() ||
7795 ValidateGetSamplerParameterIuivEXT(
7796 context, angle::EntryPoint::GLGetSamplerParameterIuivEXT,
7797 samplerPacked, pname, params));
7798 if (isCallValid)
7799 {
7800 context->getSamplerParameterIuiv(samplerPacked, pname, params);
7801 }
7802 ANGLE_CAPTURE(GetSamplerParameterIuivEXT, isCallValid, context, samplerPacked, pname,
7803 params);
7804 }
7805 else
7806 {
7807 GenerateContextLostErrorOnCurrentGlobalContext();
7808 }
7809 }
7810
GL_GetTexParameterIivEXT(GLenum target,GLenum pname,GLint * params)7811 void GL_APIENTRY GL_GetTexParameterIivEXT(GLenum target, GLenum pname, GLint *params)
7812 {
7813 Context *context = GetValidGlobalContext();
7814 EVENT(context, GLGetTexParameterIivEXT,
7815 "context = %d, target = %s, pname = %s, params = 0x%016" PRIxPTR "", CID(context),
7816 GLenumToString(GLenumGroup::TextureTarget, target),
7817 GLenumToString(GLenumGroup::GetTextureParameter, pname), (uintptr_t)params);
7818
7819 if (context)
7820 {
7821 TextureType targetPacked = PackParam<TextureType>(target);
7822 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
7823 bool isCallValid =
7824 (context->skipValidation() ||
7825 ValidateGetTexParameterIivEXT(context, angle::EntryPoint::GLGetTexParameterIivEXT,
7826 targetPacked, pname, params));
7827 if (isCallValid)
7828 {
7829 context->getTexParameterIiv(targetPacked, pname, params);
7830 }
7831 ANGLE_CAPTURE(GetTexParameterIivEXT, isCallValid, context, targetPacked, pname, params);
7832 }
7833 else
7834 {
7835 GenerateContextLostErrorOnCurrentGlobalContext();
7836 }
7837 }
7838
GL_GetTexParameterIuivEXT(GLenum target,GLenum pname,GLuint * params)7839 void GL_APIENTRY GL_GetTexParameterIuivEXT(GLenum target, GLenum pname, GLuint *params)
7840 {
7841 Context *context = GetValidGlobalContext();
7842 EVENT(context, GLGetTexParameterIuivEXT,
7843 "context = %d, target = %s, pname = %s, params = 0x%016" PRIxPTR "", CID(context),
7844 GLenumToString(GLenumGroup::TextureTarget, target),
7845 GLenumToString(GLenumGroup::GetTextureParameter, pname), (uintptr_t)params);
7846
7847 if (context)
7848 {
7849 TextureType targetPacked = PackParam<TextureType>(target);
7850 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
7851 bool isCallValid =
7852 (context->skipValidation() ||
7853 ValidateGetTexParameterIuivEXT(context, angle::EntryPoint::GLGetTexParameterIuivEXT,
7854 targetPacked, pname, params));
7855 if (isCallValid)
7856 {
7857 context->getTexParameterIuiv(targetPacked, pname, params);
7858 }
7859 ANGLE_CAPTURE(GetTexParameterIuivEXT, isCallValid, context, targetPacked, pname, params);
7860 }
7861 else
7862 {
7863 GenerateContextLostErrorOnCurrentGlobalContext();
7864 }
7865 }
7866
GL_SamplerParameterIivEXT(GLuint sampler,GLenum pname,const GLint * param)7867 void GL_APIENTRY GL_SamplerParameterIivEXT(GLuint sampler, GLenum pname, const GLint *param)
7868 {
7869 Context *context = GetValidGlobalContext();
7870 EVENT(context, GLSamplerParameterIivEXT,
7871 "context = %d, sampler = %u, pname = %s, param = 0x%016" PRIxPTR "", CID(context),
7872 sampler, GLenumToString(GLenumGroup::SamplerParameterName, pname), (uintptr_t)param);
7873
7874 if (context)
7875 {
7876 SamplerID samplerPacked = PackParam<SamplerID>(sampler);
7877 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
7878 bool isCallValid =
7879 (context->skipValidation() ||
7880 ValidateSamplerParameterIivEXT(context, angle::EntryPoint::GLSamplerParameterIivEXT,
7881 samplerPacked, pname, param));
7882 if (isCallValid)
7883 {
7884 context->samplerParameterIiv(samplerPacked, pname, param);
7885 }
7886 ANGLE_CAPTURE(SamplerParameterIivEXT, isCallValid, context, samplerPacked, pname, param);
7887 }
7888 else
7889 {
7890 GenerateContextLostErrorOnCurrentGlobalContext();
7891 }
7892 }
7893
GL_SamplerParameterIuivEXT(GLuint sampler,GLenum pname,const GLuint * param)7894 void GL_APIENTRY GL_SamplerParameterIuivEXT(GLuint sampler, GLenum pname, const GLuint *param)
7895 {
7896 Context *context = GetValidGlobalContext();
7897 EVENT(context, GLSamplerParameterIuivEXT,
7898 "context = %d, sampler = %u, pname = %s, param = 0x%016" PRIxPTR "", CID(context),
7899 sampler, GLenumToString(GLenumGroup::SamplerParameterName, pname), (uintptr_t)param);
7900
7901 if (context)
7902 {
7903 SamplerID samplerPacked = PackParam<SamplerID>(sampler);
7904 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
7905 bool isCallValid =
7906 (context->skipValidation() ||
7907 ValidateSamplerParameterIuivEXT(context, angle::EntryPoint::GLSamplerParameterIuivEXT,
7908 samplerPacked, pname, param));
7909 if (isCallValid)
7910 {
7911 context->samplerParameterIuiv(samplerPacked, pname, param);
7912 }
7913 ANGLE_CAPTURE(SamplerParameterIuivEXT, isCallValid, context, samplerPacked, pname, param);
7914 }
7915 else
7916 {
7917 GenerateContextLostErrorOnCurrentGlobalContext();
7918 }
7919 }
7920
GL_TexParameterIivEXT(GLenum target,GLenum pname,const GLint * params)7921 void GL_APIENTRY GL_TexParameterIivEXT(GLenum target, GLenum pname, const GLint *params)
7922 {
7923 Context *context = GetValidGlobalContext();
7924 EVENT(context, GLTexParameterIivEXT,
7925 "context = %d, target = %s, pname = %s, params = 0x%016" PRIxPTR "", CID(context),
7926 GLenumToString(GLenumGroup::TextureTarget, target),
7927 GLenumToString(GLenumGroup::TextureParameterName, pname), (uintptr_t)params);
7928
7929 if (context)
7930 {
7931 TextureType targetPacked = PackParam<TextureType>(target);
7932 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
7933 bool isCallValid =
7934 (context->skipValidation() ||
7935 ValidateTexParameterIivEXT(context, angle::EntryPoint::GLTexParameterIivEXT,
7936 targetPacked, pname, params));
7937 if (isCallValid)
7938 {
7939 context->texParameterIiv(targetPacked, pname, params);
7940 }
7941 ANGLE_CAPTURE(TexParameterIivEXT, isCallValid, context, targetPacked, pname, params);
7942 }
7943 else
7944 {
7945 GenerateContextLostErrorOnCurrentGlobalContext();
7946 }
7947 }
7948
GL_TexParameterIuivEXT(GLenum target,GLenum pname,const GLuint * params)7949 void GL_APIENTRY GL_TexParameterIuivEXT(GLenum target, GLenum pname, const GLuint *params)
7950 {
7951 Context *context = GetValidGlobalContext();
7952 EVENT(context, GLTexParameterIuivEXT,
7953 "context = %d, target = %s, pname = %s, params = 0x%016" PRIxPTR "", CID(context),
7954 GLenumToString(GLenumGroup::TextureTarget, target),
7955 GLenumToString(GLenumGroup::TextureParameterName, pname), (uintptr_t)params);
7956
7957 if (context)
7958 {
7959 TextureType targetPacked = PackParam<TextureType>(target);
7960 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
7961 bool isCallValid =
7962 (context->skipValidation() ||
7963 ValidateTexParameterIuivEXT(context, angle::EntryPoint::GLTexParameterIuivEXT,
7964 targetPacked, pname, params));
7965 if (isCallValid)
7966 {
7967 context->texParameterIuiv(targetPacked, pname, params);
7968 }
7969 ANGLE_CAPTURE(TexParameterIuivEXT, isCallValid, context, targetPacked, pname, params);
7970 }
7971 else
7972 {
7973 GenerateContextLostErrorOnCurrentGlobalContext();
7974 }
7975 }
7976
7977 // GL_EXT_texture_buffer
GL_TexBufferEXT(GLenum target,GLenum internalformat,GLuint buffer)7978 void GL_APIENTRY GL_TexBufferEXT(GLenum target, GLenum internalformat, GLuint buffer)
7979 {
7980 Context *context = GetValidGlobalContext();
7981 EVENT(context, GLTexBufferEXT, "context = %d, target = %s, internalformat = %s, buffer = %u",
7982 CID(context), GLenumToString(GLenumGroup::TextureTarget, target),
7983 GLenumToString(GLenumGroup::InternalFormat, internalformat), buffer);
7984
7985 if (context)
7986 {
7987 TextureType targetPacked = PackParam<TextureType>(target);
7988 BufferID bufferPacked = PackParam<BufferID>(buffer);
7989 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
7990 bool isCallValid = (context->skipValidation() ||
7991 ValidateTexBufferEXT(context, angle::EntryPoint::GLTexBufferEXT,
7992 targetPacked, internalformat, bufferPacked));
7993 if (isCallValid)
7994 {
7995 context->texBuffer(targetPacked, internalformat, bufferPacked);
7996 }
7997 ANGLE_CAPTURE(TexBufferEXT, isCallValid, context, targetPacked, internalformat,
7998 bufferPacked);
7999 }
8000 else
8001 {
8002 GenerateContextLostErrorOnCurrentGlobalContext();
8003 }
8004 }
8005
GL_TexBufferRangeEXT(GLenum target,GLenum internalformat,GLuint buffer,GLintptr offset,GLsizeiptr size)8006 void GL_APIENTRY GL_TexBufferRangeEXT(GLenum target,
8007 GLenum internalformat,
8008 GLuint buffer,
8009 GLintptr offset,
8010 GLsizeiptr size)
8011 {
8012 Context *context = GetValidGlobalContext();
8013 EVENT(context, GLTexBufferRangeEXT,
8014 "context = %d, target = %s, internalformat = %s, buffer = %u, offset = %llu, size = %llu",
8015 CID(context), GLenumToString(GLenumGroup::TextureTarget, target),
8016 GLenumToString(GLenumGroup::InternalFormat, internalformat), buffer,
8017 static_cast<unsigned long long>(offset), static_cast<unsigned long long>(size));
8018
8019 if (context)
8020 {
8021 TextureType targetPacked = PackParam<TextureType>(target);
8022 BufferID bufferPacked = PackParam<BufferID>(buffer);
8023 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
8024 bool isCallValid =
8025 (context->skipValidation() ||
8026 ValidateTexBufferRangeEXT(context, angle::EntryPoint::GLTexBufferRangeEXT,
8027 targetPacked, internalformat, bufferPacked, offset, size));
8028 if (isCallValid)
8029 {
8030 context->texBufferRange(targetPacked, internalformat, bufferPacked, offset, size);
8031 }
8032 ANGLE_CAPTURE(TexBufferRangeEXT, isCallValid, context, targetPacked, internalformat,
8033 bufferPacked, offset, size);
8034 }
8035 else
8036 {
8037 GenerateContextLostErrorOnCurrentGlobalContext();
8038 }
8039 }
8040
8041 // GL_EXT_texture_compression_bptc
8042
8043 // GL_EXT_texture_compression_dxt1
8044
8045 // GL_EXT_texture_compression_rgtc
8046
8047 // GL_EXT_texture_compression_s3tc
8048
8049 // GL_EXT_texture_compression_s3tc_srgb
8050
8051 // GL_EXT_texture_cube_map_array
8052
8053 // GL_EXT_texture_filter_anisotropic
8054
8055 // GL_EXT_texture_format_BGRA8888
8056
8057 // GL_EXT_texture_format_sRGB_override
8058
8059 // GL_EXT_texture_norm16
8060
8061 // GL_EXT_texture_rg
8062
8063 // GL_EXT_texture_sRGB_R8
8064
8065 // GL_EXT_texture_sRGB_RG8
8066
8067 // GL_EXT_texture_sRGB_decode
8068
8069 // GL_EXT_texture_storage
GL_TexStorage1DEXT(GLenum target,GLsizei levels,GLenum internalformat,GLsizei width)8070 void GL_APIENTRY GL_TexStorage1DEXT(GLenum target,
8071 GLsizei levels,
8072 GLenum internalformat,
8073 GLsizei width)
8074 {
8075 Context *context = GetValidGlobalContext();
8076 EVENT(context, GLTexStorage1DEXT,
8077 "context = %d, target = %s, levels = %d, internalformat = %s, width = %d", CID(context),
8078 GLenumToString(GLenumGroup::TextureTarget, target), levels,
8079 GLenumToString(GLenumGroup::InternalFormat, internalformat), width);
8080
8081 if (context)
8082 {
8083 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
8084 bool isCallValid = (context->skipValidation() ||
8085 ValidateTexStorage1DEXT(context, angle::EntryPoint::GLTexStorage1DEXT,
8086 target, levels, internalformat, width));
8087 if (isCallValid)
8088 {
8089 context->texStorage1D(target, levels, internalformat, width);
8090 }
8091 ANGLE_CAPTURE(TexStorage1DEXT, isCallValid, context, target, levels, internalformat, width);
8092 }
8093 else
8094 {
8095 GenerateContextLostErrorOnCurrentGlobalContext();
8096 }
8097 }
8098
GL_TexStorage2DEXT(GLenum target,GLsizei levels,GLenum internalformat,GLsizei width,GLsizei height)8099 void GL_APIENTRY GL_TexStorage2DEXT(GLenum target,
8100 GLsizei levels,
8101 GLenum internalformat,
8102 GLsizei width,
8103 GLsizei height)
8104 {
8105 Context *context = GetValidGlobalContext();
8106 EVENT(context, GLTexStorage2DEXT,
8107 "context = %d, target = %s, levels = %d, internalformat = %s, width = %d, height = %d",
8108 CID(context), GLenumToString(GLenumGroup::TextureTarget, target), levels,
8109 GLenumToString(GLenumGroup::InternalFormat, internalformat), width, height);
8110
8111 if (context)
8112 {
8113 TextureType targetPacked = PackParam<TextureType>(target);
8114 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
8115 bool isCallValid =
8116 (context->skipValidation() ||
8117 ValidateTexStorage2DEXT(context, angle::EntryPoint::GLTexStorage2DEXT, targetPacked,
8118 levels, internalformat, width, height));
8119 if (isCallValid)
8120 {
8121 context->texStorage2D(targetPacked, levels, internalformat, width, height);
8122 }
8123 ANGLE_CAPTURE(TexStorage2DEXT, isCallValid, context, targetPacked, levels, internalformat,
8124 width, height);
8125 }
8126 else
8127 {
8128 GenerateContextLostErrorOnCurrentGlobalContext();
8129 }
8130 }
8131
GL_TexStorage3DEXT(GLenum target,GLsizei levels,GLenum internalformat,GLsizei width,GLsizei height,GLsizei depth)8132 void GL_APIENTRY GL_TexStorage3DEXT(GLenum target,
8133 GLsizei levels,
8134 GLenum internalformat,
8135 GLsizei width,
8136 GLsizei height,
8137 GLsizei depth)
8138 {
8139 Context *context = GetValidGlobalContext();
8140 EVENT(context, GLTexStorage3DEXT,
8141 "context = %d, target = %s, levels = %d, internalformat = %s, width = %d, height = %d, "
8142 "depth = %d",
8143 CID(context), GLenumToString(GLenumGroup::TextureTarget, target), levels,
8144 GLenumToString(GLenumGroup::InternalFormat, internalformat), width, height, depth);
8145
8146 if (context)
8147 {
8148 TextureType targetPacked = PackParam<TextureType>(target);
8149 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
8150 bool isCallValid =
8151 (context->skipValidation() ||
8152 ValidateTexStorage3DEXT(context, angle::EntryPoint::GLTexStorage3DEXT, targetPacked,
8153 levels, internalformat, width, height, depth));
8154 if (isCallValid)
8155 {
8156 context->texStorage3D(targetPacked, levels, internalformat, width, height, depth);
8157 }
8158 ANGLE_CAPTURE(TexStorage3DEXT, isCallValid, context, targetPacked, levels, internalformat,
8159 width, height, depth);
8160 }
8161 else
8162 {
8163 GenerateContextLostErrorOnCurrentGlobalContext();
8164 }
8165 }
8166
8167 // GL_EXT_texture_type_2_10_10_10_REV
8168
8169 // GL_EXT_unpack_subimage
8170
8171 // GL_IMG_texture_compression_pvrtc
8172
8173 // GL_IMG_texture_compression_pvrtc2
8174
8175 // GL_KHR_blend_equation_advanced
GL_BlendBarrierKHR()8176 void GL_APIENTRY GL_BlendBarrierKHR()
8177 {
8178 Context *context = GetValidGlobalContext();
8179 EVENT(context, GLBlendBarrierKHR, "context = %d", CID(context));
8180
8181 if (context)
8182 {
8183 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
8184 bool isCallValid = (context->skipValidation() ||
8185 ValidateBlendBarrierKHR(context, angle::EntryPoint::GLBlendBarrierKHR));
8186 if (isCallValid)
8187 {
8188 context->blendBarrier();
8189 }
8190 ANGLE_CAPTURE(BlendBarrierKHR, isCallValid, context);
8191 }
8192 else
8193 {
8194 GenerateContextLostErrorOnCurrentGlobalContext();
8195 }
8196 }
8197
8198 // GL_KHR_debug
GL_DebugMessageCallbackKHR(GLDEBUGPROCKHR callback,const void * userParam)8199 void GL_APIENTRY GL_DebugMessageCallbackKHR(GLDEBUGPROCKHR callback, const void *userParam)
8200 {
8201 Context *context = GetValidGlobalContext();
8202 EVENT(context, GLDebugMessageCallbackKHR,
8203 "context = %d, callback = 0x%016" PRIxPTR ", userParam = 0x%016" PRIxPTR "", CID(context),
8204 (uintptr_t)callback, (uintptr_t)userParam);
8205
8206 if (context)
8207 {
8208 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
8209 bool isCallValid =
8210 (context->skipValidation() ||
8211 ValidateDebugMessageCallbackKHR(context, angle::EntryPoint::GLDebugMessageCallbackKHR,
8212 callback, userParam));
8213 if (isCallValid)
8214 {
8215 context->debugMessageCallback(callback, userParam);
8216 }
8217 ANGLE_CAPTURE(DebugMessageCallbackKHR, isCallValid, context, callback, userParam);
8218 }
8219 else
8220 {
8221 GenerateContextLostErrorOnCurrentGlobalContext();
8222 }
8223 }
8224
GL_DebugMessageControlKHR(GLenum source,GLenum type,GLenum severity,GLsizei count,const GLuint * ids,GLboolean enabled)8225 void GL_APIENTRY GL_DebugMessageControlKHR(GLenum source,
8226 GLenum type,
8227 GLenum severity,
8228 GLsizei count,
8229 const GLuint *ids,
8230 GLboolean enabled)
8231 {
8232 Context *context = GetValidGlobalContext();
8233 EVENT(context, GLDebugMessageControlKHR,
8234 "context = %d, source = %s, type = %s, severity = %s, count = %d, ids = 0x%016" PRIxPTR
8235 ", enabled = %s",
8236 CID(context), GLenumToString(GLenumGroup::DebugSource, source),
8237 GLenumToString(GLenumGroup::DebugType, type),
8238 GLenumToString(GLenumGroup::DebugSeverity, severity), count, (uintptr_t)ids,
8239 GLbooleanToString(enabled));
8240
8241 if (context)
8242 {
8243 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
8244 bool isCallValid =
8245 (context->skipValidation() ||
8246 ValidateDebugMessageControlKHR(context, angle::EntryPoint::GLDebugMessageControlKHR,
8247 source, type, severity, count, ids, enabled));
8248 if (isCallValid)
8249 {
8250 context->debugMessageControl(source, type, severity, count, ids, enabled);
8251 }
8252 ANGLE_CAPTURE(DebugMessageControlKHR, isCallValid, context, source, type, severity, count,
8253 ids, enabled);
8254 }
8255 else
8256 {
8257 GenerateContextLostErrorOnCurrentGlobalContext();
8258 }
8259 }
8260
GL_DebugMessageInsertKHR(GLenum source,GLenum type,GLuint id,GLenum severity,GLsizei length,const GLchar * buf)8261 void GL_APIENTRY GL_DebugMessageInsertKHR(GLenum source,
8262 GLenum type,
8263 GLuint id,
8264 GLenum severity,
8265 GLsizei length,
8266 const GLchar *buf)
8267 {
8268 Context *context = GetValidGlobalContext();
8269 EVENT(context, GLDebugMessageInsertKHR,
8270 "context = %d, source = %s, type = %s, id = %u, severity = %s, length = %d, buf = "
8271 "0x%016" PRIxPTR "",
8272 CID(context), GLenumToString(GLenumGroup::DebugSource, source),
8273 GLenumToString(GLenumGroup::DebugType, type), id,
8274 GLenumToString(GLenumGroup::DebugSeverity, severity), length, (uintptr_t)buf);
8275
8276 if (context)
8277 {
8278 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
8279 bool isCallValid =
8280 (context->skipValidation() ||
8281 ValidateDebugMessageInsertKHR(context, angle::EntryPoint::GLDebugMessageInsertKHR,
8282 source, type, id, severity, length, buf));
8283 if (isCallValid)
8284 {
8285 context->debugMessageInsert(source, type, id, severity, length, buf);
8286 }
8287 ANGLE_CAPTURE(DebugMessageInsertKHR, isCallValid, context, source, type, id, severity,
8288 length, buf);
8289 }
8290 else
8291 {
8292 GenerateContextLostErrorOnCurrentGlobalContext();
8293 }
8294 }
8295
GL_GetDebugMessageLogKHR(GLuint count,GLsizei bufSize,GLenum * sources,GLenum * types,GLuint * ids,GLenum * severities,GLsizei * lengths,GLchar * messageLog)8296 GLuint GL_APIENTRY GL_GetDebugMessageLogKHR(GLuint count,
8297 GLsizei bufSize,
8298 GLenum *sources,
8299 GLenum *types,
8300 GLuint *ids,
8301 GLenum *severities,
8302 GLsizei *lengths,
8303 GLchar *messageLog)
8304 {
8305 Context *context = GetValidGlobalContext();
8306 EVENT(context, GLGetDebugMessageLogKHR,
8307 "context = %d, count = %u, bufSize = %d, sources = 0x%016" PRIxPTR
8308 ", types = 0x%016" PRIxPTR ", ids = 0x%016" PRIxPTR ", severities = 0x%016" PRIxPTR
8309 ", lengths = 0x%016" PRIxPTR ", messageLog = 0x%016" PRIxPTR "",
8310 CID(context), count, bufSize, (uintptr_t)sources, (uintptr_t)types, (uintptr_t)ids,
8311 (uintptr_t)severities, (uintptr_t)lengths, (uintptr_t)messageLog);
8312
8313 GLuint returnValue;
8314 if (context)
8315 {
8316 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
8317 bool isCallValid = (context->skipValidation() ||
8318 ValidateGetDebugMessageLogKHR(
8319 context, angle::EntryPoint::GLGetDebugMessageLogKHR, count, bufSize,
8320 sources, types, ids, severities, lengths, messageLog));
8321 if (isCallValid)
8322 {
8323 returnValue = context->getDebugMessageLog(count, bufSize, sources, types, ids,
8324 severities, lengths, messageLog);
8325 }
8326 else
8327 {
8328 returnValue =
8329 GetDefaultReturnValue<angle::EntryPoint::GLGetDebugMessageLogKHR, GLuint>();
8330 }
8331 ANGLE_CAPTURE(GetDebugMessageLogKHR, isCallValid, context, count, bufSize, sources, types,
8332 ids, severities, lengths, messageLog, returnValue);
8333 }
8334 else
8335 {
8336 GenerateContextLostErrorOnCurrentGlobalContext();
8337 returnValue = GetDefaultReturnValue<angle::EntryPoint::GLGetDebugMessageLogKHR, GLuint>();
8338 }
8339 return returnValue;
8340 }
8341
GL_GetObjectLabelKHR(GLenum identifier,GLuint name,GLsizei bufSize,GLsizei * length,GLchar * label)8342 void GL_APIENTRY GL_GetObjectLabelKHR(GLenum identifier,
8343 GLuint name,
8344 GLsizei bufSize,
8345 GLsizei *length,
8346 GLchar *label)
8347 {
8348 Context *context = GetValidGlobalContext();
8349 EVENT(context, GLGetObjectLabelKHR,
8350 "context = %d, identifier = %s, name = %u, bufSize = %d, length = 0x%016" PRIxPTR
8351 ", label = 0x%016" PRIxPTR "",
8352 CID(context), GLenumToString(GLenumGroup::DefaultGroup, identifier), name, bufSize,
8353 (uintptr_t)length, (uintptr_t)label);
8354
8355 if (context)
8356 {
8357 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
8358 bool isCallValid =
8359 (context->skipValidation() ||
8360 ValidateGetObjectLabelKHR(context, angle::EntryPoint::GLGetObjectLabelKHR, identifier,
8361 name, bufSize, length, label));
8362 if (isCallValid)
8363 {
8364 context->getObjectLabel(identifier, name, bufSize, length, label);
8365 }
8366 ANGLE_CAPTURE(GetObjectLabelKHR, isCallValid, context, identifier, name, bufSize, length,
8367 label);
8368 }
8369 else
8370 {
8371 GenerateContextLostErrorOnCurrentGlobalContext();
8372 }
8373 }
8374
GL_GetObjectPtrLabelKHR(const void * ptr,GLsizei bufSize,GLsizei * length,GLchar * label)8375 void GL_APIENTRY GL_GetObjectPtrLabelKHR(const void *ptr,
8376 GLsizei bufSize,
8377 GLsizei *length,
8378 GLchar *label)
8379 {
8380 Context *context = GetValidGlobalContext();
8381 EVENT(context, GLGetObjectPtrLabelKHR,
8382 "context = %d, ptr = 0x%016" PRIxPTR ", bufSize = %d, length = 0x%016" PRIxPTR
8383 ", label = 0x%016" PRIxPTR "",
8384 CID(context), (uintptr_t)ptr, bufSize, (uintptr_t)length, (uintptr_t)label);
8385
8386 if (context)
8387 {
8388 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
8389 bool isCallValid =
8390 (context->skipValidation() ||
8391 ValidateGetObjectPtrLabelKHR(context, angle::EntryPoint::GLGetObjectPtrLabelKHR, ptr,
8392 bufSize, length, label));
8393 if (isCallValid)
8394 {
8395 context->getObjectPtrLabel(ptr, bufSize, length, label);
8396 }
8397 ANGLE_CAPTURE(GetObjectPtrLabelKHR, isCallValid, context, ptr, bufSize, length, label);
8398 }
8399 else
8400 {
8401 GenerateContextLostErrorOnCurrentGlobalContext();
8402 }
8403 }
8404
GL_GetPointervKHR(GLenum pname,void ** params)8405 void GL_APIENTRY GL_GetPointervKHR(GLenum pname, void **params)
8406 {
8407 Context *context = GetValidGlobalContext();
8408 EVENT(context, GLGetPointervKHR, "context = %d, pname = %s, params = 0x%016" PRIxPTR "",
8409 CID(context), GLenumToString(GLenumGroup::DefaultGroup, pname), (uintptr_t)params);
8410
8411 if (context)
8412 {
8413 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
8414 bool isCallValid =
8415 (context->skipValidation() ||
8416 ValidateGetPointervKHR(context, angle::EntryPoint::GLGetPointervKHR, pname, params));
8417 if (isCallValid)
8418 {
8419 context->getPointerv(pname, params);
8420 }
8421 ANGLE_CAPTURE(GetPointervKHR, isCallValid, context, pname, params);
8422 }
8423 else
8424 {
8425 GenerateContextLostErrorOnCurrentGlobalContext();
8426 }
8427 }
8428
GL_ObjectLabelKHR(GLenum identifier,GLuint name,GLsizei length,const GLchar * label)8429 void GL_APIENTRY GL_ObjectLabelKHR(GLenum identifier,
8430 GLuint name,
8431 GLsizei length,
8432 const GLchar *label)
8433 {
8434 Context *context = GetValidGlobalContext();
8435 EVENT(context, GLObjectLabelKHR,
8436 "context = %d, identifier = %s, name = %u, length = %d, label = 0x%016" PRIxPTR "",
8437 CID(context), GLenumToString(GLenumGroup::ObjectIdentifier, identifier), name, length,
8438 (uintptr_t)label);
8439
8440 if (context)
8441 {
8442 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
8443 bool isCallValid = (context->skipValidation() ||
8444 ValidateObjectLabelKHR(context, angle::EntryPoint::GLObjectLabelKHR,
8445 identifier, name, length, label));
8446 if (isCallValid)
8447 {
8448 context->objectLabel(identifier, name, length, label);
8449 }
8450 ANGLE_CAPTURE(ObjectLabelKHR, isCallValid, context, identifier, name, length, label);
8451 }
8452 else
8453 {
8454 GenerateContextLostErrorOnCurrentGlobalContext();
8455 }
8456 }
8457
GL_ObjectPtrLabelKHR(const void * ptr,GLsizei length,const GLchar * label)8458 void GL_APIENTRY GL_ObjectPtrLabelKHR(const void *ptr, GLsizei length, const GLchar *label)
8459 {
8460 Context *context = GetValidGlobalContext();
8461 EVENT(context, GLObjectPtrLabelKHR,
8462 "context = %d, ptr = 0x%016" PRIxPTR ", length = %d, label = 0x%016" PRIxPTR "",
8463 CID(context), (uintptr_t)ptr, length, (uintptr_t)label);
8464
8465 if (context)
8466 {
8467 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
8468 bool isCallValid =
8469 (context->skipValidation() ||
8470 ValidateObjectPtrLabelKHR(context, angle::EntryPoint::GLObjectPtrLabelKHR, ptr, length,
8471 label));
8472 if (isCallValid)
8473 {
8474 context->objectPtrLabel(ptr, length, label);
8475 }
8476 ANGLE_CAPTURE(ObjectPtrLabelKHR, isCallValid, context, ptr, length, label);
8477 }
8478 else
8479 {
8480 GenerateContextLostErrorOnCurrentGlobalContext();
8481 }
8482 }
8483
GL_PopDebugGroupKHR()8484 void GL_APIENTRY GL_PopDebugGroupKHR()
8485 {
8486 Context *context = GetValidGlobalContext();
8487 EVENT(context, GLPopDebugGroupKHR, "context = %d", CID(context));
8488
8489 if (context)
8490 {
8491 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
8492 bool isCallValid =
8493 (context->skipValidation() ||
8494 ValidatePopDebugGroupKHR(context, angle::EntryPoint::GLPopDebugGroupKHR));
8495 if (isCallValid)
8496 {
8497 context->popDebugGroup();
8498 }
8499 ANGLE_CAPTURE(PopDebugGroupKHR, isCallValid, context);
8500 }
8501 else
8502 {
8503 GenerateContextLostErrorOnCurrentGlobalContext();
8504 }
8505 }
8506
GL_PushDebugGroupKHR(GLenum source,GLuint id,GLsizei length,const GLchar * message)8507 void GL_APIENTRY GL_PushDebugGroupKHR(GLenum source,
8508 GLuint id,
8509 GLsizei length,
8510 const GLchar *message)
8511 {
8512 Context *context = GetValidGlobalContext();
8513 EVENT(context, GLPushDebugGroupKHR,
8514 "context = %d, source = %s, id = %u, length = %d, message = 0x%016" PRIxPTR "",
8515 CID(context), GLenumToString(GLenumGroup::DebugSource, source), id, length,
8516 (uintptr_t)message);
8517
8518 if (context)
8519 {
8520 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
8521 bool isCallValid =
8522 (context->skipValidation() ||
8523 ValidatePushDebugGroupKHR(context, angle::EntryPoint::GLPushDebugGroupKHR, source, id,
8524 length, message));
8525 if (isCallValid)
8526 {
8527 context->pushDebugGroup(source, id, length, message);
8528 }
8529 ANGLE_CAPTURE(PushDebugGroupKHR, isCallValid, context, source, id, length, message);
8530 }
8531 else
8532 {
8533 GenerateContextLostErrorOnCurrentGlobalContext();
8534 }
8535 }
8536
8537 // GL_KHR_no_error
8538
8539 // GL_KHR_parallel_shader_compile
GL_MaxShaderCompilerThreadsKHR(GLuint count)8540 void GL_APIENTRY GL_MaxShaderCompilerThreadsKHR(GLuint count)
8541 {
8542 Context *context = GetValidGlobalContext();
8543 EVENT(context, GLMaxShaderCompilerThreadsKHR, "context = %d, count = %u", CID(context), count);
8544
8545 if (context)
8546 {
8547 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
8548 bool isCallValid = (context->skipValidation() ||
8549 ValidateMaxShaderCompilerThreadsKHR(
8550 context, angle::EntryPoint::GLMaxShaderCompilerThreadsKHR, count));
8551 if (isCallValid)
8552 {
8553 context->maxShaderCompilerThreads(count);
8554 }
8555 ANGLE_CAPTURE(MaxShaderCompilerThreadsKHR, isCallValid, context, count);
8556 }
8557 else
8558 {
8559 GenerateContextLostErrorOnCurrentGlobalContext();
8560 }
8561 }
8562
8563 // GL_KHR_robust_buffer_access_behavior
8564
8565 // GL_KHR_texture_compression_astc_hdr
8566
8567 // GL_KHR_texture_compression_astc_ldr
8568
8569 // GL_KHR_texture_compression_astc_sliced_3d
8570
8571 // GL_NV_fence
GL_DeleteFencesNV(GLsizei n,const GLuint * fences)8572 void GL_APIENTRY GL_DeleteFencesNV(GLsizei n, const GLuint *fences)
8573 {
8574 Context *context = GetValidGlobalContext();
8575 EVENT(context, GLDeleteFencesNV, "context = %d, n = %d, fences = 0x%016" PRIxPTR "",
8576 CID(context), n, (uintptr_t)fences);
8577
8578 if (context)
8579 {
8580 const FenceNVID *fencesPacked = PackParam<const FenceNVID *>(fences);
8581 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
8582 bool isCallValid =
8583 (context->skipValidation() ||
8584 ValidateDeleteFencesNV(context, angle::EntryPoint::GLDeleteFencesNV, n, fencesPacked));
8585 if (isCallValid)
8586 {
8587 context->deleteFencesNV(n, fencesPacked);
8588 }
8589 ANGLE_CAPTURE(DeleteFencesNV, isCallValid, context, n, fencesPacked);
8590 }
8591 else
8592 {
8593 GenerateContextLostErrorOnCurrentGlobalContext();
8594 }
8595 }
8596
GL_FinishFenceNV(GLuint fence)8597 void GL_APIENTRY GL_FinishFenceNV(GLuint fence)
8598 {
8599 Context *context = GetValidGlobalContext();
8600 EVENT(context, GLFinishFenceNV, "context = %d, fence = %u", CID(context), fence);
8601
8602 if (context)
8603 {
8604 FenceNVID fencePacked = PackParam<FenceNVID>(fence);
8605 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
8606 bool isCallValid =
8607 (context->skipValidation() ||
8608 ValidateFinishFenceNV(context, angle::EntryPoint::GLFinishFenceNV, fencePacked));
8609 if (isCallValid)
8610 {
8611 context->finishFenceNV(fencePacked);
8612 }
8613 ANGLE_CAPTURE(FinishFenceNV, isCallValid, context, fencePacked);
8614 }
8615 else
8616 {
8617 GenerateContextLostErrorOnCurrentGlobalContext();
8618 }
8619 }
8620
GL_GenFencesNV(GLsizei n,GLuint * fences)8621 void GL_APIENTRY GL_GenFencesNV(GLsizei n, GLuint *fences)
8622 {
8623 Context *context = GetValidGlobalContext();
8624 EVENT(context, GLGenFencesNV, "context = %d, n = %d, fences = 0x%016" PRIxPTR "", CID(context),
8625 n, (uintptr_t)fences);
8626
8627 if (context)
8628 {
8629 FenceNVID *fencesPacked = PackParam<FenceNVID *>(fences);
8630 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
8631 bool isCallValid =
8632 (context->skipValidation() ||
8633 ValidateGenFencesNV(context, angle::EntryPoint::GLGenFencesNV, n, fencesPacked));
8634 if (isCallValid)
8635 {
8636 context->genFencesNV(n, fencesPacked);
8637 }
8638 ANGLE_CAPTURE(GenFencesNV, isCallValid, context, n, fencesPacked);
8639 }
8640 else
8641 {
8642 GenerateContextLostErrorOnCurrentGlobalContext();
8643 }
8644 }
8645
GL_GetFenceivNV(GLuint fence,GLenum pname,GLint * params)8646 void GL_APIENTRY GL_GetFenceivNV(GLuint fence, GLenum pname, GLint *params)
8647 {
8648 Context *context = GetValidGlobalContext();
8649 EVENT(context, GLGetFenceivNV,
8650 "context = %d, fence = %u, pname = %s, params = 0x%016" PRIxPTR "", CID(context), fence,
8651 GLenumToString(GLenumGroup::DefaultGroup, pname), (uintptr_t)params);
8652
8653 if (context)
8654 {
8655 FenceNVID fencePacked = PackParam<FenceNVID>(fence);
8656 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
8657 bool isCallValid = (context->skipValidation() ||
8658 ValidateGetFenceivNV(context, angle::EntryPoint::GLGetFenceivNV,
8659 fencePacked, pname, params));
8660 if (isCallValid)
8661 {
8662 context->getFenceivNV(fencePacked, pname, params);
8663 }
8664 ANGLE_CAPTURE(GetFenceivNV, isCallValid, context, fencePacked, pname, params);
8665 }
8666 else
8667 {
8668 GenerateContextLostErrorOnCurrentGlobalContext();
8669 }
8670 }
8671
GL_IsFenceNV(GLuint fence)8672 GLboolean GL_APIENTRY GL_IsFenceNV(GLuint fence)
8673 {
8674 Context *context = GetValidGlobalContext();
8675 EVENT(context, GLIsFenceNV, "context = %d, fence = %u", CID(context), fence);
8676
8677 GLboolean returnValue;
8678 if (context)
8679 {
8680 FenceNVID fencePacked = PackParam<FenceNVID>(fence);
8681 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
8682 bool isCallValid =
8683 (context->skipValidation() ||
8684 ValidateIsFenceNV(context, angle::EntryPoint::GLIsFenceNV, fencePacked));
8685 if (isCallValid)
8686 {
8687 returnValue = context->isFenceNV(fencePacked);
8688 }
8689 else
8690 {
8691 returnValue = GetDefaultReturnValue<angle::EntryPoint::GLIsFenceNV, GLboolean>();
8692 }
8693 ANGLE_CAPTURE(IsFenceNV, isCallValid, context, fencePacked, returnValue);
8694 }
8695 else
8696 {
8697 GenerateContextLostErrorOnCurrentGlobalContext();
8698 returnValue = GetDefaultReturnValue<angle::EntryPoint::GLIsFenceNV, GLboolean>();
8699 }
8700 return returnValue;
8701 }
8702
GL_SetFenceNV(GLuint fence,GLenum condition)8703 void GL_APIENTRY GL_SetFenceNV(GLuint fence, GLenum condition)
8704 {
8705 Context *context = GetValidGlobalContext();
8706 EVENT(context, GLSetFenceNV, "context = %d, fence = %u, condition = %s", CID(context), fence,
8707 GLenumToString(GLenumGroup::DefaultGroup, condition));
8708
8709 if (context)
8710 {
8711 FenceNVID fencePacked = PackParam<FenceNVID>(fence);
8712 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
8713 bool isCallValid =
8714 (context->skipValidation() ||
8715 ValidateSetFenceNV(context, angle::EntryPoint::GLSetFenceNV, fencePacked, condition));
8716 if (isCallValid)
8717 {
8718 context->setFenceNV(fencePacked, condition);
8719 }
8720 ANGLE_CAPTURE(SetFenceNV, isCallValid, context, fencePacked, condition);
8721 }
8722 else
8723 {
8724 GenerateContextLostErrorOnCurrentGlobalContext();
8725 }
8726 }
8727
GL_TestFenceNV(GLuint fence)8728 GLboolean GL_APIENTRY GL_TestFenceNV(GLuint fence)
8729 {
8730 Context *context = GetValidGlobalContext();
8731 EVENT(context, GLTestFenceNV, "context = %d, fence = %u", CID(context), fence);
8732
8733 GLboolean returnValue;
8734 if (context)
8735 {
8736 FenceNVID fencePacked = PackParam<FenceNVID>(fence);
8737 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
8738 bool isCallValid =
8739 (context->skipValidation() ||
8740 ValidateTestFenceNV(context, angle::EntryPoint::GLTestFenceNV, fencePacked));
8741 if (isCallValid)
8742 {
8743 returnValue = context->testFenceNV(fencePacked);
8744 }
8745 else
8746 {
8747 returnValue = GetDefaultReturnValue<angle::EntryPoint::GLTestFenceNV, GLboolean>();
8748 }
8749 ANGLE_CAPTURE(TestFenceNV, isCallValid, context, fencePacked, returnValue);
8750 }
8751 else
8752 {
8753 GenerateContextLostErrorOnCurrentGlobalContext();
8754 returnValue = GetDefaultReturnValue<angle::EntryPoint::GLTestFenceNV, GLboolean>();
8755 }
8756 return returnValue;
8757 }
8758
8759 // GL_NV_framebuffer_blit
GL_BlitFramebufferNV(GLint srcX0,GLint srcY0,GLint srcX1,GLint srcY1,GLint dstX0,GLint dstY0,GLint dstX1,GLint dstY1,GLbitfield mask,GLenum filter)8760 void GL_APIENTRY GL_BlitFramebufferNV(GLint srcX0,
8761 GLint srcY0,
8762 GLint srcX1,
8763 GLint srcY1,
8764 GLint dstX0,
8765 GLint dstY0,
8766 GLint dstX1,
8767 GLint dstY1,
8768 GLbitfield mask,
8769 GLenum filter)
8770 {
8771 Context *context = GetValidGlobalContext();
8772 EVENT(context, GLBlitFramebufferNV,
8773 "context = %d, srcX0 = %d, srcY0 = %d, srcX1 = %d, srcY1 = %d, dstX0 = %d, dstY0 = %d, "
8774 "dstX1 = %d, dstY1 = %d, mask = %s, filter = %s",
8775 CID(context), srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1,
8776 GLbitfieldToString(GLenumGroup::ClearBufferMask, mask).c_str(),
8777 GLenumToString(GLenumGroup::BlitFramebufferFilter, filter));
8778
8779 if (context)
8780 {
8781 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
8782 bool isCallValid = (context->skipValidation() ||
8783 ValidateBlitFramebufferNV(
8784 context, angle::EntryPoint::GLBlitFramebufferNV, srcX0, srcY0,
8785 srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask, filter));
8786 if (isCallValid)
8787 {
8788 context->blitFramebufferNV(srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask,
8789 filter);
8790 }
8791 ANGLE_CAPTURE(BlitFramebufferNV, isCallValid, context, srcX0, srcY0, srcX1, srcY1, dstX0,
8792 dstY0, dstX1, dstY1, mask, filter);
8793 }
8794 else
8795 {
8796 GenerateContextLostErrorOnCurrentGlobalContext();
8797 }
8798 }
8799
8800 // GL_NV_pixel_buffer_object
8801
8802 // GL_NV_read_depth
8803
8804 // GL_NV_read_stencil
8805
8806 // GL_NV_robustness_video_memory_purge
8807
8808 // GL_NV_shader_noperspective_interpolation
8809
8810 // GL_OES_EGL_image
GL_EGLImageTargetRenderbufferStorageOES(GLenum target,GLeglImageOES image)8811 void GL_APIENTRY GL_EGLImageTargetRenderbufferStorageOES(GLenum target, GLeglImageOES image)
8812 {
8813 Context *context = GetValidGlobalContext();
8814 EVENT(context, GLEGLImageTargetRenderbufferStorageOES,
8815 "context = %d, target = %s, image = 0x%016" PRIxPTR "", CID(context),
8816 GLenumToString(GLenumGroup::DefaultGroup, target), (uintptr_t)image);
8817
8818 if (context)
8819 {
8820 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
8821 bool isCallValid = (context->skipValidation() ||
8822 ValidateEGLImageTargetRenderbufferStorageOES(
8823 context, angle::EntryPoint::GLEGLImageTargetRenderbufferStorageOES,
8824 target, image));
8825 if (isCallValid)
8826 {
8827 context->eGLImageTargetRenderbufferStorage(target, image);
8828 }
8829 ANGLE_CAPTURE(EGLImageTargetRenderbufferStorageOES, isCallValid, context, target, image);
8830 }
8831 else
8832 {
8833 GenerateContextLostErrorOnCurrentGlobalContext();
8834 }
8835 }
8836
GL_EGLImageTargetTexture2DOES(GLenum target,GLeglImageOES image)8837 void GL_APIENTRY GL_EGLImageTargetTexture2DOES(GLenum target, GLeglImageOES image)
8838 {
8839 Context *context = GetValidGlobalContext();
8840 EVENT(context, GLEGLImageTargetTexture2DOES,
8841 "context = %d, target = %s, image = 0x%016" PRIxPTR "", CID(context),
8842 GLenumToString(GLenumGroup::DefaultGroup, target), (uintptr_t)image);
8843
8844 if (context)
8845 {
8846 TextureType targetPacked = PackParam<TextureType>(target);
8847 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
8848 bool isCallValid =
8849 (context->skipValidation() ||
8850 ValidateEGLImageTargetTexture2DOES(
8851 context, angle::EntryPoint::GLEGLImageTargetTexture2DOES, targetPacked, image));
8852 if (isCallValid)
8853 {
8854 context->eGLImageTargetTexture2D(targetPacked, image);
8855 }
8856 ANGLE_CAPTURE(EGLImageTargetTexture2DOES, isCallValid, context, targetPacked, image);
8857 }
8858 else
8859 {
8860 GenerateContextLostErrorOnCurrentGlobalContext();
8861 }
8862 }
8863
8864 // GL_OES_EGL_image_external
8865
8866 // GL_OES_EGL_image_external_essl3
8867
8868 // GL_OES_compressed_ETC1_RGB8_texture
8869
8870 // GL_OES_copy_image
GL_CopyImageSubDataOES(GLuint srcName,GLenum srcTarget,GLint srcLevel,GLint srcX,GLint srcY,GLint srcZ,GLuint dstName,GLenum dstTarget,GLint dstLevel,GLint dstX,GLint dstY,GLint dstZ,GLsizei srcWidth,GLsizei srcHeight,GLsizei srcDepth)8871 void GL_APIENTRY GL_CopyImageSubDataOES(GLuint srcName,
8872 GLenum srcTarget,
8873 GLint srcLevel,
8874 GLint srcX,
8875 GLint srcY,
8876 GLint srcZ,
8877 GLuint dstName,
8878 GLenum dstTarget,
8879 GLint dstLevel,
8880 GLint dstX,
8881 GLint dstY,
8882 GLint dstZ,
8883 GLsizei srcWidth,
8884 GLsizei srcHeight,
8885 GLsizei srcDepth)
8886 {
8887 Context *context = GetValidGlobalContext();
8888 EVENT(context, GLCopyImageSubDataOES,
8889 "context = %d, srcName = %u, srcTarget = %s, srcLevel = %d, srcX = %d, srcY = %d, srcZ = "
8890 "%d, dstName = %u, dstTarget = %s, dstLevel = %d, dstX = %d, dstY = %d, dstZ = %d, "
8891 "srcWidth = %d, srcHeight = %d, srcDepth = %d",
8892 CID(context), srcName, GLenumToString(GLenumGroup::CopyBufferSubDataTarget, srcTarget),
8893 srcLevel, srcX, srcY, srcZ, dstName,
8894 GLenumToString(GLenumGroup::CopyBufferSubDataTarget, dstTarget), dstLevel, dstX, dstY,
8895 dstZ, srcWidth, srcHeight, srcDepth);
8896
8897 if (context)
8898 {
8899 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
8900 bool isCallValid = (context->skipValidation() ||
8901 ValidateCopyImageSubDataOES(
8902 context, angle::EntryPoint::GLCopyImageSubDataOES, srcName,
8903 srcTarget, srcLevel, srcX, srcY, srcZ, dstName, dstTarget, dstLevel,
8904 dstX, dstY, dstZ, srcWidth, srcHeight, srcDepth));
8905 if (isCallValid)
8906 {
8907 context->copyImageSubData(srcName, srcTarget, srcLevel, srcX, srcY, srcZ, dstName,
8908 dstTarget, dstLevel, dstX, dstY, dstZ, srcWidth, srcHeight,
8909 srcDepth);
8910 }
8911 ANGLE_CAPTURE(CopyImageSubDataOES, isCallValid, context, srcName, srcTarget, srcLevel, srcX,
8912 srcY, srcZ, dstName, dstTarget, dstLevel, dstX, dstY, dstZ, srcWidth,
8913 srcHeight, srcDepth);
8914 }
8915 else
8916 {
8917 GenerateContextLostErrorOnCurrentGlobalContext();
8918 }
8919 }
8920
8921 // GL_OES_depth24
8922
8923 // GL_OES_depth32
8924
8925 // GL_OES_depth_texture
8926
8927 // GL_OES_draw_buffers_indexed
GL_BlendEquationSeparateiOES(GLuint buf,GLenum modeRGB,GLenum modeAlpha)8928 void GL_APIENTRY GL_BlendEquationSeparateiOES(GLuint buf, GLenum modeRGB, GLenum modeAlpha)
8929 {
8930 Context *context = GetValidGlobalContext();
8931 EVENT(context, GLBlendEquationSeparateiOES,
8932 "context = %d, buf = %u, modeRGB = %s, modeAlpha = %s", CID(context), buf,
8933 GLenumToString(GLenumGroup::BlendEquationModeEXT, modeRGB),
8934 GLenumToString(GLenumGroup::BlendEquationModeEXT, modeAlpha));
8935
8936 if (context)
8937 {
8938 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
8939 bool isCallValid =
8940 (context->skipValidation() ||
8941 ValidateBlendEquationSeparateiOES(
8942 context, angle::EntryPoint::GLBlendEquationSeparateiOES, buf, modeRGB, modeAlpha));
8943 if (isCallValid)
8944 {
8945 context->blendEquationSeparatei(buf, modeRGB, modeAlpha);
8946 }
8947 ANGLE_CAPTURE(BlendEquationSeparateiOES, isCallValid, context, buf, modeRGB, modeAlpha);
8948 }
8949 else
8950 {
8951 GenerateContextLostErrorOnCurrentGlobalContext();
8952 }
8953 }
8954
GL_BlendEquationiOES(GLuint buf,GLenum mode)8955 void GL_APIENTRY GL_BlendEquationiOES(GLuint buf, GLenum mode)
8956 {
8957 Context *context = GetValidGlobalContext();
8958 EVENT(context, GLBlendEquationiOES, "context = %d, buf = %u, mode = %s", CID(context), buf,
8959 GLenumToString(GLenumGroup::BlendEquationModeEXT, mode));
8960
8961 if (context)
8962 {
8963 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
8964 bool isCallValid =
8965 (context->skipValidation() ||
8966 ValidateBlendEquationiOES(context, angle::EntryPoint::GLBlendEquationiOES, buf, mode));
8967 if (isCallValid)
8968 {
8969 context->blendEquationi(buf, mode);
8970 }
8971 ANGLE_CAPTURE(BlendEquationiOES, isCallValid, context, buf, mode);
8972 }
8973 else
8974 {
8975 GenerateContextLostErrorOnCurrentGlobalContext();
8976 }
8977 }
8978
8979 void GL_APIENTRY
GL_BlendFuncSeparateiOES(GLuint buf,GLenum srcRGB,GLenum dstRGB,GLenum srcAlpha,GLenum dstAlpha)8980 GL_BlendFuncSeparateiOES(GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha)
8981 {
8982 Context *context = GetValidGlobalContext();
8983 EVENT(context, GLBlendFuncSeparateiOES,
8984 "context = %d, buf = %u, srcRGB = %s, dstRGB = %s, srcAlpha = %s, dstAlpha = %s",
8985 CID(context), buf, GLenumToString(GLenumGroup::BlendingFactor, srcRGB),
8986 GLenumToString(GLenumGroup::BlendingFactor, dstRGB),
8987 GLenumToString(GLenumGroup::BlendingFactor, srcAlpha),
8988 GLenumToString(GLenumGroup::BlendingFactor, dstAlpha));
8989
8990 if (context)
8991 {
8992 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
8993 bool isCallValid =
8994 (context->skipValidation() ||
8995 ValidateBlendFuncSeparateiOES(context, angle::EntryPoint::GLBlendFuncSeparateiOES, buf,
8996 srcRGB, dstRGB, srcAlpha, dstAlpha));
8997 if (isCallValid)
8998 {
8999 context->blendFuncSeparatei(buf, srcRGB, dstRGB, srcAlpha, dstAlpha);
9000 }
9001 ANGLE_CAPTURE(BlendFuncSeparateiOES, isCallValid, context, buf, srcRGB, dstRGB, srcAlpha,
9002 dstAlpha);
9003 }
9004 else
9005 {
9006 GenerateContextLostErrorOnCurrentGlobalContext();
9007 }
9008 }
9009
GL_BlendFunciOES(GLuint buf,GLenum src,GLenum dst)9010 void GL_APIENTRY GL_BlendFunciOES(GLuint buf, GLenum src, GLenum dst)
9011 {
9012 Context *context = GetValidGlobalContext();
9013 EVENT(context, GLBlendFunciOES, "context = %d, buf = %u, src = %s, dst = %s", CID(context), buf,
9014 GLenumToString(GLenumGroup::BlendingFactor, src),
9015 GLenumToString(GLenumGroup::BlendingFactor, dst));
9016
9017 if (context)
9018 {
9019 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
9020 bool isCallValid =
9021 (context->skipValidation() ||
9022 ValidateBlendFunciOES(context, angle::EntryPoint::GLBlendFunciOES, buf, src, dst));
9023 if (isCallValid)
9024 {
9025 context->blendFunci(buf, src, dst);
9026 }
9027 ANGLE_CAPTURE(BlendFunciOES, isCallValid, context, buf, src, dst);
9028 }
9029 else
9030 {
9031 GenerateContextLostErrorOnCurrentGlobalContext();
9032 }
9033 }
9034
GL_ColorMaskiOES(GLuint index,GLboolean r,GLboolean g,GLboolean b,GLboolean a)9035 void GL_APIENTRY GL_ColorMaskiOES(GLuint index, GLboolean r, GLboolean g, GLboolean b, GLboolean a)
9036 {
9037 Context *context = GetValidGlobalContext();
9038 EVENT(context, GLColorMaskiOES, "context = %d, index = %u, r = %s, g = %s, b = %s, a = %s",
9039 CID(context), index, GLbooleanToString(r), GLbooleanToString(g), GLbooleanToString(b),
9040 GLbooleanToString(a));
9041
9042 if (context)
9043 {
9044 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
9045 bool isCallValid =
9046 (context->skipValidation() ||
9047 ValidateColorMaskiOES(context, angle::EntryPoint::GLColorMaskiOES, index, r, g, b, a));
9048 if (isCallValid)
9049 {
9050 context->colorMaski(index, r, g, b, a);
9051 }
9052 ANGLE_CAPTURE(ColorMaskiOES, isCallValid, context, index, r, g, b, a);
9053 }
9054 else
9055 {
9056 GenerateContextLostErrorOnCurrentGlobalContext();
9057 }
9058 }
9059
GL_DisableiOES(GLenum target,GLuint index)9060 void GL_APIENTRY GL_DisableiOES(GLenum target, GLuint index)
9061 {
9062 Context *context = GetValidGlobalContext();
9063 EVENT(context, GLDisableiOES, "context = %d, target = %s, index = %u", CID(context),
9064 GLenumToString(GLenumGroup::EnableCap, target), index);
9065
9066 if (context)
9067 {
9068 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
9069 bool isCallValid =
9070 (context->skipValidation() ||
9071 ValidateDisableiOES(context, angle::EntryPoint::GLDisableiOES, target, index));
9072 if (isCallValid)
9073 {
9074 context->disablei(target, index);
9075 }
9076 ANGLE_CAPTURE(DisableiOES, isCallValid, context, target, index);
9077 }
9078 else
9079 {
9080 GenerateContextLostErrorOnCurrentGlobalContext();
9081 }
9082 }
9083
GL_EnableiOES(GLenum target,GLuint index)9084 void GL_APIENTRY GL_EnableiOES(GLenum target, GLuint index)
9085 {
9086 Context *context = GetValidGlobalContext();
9087 EVENT(context, GLEnableiOES, "context = %d, target = %s, index = %u", CID(context),
9088 GLenumToString(GLenumGroup::EnableCap, target), index);
9089
9090 if (context)
9091 {
9092 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
9093 bool isCallValid =
9094 (context->skipValidation() ||
9095 ValidateEnableiOES(context, angle::EntryPoint::GLEnableiOES, target, index));
9096 if (isCallValid)
9097 {
9098 context->enablei(target, index);
9099 }
9100 ANGLE_CAPTURE(EnableiOES, isCallValid, context, target, index);
9101 }
9102 else
9103 {
9104 GenerateContextLostErrorOnCurrentGlobalContext();
9105 }
9106 }
9107
GL_IsEnablediOES(GLenum target,GLuint index)9108 GLboolean GL_APIENTRY GL_IsEnablediOES(GLenum target, GLuint index)
9109 {
9110 Context *context = GetValidGlobalContext();
9111 EVENT(context, GLIsEnablediOES, "context = %d, target = %s, index = %u", CID(context),
9112 GLenumToString(GLenumGroup::EnableCap, target), index);
9113
9114 GLboolean returnValue;
9115 if (context)
9116 {
9117 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
9118 bool isCallValid =
9119 (context->skipValidation() ||
9120 ValidateIsEnablediOES(context, angle::EntryPoint::GLIsEnablediOES, target, index));
9121 if (isCallValid)
9122 {
9123 returnValue = context->isEnabledi(target, index);
9124 }
9125 else
9126 {
9127 returnValue = GetDefaultReturnValue<angle::EntryPoint::GLIsEnablediOES, GLboolean>();
9128 }
9129 ANGLE_CAPTURE(IsEnablediOES, isCallValid, context, target, index, returnValue);
9130 }
9131 else
9132 {
9133 GenerateContextLostErrorOnCurrentGlobalContext();
9134 returnValue = GetDefaultReturnValue<angle::EntryPoint::GLIsEnablediOES, GLboolean>();
9135 }
9136 return returnValue;
9137 }
9138
9139 // GL_OES_draw_elements_base_vertex
GL_DrawElementsBaseVertexOES(GLenum mode,GLsizei count,GLenum type,const void * indices,GLint basevertex)9140 void GL_APIENTRY GL_DrawElementsBaseVertexOES(GLenum mode,
9141 GLsizei count,
9142 GLenum type,
9143 const void *indices,
9144 GLint basevertex)
9145 {
9146 Context *context = GetValidGlobalContext();
9147 EVENT(context, GLDrawElementsBaseVertexOES,
9148 "context = %d, mode = %s, count = %d, type = %s, indices = 0x%016" PRIxPTR
9149 ", basevertex = %d",
9150 CID(context), GLenumToString(GLenumGroup::PrimitiveType, mode), count,
9151 GLenumToString(GLenumGroup::DrawElementsType, type), (uintptr_t)indices, basevertex);
9152
9153 if (context)
9154 {
9155 PrimitiveMode modePacked = PackParam<PrimitiveMode>(mode);
9156 DrawElementsType typePacked = PackParam<DrawElementsType>(type);
9157 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
9158 bool isCallValid = (context->skipValidation() ||
9159 ValidateDrawElementsBaseVertexOES(
9160 context, angle::EntryPoint::GLDrawElementsBaseVertexOES, modePacked,
9161 count, typePacked, indices, basevertex));
9162 if (isCallValid)
9163 {
9164 context->drawElementsBaseVertex(modePacked, count, typePacked, indices, basevertex);
9165 }
9166 ANGLE_CAPTURE(DrawElementsBaseVertexOES, isCallValid, context, modePacked, count,
9167 typePacked, indices, basevertex);
9168 }
9169 else
9170 {
9171 GenerateContextLostErrorOnCurrentGlobalContext();
9172 }
9173 }
9174
GL_DrawElementsInstancedBaseVertexOES(GLenum mode,GLsizei count,GLenum type,const void * indices,GLsizei instancecount,GLint basevertex)9175 void GL_APIENTRY GL_DrawElementsInstancedBaseVertexOES(GLenum mode,
9176 GLsizei count,
9177 GLenum type,
9178 const void *indices,
9179 GLsizei instancecount,
9180 GLint basevertex)
9181 {
9182 Context *context = GetValidGlobalContext();
9183 EVENT(context, GLDrawElementsInstancedBaseVertexOES,
9184 "context = %d, mode = %s, count = %d, type = %s, indices = 0x%016" PRIxPTR
9185 ", instancecount = %d, basevertex = %d",
9186 CID(context), GLenumToString(GLenumGroup::PrimitiveType, mode), count,
9187 GLenumToString(GLenumGroup::DrawElementsType, type), (uintptr_t)indices, instancecount,
9188 basevertex);
9189
9190 if (context)
9191 {
9192 PrimitiveMode modePacked = PackParam<PrimitiveMode>(mode);
9193 DrawElementsType typePacked = PackParam<DrawElementsType>(type);
9194 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
9195 bool isCallValid = (context->skipValidation() ||
9196 ValidateDrawElementsInstancedBaseVertexOES(
9197 context, angle::EntryPoint::GLDrawElementsInstancedBaseVertexOES,
9198 modePacked, count, typePacked, indices, instancecount, basevertex));
9199 if (isCallValid)
9200 {
9201 context->drawElementsInstancedBaseVertex(modePacked, count, typePacked, indices,
9202 instancecount, basevertex);
9203 }
9204 ANGLE_CAPTURE(DrawElementsInstancedBaseVertexOES, isCallValid, context, modePacked, count,
9205 typePacked, indices, instancecount, basevertex);
9206 }
9207 else
9208 {
9209 GenerateContextLostErrorOnCurrentGlobalContext();
9210 }
9211 }
9212
GL_DrawRangeElementsBaseVertexOES(GLenum mode,GLuint start,GLuint end,GLsizei count,GLenum type,const void * indices,GLint basevertex)9213 void GL_APIENTRY GL_DrawRangeElementsBaseVertexOES(GLenum mode,
9214 GLuint start,
9215 GLuint end,
9216 GLsizei count,
9217 GLenum type,
9218 const void *indices,
9219 GLint basevertex)
9220 {
9221 Context *context = GetValidGlobalContext();
9222 EVENT(context, GLDrawRangeElementsBaseVertexOES,
9223 "context = %d, mode = %s, start = %u, end = %u, count = %d, type = %s, indices = "
9224 "0x%016" PRIxPTR ", basevertex = %d",
9225 CID(context), GLenumToString(GLenumGroup::PrimitiveType, mode), start, end, count,
9226 GLenumToString(GLenumGroup::DrawElementsType, type), (uintptr_t)indices, basevertex);
9227
9228 if (context)
9229 {
9230 PrimitiveMode modePacked = PackParam<PrimitiveMode>(mode);
9231 DrawElementsType typePacked = PackParam<DrawElementsType>(type);
9232 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
9233 bool isCallValid = (context->skipValidation() ||
9234 ValidateDrawRangeElementsBaseVertexOES(
9235 context, angle::EntryPoint::GLDrawRangeElementsBaseVertexOES,
9236 modePacked, start, end, count, typePacked, indices, basevertex));
9237 if (isCallValid)
9238 {
9239 context->drawRangeElementsBaseVertex(modePacked, start, end, count, typePacked, indices,
9240 basevertex);
9241 }
9242 ANGLE_CAPTURE(DrawRangeElementsBaseVertexOES, isCallValid, context, modePacked, start, end,
9243 count, typePacked, indices, basevertex);
9244 }
9245 else
9246 {
9247 GenerateContextLostErrorOnCurrentGlobalContext();
9248 }
9249 }
9250
9251 // MultiDrawElementsBaseVertexEXT is already defined.
9252
9253 // GL_OES_draw_texture
GL_DrawTexfOES(GLfloat x,GLfloat y,GLfloat z,GLfloat width,GLfloat height)9254 void GL_APIENTRY GL_DrawTexfOES(GLfloat x, GLfloat y, GLfloat z, GLfloat width, GLfloat height)
9255 {
9256 Context *context = GetValidGlobalContext();
9257 EVENT(context, GLDrawTexfOES, "context = %d, x = %f, y = %f, z = %f, width = %f, height = %f",
9258 CID(context), x, y, z, width, height);
9259
9260 if (context)
9261 {
9262 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
9263 bool isCallValid = (context->skipValidation() ||
9264 ValidateDrawTexfOES(context, angle::EntryPoint::GLDrawTexfOES, x, y, z,
9265 width, height));
9266 if (isCallValid)
9267 {
9268 context->drawTexf(x, y, z, width, height);
9269 }
9270 ANGLE_CAPTURE(DrawTexfOES, isCallValid, context, x, y, z, width, height);
9271 }
9272 else
9273 {
9274 GenerateContextLostErrorOnCurrentGlobalContext();
9275 }
9276 }
9277
GL_DrawTexfvOES(const GLfloat * coords)9278 void GL_APIENTRY GL_DrawTexfvOES(const GLfloat *coords)
9279 {
9280 Context *context = GetValidGlobalContext();
9281 EVENT(context, GLDrawTexfvOES, "context = %d, coords = 0x%016" PRIxPTR "", CID(context),
9282 (uintptr_t)coords);
9283
9284 if (context)
9285 {
9286 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
9287 bool isCallValid =
9288 (context->skipValidation() ||
9289 ValidateDrawTexfvOES(context, angle::EntryPoint::GLDrawTexfvOES, coords));
9290 if (isCallValid)
9291 {
9292 context->drawTexfv(coords);
9293 }
9294 ANGLE_CAPTURE(DrawTexfvOES, isCallValid, context, coords);
9295 }
9296 else
9297 {
9298 GenerateContextLostErrorOnCurrentGlobalContext();
9299 }
9300 }
9301
GL_DrawTexiOES(GLint x,GLint y,GLint z,GLint width,GLint height)9302 void GL_APIENTRY GL_DrawTexiOES(GLint x, GLint y, GLint z, GLint width, GLint height)
9303 {
9304 Context *context = GetValidGlobalContext();
9305 EVENT(context, GLDrawTexiOES, "context = %d, x = %d, y = %d, z = %d, width = %d, height = %d",
9306 CID(context), x, y, z, width, height);
9307
9308 if (context)
9309 {
9310 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
9311 bool isCallValid = (context->skipValidation() ||
9312 ValidateDrawTexiOES(context, angle::EntryPoint::GLDrawTexiOES, x, y, z,
9313 width, height));
9314 if (isCallValid)
9315 {
9316 context->drawTexi(x, y, z, width, height);
9317 }
9318 ANGLE_CAPTURE(DrawTexiOES, isCallValid, context, x, y, z, width, height);
9319 }
9320 else
9321 {
9322 GenerateContextLostErrorOnCurrentGlobalContext();
9323 }
9324 }
9325
GL_DrawTexivOES(const GLint * coords)9326 void GL_APIENTRY GL_DrawTexivOES(const GLint *coords)
9327 {
9328 Context *context = GetValidGlobalContext();
9329 EVENT(context, GLDrawTexivOES, "context = %d, coords = 0x%016" PRIxPTR "", CID(context),
9330 (uintptr_t)coords);
9331
9332 if (context)
9333 {
9334 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
9335 bool isCallValid =
9336 (context->skipValidation() ||
9337 ValidateDrawTexivOES(context, angle::EntryPoint::GLDrawTexivOES, coords));
9338 if (isCallValid)
9339 {
9340 context->drawTexiv(coords);
9341 }
9342 ANGLE_CAPTURE(DrawTexivOES, isCallValid, context, coords);
9343 }
9344 else
9345 {
9346 GenerateContextLostErrorOnCurrentGlobalContext();
9347 }
9348 }
9349
GL_DrawTexsOES(GLshort x,GLshort y,GLshort z,GLshort width,GLshort height)9350 void GL_APIENTRY GL_DrawTexsOES(GLshort x, GLshort y, GLshort z, GLshort width, GLshort height)
9351 {
9352 Context *context = GetValidGlobalContext();
9353 EVENT(context, GLDrawTexsOES, "context = %d, x = %d, y = %d, z = %d, width = %d, height = %d",
9354 CID(context), x, y, z, width, height);
9355
9356 if (context)
9357 {
9358 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
9359 bool isCallValid = (context->skipValidation() ||
9360 ValidateDrawTexsOES(context, angle::EntryPoint::GLDrawTexsOES, x, y, z,
9361 width, height));
9362 if (isCallValid)
9363 {
9364 context->drawTexs(x, y, z, width, height);
9365 }
9366 ANGLE_CAPTURE(DrawTexsOES, isCallValid, context, x, y, z, width, height);
9367 }
9368 else
9369 {
9370 GenerateContextLostErrorOnCurrentGlobalContext();
9371 }
9372 }
9373
GL_DrawTexsvOES(const GLshort * coords)9374 void GL_APIENTRY GL_DrawTexsvOES(const GLshort *coords)
9375 {
9376 Context *context = GetValidGlobalContext();
9377 EVENT(context, GLDrawTexsvOES, "context = %d, coords = 0x%016" PRIxPTR "", CID(context),
9378 (uintptr_t)coords);
9379
9380 if (context)
9381 {
9382 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
9383 bool isCallValid =
9384 (context->skipValidation() ||
9385 ValidateDrawTexsvOES(context, angle::EntryPoint::GLDrawTexsvOES, coords));
9386 if (isCallValid)
9387 {
9388 context->drawTexsv(coords);
9389 }
9390 ANGLE_CAPTURE(DrawTexsvOES, isCallValid, context, coords);
9391 }
9392 else
9393 {
9394 GenerateContextLostErrorOnCurrentGlobalContext();
9395 }
9396 }
9397
GL_DrawTexxOES(GLfixed x,GLfixed y,GLfixed z,GLfixed width,GLfixed height)9398 void GL_APIENTRY GL_DrawTexxOES(GLfixed x, GLfixed y, GLfixed z, GLfixed width, GLfixed height)
9399 {
9400 Context *context = GetValidGlobalContext();
9401 EVENT(context, GLDrawTexxOES,
9402 "context = %d, x = 0x%X, y = 0x%X, z = 0x%X, width = 0x%X, height = 0x%X", CID(context),
9403 x, y, z, width, height);
9404
9405 if (context)
9406 {
9407 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
9408 bool isCallValid = (context->skipValidation() ||
9409 ValidateDrawTexxOES(context, angle::EntryPoint::GLDrawTexxOES, x, y, z,
9410 width, height));
9411 if (isCallValid)
9412 {
9413 context->drawTexx(x, y, z, width, height);
9414 }
9415 ANGLE_CAPTURE(DrawTexxOES, isCallValid, context, x, y, z, width, height);
9416 }
9417 else
9418 {
9419 GenerateContextLostErrorOnCurrentGlobalContext();
9420 }
9421 }
9422
GL_DrawTexxvOES(const GLfixed * coords)9423 void GL_APIENTRY GL_DrawTexxvOES(const GLfixed *coords)
9424 {
9425 Context *context = GetValidGlobalContext();
9426 EVENT(context, GLDrawTexxvOES, "context = %d, coords = 0x%016" PRIxPTR "", CID(context),
9427 (uintptr_t)coords);
9428
9429 if (context)
9430 {
9431 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
9432 bool isCallValid =
9433 (context->skipValidation() ||
9434 ValidateDrawTexxvOES(context, angle::EntryPoint::GLDrawTexxvOES, coords));
9435 if (isCallValid)
9436 {
9437 context->drawTexxv(coords);
9438 }
9439 ANGLE_CAPTURE(DrawTexxvOES, isCallValid, context, coords);
9440 }
9441 else
9442 {
9443 GenerateContextLostErrorOnCurrentGlobalContext();
9444 }
9445 }
9446
9447 // GL_OES_element_index_uint
9448
9449 // GL_OES_fbo_render_mipmap
9450
9451 // GL_OES_framebuffer_object
GL_BindFramebufferOES(GLenum target,GLuint framebuffer)9452 void GL_APIENTRY GL_BindFramebufferOES(GLenum target, GLuint framebuffer)
9453 {
9454 Context *context = GetValidGlobalContext();
9455 EVENT(context, GLBindFramebufferOES, "context = %d, target = %s, framebuffer = %u",
9456 CID(context), GLenumToString(GLenumGroup::FramebufferTarget, target), framebuffer);
9457
9458 if (context)
9459 {
9460 FramebufferID framebufferPacked = PackParam<FramebufferID>(framebuffer);
9461 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
9462 bool isCallValid =
9463 (context->skipValidation() ||
9464 ValidateBindFramebufferOES(context, angle::EntryPoint::GLBindFramebufferOES, target,
9465 framebufferPacked));
9466 if (isCallValid)
9467 {
9468 context->bindFramebuffer(target, framebufferPacked);
9469 }
9470 ANGLE_CAPTURE(BindFramebufferOES, isCallValid, context, target, framebufferPacked);
9471 }
9472 else
9473 {
9474 GenerateContextLostErrorOnCurrentGlobalContext();
9475 }
9476 }
9477
GL_BindRenderbufferOES(GLenum target,GLuint renderbuffer)9478 void GL_APIENTRY GL_BindRenderbufferOES(GLenum target, GLuint renderbuffer)
9479 {
9480 Context *context = GetValidGlobalContext();
9481 EVENT(context, GLBindRenderbufferOES, "context = %d, target = %s, renderbuffer = %u",
9482 CID(context), GLenumToString(GLenumGroup::RenderbufferTarget, target), renderbuffer);
9483
9484 if (context)
9485 {
9486 RenderbufferID renderbufferPacked = PackParam<RenderbufferID>(renderbuffer);
9487 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
9488 bool isCallValid =
9489 (context->skipValidation() ||
9490 ValidateBindRenderbufferOES(context, angle::EntryPoint::GLBindRenderbufferOES, target,
9491 renderbufferPacked));
9492 if (isCallValid)
9493 {
9494 context->bindRenderbuffer(target, renderbufferPacked);
9495 }
9496 ANGLE_CAPTURE(BindRenderbufferOES, isCallValid, context, target, renderbufferPacked);
9497 }
9498 else
9499 {
9500 GenerateContextLostErrorOnCurrentGlobalContext();
9501 }
9502 }
9503
GL_CheckFramebufferStatusOES(GLenum target)9504 GLenum GL_APIENTRY GL_CheckFramebufferStatusOES(GLenum target)
9505 {
9506 Context *context = GetValidGlobalContext();
9507 EVENT(context, GLCheckFramebufferStatusOES, "context = %d, target = %s", CID(context),
9508 GLenumToString(GLenumGroup::FramebufferTarget, target));
9509
9510 GLenum returnValue;
9511 if (context)
9512 {
9513 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
9514 bool isCallValid = (context->skipValidation() ||
9515 ValidateCheckFramebufferStatusOES(
9516 context, angle::EntryPoint::GLCheckFramebufferStatusOES, target));
9517 if (isCallValid)
9518 {
9519 returnValue = context->checkFramebufferStatus(target);
9520 }
9521 else
9522 {
9523 returnValue =
9524 GetDefaultReturnValue<angle::EntryPoint::GLCheckFramebufferStatusOES, GLenum>();
9525 }
9526 ANGLE_CAPTURE(CheckFramebufferStatusOES, isCallValid, context, target, returnValue);
9527 }
9528 else
9529 {
9530 GenerateContextLostErrorOnCurrentGlobalContext();
9531 returnValue =
9532 GetDefaultReturnValue<angle::EntryPoint::GLCheckFramebufferStatusOES, GLenum>();
9533 }
9534 return returnValue;
9535 }
9536
GL_DeleteFramebuffersOES(GLsizei n,const GLuint * framebuffers)9537 void GL_APIENTRY GL_DeleteFramebuffersOES(GLsizei n, const GLuint *framebuffers)
9538 {
9539 Context *context = GetValidGlobalContext();
9540 EVENT(context, GLDeleteFramebuffersOES,
9541 "context = %d, n = %d, framebuffers = 0x%016" PRIxPTR "", CID(context), n,
9542 (uintptr_t)framebuffers);
9543
9544 if (context)
9545 {
9546 const FramebufferID *framebuffersPacked = PackParam<const FramebufferID *>(framebuffers);
9547 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
9548 bool isCallValid =
9549 (context->skipValidation() ||
9550 ValidateDeleteFramebuffersOES(context, angle::EntryPoint::GLDeleteFramebuffersOES, n,
9551 framebuffersPacked));
9552 if (isCallValid)
9553 {
9554 context->deleteFramebuffers(n, framebuffersPacked);
9555 }
9556 ANGLE_CAPTURE(DeleteFramebuffersOES, isCallValid, context, n, framebuffersPacked);
9557 }
9558 else
9559 {
9560 GenerateContextLostErrorOnCurrentGlobalContext();
9561 }
9562 }
9563
GL_DeleteRenderbuffersOES(GLsizei n,const GLuint * renderbuffers)9564 void GL_APIENTRY GL_DeleteRenderbuffersOES(GLsizei n, const GLuint *renderbuffers)
9565 {
9566 Context *context = GetValidGlobalContext();
9567 EVENT(context, GLDeleteRenderbuffersOES,
9568 "context = %d, n = %d, renderbuffers = 0x%016" PRIxPTR "", CID(context), n,
9569 (uintptr_t)renderbuffers);
9570
9571 if (context)
9572 {
9573 const RenderbufferID *renderbuffersPacked =
9574 PackParam<const RenderbufferID *>(renderbuffers);
9575 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
9576 bool isCallValid =
9577 (context->skipValidation() ||
9578 ValidateDeleteRenderbuffersOES(context, angle::EntryPoint::GLDeleteRenderbuffersOES, n,
9579 renderbuffersPacked));
9580 if (isCallValid)
9581 {
9582 context->deleteRenderbuffers(n, renderbuffersPacked);
9583 }
9584 ANGLE_CAPTURE(DeleteRenderbuffersOES, isCallValid, context, n, renderbuffersPacked);
9585 }
9586 else
9587 {
9588 GenerateContextLostErrorOnCurrentGlobalContext();
9589 }
9590 }
9591
GL_FramebufferRenderbufferOES(GLenum target,GLenum attachment,GLenum renderbuffertarget,GLuint renderbuffer)9592 void GL_APIENTRY GL_FramebufferRenderbufferOES(GLenum target,
9593 GLenum attachment,
9594 GLenum renderbuffertarget,
9595 GLuint renderbuffer)
9596 {
9597 Context *context = GetValidGlobalContext();
9598 EVENT(context, GLFramebufferRenderbufferOES,
9599 "context = %d, target = %s, attachment = %s, renderbuffertarget = %s, renderbuffer = %u",
9600 CID(context), GLenumToString(GLenumGroup::FramebufferTarget, target),
9601 GLenumToString(GLenumGroup::FramebufferAttachment, attachment),
9602 GLenumToString(GLenumGroup::RenderbufferTarget, renderbuffertarget), renderbuffer);
9603
9604 if (context)
9605 {
9606 RenderbufferID renderbufferPacked = PackParam<RenderbufferID>(renderbuffer);
9607 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
9608 bool isCallValid = (context->skipValidation() ||
9609 ValidateFramebufferRenderbufferOES(
9610 context, angle::EntryPoint::GLFramebufferRenderbufferOES, target,
9611 attachment, renderbuffertarget, renderbufferPacked));
9612 if (isCallValid)
9613 {
9614 context->framebufferRenderbuffer(target, attachment, renderbuffertarget,
9615 renderbufferPacked);
9616 }
9617 ANGLE_CAPTURE(FramebufferRenderbufferOES, isCallValid, context, target, attachment,
9618 renderbuffertarget, renderbufferPacked);
9619 }
9620 else
9621 {
9622 GenerateContextLostErrorOnCurrentGlobalContext();
9623 }
9624 }
9625
GL_FramebufferTexture2DOES(GLenum target,GLenum attachment,GLenum textarget,GLuint texture,GLint level)9626 void GL_APIENTRY GL_FramebufferTexture2DOES(GLenum target,
9627 GLenum attachment,
9628 GLenum textarget,
9629 GLuint texture,
9630 GLint level)
9631 {
9632 Context *context = GetValidGlobalContext();
9633 EVENT(context, GLFramebufferTexture2DOES,
9634 "context = %d, target = %s, attachment = %s, textarget = %s, texture = %u, level = %d",
9635 CID(context), GLenumToString(GLenumGroup::FramebufferTarget, target),
9636 GLenumToString(GLenumGroup::FramebufferAttachment, attachment),
9637 GLenumToString(GLenumGroup::TextureTarget, textarget), texture, level);
9638
9639 if (context)
9640 {
9641 TextureTarget textargetPacked = PackParam<TextureTarget>(textarget);
9642 TextureID texturePacked = PackParam<TextureID>(texture);
9643 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
9644 bool isCallValid = (context->skipValidation() ||
9645 ValidateFramebufferTexture2DOES(
9646 context, angle::EntryPoint::GLFramebufferTexture2DOES, target,
9647 attachment, textargetPacked, texturePacked, level));
9648 if (isCallValid)
9649 {
9650 context->framebufferTexture2D(target, attachment, textargetPacked, texturePacked,
9651 level);
9652 }
9653 ANGLE_CAPTURE(FramebufferTexture2DOES, isCallValid, context, target, attachment,
9654 textargetPacked, texturePacked, level);
9655 }
9656 else
9657 {
9658 GenerateContextLostErrorOnCurrentGlobalContext();
9659 }
9660 }
9661
GL_GenFramebuffersOES(GLsizei n,GLuint * framebuffers)9662 void GL_APIENTRY GL_GenFramebuffersOES(GLsizei n, GLuint *framebuffers)
9663 {
9664 Context *context = GetValidGlobalContext();
9665 EVENT(context, GLGenFramebuffersOES, "context = %d, n = %d, framebuffers = 0x%016" PRIxPTR "",
9666 CID(context), n, (uintptr_t)framebuffers);
9667
9668 if (context)
9669 {
9670 FramebufferID *framebuffersPacked = PackParam<FramebufferID *>(framebuffers);
9671 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
9672 bool isCallValid =
9673 (context->skipValidation() ||
9674 ValidateGenFramebuffersOES(context, angle::EntryPoint::GLGenFramebuffersOES, n,
9675 framebuffersPacked));
9676 if (isCallValid)
9677 {
9678 context->genFramebuffers(n, framebuffersPacked);
9679 }
9680 ANGLE_CAPTURE(GenFramebuffersOES, isCallValid, context, n, framebuffersPacked);
9681 }
9682 else
9683 {
9684 GenerateContextLostErrorOnCurrentGlobalContext();
9685 }
9686 }
9687
GL_GenRenderbuffersOES(GLsizei n,GLuint * renderbuffers)9688 void GL_APIENTRY GL_GenRenderbuffersOES(GLsizei n, GLuint *renderbuffers)
9689 {
9690 Context *context = GetValidGlobalContext();
9691 EVENT(context, GLGenRenderbuffersOES, "context = %d, n = %d, renderbuffers = 0x%016" PRIxPTR "",
9692 CID(context), n, (uintptr_t)renderbuffers);
9693
9694 if (context)
9695 {
9696 RenderbufferID *renderbuffersPacked = PackParam<RenderbufferID *>(renderbuffers);
9697 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
9698 bool isCallValid =
9699 (context->skipValidation() ||
9700 ValidateGenRenderbuffersOES(context, angle::EntryPoint::GLGenRenderbuffersOES, n,
9701 renderbuffersPacked));
9702 if (isCallValid)
9703 {
9704 context->genRenderbuffers(n, renderbuffersPacked);
9705 }
9706 ANGLE_CAPTURE(GenRenderbuffersOES, isCallValid, context, n, renderbuffersPacked);
9707 }
9708 else
9709 {
9710 GenerateContextLostErrorOnCurrentGlobalContext();
9711 }
9712 }
9713
GL_GenerateMipmapOES(GLenum target)9714 void GL_APIENTRY GL_GenerateMipmapOES(GLenum target)
9715 {
9716 Context *context = GetValidGlobalContext();
9717 EVENT(context, GLGenerateMipmapOES, "context = %d, target = %s", CID(context),
9718 GLenumToString(GLenumGroup::TextureTarget, target));
9719
9720 if (context)
9721 {
9722 TextureType targetPacked = PackParam<TextureType>(target);
9723 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
9724 bool isCallValid = (context->skipValidation() ||
9725 ValidateGenerateMipmapOES(
9726 context, angle::EntryPoint::GLGenerateMipmapOES, targetPacked));
9727 if (isCallValid)
9728 {
9729 context->generateMipmap(targetPacked);
9730 }
9731 ANGLE_CAPTURE(GenerateMipmapOES, isCallValid, context, targetPacked);
9732 }
9733 else
9734 {
9735 GenerateContextLostErrorOnCurrentGlobalContext();
9736 }
9737 }
9738
GL_GetFramebufferAttachmentParameterivOES(GLenum target,GLenum attachment,GLenum pname,GLint * params)9739 void GL_APIENTRY GL_GetFramebufferAttachmentParameterivOES(GLenum target,
9740 GLenum attachment,
9741 GLenum pname,
9742 GLint *params)
9743 {
9744 Context *context = GetValidGlobalContext();
9745 EVENT(context, GLGetFramebufferAttachmentParameterivOES,
9746 "context = %d, target = %s, attachment = %s, pname = %s, params = 0x%016" PRIxPTR "",
9747 CID(context), GLenumToString(GLenumGroup::FramebufferTarget, target),
9748 GLenumToString(GLenumGroup::FramebufferAttachment, attachment),
9749 GLenumToString(GLenumGroup::FramebufferAttachmentParameterName, pname),
9750 (uintptr_t)params);
9751
9752 if (context)
9753 {
9754 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
9755 bool isCallValid =
9756 (context->skipValidation() ||
9757 ValidateGetFramebufferAttachmentParameterivOES(
9758 context, angle::EntryPoint::GLGetFramebufferAttachmentParameterivOES, target,
9759 attachment, pname, params));
9760 if (isCallValid)
9761 {
9762 context->getFramebufferAttachmentParameteriv(target, attachment, pname, params);
9763 }
9764 ANGLE_CAPTURE(GetFramebufferAttachmentParameterivOES, isCallValid, context, target,
9765 attachment, pname, params);
9766 }
9767 else
9768 {
9769 GenerateContextLostErrorOnCurrentGlobalContext();
9770 }
9771 }
9772
GL_GetRenderbufferParameterivOES(GLenum target,GLenum pname,GLint * params)9773 void GL_APIENTRY GL_GetRenderbufferParameterivOES(GLenum target, GLenum pname, GLint *params)
9774 {
9775 Context *context = GetValidGlobalContext();
9776 EVENT(context, GLGetRenderbufferParameterivOES,
9777 "context = %d, target = %s, pname = %s, params = 0x%016" PRIxPTR "", CID(context),
9778 GLenumToString(GLenumGroup::RenderbufferTarget, target),
9779 GLenumToString(GLenumGroup::RenderbufferParameterName, pname), (uintptr_t)params);
9780
9781 if (context)
9782 {
9783 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
9784 bool isCallValid = (context->skipValidation() ||
9785 ValidateGetRenderbufferParameterivOES(
9786 context, angle::EntryPoint::GLGetRenderbufferParameterivOES, target,
9787 pname, params));
9788 if (isCallValid)
9789 {
9790 context->getRenderbufferParameteriv(target, pname, params);
9791 }
9792 ANGLE_CAPTURE(GetRenderbufferParameterivOES, isCallValid, context, target, pname, params);
9793 }
9794 else
9795 {
9796 GenerateContextLostErrorOnCurrentGlobalContext();
9797 }
9798 }
9799
GL_IsFramebufferOES(GLuint framebuffer)9800 GLboolean GL_APIENTRY GL_IsFramebufferOES(GLuint framebuffer)
9801 {
9802 Context *context = GetValidGlobalContext();
9803 EVENT(context, GLIsFramebufferOES, "context = %d, framebuffer = %u", CID(context), framebuffer);
9804
9805 GLboolean returnValue;
9806 if (context)
9807 {
9808 FramebufferID framebufferPacked = PackParam<FramebufferID>(framebuffer);
9809 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
9810 bool isCallValid = (context->skipValidation() ||
9811 ValidateIsFramebufferOES(context, angle::EntryPoint::GLIsFramebufferOES,
9812 framebufferPacked));
9813 if (isCallValid)
9814 {
9815 returnValue = context->isFramebuffer(framebufferPacked);
9816 }
9817 else
9818 {
9819 returnValue = GetDefaultReturnValue<angle::EntryPoint::GLIsFramebufferOES, GLboolean>();
9820 }
9821 ANGLE_CAPTURE(IsFramebufferOES, isCallValid, context, framebufferPacked, returnValue);
9822 }
9823 else
9824 {
9825 GenerateContextLostErrorOnCurrentGlobalContext();
9826 returnValue = GetDefaultReturnValue<angle::EntryPoint::GLIsFramebufferOES, GLboolean>();
9827 }
9828 return returnValue;
9829 }
9830
GL_IsRenderbufferOES(GLuint renderbuffer)9831 GLboolean GL_APIENTRY GL_IsRenderbufferOES(GLuint renderbuffer)
9832 {
9833 Context *context = GetValidGlobalContext();
9834 EVENT(context, GLIsRenderbufferOES, "context = %d, renderbuffer = %u", CID(context),
9835 renderbuffer);
9836
9837 GLboolean returnValue;
9838 if (context)
9839 {
9840 RenderbufferID renderbufferPacked = PackParam<RenderbufferID>(renderbuffer);
9841 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
9842 bool isCallValid =
9843 (context->skipValidation() ||
9844 ValidateIsRenderbufferOES(context, angle::EntryPoint::GLIsRenderbufferOES,
9845 renderbufferPacked));
9846 if (isCallValid)
9847 {
9848 returnValue = context->isRenderbuffer(renderbufferPacked);
9849 }
9850 else
9851 {
9852 returnValue =
9853 GetDefaultReturnValue<angle::EntryPoint::GLIsRenderbufferOES, GLboolean>();
9854 }
9855 ANGLE_CAPTURE(IsRenderbufferOES, isCallValid, context, renderbufferPacked, returnValue);
9856 }
9857 else
9858 {
9859 GenerateContextLostErrorOnCurrentGlobalContext();
9860 returnValue = GetDefaultReturnValue<angle::EntryPoint::GLIsRenderbufferOES, GLboolean>();
9861 }
9862 return returnValue;
9863 }
9864
GL_RenderbufferStorageOES(GLenum target,GLenum internalformat,GLsizei width,GLsizei height)9865 void GL_APIENTRY GL_RenderbufferStorageOES(GLenum target,
9866 GLenum internalformat,
9867 GLsizei width,
9868 GLsizei height)
9869 {
9870 Context *context = GetValidGlobalContext();
9871 EVENT(context, GLRenderbufferStorageOES,
9872 "context = %d, target = %s, internalformat = %s, width = %d, height = %d", CID(context),
9873 GLenumToString(GLenumGroup::RenderbufferTarget, target),
9874 GLenumToString(GLenumGroup::InternalFormat, internalformat), width, height);
9875
9876 if (context)
9877 {
9878 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
9879 bool isCallValid =
9880 (context->skipValidation() ||
9881 ValidateRenderbufferStorageOES(context, angle::EntryPoint::GLRenderbufferStorageOES,
9882 target, internalformat, width, height));
9883 if (isCallValid)
9884 {
9885 context->renderbufferStorage(target, internalformat, width, height);
9886 }
9887 ANGLE_CAPTURE(RenderbufferStorageOES, isCallValid, context, target, internalformat, width,
9888 height);
9889 }
9890 else
9891 {
9892 GenerateContextLostErrorOnCurrentGlobalContext();
9893 }
9894 }
9895
9896 // GL_OES_geometry_shader
GL_FramebufferTextureOES(GLenum target,GLenum attachment,GLuint texture,GLint level)9897 void GL_APIENTRY GL_FramebufferTextureOES(GLenum target,
9898 GLenum attachment,
9899 GLuint texture,
9900 GLint level)
9901 {
9902 Context *context = GetValidGlobalContext();
9903 EVENT(context, GLFramebufferTextureOES,
9904 "context = %d, target = %s, attachment = %s, texture = %u, level = %d", CID(context),
9905 GLenumToString(GLenumGroup::FramebufferTarget, target),
9906 GLenumToString(GLenumGroup::FramebufferAttachment, attachment), texture, level);
9907
9908 if (context)
9909 {
9910 TextureID texturePacked = PackParam<TextureID>(texture);
9911 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
9912 bool isCallValid =
9913 (context->skipValidation() ||
9914 ValidateFramebufferTextureOES(context, angle::EntryPoint::GLFramebufferTextureOES,
9915 target, attachment, texturePacked, level));
9916 if (isCallValid)
9917 {
9918 context->framebufferTexture(target, attachment, texturePacked, level);
9919 }
9920 ANGLE_CAPTURE(FramebufferTextureOES, isCallValid, context, target, attachment,
9921 texturePacked, level);
9922 }
9923 else
9924 {
9925 GenerateContextLostErrorOnCurrentGlobalContext();
9926 }
9927 }
9928
9929 // GL_OES_get_program_binary
GL_GetProgramBinaryOES(GLuint program,GLsizei bufSize,GLsizei * length,GLenum * binaryFormat,void * binary)9930 void GL_APIENTRY GL_GetProgramBinaryOES(GLuint program,
9931 GLsizei bufSize,
9932 GLsizei *length,
9933 GLenum *binaryFormat,
9934 void *binary)
9935 {
9936 Context *context = GetValidGlobalContext();
9937 EVENT(context, GLGetProgramBinaryOES,
9938 "context = %d, program = %u, bufSize = %d, length = 0x%016" PRIxPTR
9939 ", binaryFormat = 0x%016" PRIxPTR ", binary = 0x%016" PRIxPTR "",
9940 CID(context), program, bufSize, (uintptr_t)length, (uintptr_t)binaryFormat,
9941 (uintptr_t)binary);
9942
9943 if (context)
9944 {
9945 ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);
9946 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
9947 bool isCallValid =
9948 (context->skipValidation() ||
9949 ValidateGetProgramBinaryOES(context, angle::EntryPoint::GLGetProgramBinaryOES,
9950 programPacked, bufSize, length, binaryFormat, binary));
9951 if (isCallValid)
9952 {
9953 context->getProgramBinary(programPacked, bufSize, length, binaryFormat, binary);
9954 }
9955 ANGLE_CAPTURE(GetProgramBinaryOES, isCallValid, context, programPacked, bufSize, length,
9956 binaryFormat, binary);
9957 }
9958 else
9959 {
9960 GenerateContextLostErrorOnCurrentGlobalContext();
9961 }
9962 }
9963
GL_ProgramBinaryOES(GLuint program,GLenum binaryFormat,const void * binary,GLint length)9964 void GL_APIENTRY GL_ProgramBinaryOES(GLuint program,
9965 GLenum binaryFormat,
9966 const void *binary,
9967 GLint length)
9968 {
9969 Context *context = GetValidGlobalContext();
9970 EVENT(context, GLProgramBinaryOES,
9971 "context = %d, program = %u, binaryFormat = %s, binary = 0x%016" PRIxPTR ", length = %d",
9972 CID(context), program, GLenumToString(GLenumGroup::DefaultGroup, binaryFormat),
9973 (uintptr_t)binary, length);
9974
9975 if (context)
9976 {
9977 ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);
9978 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
9979 bool isCallValid = (context->skipValidation() ||
9980 ValidateProgramBinaryOES(context, angle::EntryPoint::GLProgramBinaryOES,
9981 programPacked, binaryFormat, binary, length));
9982 if (isCallValid)
9983 {
9984 context->programBinary(programPacked, binaryFormat, binary, length);
9985 }
9986 ANGLE_CAPTURE(ProgramBinaryOES, isCallValid, context, programPacked, binaryFormat, binary,
9987 length);
9988 }
9989 else
9990 {
9991 GenerateContextLostErrorOnCurrentGlobalContext();
9992 }
9993 }
9994
9995 // GL_OES_mapbuffer
GL_GetBufferPointervOES(GLenum target,GLenum pname,void ** params)9996 void GL_APIENTRY GL_GetBufferPointervOES(GLenum target, GLenum pname, void **params)
9997 {
9998 Context *context = GetValidGlobalContext();
9999 EVENT(context, GLGetBufferPointervOES,
10000 "context = %d, target = %s, pname = %s, params = 0x%016" PRIxPTR "", CID(context),
10001 GLenumToString(GLenumGroup::BufferTargetARB, target),
10002 GLenumToString(GLenumGroup::DefaultGroup, pname), (uintptr_t)params);
10003
10004 if (context)
10005 {
10006 BufferBinding targetPacked = PackParam<BufferBinding>(target);
10007 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
10008 bool isCallValid =
10009 (context->skipValidation() ||
10010 ValidateGetBufferPointervOES(context, angle::EntryPoint::GLGetBufferPointervOES,
10011 targetPacked, pname, params));
10012 if (isCallValid)
10013 {
10014 context->getBufferPointerv(targetPacked, pname, params);
10015 }
10016 ANGLE_CAPTURE(GetBufferPointervOES, isCallValid, context, targetPacked, pname, params);
10017 }
10018 else
10019 {
10020 GenerateContextLostErrorOnCurrentGlobalContext();
10021 }
10022 }
10023
GL_MapBufferOES(GLenum target,GLenum access)10024 void *GL_APIENTRY GL_MapBufferOES(GLenum target, GLenum access)
10025 {
10026 Context *context = GetValidGlobalContext();
10027 EVENT(context, GLMapBufferOES, "context = %d, target = %s, access = %s", CID(context),
10028 GLenumToString(GLenumGroup::BufferTargetARB, target),
10029 GLenumToString(GLenumGroup::BufferAccessARB, access));
10030
10031 void *returnValue;
10032 if (context)
10033 {
10034 BufferBinding targetPacked = PackParam<BufferBinding>(target);
10035 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
10036 bool isCallValid = (context->skipValidation() ||
10037 ValidateMapBufferOES(context, angle::EntryPoint::GLMapBufferOES,
10038 targetPacked, access));
10039 if (isCallValid)
10040 {
10041 returnValue = context->mapBuffer(targetPacked, access);
10042 }
10043 else
10044 {
10045 returnValue = GetDefaultReturnValue<angle::EntryPoint::GLMapBufferOES, void *>();
10046 }
10047 ANGLE_CAPTURE(MapBufferOES, isCallValid, context, targetPacked, access, returnValue);
10048 }
10049 else
10050 {
10051 GenerateContextLostErrorOnCurrentGlobalContext();
10052 returnValue = GetDefaultReturnValue<angle::EntryPoint::GLMapBufferOES, void *>();
10053 }
10054 return returnValue;
10055 }
10056
GL_UnmapBufferOES(GLenum target)10057 GLboolean GL_APIENTRY GL_UnmapBufferOES(GLenum target)
10058 {
10059 Context *context = GetValidGlobalContext();
10060 EVENT(context, GLUnmapBufferOES, "context = %d, target = %s", CID(context),
10061 GLenumToString(GLenumGroup::DefaultGroup, target));
10062
10063 GLboolean returnValue;
10064 if (context)
10065 {
10066 BufferBinding targetPacked = PackParam<BufferBinding>(target);
10067 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
10068 bool isCallValid =
10069 (context->skipValidation() ||
10070 ValidateUnmapBufferOES(context, angle::EntryPoint::GLUnmapBufferOES, targetPacked));
10071 if (isCallValid)
10072 {
10073 returnValue = context->unmapBuffer(targetPacked);
10074 }
10075 else
10076 {
10077 returnValue = GetDefaultReturnValue<angle::EntryPoint::GLUnmapBufferOES, GLboolean>();
10078 }
10079 ANGLE_CAPTURE(UnmapBufferOES, isCallValid, context, targetPacked, returnValue);
10080 }
10081 else
10082 {
10083 GenerateContextLostErrorOnCurrentGlobalContext();
10084 returnValue = GetDefaultReturnValue<angle::EntryPoint::GLUnmapBufferOES, GLboolean>();
10085 }
10086 return returnValue;
10087 }
10088
10089 // GL_OES_matrix_palette
GL_CurrentPaletteMatrixOES(GLuint matrixpaletteindex)10090 void GL_APIENTRY GL_CurrentPaletteMatrixOES(GLuint matrixpaletteindex)
10091 {
10092 Context *context = GetValidGlobalContext();
10093 EVENT(context, GLCurrentPaletteMatrixOES, "context = %d, matrixpaletteindex = %u", CID(context),
10094 matrixpaletteindex);
10095
10096 if (context)
10097 {
10098 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
10099 bool isCallValid =
10100 (context->skipValidation() ||
10101 ValidateCurrentPaletteMatrixOES(context, angle::EntryPoint::GLCurrentPaletteMatrixOES,
10102 matrixpaletteindex));
10103 if (isCallValid)
10104 {
10105 context->currentPaletteMatrix(matrixpaletteindex);
10106 }
10107 ANGLE_CAPTURE(CurrentPaletteMatrixOES, isCallValid, context, matrixpaletteindex);
10108 }
10109 else
10110 {
10111 GenerateContextLostErrorOnCurrentGlobalContext();
10112 }
10113 }
10114
GL_LoadPaletteFromModelViewMatrixOES()10115 void GL_APIENTRY GL_LoadPaletteFromModelViewMatrixOES()
10116 {
10117 Context *context = GetValidGlobalContext();
10118 EVENT(context, GLLoadPaletteFromModelViewMatrixOES, "context = %d", CID(context));
10119
10120 if (context)
10121 {
10122 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
10123 bool isCallValid = (context->skipValidation() ||
10124 ValidateLoadPaletteFromModelViewMatrixOES(
10125 context, angle::EntryPoint::GLLoadPaletteFromModelViewMatrixOES));
10126 if (isCallValid)
10127 {
10128 context->loadPaletteFromModelViewMatrix();
10129 }
10130 ANGLE_CAPTURE(LoadPaletteFromModelViewMatrixOES, isCallValid, context);
10131 }
10132 else
10133 {
10134 GenerateContextLostErrorOnCurrentGlobalContext();
10135 }
10136 }
10137
GL_MatrixIndexPointerOES(GLint size,GLenum type,GLsizei stride,const void * pointer)10138 void GL_APIENTRY GL_MatrixIndexPointerOES(GLint size,
10139 GLenum type,
10140 GLsizei stride,
10141 const void *pointer)
10142 {
10143 Context *context = GetValidGlobalContext();
10144 EVENT(context, GLMatrixIndexPointerOES,
10145 "context = %d, size = %d, type = %s, stride = %d, pointer = 0x%016" PRIxPTR "",
10146 CID(context), size, GLenumToString(GLenumGroup::DefaultGroup, type), stride,
10147 (uintptr_t)pointer);
10148
10149 if (context)
10150 {
10151 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
10152 bool isCallValid =
10153 (context->skipValidation() ||
10154 ValidateMatrixIndexPointerOES(context, angle::EntryPoint::GLMatrixIndexPointerOES,
10155 size, type, stride, pointer));
10156 if (isCallValid)
10157 {
10158 context->matrixIndexPointer(size, type, stride, pointer);
10159 }
10160 ANGLE_CAPTURE(MatrixIndexPointerOES, isCallValid, context, size, type, stride, pointer);
10161 }
10162 else
10163 {
10164 GenerateContextLostErrorOnCurrentGlobalContext();
10165 }
10166 }
10167
GL_WeightPointerOES(GLint size,GLenum type,GLsizei stride,const void * pointer)10168 void GL_APIENTRY GL_WeightPointerOES(GLint size, GLenum type, GLsizei stride, const void *pointer)
10169 {
10170 Context *context = GetValidGlobalContext();
10171 EVENT(context, GLWeightPointerOES,
10172 "context = %d, size = %d, type = %s, stride = %d, pointer = 0x%016" PRIxPTR "",
10173 CID(context), size, GLenumToString(GLenumGroup::DefaultGroup, type), stride,
10174 (uintptr_t)pointer);
10175
10176 if (context)
10177 {
10178 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
10179 bool isCallValid = (context->skipValidation() ||
10180 ValidateWeightPointerOES(context, angle::EntryPoint::GLWeightPointerOES,
10181 size, type, stride, pointer));
10182 if (isCallValid)
10183 {
10184 context->weightPointer(size, type, stride, pointer);
10185 }
10186 ANGLE_CAPTURE(WeightPointerOES, isCallValid, context, size, type, stride, pointer);
10187 }
10188 else
10189 {
10190 GenerateContextLostErrorOnCurrentGlobalContext();
10191 }
10192 }
10193
10194 // GL_OES_packed_depth_stencil
10195
10196 // GL_OES_point_size_array
GL_PointSizePointerOES(GLenum type,GLsizei stride,const void * pointer)10197 void GL_APIENTRY GL_PointSizePointerOES(GLenum type, GLsizei stride, const void *pointer)
10198 {
10199 Context *context = GetValidGlobalContext();
10200 EVENT(context, GLPointSizePointerOES,
10201 "context = %d, type = %s, stride = %d, pointer = 0x%016" PRIxPTR "", CID(context),
10202 GLenumToString(GLenumGroup::DefaultGroup, type), stride, (uintptr_t)pointer);
10203
10204 if (context)
10205 {
10206 VertexAttribType typePacked = PackParam<VertexAttribType>(type);
10207 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
10208 bool isCallValid =
10209 (context->skipValidation() ||
10210 ValidatePointSizePointerOES(context, angle::EntryPoint::GLPointSizePointerOES,
10211 typePacked, stride, pointer));
10212 if (isCallValid)
10213 {
10214 context->pointSizePointer(typePacked, stride, pointer);
10215 }
10216 ANGLE_CAPTURE(PointSizePointerOES, isCallValid, context, typePacked, stride, pointer);
10217 }
10218 else
10219 {
10220 GenerateContextLostErrorOnCurrentGlobalContext();
10221 }
10222 }
10223
10224 // GL_OES_point_sprite
10225
10226 // GL_OES_query_matrix
GL_QueryMatrixxOES(GLfixed * mantissa,GLint * exponent)10227 GLbitfield GL_APIENTRY GL_QueryMatrixxOES(GLfixed *mantissa, GLint *exponent)
10228 {
10229 Context *context = GetValidGlobalContext();
10230 EVENT(context, GLQueryMatrixxOES,
10231 "context = %d, mantissa = 0x%016" PRIxPTR ", exponent = 0x%016" PRIxPTR "", CID(context),
10232 (uintptr_t)mantissa, (uintptr_t)exponent);
10233
10234 GLbitfield returnValue;
10235 if (context)
10236 {
10237 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
10238 bool isCallValid = (context->skipValidation() ||
10239 ValidateQueryMatrixxOES(context, angle::EntryPoint::GLQueryMatrixxOES,
10240 mantissa, exponent));
10241 if (isCallValid)
10242 {
10243 returnValue = context->queryMatrixx(mantissa, exponent);
10244 }
10245 else
10246 {
10247 returnValue = GetDefaultReturnValue<angle::EntryPoint::GLQueryMatrixxOES, GLbitfield>();
10248 }
10249 ANGLE_CAPTURE(QueryMatrixxOES, isCallValid, context, mantissa, exponent, returnValue);
10250 }
10251 else
10252 {
10253 GenerateContextLostErrorOnCurrentGlobalContext();
10254 returnValue = GetDefaultReturnValue<angle::EntryPoint::GLQueryMatrixxOES, GLbitfield>();
10255 }
10256 return returnValue;
10257 }
10258
10259 // GL_OES_rgb8_rgba8
10260
10261 // GL_OES_sample_shading
GL_MinSampleShadingOES(GLfloat value)10262 void GL_APIENTRY GL_MinSampleShadingOES(GLfloat value)
10263 {
10264 Context *context = GetValidGlobalContext();
10265 EVENT(context, GLMinSampleShadingOES, "context = %d, value = %f", CID(context), value);
10266
10267 if (context)
10268 {
10269 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
10270 bool isCallValid =
10271 (context->skipValidation() ||
10272 ValidateMinSampleShadingOES(context, angle::EntryPoint::GLMinSampleShadingOES, value));
10273 if (isCallValid)
10274 {
10275 context->minSampleShading(value);
10276 }
10277 ANGLE_CAPTURE(MinSampleShadingOES, isCallValid, context, value);
10278 }
10279 else
10280 {
10281 GenerateContextLostErrorOnCurrentGlobalContext();
10282 }
10283 }
10284
10285 // GL_OES_sample_variables
10286
10287 // GL_OES_shader_image_atomic
10288
10289 // GL_OES_shader_io_blocks
10290
10291 // GL_OES_shader_multisample_interpolation
10292
10293 // GL_OES_standard_derivatives
10294
10295 // GL_OES_surfaceless_context
10296
10297 // GL_OES_texture_3D
GL_CompressedTexImage3DOES(GLenum target,GLint level,GLenum internalformat,GLsizei width,GLsizei height,GLsizei depth,GLint border,GLsizei imageSize,const void * data)10298 void GL_APIENTRY GL_CompressedTexImage3DOES(GLenum target,
10299 GLint level,
10300 GLenum internalformat,
10301 GLsizei width,
10302 GLsizei height,
10303 GLsizei depth,
10304 GLint border,
10305 GLsizei imageSize,
10306 const void *data)
10307 {
10308 Context *context = GetValidGlobalContext();
10309 EVENT(context, GLCompressedTexImage3DOES,
10310 "context = %d, target = %s, level = %d, internalformat = %s, width = %d, height = %d, "
10311 "depth = %d, border = %d, imageSize = %d, data = 0x%016" PRIxPTR "",
10312 CID(context), GLenumToString(GLenumGroup::TextureTarget, target), level,
10313 GLenumToString(GLenumGroup::InternalFormat, internalformat), width, height, depth, border,
10314 imageSize, (uintptr_t)data);
10315
10316 if (context)
10317 {
10318 TextureTarget targetPacked = PackParam<TextureTarget>(target);
10319 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
10320 bool isCallValid =
10321 (context->skipValidation() ||
10322 ValidateCompressedTexImage3DOES(context, angle::EntryPoint::GLCompressedTexImage3DOES,
10323 targetPacked, level, internalformat, width, height,
10324 depth, border, imageSize, data));
10325 if (isCallValid)
10326 {
10327 context->compressedTexImage3D(targetPacked, level, internalformat, width, height, depth,
10328 border, imageSize, data);
10329 }
10330 ANGLE_CAPTURE(CompressedTexImage3DOES, isCallValid, context, targetPacked, level,
10331 internalformat, width, height, depth, border, imageSize, data);
10332 }
10333 else
10334 {
10335 GenerateContextLostErrorOnCurrentGlobalContext();
10336 }
10337 }
10338
GL_CompressedTexSubImage3DOES(GLenum target,GLint level,GLint xoffset,GLint yoffset,GLint zoffset,GLsizei width,GLsizei height,GLsizei depth,GLenum format,GLsizei imageSize,const void * data)10339 void GL_APIENTRY GL_CompressedTexSubImage3DOES(GLenum target,
10340 GLint level,
10341 GLint xoffset,
10342 GLint yoffset,
10343 GLint zoffset,
10344 GLsizei width,
10345 GLsizei height,
10346 GLsizei depth,
10347 GLenum format,
10348 GLsizei imageSize,
10349 const void *data)
10350 {
10351 Context *context = GetValidGlobalContext();
10352 EVENT(context, GLCompressedTexSubImage3DOES,
10353 "context = %d, target = %s, level = %d, xoffset = %d, yoffset = %d, zoffset = %d, width "
10354 "= %d, height = %d, depth = %d, format = %s, imageSize = %d, data = 0x%016" PRIxPTR "",
10355 CID(context), GLenumToString(GLenumGroup::TextureTarget, target), level, xoffset, yoffset,
10356 zoffset, width, height, depth, GLenumToString(GLenumGroup::PixelFormat, format),
10357 imageSize, (uintptr_t)data);
10358
10359 if (context)
10360 {
10361 TextureTarget targetPacked = PackParam<TextureTarget>(target);
10362 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
10363 bool isCallValid =
10364 (context->skipValidation() ||
10365 ValidateCompressedTexSubImage3DOES(
10366 context, angle::EntryPoint::GLCompressedTexSubImage3DOES, targetPacked, level,
10367 xoffset, yoffset, zoffset, width, height, depth, format, imageSize, data));
10368 if (isCallValid)
10369 {
10370 context->compressedTexSubImage3D(targetPacked, level, xoffset, yoffset, zoffset, width,
10371 height, depth, format, imageSize, data);
10372 }
10373 ANGLE_CAPTURE(CompressedTexSubImage3DOES, isCallValid, context, targetPacked, level,
10374 xoffset, yoffset, zoffset, width, height, depth, format, imageSize, data);
10375 }
10376 else
10377 {
10378 GenerateContextLostErrorOnCurrentGlobalContext();
10379 }
10380 }
10381
GL_CopyTexSubImage3DOES(GLenum target,GLint level,GLint xoffset,GLint yoffset,GLint zoffset,GLint x,GLint y,GLsizei width,GLsizei height)10382 void GL_APIENTRY GL_CopyTexSubImage3DOES(GLenum target,
10383 GLint level,
10384 GLint xoffset,
10385 GLint yoffset,
10386 GLint zoffset,
10387 GLint x,
10388 GLint y,
10389 GLsizei width,
10390 GLsizei height)
10391 {
10392 Context *context = GetValidGlobalContext();
10393 EVENT(context, GLCopyTexSubImage3DOES,
10394 "context = %d, target = %s, level = %d, xoffset = %d, yoffset = %d, zoffset = %d, x = "
10395 "%d, y = %d, width = %d, height = %d",
10396 CID(context), GLenumToString(GLenumGroup::DefaultGroup, target), level, xoffset, yoffset,
10397 zoffset, x, y, width, height);
10398
10399 if (context)
10400 {
10401 TextureTarget targetPacked = PackParam<TextureTarget>(target);
10402 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
10403 bool isCallValid = (context->skipValidation() ||
10404 ValidateCopyTexSubImage3DOES(
10405 context, angle::EntryPoint::GLCopyTexSubImage3DOES, targetPacked,
10406 level, xoffset, yoffset, zoffset, x, y, width, height));
10407 if (isCallValid)
10408 {
10409 context->copyTexSubImage3D(targetPacked, level, xoffset, yoffset, zoffset, x, y, width,
10410 height);
10411 }
10412 ANGLE_CAPTURE(CopyTexSubImage3DOES, isCallValid, context, targetPacked, level, xoffset,
10413 yoffset, zoffset, x, y, width, height);
10414 }
10415 else
10416 {
10417 GenerateContextLostErrorOnCurrentGlobalContext();
10418 }
10419 }
10420
GL_FramebufferTexture3DOES(GLenum target,GLenum attachment,GLenum textarget,GLuint texture,GLint level,GLint zoffset)10421 void GL_APIENTRY GL_FramebufferTexture3DOES(GLenum target,
10422 GLenum attachment,
10423 GLenum textarget,
10424 GLuint texture,
10425 GLint level,
10426 GLint zoffset)
10427 {
10428 Context *context = GetValidGlobalContext();
10429 EVENT(context, GLFramebufferTexture3DOES,
10430 "context = %d, target = %s, attachment = %s, textarget = %s, texture = %u, level = %d, "
10431 "zoffset = %d",
10432 CID(context), GLenumToString(GLenumGroup::FramebufferTarget, target),
10433 GLenumToString(GLenumGroup::FramebufferAttachment, attachment),
10434 GLenumToString(GLenumGroup::TextureTarget, textarget), texture, level, zoffset);
10435
10436 if (context)
10437 {
10438 TextureTarget textargetPacked = PackParam<TextureTarget>(textarget);
10439 TextureID texturePacked = PackParam<TextureID>(texture);
10440 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
10441 bool isCallValid = (context->skipValidation() ||
10442 ValidateFramebufferTexture3DOES(
10443 context, angle::EntryPoint::GLFramebufferTexture3DOES, target,
10444 attachment, textargetPacked, texturePacked, level, zoffset));
10445 if (isCallValid)
10446 {
10447 context->framebufferTexture3D(target, attachment, textargetPacked, texturePacked, level,
10448 zoffset);
10449 }
10450 ANGLE_CAPTURE(FramebufferTexture3DOES, isCallValid, context, target, attachment,
10451 textargetPacked, texturePacked, level, zoffset);
10452 }
10453 else
10454 {
10455 GenerateContextLostErrorOnCurrentGlobalContext();
10456 }
10457 }
10458
GL_TexImage3DOES(GLenum target,GLint level,GLenum internalformat,GLsizei width,GLsizei height,GLsizei depth,GLint border,GLenum format,GLenum type,const void * pixels)10459 void GL_APIENTRY GL_TexImage3DOES(GLenum target,
10460 GLint level,
10461 GLenum internalformat,
10462 GLsizei width,
10463 GLsizei height,
10464 GLsizei depth,
10465 GLint border,
10466 GLenum format,
10467 GLenum type,
10468 const void *pixels)
10469 {
10470 Context *context = GetValidGlobalContext();
10471 EVENT(context, GLTexImage3DOES,
10472 "context = %d, target = %s, level = %d, internalformat = %s, width = %d, height = %d, "
10473 "depth = %d, border = %d, format = %s, type = %s, pixels = 0x%016" PRIxPTR "",
10474 CID(context), GLenumToString(GLenumGroup::TextureTarget, target), level,
10475 GLenumToString(GLenumGroup::InternalFormat, internalformat), width, height, depth, border,
10476 GLenumToString(GLenumGroup::PixelFormat, format),
10477 GLenumToString(GLenumGroup::PixelType, type), (uintptr_t)pixels);
10478
10479 if (context)
10480 {
10481 TextureTarget targetPacked = PackParam<TextureTarget>(target);
10482 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
10483 bool isCallValid = (context->skipValidation() ||
10484 ValidateTexImage3DOES(context, angle::EntryPoint::GLTexImage3DOES,
10485 targetPacked, level, internalformat, width,
10486 height, depth, border, format, type, pixels));
10487 if (isCallValid)
10488 {
10489 context->texImage3D(targetPacked, level, internalformat, width, height, depth, border,
10490 format, type, pixels);
10491 }
10492 ANGLE_CAPTURE(TexImage3DOES, isCallValid, context, targetPacked, level, internalformat,
10493 width, height, depth, border, format, type, pixels);
10494 }
10495 else
10496 {
10497 GenerateContextLostErrorOnCurrentGlobalContext();
10498 }
10499 }
10500
GL_TexSubImage3DOES(GLenum target,GLint level,GLint xoffset,GLint yoffset,GLint zoffset,GLsizei width,GLsizei height,GLsizei depth,GLenum format,GLenum type,const void * pixels)10501 void GL_APIENTRY GL_TexSubImage3DOES(GLenum target,
10502 GLint level,
10503 GLint xoffset,
10504 GLint yoffset,
10505 GLint zoffset,
10506 GLsizei width,
10507 GLsizei height,
10508 GLsizei depth,
10509 GLenum format,
10510 GLenum type,
10511 const void *pixels)
10512 {
10513 Context *context = GetValidGlobalContext();
10514 EVENT(context, GLTexSubImage3DOES,
10515 "context = %d, target = %s, level = %d, xoffset = %d, yoffset = %d, zoffset = %d, width "
10516 "= %d, height = %d, depth = %d, format = %s, type = %s, pixels = 0x%016" PRIxPTR "",
10517 CID(context), GLenumToString(GLenumGroup::TextureTarget, target), level, xoffset, yoffset,
10518 zoffset, width, height, depth, GLenumToString(GLenumGroup::PixelFormat, format),
10519 GLenumToString(GLenumGroup::PixelType, type), (uintptr_t)pixels);
10520
10521 if (context)
10522 {
10523 TextureTarget targetPacked = PackParam<TextureTarget>(target);
10524 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
10525 bool isCallValid = (context->skipValidation() ||
10526 ValidateTexSubImage3DOES(context, angle::EntryPoint::GLTexSubImage3DOES,
10527 targetPacked, level, xoffset, yoffset, zoffset,
10528 width, height, depth, format, type, pixels));
10529 if (isCallValid)
10530 {
10531 context->texSubImage3D(targetPacked, level, xoffset, yoffset, zoffset, width, height,
10532 depth, format, type, pixels);
10533 }
10534 ANGLE_CAPTURE(TexSubImage3DOES, isCallValid, context, targetPacked, level, xoffset, yoffset,
10535 zoffset, width, height, depth, format, type, pixels);
10536 }
10537 else
10538 {
10539 GenerateContextLostErrorOnCurrentGlobalContext();
10540 }
10541 }
10542
10543 // GL_OES_texture_border_clamp
GL_GetSamplerParameterIivOES(GLuint sampler,GLenum pname,GLint * params)10544 void GL_APIENTRY GL_GetSamplerParameterIivOES(GLuint sampler, GLenum pname, GLint *params)
10545 {
10546 Context *context = GetValidGlobalContext();
10547 EVENT(context, GLGetSamplerParameterIivOES,
10548 "context = %d, sampler = %u, pname = %s, params = 0x%016" PRIxPTR "", CID(context),
10549 sampler, GLenumToString(GLenumGroup::SamplerParameterName, pname), (uintptr_t)params);
10550
10551 if (context)
10552 {
10553 SamplerID samplerPacked = PackParam<SamplerID>(sampler);
10554 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
10555 bool isCallValid = (context->skipValidation() ||
10556 ValidateGetSamplerParameterIivOES(
10557 context, angle::EntryPoint::GLGetSamplerParameterIivOES,
10558 samplerPacked, pname, params));
10559 if (isCallValid)
10560 {
10561 context->getSamplerParameterIiv(samplerPacked, pname, params);
10562 }
10563 ANGLE_CAPTURE(GetSamplerParameterIivOES, isCallValid, context, samplerPacked, pname,
10564 params);
10565 }
10566 else
10567 {
10568 GenerateContextLostErrorOnCurrentGlobalContext();
10569 }
10570 }
10571
GL_GetSamplerParameterIuivOES(GLuint sampler,GLenum pname,GLuint * params)10572 void GL_APIENTRY GL_GetSamplerParameterIuivOES(GLuint sampler, GLenum pname, GLuint *params)
10573 {
10574 Context *context = GetValidGlobalContext();
10575 EVENT(context, GLGetSamplerParameterIuivOES,
10576 "context = %d, sampler = %u, pname = %s, params = 0x%016" PRIxPTR "", CID(context),
10577 sampler, GLenumToString(GLenumGroup::SamplerParameterName, pname), (uintptr_t)params);
10578
10579 if (context)
10580 {
10581 SamplerID samplerPacked = PackParam<SamplerID>(sampler);
10582 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
10583 bool isCallValid = (context->skipValidation() ||
10584 ValidateGetSamplerParameterIuivOES(
10585 context, angle::EntryPoint::GLGetSamplerParameterIuivOES,
10586 samplerPacked, pname, params));
10587 if (isCallValid)
10588 {
10589 context->getSamplerParameterIuiv(samplerPacked, pname, params);
10590 }
10591 ANGLE_CAPTURE(GetSamplerParameterIuivOES, isCallValid, context, samplerPacked, pname,
10592 params);
10593 }
10594 else
10595 {
10596 GenerateContextLostErrorOnCurrentGlobalContext();
10597 }
10598 }
10599
GL_GetTexParameterIivOES(GLenum target,GLenum pname,GLint * params)10600 void GL_APIENTRY GL_GetTexParameterIivOES(GLenum target, GLenum pname, GLint *params)
10601 {
10602 Context *context = GetValidGlobalContext();
10603 EVENT(context, GLGetTexParameterIivOES,
10604 "context = %d, target = %s, pname = %s, params = 0x%016" PRIxPTR "", CID(context),
10605 GLenumToString(GLenumGroup::TextureTarget, target),
10606 GLenumToString(GLenumGroup::GetTextureParameter, pname), (uintptr_t)params);
10607
10608 if (context)
10609 {
10610 TextureType targetPacked = PackParam<TextureType>(target);
10611 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
10612 bool isCallValid =
10613 (context->skipValidation() ||
10614 ValidateGetTexParameterIivOES(context, angle::EntryPoint::GLGetTexParameterIivOES,
10615 targetPacked, pname, params));
10616 if (isCallValid)
10617 {
10618 context->getTexParameterIiv(targetPacked, pname, params);
10619 }
10620 ANGLE_CAPTURE(GetTexParameterIivOES, isCallValid, context, targetPacked, pname, params);
10621 }
10622 else
10623 {
10624 GenerateContextLostErrorOnCurrentGlobalContext();
10625 }
10626 }
10627
GL_GetTexParameterIuivOES(GLenum target,GLenum pname,GLuint * params)10628 void GL_APIENTRY GL_GetTexParameterIuivOES(GLenum target, GLenum pname, GLuint *params)
10629 {
10630 Context *context = GetValidGlobalContext();
10631 EVENT(context, GLGetTexParameterIuivOES,
10632 "context = %d, target = %s, pname = %s, params = 0x%016" PRIxPTR "", CID(context),
10633 GLenumToString(GLenumGroup::TextureTarget, target),
10634 GLenumToString(GLenumGroup::GetTextureParameter, pname), (uintptr_t)params);
10635
10636 if (context)
10637 {
10638 TextureType targetPacked = PackParam<TextureType>(target);
10639 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
10640 bool isCallValid =
10641 (context->skipValidation() ||
10642 ValidateGetTexParameterIuivOES(context, angle::EntryPoint::GLGetTexParameterIuivOES,
10643 targetPacked, pname, params));
10644 if (isCallValid)
10645 {
10646 context->getTexParameterIuiv(targetPacked, pname, params);
10647 }
10648 ANGLE_CAPTURE(GetTexParameterIuivOES, isCallValid, context, targetPacked, pname, params);
10649 }
10650 else
10651 {
10652 GenerateContextLostErrorOnCurrentGlobalContext();
10653 }
10654 }
10655
GL_SamplerParameterIivOES(GLuint sampler,GLenum pname,const GLint * param)10656 void GL_APIENTRY GL_SamplerParameterIivOES(GLuint sampler, GLenum pname, const GLint *param)
10657 {
10658 Context *context = GetValidGlobalContext();
10659 EVENT(context, GLSamplerParameterIivOES,
10660 "context = %d, sampler = %u, pname = %s, param = 0x%016" PRIxPTR "", CID(context),
10661 sampler, GLenumToString(GLenumGroup::SamplerParameterName, pname), (uintptr_t)param);
10662
10663 if (context)
10664 {
10665 SamplerID samplerPacked = PackParam<SamplerID>(sampler);
10666 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
10667 bool isCallValid =
10668 (context->skipValidation() ||
10669 ValidateSamplerParameterIivOES(context, angle::EntryPoint::GLSamplerParameterIivOES,
10670 samplerPacked, pname, param));
10671 if (isCallValid)
10672 {
10673 context->samplerParameterIiv(samplerPacked, pname, param);
10674 }
10675 ANGLE_CAPTURE(SamplerParameterIivOES, isCallValid, context, samplerPacked, pname, param);
10676 }
10677 else
10678 {
10679 GenerateContextLostErrorOnCurrentGlobalContext();
10680 }
10681 }
10682
GL_SamplerParameterIuivOES(GLuint sampler,GLenum pname,const GLuint * param)10683 void GL_APIENTRY GL_SamplerParameterIuivOES(GLuint sampler, GLenum pname, const GLuint *param)
10684 {
10685 Context *context = GetValidGlobalContext();
10686 EVENT(context, GLSamplerParameterIuivOES,
10687 "context = %d, sampler = %u, pname = %s, param = 0x%016" PRIxPTR "", CID(context),
10688 sampler, GLenumToString(GLenumGroup::SamplerParameterName, pname), (uintptr_t)param);
10689
10690 if (context)
10691 {
10692 SamplerID samplerPacked = PackParam<SamplerID>(sampler);
10693 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
10694 bool isCallValid =
10695 (context->skipValidation() ||
10696 ValidateSamplerParameterIuivOES(context, angle::EntryPoint::GLSamplerParameterIuivOES,
10697 samplerPacked, pname, param));
10698 if (isCallValid)
10699 {
10700 context->samplerParameterIuiv(samplerPacked, pname, param);
10701 }
10702 ANGLE_CAPTURE(SamplerParameterIuivOES, isCallValid, context, samplerPacked, pname, param);
10703 }
10704 else
10705 {
10706 GenerateContextLostErrorOnCurrentGlobalContext();
10707 }
10708 }
10709
GL_TexParameterIivOES(GLenum target,GLenum pname,const GLint * params)10710 void GL_APIENTRY GL_TexParameterIivOES(GLenum target, GLenum pname, const GLint *params)
10711 {
10712 Context *context = GetValidGlobalContext();
10713 EVENT(context, GLTexParameterIivOES,
10714 "context = %d, target = %s, pname = %s, params = 0x%016" PRIxPTR "", CID(context),
10715 GLenumToString(GLenumGroup::TextureTarget, target),
10716 GLenumToString(GLenumGroup::TextureParameterName, pname), (uintptr_t)params);
10717
10718 if (context)
10719 {
10720 TextureType targetPacked = PackParam<TextureType>(target);
10721 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
10722 bool isCallValid =
10723 (context->skipValidation() ||
10724 ValidateTexParameterIivOES(context, angle::EntryPoint::GLTexParameterIivOES,
10725 targetPacked, pname, params));
10726 if (isCallValid)
10727 {
10728 context->texParameterIiv(targetPacked, pname, params);
10729 }
10730 ANGLE_CAPTURE(TexParameterIivOES, isCallValid, context, targetPacked, pname, params);
10731 }
10732 else
10733 {
10734 GenerateContextLostErrorOnCurrentGlobalContext();
10735 }
10736 }
10737
GL_TexParameterIuivOES(GLenum target,GLenum pname,const GLuint * params)10738 void GL_APIENTRY GL_TexParameterIuivOES(GLenum target, GLenum pname, const GLuint *params)
10739 {
10740 Context *context = GetValidGlobalContext();
10741 EVENT(context, GLTexParameterIuivOES,
10742 "context = %d, target = %s, pname = %s, params = 0x%016" PRIxPTR "", CID(context),
10743 GLenumToString(GLenumGroup::TextureTarget, target),
10744 GLenumToString(GLenumGroup::TextureParameterName, pname), (uintptr_t)params);
10745
10746 if (context)
10747 {
10748 TextureType targetPacked = PackParam<TextureType>(target);
10749 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
10750 bool isCallValid =
10751 (context->skipValidation() ||
10752 ValidateTexParameterIuivOES(context, angle::EntryPoint::GLTexParameterIuivOES,
10753 targetPacked, pname, params));
10754 if (isCallValid)
10755 {
10756 context->texParameterIuiv(targetPacked, pname, params);
10757 }
10758 ANGLE_CAPTURE(TexParameterIuivOES, isCallValid, context, targetPacked, pname, params);
10759 }
10760 else
10761 {
10762 GenerateContextLostErrorOnCurrentGlobalContext();
10763 }
10764 }
10765
10766 // GL_OES_texture_buffer
GL_TexBufferOES(GLenum target,GLenum internalformat,GLuint buffer)10767 void GL_APIENTRY GL_TexBufferOES(GLenum target, GLenum internalformat, GLuint buffer)
10768 {
10769 Context *context = GetValidGlobalContext();
10770 EVENT(context, GLTexBufferOES, "context = %d, target = %s, internalformat = %s, buffer = %u",
10771 CID(context), GLenumToString(GLenumGroup::TextureTarget, target),
10772 GLenumToString(GLenumGroup::InternalFormat, internalformat), buffer);
10773
10774 if (context)
10775 {
10776 TextureType targetPacked = PackParam<TextureType>(target);
10777 BufferID bufferPacked = PackParam<BufferID>(buffer);
10778 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
10779 bool isCallValid = (context->skipValidation() ||
10780 ValidateTexBufferOES(context, angle::EntryPoint::GLTexBufferOES,
10781 targetPacked, internalformat, bufferPacked));
10782 if (isCallValid)
10783 {
10784 context->texBuffer(targetPacked, internalformat, bufferPacked);
10785 }
10786 ANGLE_CAPTURE(TexBufferOES, isCallValid, context, targetPacked, internalformat,
10787 bufferPacked);
10788 }
10789 else
10790 {
10791 GenerateContextLostErrorOnCurrentGlobalContext();
10792 }
10793 }
10794
GL_TexBufferRangeOES(GLenum target,GLenum internalformat,GLuint buffer,GLintptr offset,GLsizeiptr size)10795 void GL_APIENTRY GL_TexBufferRangeOES(GLenum target,
10796 GLenum internalformat,
10797 GLuint buffer,
10798 GLintptr offset,
10799 GLsizeiptr size)
10800 {
10801 Context *context = GetValidGlobalContext();
10802 EVENT(context, GLTexBufferRangeOES,
10803 "context = %d, target = %s, internalformat = %s, buffer = %u, offset = %llu, size = %llu",
10804 CID(context), GLenumToString(GLenumGroup::TextureTarget, target),
10805 GLenumToString(GLenumGroup::InternalFormat, internalformat), buffer,
10806 static_cast<unsigned long long>(offset), static_cast<unsigned long long>(size));
10807
10808 if (context)
10809 {
10810 TextureType targetPacked = PackParam<TextureType>(target);
10811 BufferID bufferPacked = PackParam<BufferID>(buffer);
10812 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
10813 bool isCallValid =
10814 (context->skipValidation() ||
10815 ValidateTexBufferRangeOES(context, angle::EntryPoint::GLTexBufferRangeOES,
10816 targetPacked, internalformat, bufferPacked, offset, size));
10817 if (isCallValid)
10818 {
10819 context->texBufferRange(targetPacked, internalformat, bufferPacked, offset, size);
10820 }
10821 ANGLE_CAPTURE(TexBufferRangeOES, isCallValid, context, targetPacked, internalformat,
10822 bufferPacked, offset, size);
10823 }
10824 else
10825 {
10826 GenerateContextLostErrorOnCurrentGlobalContext();
10827 }
10828 }
10829
10830 // GL_OES_texture_compression_astc
10831
10832 // GL_OES_texture_cube_map
GL_GetTexGenfvOES(GLenum coord,GLenum pname,GLfloat * params)10833 void GL_APIENTRY GL_GetTexGenfvOES(GLenum coord, GLenum pname, GLfloat *params)
10834 {
10835 Context *context = GetValidGlobalContext();
10836 EVENT(context, GLGetTexGenfvOES,
10837 "context = %d, coord = %s, pname = %s, params = 0x%016" PRIxPTR "", CID(context),
10838 GLenumToString(GLenumGroup::TextureCoordName, coord),
10839 GLenumToString(GLenumGroup::TextureGenParameter, pname), (uintptr_t)params);
10840
10841 if (context)
10842 {
10843 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
10844 bool isCallValid = (context->skipValidation() ||
10845 ValidateGetTexGenfvOES(context, angle::EntryPoint::GLGetTexGenfvOES,
10846 coord, pname, params));
10847 if (isCallValid)
10848 {
10849 context->getTexGenfv(coord, pname, params);
10850 }
10851 ANGLE_CAPTURE(GetTexGenfvOES, isCallValid, context, coord, pname, params);
10852 }
10853 else
10854 {
10855 GenerateContextLostErrorOnCurrentGlobalContext();
10856 }
10857 }
10858
GL_GetTexGenivOES(GLenum coord,GLenum pname,GLint * params)10859 void GL_APIENTRY GL_GetTexGenivOES(GLenum coord, GLenum pname, GLint *params)
10860 {
10861 Context *context = GetValidGlobalContext();
10862 EVENT(context, GLGetTexGenivOES,
10863 "context = %d, coord = %s, pname = %s, params = 0x%016" PRIxPTR "", CID(context),
10864 GLenumToString(GLenumGroup::TextureCoordName, coord),
10865 GLenumToString(GLenumGroup::TextureGenParameter, pname), (uintptr_t)params);
10866
10867 if (context)
10868 {
10869 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
10870 bool isCallValid = (context->skipValidation() ||
10871 ValidateGetTexGenivOES(context, angle::EntryPoint::GLGetTexGenivOES,
10872 coord, pname, params));
10873 if (isCallValid)
10874 {
10875 context->getTexGeniv(coord, pname, params);
10876 }
10877 ANGLE_CAPTURE(GetTexGenivOES, isCallValid, context, coord, pname, params);
10878 }
10879 else
10880 {
10881 GenerateContextLostErrorOnCurrentGlobalContext();
10882 }
10883 }
10884
GL_GetTexGenxvOES(GLenum coord,GLenum pname,GLfixed * params)10885 void GL_APIENTRY GL_GetTexGenxvOES(GLenum coord, GLenum pname, GLfixed *params)
10886 {
10887 Context *context = GetValidGlobalContext();
10888 EVENT(context, GLGetTexGenxvOES,
10889 "context = %d, coord = %s, pname = %s, params = 0x%016" PRIxPTR "", CID(context),
10890 GLenumToString(GLenumGroup::TextureCoordName, coord),
10891 GLenumToString(GLenumGroup::TextureGenParameter, pname), (uintptr_t)params);
10892
10893 if (context)
10894 {
10895 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
10896 bool isCallValid = (context->skipValidation() ||
10897 ValidateGetTexGenxvOES(context, angle::EntryPoint::GLGetTexGenxvOES,
10898 coord, pname, params));
10899 if (isCallValid)
10900 {
10901 context->getTexGenxv(coord, pname, params);
10902 }
10903 ANGLE_CAPTURE(GetTexGenxvOES, isCallValid, context, coord, pname, params);
10904 }
10905 else
10906 {
10907 GenerateContextLostErrorOnCurrentGlobalContext();
10908 }
10909 }
10910
GL_TexGenfOES(GLenum coord,GLenum pname,GLfloat param)10911 void GL_APIENTRY GL_TexGenfOES(GLenum coord, GLenum pname, GLfloat param)
10912 {
10913 Context *context = GetValidGlobalContext();
10914 EVENT(context, GLTexGenfOES, "context = %d, coord = %s, pname = %s, param = %f", CID(context),
10915 GLenumToString(GLenumGroup::TextureCoordName, coord),
10916 GLenumToString(GLenumGroup::TextureGenParameter, pname), param);
10917
10918 if (context)
10919 {
10920 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
10921 bool isCallValid =
10922 (context->skipValidation() ||
10923 ValidateTexGenfOES(context, angle::EntryPoint::GLTexGenfOES, coord, pname, param));
10924 if (isCallValid)
10925 {
10926 context->texGenf(coord, pname, param);
10927 }
10928 ANGLE_CAPTURE(TexGenfOES, isCallValid, context, coord, pname, param);
10929 }
10930 else
10931 {
10932 GenerateContextLostErrorOnCurrentGlobalContext();
10933 }
10934 }
10935
GL_TexGenfvOES(GLenum coord,GLenum pname,const GLfloat * params)10936 void GL_APIENTRY GL_TexGenfvOES(GLenum coord, GLenum pname, const GLfloat *params)
10937 {
10938 Context *context = GetValidGlobalContext();
10939 EVENT(context, GLTexGenfvOES,
10940 "context = %d, coord = %s, pname = %s, params = 0x%016" PRIxPTR "", CID(context),
10941 GLenumToString(GLenumGroup::TextureCoordName, coord),
10942 GLenumToString(GLenumGroup::TextureGenParameter, pname), (uintptr_t)params);
10943
10944 if (context)
10945 {
10946 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
10947 bool isCallValid =
10948 (context->skipValidation() ||
10949 ValidateTexGenfvOES(context, angle::EntryPoint::GLTexGenfvOES, coord, pname, params));
10950 if (isCallValid)
10951 {
10952 context->texGenfv(coord, pname, params);
10953 }
10954 ANGLE_CAPTURE(TexGenfvOES, isCallValid, context, coord, pname, params);
10955 }
10956 else
10957 {
10958 GenerateContextLostErrorOnCurrentGlobalContext();
10959 }
10960 }
10961
GL_TexGeniOES(GLenum coord,GLenum pname,GLint param)10962 void GL_APIENTRY GL_TexGeniOES(GLenum coord, GLenum pname, GLint param)
10963 {
10964 Context *context = GetValidGlobalContext();
10965 EVENT(context, GLTexGeniOES, "context = %d, coord = %s, pname = %s, param = %d", CID(context),
10966 GLenumToString(GLenumGroup::TextureCoordName, coord),
10967 GLenumToString(GLenumGroup::TextureGenParameter, pname), param);
10968
10969 if (context)
10970 {
10971 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
10972 bool isCallValid =
10973 (context->skipValidation() ||
10974 ValidateTexGeniOES(context, angle::EntryPoint::GLTexGeniOES, coord, pname, param));
10975 if (isCallValid)
10976 {
10977 context->texGeni(coord, pname, param);
10978 }
10979 ANGLE_CAPTURE(TexGeniOES, isCallValid, context, coord, pname, param);
10980 }
10981 else
10982 {
10983 GenerateContextLostErrorOnCurrentGlobalContext();
10984 }
10985 }
10986
GL_TexGenivOES(GLenum coord,GLenum pname,const GLint * params)10987 void GL_APIENTRY GL_TexGenivOES(GLenum coord, GLenum pname, const GLint *params)
10988 {
10989 Context *context = GetValidGlobalContext();
10990 EVENT(context, GLTexGenivOES,
10991 "context = %d, coord = %s, pname = %s, params = 0x%016" PRIxPTR "", CID(context),
10992 GLenumToString(GLenumGroup::TextureCoordName, coord),
10993 GLenumToString(GLenumGroup::TextureGenParameter, pname), (uintptr_t)params);
10994
10995 if (context)
10996 {
10997 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
10998 bool isCallValid =
10999 (context->skipValidation() ||
11000 ValidateTexGenivOES(context, angle::EntryPoint::GLTexGenivOES, coord, pname, params));
11001 if (isCallValid)
11002 {
11003 context->texGeniv(coord, pname, params);
11004 }
11005 ANGLE_CAPTURE(TexGenivOES, isCallValid, context, coord, pname, params);
11006 }
11007 else
11008 {
11009 GenerateContextLostErrorOnCurrentGlobalContext();
11010 }
11011 }
11012
GL_TexGenxOES(GLenum coord,GLenum pname,GLfixed param)11013 void GL_APIENTRY GL_TexGenxOES(GLenum coord, GLenum pname, GLfixed param)
11014 {
11015 Context *context = GetValidGlobalContext();
11016 EVENT(context, GLTexGenxOES, "context = %d, coord = %s, pname = %s, param = 0x%X", CID(context),
11017 GLenumToString(GLenumGroup::TextureCoordName, coord),
11018 GLenumToString(GLenumGroup::TextureGenParameter, pname), param);
11019
11020 if (context)
11021 {
11022 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
11023 bool isCallValid =
11024 (context->skipValidation() ||
11025 ValidateTexGenxOES(context, angle::EntryPoint::GLTexGenxOES, coord, pname, param));
11026 if (isCallValid)
11027 {
11028 context->texGenx(coord, pname, param);
11029 }
11030 ANGLE_CAPTURE(TexGenxOES, isCallValid, context, coord, pname, param);
11031 }
11032 else
11033 {
11034 GenerateContextLostErrorOnCurrentGlobalContext();
11035 }
11036 }
11037
GL_TexGenxvOES(GLenum coord,GLenum pname,const GLfixed * params)11038 void GL_APIENTRY GL_TexGenxvOES(GLenum coord, GLenum pname, const GLfixed *params)
11039 {
11040 Context *context = GetValidGlobalContext();
11041 EVENT(context, GLTexGenxvOES,
11042 "context = %d, coord = %s, pname = %s, params = 0x%016" PRIxPTR "", CID(context),
11043 GLenumToString(GLenumGroup::TextureCoordName, coord),
11044 GLenumToString(GLenumGroup::TextureGenParameter, pname), (uintptr_t)params);
11045
11046 if (context)
11047 {
11048 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
11049 bool isCallValid =
11050 (context->skipValidation() ||
11051 ValidateTexGenxvOES(context, angle::EntryPoint::GLTexGenxvOES, coord, pname, params));
11052 if (isCallValid)
11053 {
11054 context->texGenxv(coord, pname, params);
11055 }
11056 ANGLE_CAPTURE(TexGenxvOES, isCallValid, context, coord, pname, params);
11057 }
11058 else
11059 {
11060 GenerateContextLostErrorOnCurrentGlobalContext();
11061 }
11062 }
11063
11064 // GL_OES_texture_cube_map_array
11065
11066 // GL_OES_texture_float
11067
11068 // GL_OES_texture_float_linear
11069
11070 // GL_OES_texture_half_float
11071
11072 // GL_OES_texture_half_float_linear
11073
11074 // GL_OES_texture_npot
11075
11076 // GL_OES_texture_stencil8
11077
11078 // GL_OES_texture_storage_multisample_2d_array
GL_TexStorage3DMultisampleOES(GLenum target,GLsizei samples,GLenum internalformat,GLsizei width,GLsizei height,GLsizei depth,GLboolean fixedsamplelocations)11079 void GL_APIENTRY GL_TexStorage3DMultisampleOES(GLenum target,
11080 GLsizei samples,
11081 GLenum internalformat,
11082 GLsizei width,
11083 GLsizei height,
11084 GLsizei depth,
11085 GLboolean fixedsamplelocations)
11086 {
11087 Context *context = GetValidGlobalContext();
11088 EVENT(context, GLTexStorage3DMultisampleOES,
11089 "context = %d, target = %s, samples = %d, internalformat = %s, width = %d, height = %d, "
11090 "depth = %d, fixedsamplelocations = %s",
11091 CID(context), GLenumToString(GLenumGroup::TextureTarget, target), samples,
11092 GLenumToString(GLenumGroup::InternalFormat, internalformat), width, height, depth,
11093 GLbooleanToString(fixedsamplelocations));
11094
11095 if (context)
11096 {
11097 TextureType targetPacked = PackParam<TextureType>(target);
11098 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
11099 bool isCallValid =
11100 (context->skipValidation() ||
11101 ValidateTexStorage3DMultisampleOES(
11102 context, angle::EntryPoint::GLTexStorage3DMultisampleOES, targetPacked, samples,
11103 internalformat, width, height, depth, fixedsamplelocations));
11104 if (isCallValid)
11105 {
11106 context->texStorage3DMultisample(targetPacked, samples, internalformat, width, height,
11107 depth, fixedsamplelocations);
11108 }
11109 ANGLE_CAPTURE(TexStorage3DMultisampleOES, isCallValid, context, targetPacked, samples,
11110 internalformat, width, height, depth, fixedsamplelocations);
11111 }
11112 else
11113 {
11114 GenerateContextLostErrorOnCurrentGlobalContext();
11115 }
11116 }
11117
11118 // GL_OES_vertex_array_object
GL_BindVertexArrayOES(GLuint array)11119 void GL_APIENTRY GL_BindVertexArrayOES(GLuint array)
11120 {
11121 Context *context = GetValidGlobalContext();
11122 EVENT(context, GLBindVertexArrayOES, "context = %d, array = %u", CID(context), array);
11123
11124 if (context)
11125 {
11126 VertexArrayID arrayPacked = PackParam<VertexArrayID>(array);
11127 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
11128 bool isCallValid = (context->skipValidation() ||
11129 ValidateBindVertexArrayOES(
11130 context, angle::EntryPoint::GLBindVertexArrayOES, arrayPacked));
11131 if (isCallValid)
11132 {
11133 context->bindVertexArray(arrayPacked);
11134 }
11135 ANGLE_CAPTURE(BindVertexArrayOES, isCallValid, context, arrayPacked);
11136 }
11137 else
11138 {
11139 GenerateContextLostErrorOnCurrentGlobalContext();
11140 }
11141 }
11142
GL_DeleteVertexArraysOES(GLsizei n,const GLuint * arrays)11143 void GL_APIENTRY GL_DeleteVertexArraysOES(GLsizei n, const GLuint *arrays)
11144 {
11145 Context *context = GetValidGlobalContext();
11146 EVENT(context, GLDeleteVertexArraysOES, "context = %d, n = %d, arrays = 0x%016" PRIxPTR "",
11147 CID(context), n, (uintptr_t)arrays);
11148
11149 if (context)
11150 {
11151 const VertexArrayID *arraysPacked = PackParam<const VertexArrayID *>(arrays);
11152 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
11153 bool isCallValid =
11154 (context->skipValidation() ||
11155 ValidateDeleteVertexArraysOES(context, angle::EntryPoint::GLDeleteVertexArraysOES, n,
11156 arraysPacked));
11157 if (isCallValid)
11158 {
11159 context->deleteVertexArrays(n, arraysPacked);
11160 }
11161 ANGLE_CAPTURE(DeleteVertexArraysOES, isCallValid, context, n, arraysPacked);
11162 }
11163 else
11164 {
11165 GenerateContextLostErrorOnCurrentGlobalContext();
11166 }
11167 }
11168
GL_GenVertexArraysOES(GLsizei n,GLuint * arrays)11169 void GL_APIENTRY GL_GenVertexArraysOES(GLsizei n, GLuint *arrays)
11170 {
11171 Context *context = GetValidGlobalContext();
11172 EVENT(context, GLGenVertexArraysOES, "context = %d, n = %d, arrays = 0x%016" PRIxPTR "",
11173 CID(context), n, (uintptr_t)arrays);
11174
11175 if (context)
11176 {
11177 VertexArrayID *arraysPacked = PackParam<VertexArrayID *>(arrays);
11178 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
11179 bool isCallValid = (context->skipValidation() ||
11180 ValidateGenVertexArraysOES(
11181 context, angle::EntryPoint::GLGenVertexArraysOES, n, arraysPacked));
11182 if (isCallValid)
11183 {
11184 context->genVertexArrays(n, arraysPacked);
11185 }
11186 ANGLE_CAPTURE(GenVertexArraysOES, isCallValid, context, n, arraysPacked);
11187 }
11188 else
11189 {
11190 GenerateContextLostErrorOnCurrentGlobalContext();
11191 }
11192 }
11193
GL_IsVertexArrayOES(GLuint array)11194 GLboolean GL_APIENTRY GL_IsVertexArrayOES(GLuint array)
11195 {
11196 Context *context = GetValidGlobalContext();
11197 EVENT(context, GLIsVertexArrayOES, "context = %d, array = %u", CID(context), array);
11198
11199 GLboolean returnValue;
11200 if (context)
11201 {
11202 VertexArrayID arrayPacked = PackParam<VertexArrayID>(array);
11203 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
11204 bool isCallValid =
11205 (context->skipValidation() ||
11206 ValidateIsVertexArrayOES(context, angle::EntryPoint::GLIsVertexArrayOES, arrayPacked));
11207 if (isCallValid)
11208 {
11209 returnValue = context->isVertexArray(arrayPacked);
11210 }
11211 else
11212 {
11213 returnValue = GetDefaultReturnValue<angle::EntryPoint::GLIsVertexArrayOES, GLboolean>();
11214 }
11215 ANGLE_CAPTURE(IsVertexArrayOES, isCallValid, context, arrayPacked, returnValue);
11216 }
11217 else
11218 {
11219 GenerateContextLostErrorOnCurrentGlobalContext();
11220 returnValue = GetDefaultReturnValue<angle::EntryPoint::GLIsVertexArrayOES, GLboolean>();
11221 }
11222 return returnValue;
11223 }
11224
11225 // GL_OES_vertex_half_float
11226
11227 // GL_OES_vertex_type_10_10_10_2
11228
11229 // GL_OVR_multiview
GL_FramebufferTextureMultiviewOVR(GLenum target,GLenum attachment,GLuint texture,GLint level,GLint baseViewIndex,GLsizei numViews)11230 void GL_APIENTRY GL_FramebufferTextureMultiviewOVR(GLenum target,
11231 GLenum attachment,
11232 GLuint texture,
11233 GLint level,
11234 GLint baseViewIndex,
11235 GLsizei numViews)
11236 {
11237 Context *context = GetValidGlobalContext();
11238 EVENT(context, GLFramebufferTextureMultiviewOVR,
11239 "context = %d, target = %s, attachment = %s, texture = %u, level = %d, baseViewIndex = "
11240 "%d, numViews = %d",
11241 CID(context), GLenumToString(GLenumGroup::FramebufferTarget, target),
11242 GLenumToString(GLenumGroup::FramebufferAttachment, attachment), texture, level,
11243 baseViewIndex, numViews);
11244
11245 if (context)
11246 {
11247 TextureID texturePacked = PackParam<TextureID>(texture);
11248 std::unique_lock<angle::GlobalMutex> shareContextLock = GetContextLock(context);
11249 bool isCallValid = (context->skipValidation() ||
11250 ValidateFramebufferTextureMultiviewOVR(
11251 context, angle::EntryPoint::GLFramebufferTextureMultiviewOVR,
11252 target, attachment, texturePacked, level, baseViewIndex, numViews));
11253 if (isCallValid)
11254 {
11255 context->framebufferTextureMultiview(target, attachment, texturePacked, level,
11256 baseViewIndex, numViews);
11257 }
11258 ANGLE_CAPTURE(FramebufferTextureMultiviewOVR, isCallValid, context, target, attachment,
11259 texturePacked, level, baseViewIndex, numViews);
11260 }
11261 else
11262 {
11263 GenerateContextLostErrorOnCurrentGlobalContext();
11264 }
11265 }
11266
11267 // GL_OVR_multiview2
11268 } // extern "C"
11269