1 // GENERATED FILE - DO NOT EDIT.
2 // Generated by generate_entry_points.py using data from gl.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_3_2_autogen.cpp:
9 // Defines the GLES 3.2 entry points.
10
11 #include "libGLESv2/entry_points_gles_3_2_autogen.h"
12
13 #include "common/entry_points_enum_autogen.h"
14 #include "common/gl_enum_utils.h"
15 #include "libANGLE/Context.h"
16 #include "libANGLE/Context.inl.h"
17 #include "libANGLE/capture/capture_gles_3_2_autogen.h"
18 #include "libANGLE/context_private_call.inl.h"
19 #include "libANGLE/context_private_call_autogen.h"
20 #include "libANGLE/entry_points_utils.h"
21 #include "libANGLE/validationES32.h"
22 #include "libGLESv2/global_state.h"
23
24 using namespace gl;
25
26 extern "C" {
GL_BlendBarrier()27 void GL_APIENTRY GL_BlendBarrier()
28 {
29 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
30 Context *context = GetValidGlobalContext();
31 EVENT(context, GLBlendBarrier, "context = %d", CID(context));
32
33 if (context)
34 {
35 SCOPED_SHARE_CONTEXT_LOCK(context);
36 bool isCallValid = (context->skipValidation() ||
37 ValidateBlendBarrier(context, angle::EntryPoint::GLBlendBarrier));
38 if (isCallValid)
39 {
40 context->blendBarrier();
41 }
42 ANGLE_CAPTURE_GL(BlendBarrier, isCallValid, context);
43 }
44 else
45 {
46 GenerateContextLostErrorOnCurrentGlobalContext();
47 }
48 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
49 }
50
GL_BlendEquationSeparatei(GLuint buf,GLenum modeRGB,GLenum modeAlpha)51 void GL_APIENTRY GL_BlendEquationSeparatei(GLuint buf, GLenum modeRGB, GLenum modeAlpha)
52 {
53 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
54 Context *context = GetValidGlobalContext();
55 EVENT(context, GLBlendEquationSeparatei, "context = %d, buf = %u, modeRGB = %s, modeAlpha = %s",
56 CID(context), buf, GLenumToString(GLESEnum::BlendEquationModeEXT, modeRGB),
57 GLenumToString(GLESEnum::BlendEquationModeEXT, modeAlpha));
58
59 if (context)
60 {
61 bool isCallValid =
62 (context->skipValidation() ||
63 ValidateBlendEquationSeparatei(
64 context->getPrivateState(), context->getMutableErrorSetForValidation(),
65 angle::EntryPoint::GLBlendEquationSeparatei, buf, modeRGB, modeAlpha));
66 if (isCallValid)
67 {
68 ContextPrivateBlendEquationSeparatei(context->getMutablePrivateState(),
69 context->getMutablePrivateStateCache(), buf,
70 modeRGB, modeAlpha);
71 }
72 ANGLE_CAPTURE_GL(BlendEquationSeparatei, isCallValid, context, buf, modeRGB, modeAlpha);
73 }
74 else
75 {
76 GenerateContextLostErrorOnCurrentGlobalContext();
77 }
78 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
79 }
80
GL_BlendEquationi(GLuint buf,GLenum mode)81 void GL_APIENTRY GL_BlendEquationi(GLuint buf, GLenum mode)
82 {
83 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
84 Context *context = GetValidGlobalContext();
85 EVENT(context, GLBlendEquationi, "context = %d, buf = %u, mode = %s", CID(context), buf,
86 GLenumToString(GLESEnum::BlendEquationModeEXT, mode));
87
88 if (context)
89 {
90 bool isCallValid = (context->skipValidation() ||
91 ValidateBlendEquationi(context->getPrivateState(),
92 context->getMutableErrorSetForValidation(),
93 angle::EntryPoint::GLBlendEquationi, buf, mode));
94 if (isCallValid)
95 {
96 ContextPrivateBlendEquationi(context->getMutablePrivateState(),
97 context->getMutablePrivateStateCache(), buf, mode);
98 }
99 ANGLE_CAPTURE_GL(BlendEquationi, isCallValid, context, buf, mode);
100 }
101 else
102 {
103 GenerateContextLostErrorOnCurrentGlobalContext();
104 }
105 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
106 }
107
108 void GL_APIENTRY
GL_BlendFuncSeparatei(GLuint buf,GLenum srcRGB,GLenum dstRGB,GLenum srcAlpha,GLenum dstAlpha)109 GL_BlendFuncSeparatei(GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha)
110 {
111 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
112 Context *context = GetValidGlobalContext();
113 EVENT(context, GLBlendFuncSeparatei,
114 "context = %d, buf = %u, srcRGB = %s, dstRGB = %s, srcAlpha = %s, dstAlpha = %s",
115 CID(context), buf, GLenumToString(GLESEnum::BlendingFactor, srcRGB),
116 GLenumToString(GLESEnum::BlendingFactor, dstRGB),
117 GLenumToString(GLESEnum::BlendingFactor, srcAlpha),
118 GLenumToString(GLESEnum::BlendingFactor, dstAlpha));
119
120 if (context)
121 {
122 bool isCallValid =
123 (context->skipValidation() ||
124 ValidateBlendFuncSeparatei(
125 context->getPrivateState(), context->getMutableErrorSetForValidation(),
126 angle::EntryPoint::GLBlendFuncSeparatei, buf, srcRGB, dstRGB, srcAlpha, dstAlpha));
127 if (isCallValid)
128 {
129 ContextPrivateBlendFuncSeparatei(context->getMutablePrivateState(),
130 context->getMutablePrivateStateCache(), buf, srcRGB,
131 dstRGB, srcAlpha, dstAlpha);
132 }
133 ANGLE_CAPTURE_GL(BlendFuncSeparatei, isCallValid, context, buf, srcRGB, dstRGB, srcAlpha,
134 dstAlpha);
135 }
136 else
137 {
138 GenerateContextLostErrorOnCurrentGlobalContext();
139 }
140 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
141 }
142
GL_BlendFunci(GLuint buf,GLenum src,GLenum dst)143 void GL_APIENTRY GL_BlendFunci(GLuint buf, GLenum src, GLenum dst)
144 {
145 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
146 Context *context = GetValidGlobalContext();
147 EVENT(context, GLBlendFunci, "context = %d, buf = %u, src = %s, dst = %s", CID(context), buf,
148 GLenumToString(GLESEnum::BlendingFactor, src),
149 GLenumToString(GLESEnum::BlendingFactor, dst));
150
151 if (context)
152 {
153 bool isCallValid = (context->skipValidation() ||
154 ValidateBlendFunci(context->getPrivateState(),
155 context->getMutableErrorSetForValidation(),
156 angle::EntryPoint::GLBlendFunci, buf, src, dst));
157 if (isCallValid)
158 {
159 ContextPrivateBlendFunci(context->getMutablePrivateState(),
160 context->getMutablePrivateStateCache(), buf, src, dst);
161 }
162 ANGLE_CAPTURE_GL(BlendFunci, isCallValid, context, buf, src, dst);
163 }
164 else
165 {
166 GenerateContextLostErrorOnCurrentGlobalContext();
167 }
168 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
169 }
170
GL_ColorMaski(GLuint index,GLboolean r,GLboolean g,GLboolean b,GLboolean a)171 void GL_APIENTRY GL_ColorMaski(GLuint index, GLboolean r, GLboolean g, GLboolean b, GLboolean a)
172 {
173 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
174 Context *context = GetValidGlobalContext();
175 EVENT(context, GLColorMaski, "context = %d, index = %u, r = %s, g = %s, b = %s, a = %s",
176 CID(context), index, GLbooleanToString(r), GLbooleanToString(g), GLbooleanToString(b),
177 GLbooleanToString(a));
178
179 if (context)
180 {
181 bool isCallValid = (context->skipValidation() ||
182 ValidateColorMaski(context->getPrivateState(),
183 context->getMutableErrorSetForValidation(),
184 angle::EntryPoint::GLColorMaski, index, r, g, b, a));
185 if (isCallValid)
186 {
187 ContextPrivateColorMaski(context->getMutablePrivateState(),
188 context->getMutablePrivateStateCache(), index, r, g, b, a);
189 }
190 ANGLE_CAPTURE_GL(ColorMaski, isCallValid, context, index, r, g, b, a);
191 }
192 else
193 {
194 GenerateContextLostErrorOnCurrentGlobalContext();
195 }
196 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
197 }
198
GL_CopyImageSubData(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)199 void GL_APIENTRY GL_CopyImageSubData(GLuint srcName,
200 GLenum srcTarget,
201 GLint srcLevel,
202 GLint srcX,
203 GLint srcY,
204 GLint srcZ,
205 GLuint dstName,
206 GLenum dstTarget,
207 GLint dstLevel,
208 GLint dstX,
209 GLint dstY,
210 GLint dstZ,
211 GLsizei srcWidth,
212 GLsizei srcHeight,
213 GLsizei srcDepth)
214 {
215 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
216 Context *context = GetValidGlobalContext();
217 EVENT(context, GLCopyImageSubData,
218 "context = %d, srcName = %u, srcTarget = %s, srcLevel = %d, srcX = %d, srcY = %d, srcZ = "
219 "%d, dstName = %u, dstTarget = %s, dstLevel = %d, dstX = %d, dstY = %d, dstZ = %d, "
220 "srcWidth = %d, srcHeight = %d, srcDepth = %d",
221 CID(context), srcName, GLenumToString(GLESEnum::CopyImageSubDataTarget, srcTarget),
222 srcLevel, srcX, srcY, srcZ, dstName,
223 GLenumToString(GLESEnum::CopyImageSubDataTarget, dstTarget), dstLevel, dstX, dstY, dstZ,
224 srcWidth, srcHeight, srcDepth);
225
226 if (context)
227 {
228 SCOPED_SHARE_CONTEXT_LOCK(context);
229 bool isCallValid =
230 (context->skipValidation() ||
231 ValidateCopyImageSubData(context, angle::EntryPoint::GLCopyImageSubData, srcName,
232 srcTarget, srcLevel, srcX, srcY, srcZ, dstName, dstTarget,
233 dstLevel, dstX, dstY, dstZ, srcWidth, srcHeight, srcDepth));
234 if (isCallValid)
235 {
236 context->copyImageSubData(srcName, srcTarget, srcLevel, srcX, srcY, srcZ, dstName,
237 dstTarget, dstLevel, dstX, dstY, dstZ, srcWidth, srcHeight,
238 srcDepth);
239 }
240 ANGLE_CAPTURE_GL(CopyImageSubData, isCallValid, context, srcName, srcTarget, srcLevel, srcX,
241 srcY, srcZ, dstName, dstTarget, dstLevel, dstX, dstY, dstZ, srcWidth,
242 srcHeight, srcDepth);
243 }
244 else
245 {
246 GenerateContextLostErrorOnCurrentGlobalContext();
247 }
248 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
249 }
250
GL_DebugMessageCallback(GLDEBUGPROC callback,const void * userParam)251 void GL_APIENTRY GL_DebugMessageCallback(GLDEBUGPROC callback, const void *userParam)
252 {
253 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
254 Context *context = GetValidGlobalContext();
255 EVENT(context, GLDebugMessageCallback,
256 "context = %d, callback = 0x%016" PRIxPTR ", userParam = 0x%016" PRIxPTR "", CID(context),
257 (uintptr_t)callback, (uintptr_t)userParam);
258
259 if (context)
260 {
261 SCOPED_SHARE_CONTEXT_LOCK(context);
262 bool isCallValid =
263 (context->skipValidation() ||
264 ValidateDebugMessageCallback(context, angle::EntryPoint::GLDebugMessageCallback,
265 callback, userParam));
266 if (isCallValid)
267 {
268 context->debugMessageCallback(callback, userParam);
269 }
270 ANGLE_CAPTURE_GL(DebugMessageCallback, isCallValid, context, callback, userParam);
271 }
272 else
273 {
274 GenerateContextLostErrorOnCurrentGlobalContext();
275 }
276 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
277 }
278
GL_DebugMessageControl(GLenum source,GLenum type,GLenum severity,GLsizei count,const GLuint * ids,GLboolean enabled)279 void GL_APIENTRY GL_DebugMessageControl(GLenum source,
280 GLenum type,
281 GLenum severity,
282 GLsizei count,
283 const GLuint *ids,
284 GLboolean enabled)
285 {
286 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
287 Context *context = GetValidGlobalContext();
288 EVENT(context, GLDebugMessageControl,
289 "context = %d, source = %s, type = %s, severity = %s, count = %d, ids = 0x%016" PRIxPTR
290 ", enabled = %s",
291 CID(context), GLenumToString(GLESEnum::DebugSource, source),
292 GLenumToString(GLESEnum::DebugType, type),
293 GLenumToString(GLESEnum::DebugSeverity, severity), count, (uintptr_t)ids,
294 GLbooleanToString(enabled));
295
296 if (context)
297 {
298 SCOPED_SHARE_CONTEXT_LOCK(context);
299 bool isCallValid =
300 (context->skipValidation() ||
301 ValidateDebugMessageControl(context, angle::EntryPoint::GLDebugMessageControl, source,
302 type, severity, count, ids, enabled));
303 if (isCallValid)
304 {
305 context->debugMessageControl(source, type, severity, count, ids, enabled);
306 }
307 ANGLE_CAPTURE_GL(DebugMessageControl, isCallValid, context, source, type, severity, count,
308 ids, enabled);
309 }
310 else
311 {
312 GenerateContextLostErrorOnCurrentGlobalContext();
313 }
314 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
315 }
316
GL_DebugMessageInsert(GLenum source,GLenum type,GLuint id,GLenum severity,GLsizei length,const GLchar * buf)317 void GL_APIENTRY GL_DebugMessageInsert(GLenum source,
318 GLenum type,
319 GLuint id,
320 GLenum severity,
321 GLsizei length,
322 const GLchar *buf)
323 {
324 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
325 Context *context = GetValidGlobalContext();
326 EVENT(context, GLDebugMessageInsert,
327 "context = %d, source = %s, type = %s, id = %u, severity = %s, length = %d, buf = "
328 "0x%016" PRIxPTR "",
329 CID(context), GLenumToString(GLESEnum::DebugSource, source),
330 GLenumToString(GLESEnum::DebugType, type), id,
331 GLenumToString(GLESEnum::DebugSeverity, severity), length, (uintptr_t)buf);
332
333 if (context)
334 {
335 SCOPED_SHARE_CONTEXT_LOCK(context);
336 bool isCallValid =
337 (context->skipValidation() ||
338 ValidateDebugMessageInsert(context, angle::EntryPoint::GLDebugMessageInsert, source,
339 type, id, severity, length, buf));
340 if (isCallValid)
341 {
342 context->debugMessageInsert(source, type, id, severity, length, buf);
343 }
344 ANGLE_CAPTURE_GL(DebugMessageInsert, isCallValid, context, source, type, id, severity,
345 length, buf);
346 }
347 else
348 {
349 GenerateContextLostErrorOnCurrentGlobalContext();
350 }
351 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
352 }
353
GL_Disablei(GLenum target,GLuint index)354 void GL_APIENTRY GL_Disablei(GLenum target, GLuint index)
355 {
356 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
357 Context *context = GetValidGlobalContext();
358 EVENT(context, GLDisablei, "context = %d, target = %s, index = %u", CID(context),
359 GLenumToString(GLESEnum::EnableCap, target), index);
360
361 if (context)
362 {
363 bool isCallValid = (context->skipValidation() ||
364 ValidateDisablei(context->getPrivateState(),
365 context->getMutableErrorSetForValidation(),
366 angle::EntryPoint::GLDisablei, target, index));
367 if (isCallValid)
368 {
369 ContextPrivateDisablei(context->getMutablePrivateState(),
370 context->getMutablePrivateStateCache(), target, index);
371 }
372 ANGLE_CAPTURE_GL(Disablei, isCallValid, context, target, index);
373 }
374 else
375 {
376 GenerateContextLostErrorOnCurrentGlobalContext();
377 }
378 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
379 }
380
GL_DrawElementsBaseVertex(GLenum mode,GLsizei count,GLenum type,const void * indices,GLint basevertex)381 void GL_APIENTRY GL_DrawElementsBaseVertex(GLenum mode,
382 GLsizei count,
383 GLenum type,
384 const void *indices,
385 GLint basevertex)
386 {
387 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
388 Context *context = GetValidGlobalContext();
389 EVENT(context, GLDrawElementsBaseVertex,
390 "context = %d, mode = %s, count = %d, type = %s, indices = 0x%016" PRIxPTR
391 ", basevertex = %d",
392 CID(context), GLenumToString(GLESEnum::PrimitiveType, mode), count,
393 GLenumToString(GLESEnum::DrawElementsType, type), (uintptr_t)indices, basevertex);
394
395 if (context)
396 {
397 PrimitiveMode modePacked = PackParam<PrimitiveMode>(mode);
398 DrawElementsType typePacked = PackParam<DrawElementsType>(type);
399 SCOPED_SHARE_CONTEXT_LOCK(context);
400 bool isCallValid =
401 (context->skipValidation() ||
402 ValidateDrawElementsBaseVertex(context, angle::EntryPoint::GLDrawElementsBaseVertex,
403 modePacked, count, typePacked, indices, basevertex));
404 if (isCallValid)
405 {
406 context->drawElementsBaseVertex(modePacked, count, typePacked, indices, basevertex);
407 }
408 ANGLE_CAPTURE_GL(DrawElementsBaseVertex, isCallValid, context, modePacked, count,
409 typePacked, indices, basevertex);
410 }
411 else
412 {
413 GenerateContextLostErrorOnCurrentGlobalContext();
414 }
415 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
416 }
417
GL_DrawElementsInstancedBaseVertex(GLenum mode,GLsizei count,GLenum type,const void * indices,GLsizei instancecount,GLint basevertex)418 void GL_APIENTRY GL_DrawElementsInstancedBaseVertex(GLenum mode,
419 GLsizei count,
420 GLenum type,
421 const void *indices,
422 GLsizei instancecount,
423 GLint basevertex)
424 {
425 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
426 Context *context = GetValidGlobalContext();
427 EVENT(context, GLDrawElementsInstancedBaseVertex,
428 "context = %d, mode = %s, count = %d, type = %s, indices = 0x%016" PRIxPTR
429 ", instancecount = %d, basevertex = %d",
430 CID(context), GLenumToString(GLESEnum::PrimitiveType, mode), count,
431 GLenumToString(GLESEnum::DrawElementsType, type), (uintptr_t)indices, instancecount,
432 basevertex);
433
434 if (context)
435 {
436 PrimitiveMode modePacked = PackParam<PrimitiveMode>(mode);
437 DrawElementsType typePacked = PackParam<DrawElementsType>(type);
438 SCOPED_SHARE_CONTEXT_LOCK(context);
439 bool isCallValid = (context->skipValidation() ||
440 ValidateDrawElementsInstancedBaseVertex(
441 context, angle::EntryPoint::GLDrawElementsInstancedBaseVertex,
442 modePacked, count, typePacked, indices, instancecount, basevertex));
443 if (isCallValid)
444 {
445 context->drawElementsInstancedBaseVertex(modePacked, count, typePacked, indices,
446 instancecount, basevertex);
447 }
448 ANGLE_CAPTURE_GL(DrawElementsInstancedBaseVertex, isCallValid, context, modePacked, count,
449 typePacked, indices, instancecount, basevertex);
450 }
451 else
452 {
453 GenerateContextLostErrorOnCurrentGlobalContext();
454 }
455 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
456 }
457
GL_DrawRangeElementsBaseVertex(GLenum mode,GLuint start,GLuint end,GLsizei count,GLenum type,const void * indices,GLint basevertex)458 void GL_APIENTRY GL_DrawRangeElementsBaseVertex(GLenum mode,
459 GLuint start,
460 GLuint end,
461 GLsizei count,
462 GLenum type,
463 const void *indices,
464 GLint basevertex)
465 {
466 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
467 Context *context = GetValidGlobalContext();
468 EVENT(context, GLDrawRangeElementsBaseVertex,
469 "context = %d, mode = %s, start = %u, end = %u, count = %d, type = %s, indices = "
470 "0x%016" PRIxPTR ", basevertex = %d",
471 CID(context), GLenumToString(GLESEnum::PrimitiveType, mode), start, end, count,
472 GLenumToString(GLESEnum::DrawElementsType, type), (uintptr_t)indices, basevertex);
473
474 if (context)
475 {
476 PrimitiveMode modePacked = PackParam<PrimitiveMode>(mode);
477 DrawElementsType typePacked = PackParam<DrawElementsType>(type);
478 SCOPED_SHARE_CONTEXT_LOCK(context);
479 bool isCallValid = (context->skipValidation() ||
480 ValidateDrawRangeElementsBaseVertex(
481 context, angle::EntryPoint::GLDrawRangeElementsBaseVertex,
482 modePacked, start, end, count, typePacked, indices, basevertex));
483 if (isCallValid)
484 {
485 context->drawRangeElementsBaseVertex(modePacked, start, end, count, typePacked, indices,
486 basevertex);
487 }
488 ANGLE_CAPTURE_GL(DrawRangeElementsBaseVertex, isCallValid, context, modePacked, start, end,
489 count, typePacked, indices, basevertex);
490 }
491 else
492 {
493 GenerateContextLostErrorOnCurrentGlobalContext();
494 }
495 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
496 }
497
GL_Enablei(GLenum target,GLuint index)498 void GL_APIENTRY GL_Enablei(GLenum target, GLuint index)
499 {
500 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
501 Context *context = GetValidGlobalContext();
502 EVENT(context, GLEnablei, "context = %d, target = %s, index = %u", CID(context),
503 GLenumToString(GLESEnum::EnableCap, target), index);
504
505 if (context)
506 {
507 bool isCallValid =
508 (context->skipValidation() ||
509 ValidateEnablei(context->getPrivateState(), context->getMutableErrorSetForValidation(),
510 angle::EntryPoint::GLEnablei, target, index));
511 if (isCallValid)
512 {
513 ContextPrivateEnablei(context->getMutablePrivateState(),
514 context->getMutablePrivateStateCache(), target, index);
515 }
516 ANGLE_CAPTURE_GL(Enablei, isCallValid, context, target, index);
517 }
518 else
519 {
520 GenerateContextLostErrorOnCurrentGlobalContext();
521 }
522 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
523 }
524
GL_FramebufferTexture(GLenum target,GLenum attachment,GLuint texture,GLint level)525 void GL_APIENTRY GL_FramebufferTexture(GLenum target,
526 GLenum attachment,
527 GLuint texture,
528 GLint level)
529 {
530 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
531 Context *context = GetValidGlobalContext();
532 EVENT(context, GLFramebufferTexture,
533 "context = %d, target = %s, attachment = %s, texture = %u, level = %d", CID(context),
534 GLenumToString(GLESEnum::FramebufferTarget, target),
535 GLenumToString(GLESEnum::FramebufferAttachment, attachment), texture, level);
536
537 if (context)
538 {
539 TextureID texturePacked = PackParam<TextureID>(texture);
540 SCOPED_SHARE_CONTEXT_LOCK(context);
541 if (context->getState().getPixelLocalStorageActivePlanes() != 0)
542 {
543 context->endPixelLocalStorageImplicit();
544 }
545 bool isCallValid =
546 (context->skipValidation() ||
547 ValidateFramebufferTexture(context, angle::EntryPoint::GLFramebufferTexture, target,
548 attachment, texturePacked, level));
549 if (isCallValid)
550 {
551 context->framebufferTexture(target, attachment, texturePacked, level);
552 }
553 ANGLE_CAPTURE_GL(FramebufferTexture, isCallValid, context, target, attachment,
554 texturePacked, level);
555 }
556 else
557 {
558 GenerateContextLostErrorOnCurrentGlobalContext();
559 }
560 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
561 }
562
GL_GetDebugMessageLog(GLuint count,GLsizei bufSize,GLenum * sources,GLenum * types,GLuint * ids,GLenum * severities,GLsizei * lengths,GLchar * messageLog)563 GLuint GL_APIENTRY GL_GetDebugMessageLog(GLuint count,
564 GLsizei bufSize,
565 GLenum *sources,
566 GLenum *types,
567 GLuint *ids,
568 GLenum *severities,
569 GLsizei *lengths,
570 GLchar *messageLog)
571 {
572 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
573 Context *context = GetValidGlobalContext();
574 EVENT(context, GLGetDebugMessageLog,
575 "context = %d, count = %u, bufSize = %d, sources = 0x%016" PRIxPTR
576 ", types = 0x%016" PRIxPTR ", ids = 0x%016" PRIxPTR ", severities = 0x%016" PRIxPTR
577 ", lengths = 0x%016" PRIxPTR ", messageLog = 0x%016" PRIxPTR "",
578 CID(context), count, bufSize, (uintptr_t)sources, (uintptr_t)types, (uintptr_t)ids,
579 (uintptr_t)severities, (uintptr_t)lengths, (uintptr_t)messageLog);
580
581 GLuint returnValue;
582 if (context)
583 {
584 SCOPED_SHARE_CONTEXT_LOCK(context);
585 bool isCallValid = (context->skipValidation() ||
586 ValidateGetDebugMessageLog(
587 context, angle::EntryPoint::GLGetDebugMessageLog, count, bufSize,
588 sources, types, ids, severities, lengths, messageLog));
589 if (isCallValid)
590 {
591 returnValue = context->getDebugMessageLog(count, bufSize, sources, types, ids,
592 severities, lengths, messageLog);
593 }
594 else
595 {
596 returnValue = GetDefaultReturnValue<angle::EntryPoint::GLGetDebugMessageLog, GLuint>();
597 }
598 ANGLE_CAPTURE_GL(GetDebugMessageLog, isCallValid, context, count, bufSize, sources, types,
599 ids, severities, lengths, messageLog, returnValue);
600 }
601 else
602 {
603 GenerateContextLostErrorOnCurrentGlobalContext();
604 returnValue = GetDefaultReturnValue<angle::EntryPoint::GLGetDebugMessageLog, GLuint>();
605 }
606 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
607 return returnValue;
608 }
609
GL_GetGraphicsResetStatus()610 GLenum GL_APIENTRY GL_GetGraphicsResetStatus()
611 {
612 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
613 Context *context = GetGlobalContext();
614 EVENT(context, GLGetGraphicsResetStatus, "context = %d", CID(context));
615
616 GLenum returnValue;
617 if (context)
618 {
619 SCOPED_SHARE_CONTEXT_LOCK(context);
620 bool isCallValid =
621 (context->skipValidation() ||
622 ValidateGetGraphicsResetStatus(context, angle::EntryPoint::GLGetGraphicsResetStatus));
623 if (isCallValid)
624 {
625 returnValue = context->getGraphicsResetStatus();
626 }
627 else
628 {
629 returnValue =
630 GetDefaultReturnValue<angle::EntryPoint::GLGetGraphicsResetStatus, GLenum>();
631 }
632 ANGLE_CAPTURE_GL(GetGraphicsResetStatus, isCallValid, context, returnValue);
633 }
634 else
635 {
636
637 returnValue = GetDefaultReturnValue<angle::EntryPoint::GLGetGraphicsResetStatus, GLenum>();
638 }
639 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
640 return returnValue;
641 }
642
643 void GL_APIENTRY
GL_GetObjectLabel(GLenum identifier,GLuint name,GLsizei bufSize,GLsizei * length,GLchar * label)644 GL_GetObjectLabel(GLenum identifier, GLuint name, GLsizei bufSize, GLsizei *length, GLchar *label)
645 {
646 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
647 Context *context = GetValidGlobalContext();
648 EVENT(context, GLGetObjectLabel,
649 "context = %d, identifier = %s, name = %u, bufSize = %d, length = 0x%016" PRIxPTR
650 ", label = 0x%016" PRIxPTR "",
651 CID(context), GLenumToString(GLESEnum::ObjectIdentifier, identifier), name, bufSize,
652 (uintptr_t)length, (uintptr_t)label);
653
654 if (context)
655 {
656 SCOPED_SHARE_CONTEXT_LOCK(context);
657 bool isCallValid = (context->skipValidation() ||
658 ValidateGetObjectLabel(context, angle::EntryPoint::GLGetObjectLabel,
659 identifier, name, bufSize, length, label));
660 if (isCallValid)
661 {
662 context->getObjectLabel(identifier, name, bufSize, length, label);
663 }
664 ANGLE_CAPTURE_GL(GetObjectLabel, isCallValid, context, identifier, name, bufSize, length,
665 label);
666 }
667 else
668 {
669 GenerateContextLostErrorOnCurrentGlobalContext();
670 }
671 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
672 }
673
GL_GetObjectPtrLabel(const void * ptr,GLsizei bufSize,GLsizei * length,GLchar * label)674 void GL_APIENTRY GL_GetObjectPtrLabel(const void *ptr,
675 GLsizei bufSize,
676 GLsizei *length,
677 GLchar *label)
678 {
679 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
680 Context *context = GetValidGlobalContext();
681 EVENT(context, GLGetObjectPtrLabel,
682 "context = %d, ptr = 0x%016" PRIxPTR ", bufSize = %d, length = 0x%016" PRIxPTR
683 ", label = 0x%016" PRIxPTR "",
684 CID(context), (uintptr_t)ptr, bufSize, (uintptr_t)length, (uintptr_t)label);
685
686 if (context)
687 {
688 SCOPED_SHARE_CONTEXT_LOCK(context);
689 bool isCallValid =
690 (context->skipValidation() ||
691 ValidateGetObjectPtrLabel(context, angle::EntryPoint::GLGetObjectPtrLabel, ptr,
692 bufSize, length, label));
693 if (isCallValid)
694 {
695 context->getObjectPtrLabel(ptr, bufSize, length, label);
696 }
697 ANGLE_CAPTURE_GL(GetObjectPtrLabel, isCallValid, context, ptr, bufSize, length, label);
698 }
699 else
700 {
701 GenerateContextLostErrorOnCurrentGlobalContext();
702 }
703 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
704 }
705
GL_GetPointerv(GLenum pname,void ** params)706 void GL_APIENTRY GL_GetPointerv(GLenum pname, void **params)
707 {
708 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
709 Context *context = GetValidGlobalContext();
710 EVENT(context, GLGetPointerv, "context = %d, pname = %s, params = 0x%016" PRIxPTR "",
711 CID(context), GLenumToString(GLESEnum::GetPointervPName, pname), (uintptr_t)params);
712
713 if (context)
714 {
715 SCOPED_SHARE_CONTEXT_LOCK(context);
716 bool isCallValid =
717 (context->skipValidation() ||
718 ValidateGetPointerv(context, angle::EntryPoint::GLGetPointerv, pname, params));
719 if (isCallValid)
720 {
721 context->getPointerv(pname, params);
722 }
723 ANGLE_CAPTURE_GL(GetPointerv, isCallValid, context, pname, params);
724 }
725 else
726 {
727 GenerateContextLostErrorOnCurrentGlobalContext();
728 }
729 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
730 }
731
GL_GetSamplerParameterIiv(GLuint sampler,GLenum pname,GLint * params)732 void GL_APIENTRY GL_GetSamplerParameterIiv(GLuint sampler, GLenum pname, GLint *params)
733 {
734 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
735 Context *context = GetValidGlobalContext();
736 EVENT(context, GLGetSamplerParameterIiv,
737 "context = %d, sampler = %u, pname = %s, params = 0x%016" PRIxPTR "", CID(context),
738 sampler, GLenumToString(GLESEnum::SamplerParameterI, pname), (uintptr_t)params);
739
740 if (context)
741 {
742 SamplerID samplerPacked = PackParam<SamplerID>(sampler);
743 SCOPED_SHARE_CONTEXT_LOCK(context);
744 bool isCallValid =
745 (context->skipValidation() ||
746 ValidateGetSamplerParameterIiv(context, angle::EntryPoint::GLGetSamplerParameterIiv,
747 samplerPacked, pname, params));
748 if (isCallValid)
749 {
750 context->getSamplerParameterIiv(samplerPacked, pname, params);
751 }
752 ANGLE_CAPTURE_GL(GetSamplerParameterIiv, isCallValid, context, samplerPacked, pname,
753 params);
754 }
755 else
756 {
757 GenerateContextLostErrorOnCurrentGlobalContext();
758 }
759 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
760 }
761
GL_GetSamplerParameterIuiv(GLuint sampler,GLenum pname,GLuint * params)762 void GL_APIENTRY GL_GetSamplerParameterIuiv(GLuint sampler, GLenum pname, GLuint *params)
763 {
764 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
765 Context *context = GetValidGlobalContext();
766 EVENT(context, GLGetSamplerParameterIuiv,
767 "context = %d, sampler = %u, pname = %s, params = 0x%016" PRIxPTR "", CID(context),
768 sampler, GLenumToString(GLESEnum::SamplerParameterI, pname), (uintptr_t)params);
769
770 if (context)
771 {
772 SamplerID samplerPacked = PackParam<SamplerID>(sampler);
773 SCOPED_SHARE_CONTEXT_LOCK(context);
774 bool isCallValid =
775 (context->skipValidation() ||
776 ValidateGetSamplerParameterIuiv(context, angle::EntryPoint::GLGetSamplerParameterIuiv,
777 samplerPacked, pname, params));
778 if (isCallValid)
779 {
780 context->getSamplerParameterIuiv(samplerPacked, pname, params);
781 }
782 ANGLE_CAPTURE_GL(GetSamplerParameterIuiv, isCallValid, context, samplerPacked, pname,
783 params);
784 }
785 else
786 {
787 GenerateContextLostErrorOnCurrentGlobalContext();
788 }
789 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
790 }
791
GL_GetTexParameterIiv(GLenum target,GLenum pname,GLint * params)792 void GL_APIENTRY GL_GetTexParameterIiv(GLenum target, GLenum pname, GLint *params)
793 {
794 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
795 Context *context = GetValidGlobalContext();
796 EVENT(context, GLGetTexParameterIiv,
797 "context = %d, target = %s, pname = %s, params = 0x%016" PRIxPTR "", CID(context),
798 GLenumToString(GLESEnum::TextureTarget, target),
799 GLenumToString(GLESEnum::GetTextureParameter, pname), (uintptr_t)params);
800
801 if (context)
802 {
803 TextureType targetPacked = PackParam<TextureType>(target);
804 SCOPED_SHARE_CONTEXT_LOCK(context);
805 bool isCallValid =
806 (context->skipValidation() ||
807 ValidateGetTexParameterIiv(context, angle::EntryPoint::GLGetTexParameterIiv,
808 targetPacked, pname, params));
809 if (isCallValid)
810 {
811 context->getTexParameterIiv(targetPacked, pname, params);
812 }
813 ANGLE_CAPTURE_GL(GetTexParameterIiv, isCallValid, context, targetPacked, pname, params);
814 }
815 else
816 {
817 GenerateContextLostErrorOnCurrentGlobalContext();
818 }
819 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
820 }
821
GL_GetTexParameterIuiv(GLenum target,GLenum pname,GLuint * params)822 void GL_APIENTRY GL_GetTexParameterIuiv(GLenum target, GLenum pname, GLuint *params)
823 {
824 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
825 Context *context = GetValidGlobalContext();
826 EVENT(context, GLGetTexParameterIuiv,
827 "context = %d, target = %s, pname = %s, params = 0x%016" PRIxPTR "", CID(context),
828 GLenumToString(GLESEnum::TextureTarget, target),
829 GLenumToString(GLESEnum::GetTextureParameter, pname), (uintptr_t)params);
830
831 if (context)
832 {
833 TextureType targetPacked = PackParam<TextureType>(target);
834 SCOPED_SHARE_CONTEXT_LOCK(context);
835 bool isCallValid =
836 (context->skipValidation() ||
837 ValidateGetTexParameterIuiv(context, angle::EntryPoint::GLGetTexParameterIuiv,
838 targetPacked, pname, params));
839 if (isCallValid)
840 {
841 context->getTexParameterIuiv(targetPacked, pname, params);
842 }
843 ANGLE_CAPTURE_GL(GetTexParameterIuiv, isCallValid, context, targetPacked, pname, params);
844 }
845 else
846 {
847 GenerateContextLostErrorOnCurrentGlobalContext();
848 }
849 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
850 }
851
GL_GetnUniformfv(GLuint program,GLint location,GLsizei bufSize,GLfloat * params)852 void GL_APIENTRY GL_GetnUniformfv(GLuint program, GLint location, GLsizei bufSize, GLfloat *params)
853 {
854 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
855 Context *context = GetValidGlobalContext();
856 EVENT(context, GLGetnUniformfv,
857 "context = %d, program = %u, location = %d, bufSize = %d, params = 0x%016" PRIxPTR "",
858 CID(context), program, location, bufSize, (uintptr_t)params);
859
860 if (context)
861 {
862 ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);
863 UniformLocation locationPacked = PackParam<UniformLocation>(location);
864 SCOPED_SHARE_CONTEXT_LOCK(context);
865 bool isCallValid = (context->skipValidation() ||
866 ValidateGetnUniformfv(context, angle::EntryPoint::GLGetnUniformfv,
867 programPacked, locationPacked, bufSize, params));
868 if (isCallValid)
869 {
870 context->getnUniformfv(programPacked, locationPacked, bufSize, params);
871 }
872 ANGLE_CAPTURE_GL(GetnUniformfv, isCallValid, context, programPacked, locationPacked,
873 bufSize, params);
874 }
875 else
876 {
877 GenerateContextLostErrorOnCurrentGlobalContext();
878 }
879 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
880 }
881
GL_GetnUniformiv(GLuint program,GLint location,GLsizei bufSize,GLint * params)882 void GL_APIENTRY GL_GetnUniformiv(GLuint program, GLint location, GLsizei bufSize, GLint *params)
883 {
884 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
885 Context *context = GetValidGlobalContext();
886 EVENT(context, GLGetnUniformiv,
887 "context = %d, program = %u, location = %d, bufSize = %d, params = 0x%016" PRIxPTR "",
888 CID(context), program, location, bufSize, (uintptr_t)params);
889
890 if (context)
891 {
892 ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);
893 UniformLocation locationPacked = PackParam<UniformLocation>(location);
894 SCOPED_SHARE_CONTEXT_LOCK(context);
895 bool isCallValid = (context->skipValidation() ||
896 ValidateGetnUniformiv(context, angle::EntryPoint::GLGetnUniformiv,
897 programPacked, locationPacked, bufSize, params));
898 if (isCallValid)
899 {
900 context->getnUniformiv(programPacked, locationPacked, bufSize, params);
901 }
902 ANGLE_CAPTURE_GL(GetnUniformiv, isCallValid, context, programPacked, locationPacked,
903 bufSize, params);
904 }
905 else
906 {
907 GenerateContextLostErrorOnCurrentGlobalContext();
908 }
909 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
910 }
911
GL_GetnUniformuiv(GLuint program,GLint location,GLsizei bufSize,GLuint * params)912 void GL_APIENTRY GL_GetnUniformuiv(GLuint program, GLint location, GLsizei bufSize, GLuint *params)
913 {
914 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
915 Context *context = GetValidGlobalContext();
916 EVENT(context, GLGetnUniformuiv,
917 "context = %d, program = %u, location = %d, bufSize = %d, params = 0x%016" PRIxPTR "",
918 CID(context), program, location, bufSize, (uintptr_t)params);
919
920 if (context)
921 {
922 ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);
923 UniformLocation locationPacked = PackParam<UniformLocation>(location);
924 SCOPED_SHARE_CONTEXT_LOCK(context);
925 bool isCallValid = (context->skipValidation() ||
926 ValidateGetnUniformuiv(context, angle::EntryPoint::GLGetnUniformuiv,
927 programPacked, locationPacked, bufSize, params));
928 if (isCallValid)
929 {
930 context->getnUniformuiv(programPacked, locationPacked, bufSize, params);
931 }
932 ANGLE_CAPTURE_GL(GetnUniformuiv, isCallValid, context, programPacked, locationPacked,
933 bufSize, params);
934 }
935 else
936 {
937 GenerateContextLostErrorOnCurrentGlobalContext();
938 }
939 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
940 }
941
GL_IsEnabledi(GLenum target,GLuint index)942 GLboolean GL_APIENTRY GL_IsEnabledi(GLenum target, GLuint index)
943 {
944 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
945 Context *context = GetValidGlobalContext();
946 EVENT(context, GLIsEnabledi, "context = %d, target = %s, index = %u", CID(context),
947 GLenumToString(GLESEnum::EnableCap, target), index);
948
949 GLboolean returnValue;
950 if (context)
951 {
952 bool isCallValid = (context->skipValidation() ||
953 ValidateIsEnabledi(context->getPrivateState(),
954 context->getMutableErrorSetForValidation(),
955 angle::EntryPoint::GLIsEnabledi, target, index));
956 if (isCallValid)
957 {
958 returnValue =
959 ContextPrivateIsEnabledi(context->getMutablePrivateState(),
960 context->getMutablePrivateStateCache(), target, index);
961 }
962 else
963 {
964 returnValue = GetDefaultReturnValue<angle::EntryPoint::GLIsEnabledi, GLboolean>();
965 }
966 ANGLE_CAPTURE_GL(IsEnabledi, isCallValid, context, target, index, returnValue);
967 }
968 else
969 {
970 GenerateContextLostErrorOnCurrentGlobalContext();
971 returnValue = GetDefaultReturnValue<angle::EntryPoint::GLIsEnabledi, GLboolean>();
972 }
973 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
974 return returnValue;
975 }
976
GL_MinSampleShading(GLfloat value)977 void GL_APIENTRY GL_MinSampleShading(GLfloat value)
978 {
979 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
980 Context *context = GetValidGlobalContext();
981 EVENT(context, GLMinSampleShading, "context = %d, value = %f", CID(context), value);
982
983 if (context)
984 {
985 bool isCallValid = (context->skipValidation() ||
986 ValidateMinSampleShading(context->getPrivateState(),
987 context->getMutableErrorSetForValidation(),
988 angle::EntryPoint::GLMinSampleShading, value));
989 if (isCallValid)
990 {
991 ContextPrivateMinSampleShading(context->getMutablePrivateState(),
992 context->getMutablePrivateStateCache(), value);
993 }
994 ANGLE_CAPTURE_GL(MinSampleShading, isCallValid, context, value);
995 }
996 else
997 {
998 GenerateContextLostErrorOnCurrentGlobalContext();
999 }
1000 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
1001 }
1002
GL_ObjectLabel(GLenum identifier,GLuint name,GLsizei length,const GLchar * label)1003 void GL_APIENTRY GL_ObjectLabel(GLenum identifier, GLuint name, GLsizei length, const GLchar *label)
1004 {
1005 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
1006 Context *context = GetValidGlobalContext();
1007 EVENT(context, GLObjectLabel,
1008 "context = %d, identifier = %s, name = %u, length = %d, label = 0x%016" PRIxPTR "",
1009 CID(context), GLenumToString(GLESEnum::ObjectIdentifier, identifier), name, length,
1010 (uintptr_t)label);
1011
1012 if (context)
1013 {
1014 SCOPED_SHARE_CONTEXT_LOCK(context);
1015 bool isCallValid = (context->skipValidation() ||
1016 ValidateObjectLabel(context, angle::EntryPoint::GLObjectLabel,
1017 identifier, name, length, label));
1018 if (isCallValid)
1019 {
1020 context->objectLabel(identifier, name, length, label);
1021 }
1022 ANGLE_CAPTURE_GL(ObjectLabel, isCallValid, context, identifier, name, length, label);
1023 }
1024 else
1025 {
1026 GenerateContextLostErrorOnCurrentGlobalContext();
1027 }
1028 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
1029 }
1030
GL_ObjectPtrLabel(const void * ptr,GLsizei length,const GLchar * label)1031 void GL_APIENTRY GL_ObjectPtrLabel(const void *ptr, GLsizei length, const GLchar *label)
1032 {
1033 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
1034 Context *context = GetValidGlobalContext();
1035 EVENT(context, GLObjectPtrLabel,
1036 "context = %d, ptr = 0x%016" PRIxPTR ", length = %d, label = 0x%016" PRIxPTR "",
1037 CID(context), (uintptr_t)ptr, length, (uintptr_t)label);
1038
1039 if (context)
1040 {
1041 SCOPED_SHARE_CONTEXT_LOCK(context);
1042 bool isCallValid = (context->skipValidation() ||
1043 ValidateObjectPtrLabel(context, angle::EntryPoint::GLObjectPtrLabel,
1044 ptr, length, label));
1045 if (isCallValid)
1046 {
1047 context->objectPtrLabel(ptr, length, label);
1048 }
1049 ANGLE_CAPTURE_GL(ObjectPtrLabel, isCallValid, context, ptr, length, label);
1050 }
1051 else
1052 {
1053 GenerateContextLostErrorOnCurrentGlobalContext();
1054 }
1055 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
1056 }
1057
GL_PatchParameteri(GLenum pname,GLint value)1058 void GL_APIENTRY GL_PatchParameteri(GLenum pname, GLint value)
1059 {
1060 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
1061 Context *context = GetValidGlobalContext();
1062 EVENT(context, GLPatchParameteri, "context = %d, pname = %s, value = %d", CID(context),
1063 GLenumToString(GLESEnum::PatchParameterName, pname), value);
1064
1065 if (context)
1066 {
1067 bool isCallValid =
1068 (context->skipValidation() ||
1069 ValidatePatchParameteri(context->getPrivateState(),
1070 context->getMutableErrorSetForValidation(),
1071 angle::EntryPoint::GLPatchParameteri, pname, value));
1072 if (isCallValid)
1073 {
1074 ContextPrivatePatchParameteri(context->getMutablePrivateState(),
1075 context->getMutablePrivateStateCache(), pname, value);
1076 }
1077 ANGLE_CAPTURE_GL(PatchParameteri, isCallValid, context, pname, value);
1078 }
1079 else
1080 {
1081 GenerateContextLostErrorOnCurrentGlobalContext();
1082 }
1083 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
1084 }
1085
GL_PopDebugGroup()1086 void GL_APIENTRY GL_PopDebugGroup()
1087 {
1088 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
1089 Context *context = GetValidGlobalContext();
1090 EVENT(context, GLPopDebugGroup, "context = %d", CID(context));
1091
1092 if (context)
1093 {
1094 SCOPED_SHARE_CONTEXT_LOCK(context);
1095 bool isCallValid = (context->skipValidation() ||
1096 ValidatePopDebugGroup(context, angle::EntryPoint::GLPopDebugGroup));
1097 if (isCallValid)
1098 {
1099 context->popDebugGroup();
1100 }
1101 ANGLE_CAPTURE_GL(PopDebugGroup, isCallValid, context);
1102 }
1103 else
1104 {
1105 GenerateContextLostErrorOnCurrentGlobalContext();
1106 }
1107 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
1108 }
1109
GL_PrimitiveBoundingBox(GLfloat minX,GLfloat minY,GLfloat minZ,GLfloat minW,GLfloat maxX,GLfloat maxY,GLfloat maxZ,GLfloat maxW)1110 void GL_APIENTRY GL_PrimitiveBoundingBox(GLfloat minX,
1111 GLfloat minY,
1112 GLfloat minZ,
1113 GLfloat minW,
1114 GLfloat maxX,
1115 GLfloat maxY,
1116 GLfloat maxZ,
1117 GLfloat maxW)
1118 {
1119 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
1120 Context *context = GetValidGlobalContext();
1121 EVENT(context, GLPrimitiveBoundingBox,
1122 "context = %d, minX = %f, minY = %f, minZ = %f, minW = %f, maxX = %f, maxY = %f, maxZ = "
1123 "%f, maxW = %f",
1124 CID(context), minX, minY, minZ, minW, maxX, maxY, maxZ, maxW);
1125
1126 if (context)
1127 {
1128 bool isCallValid =
1129 (context->skipValidation() ||
1130 ValidatePrimitiveBoundingBox(context->getPrivateState(),
1131 context->getMutableErrorSetForValidation(),
1132 angle::EntryPoint::GLPrimitiveBoundingBox, minX, minY,
1133 minZ, minW, maxX, maxY, maxZ, maxW));
1134 if (isCallValid)
1135 {
1136 ContextPrivatePrimitiveBoundingBox(context->getMutablePrivateState(),
1137 context->getMutablePrivateStateCache(), minX, minY,
1138 minZ, minW, maxX, maxY, maxZ, maxW);
1139 }
1140 ANGLE_CAPTURE_GL(PrimitiveBoundingBox, isCallValid, context, minX, minY, minZ, minW, maxX,
1141 maxY, maxZ, maxW);
1142 }
1143 else
1144 {
1145 GenerateContextLostErrorOnCurrentGlobalContext();
1146 }
1147 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
1148 }
1149
GL_PushDebugGroup(GLenum source,GLuint id,GLsizei length,const GLchar * message)1150 void GL_APIENTRY GL_PushDebugGroup(GLenum source, GLuint id, GLsizei length, const GLchar *message)
1151 {
1152 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
1153 Context *context = GetValidGlobalContext();
1154 EVENT(context, GLPushDebugGroup,
1155 "context = %d, source = %s, id = %u, length = %d, message = 0x%016" PRIxPTR "",
1156 CID(context), GLenumToString(GLESEnum::DebugSource, source), id, length,
1157 (uintptr_t)message);
1158
1159 if (context)
1160 {
1161 SCOPED_SHARE_CONTEXT_LOCK(context);
1162 bool isCallValid = (context->skipValidation() ||
1163 ValidatePushDebugGroup(context, angle::EntryPoint::GLPushDebugGroup,
1164 source, id, length, message));
1165 if (isCallValid)
1166 {
1167 context->pushDebugGroup(source, id, length, message);
1168 }
1169 ANGLE_CAPTURE_GL(PushDebugGroup, isCallValid, context, source, id, length, message);
1170 }
1171 else
1172 {
1173 GenerateContextLostErrorOnCurrentGlobalContext();
1174 }
1175 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
1176 }
1177
GL_ReadnPixels(GLint x,GLint y,GLsizei width,GLsizei height,GLenum format,GLenum type,GLsizei bufSize,void * data)1178 void GL_APIENTRY GL_ReadnPixels(GLint x,
1179 GLint y,
1180 GLsizei width,
1181 GLsizei height,
1182 GLenum format,
1183 GLenum type,
1184 GLsizei bufSize,
1185 void *data)
1186 {
1187 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
1188 Context *context = GetValidGlobalContext();
1189 EVENT(context, GLReadnPixels,
1190 "context = %d, x = %d, y = %d, width = %d, height = %d, format = %s, type = %s, bufSize "
1191 "= %d, data = 0x%016" PRIxPTR "",
1192 CID(context), x, y, width, height, GLenumToString(GLESEnum::PixelFormat, format),
1193 GLenumToString(GLESEnum::PixelType, type), bufSize, (uintptr_t)data);
1194
1195 if (context)
1196 {
1197 SCOPED_SHARE_CONTEXT_LOCK(context);
1198 bool isCallValid = (context->skipValidation() ||
1199 ValidateReadnPixels(context, angle::EntryPoint::GLReadnPixels, x, y,
1200 width, height, format, type, bufSize, data));
1201 if (isCallValid)
1202 {
1203 context->readnPixels(x, y, width, height, format, type, bufSize, data);
1204 }
1205 ANGLE_CAPTURE_GL(ReadnPixels, isCallValid, context, x, y, width, height, format, type,
1206 bufSize, data);
1207 }
1208 else
1209 {
1210 GenerateContextLostErrorOnCurrentGlobalContext();
1211 }
1212 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
1213 }
1214
GL_SamplerParameterIiv(GLuint sampler,GLenum pname,const GLint * param)1215 void GL_APIENTRY GL_SamplerParameterIiv(GLuint sampler, GLenum pname, const GLint *param)
1216 {
1217 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
1218 Context *context = GetValidGlobalContext();
1219 EVENT(context, GLSamplerParameterIiv,
1220 "context = %d, sampler = %u, pname = %s, param = 0x%016" PRIxPTR "", CID(context),
1221 sampler, GLenumToString(GLESEnum::SamplerParameterI, pname), (uintptr_t)param);
1222
1223 if (context)
1224 {
1225 SamplerID samplerPacked = PackParam<SamplerID>(sampler);
1226 SCOPED_SHARE_CONTEXT_LOCK(context);
1227 bool isCallValid =
1228 (context->skipValidation() ||
1229 ValidateSamplerParameterIiv(context, angle::EntryPoint::GLSamplerParameterIiv,
1230 samplerPacked, pname, param));
1231 if (isCallValid)
1232 {
1233 context->samplerParameterIiv(samplerPacked, pname, param);
1234 }
1235 ANGLE_CAPTURE_GL(SamplerParameterIiv, isCallValid, context, samplerPacked, pname, param);
1236 }
1237 else
1238 {
1239 GenerateContextLostErrorOnCurrentGlobalContext();
1240 }
1241 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
1242 }
1243
GL_SamplerParameterIuiv(GLuint sampler,GLenum pname,const GLuint * param)1244 void GL_APIENTRY GL_SamplerParameterIuiv(GLuint sampler, GLenum pname, const GLuint *param)
1245 {
1246 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
1247 Context *context = GetValidGlobalContext();
1248 EVENT(context, GLSamplerParameterIuiv,
1249 "context = %d, sampler = %u, pname = %s, param = 0x%016" PRIxPTR "", CID(context),
1250 sampler, GLenumToString(GLESEnum::SamplerParameterI, pname), (uintptr_t)param);
1251
1252 if (context)
1253 {
1254 SamplerID samplerPacked = PackParam<SamplerID>(sampler);
1255 SCOPED_SHARE_CONTEXT_LOCK(context);
1256 bool isCallValid =
1257 (context->skipValidation() ||
1258 ValidateSamplerParameterIuiv(context, angle::EntryPoint::GLSamplerParameterIuiv,
1259 samplerPacked, pname, param));
1260 if (isCallValid)
1261 {
1262 context->samplerParameterIuiv(samplerPacked, pname, param);
1263 }
1264 ANGLE_CAPTURE_GL(SamplerParameterIuiv, isCallValid, context, samplerPacked, pname, param);
1265 }
1266 else
1267 {
1268 GenerateContextLostErrorOnCurrentGlobalContext();
1269 }
1270 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
1271 }
1272
GL_TexBuffer(GLenum target,GLenum internalformat,GLuint buffer)1273 void GL_APIENTRY GL_TexBuffer(GLenum target, GLenum internalformat, GLuint buffer)
1274 {
1275 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
1276 Context *context = GetValidGlobalContext();
1277 EVENT(context, GLTexBuffer, "context = %d, target = %s, internalformat = %s, buffer = %u",
1278 CID(context), GLenumToString(GLESEnum::TextureTarget, target),
1279 GLenumToString(GLESEnum::SizedInternalFormat, internalformat), buffer);
1280
1281 if (context)
1282 {
1283 TextureType targetPacked = PackParam<TextureType>(target);
1284 BufferID bufferPacked = PackParam<BufferID>(buffer);
1285 SCOPED_SHARE_CONTEXT_LOCK(context);
1286 bool isCallValid = (context->skipValidation() ||
1287 ValidateTexBuffer(context, angle::EntryPoint::GLTexBuffer, targetPacked,
1288 internalformat, bufferPacked));
1289 if (isCallValid)
1290 {
1291 context->texBuffer(targetPacked, internalformat, bufferPacked);
1292 }
1293 ANGLE_CAPTURE_GL(TexBuffer, isCallValid, context, targetPacked, internalformat,
1294 bufferPacked);
1295 }
1296 else
1297 {
1298 GenerateContextLostErrorOnCurrentGlobalContext();
1299 }
1300 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
1301 }
1302
GL_TexBufferRange(GLenum target,GLenum internalformat,GLuint buffer,GLintptr offset,GLsizeiptr size)1303 void GL_APIENTRY GL_TexBufferRange(GLenum target,
1304 GLenum internalformat,
1305 GLuint buffer,
1306 GLintptr offset,
1307 GLsizeiptr size)
1308 {
1309 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
1310 Context *context = GetValidGlobalContext();
1311 EVENT(context, GLTexBufferRange,
1312 "context = %d, target = %s, internalformat = %s, buffer = %u, offset = %llu, size = %llu",
1313 CID(context), GLenumToString(GLESEnum::TextureTarget, target),
1314 GLenumToString(GLESEnum::SizedInternalFormat, internalformat), buffer,
1315 static_cast<unsigned long long>(offset), static_cast<unsigned long long>(size));
1316
1317 if (context)
1318 {
1319 TextureType targetPacked = PackParam<TextureType>(target);
1320 BufferID bufferPacked = PackParam<BufferID>(buffer);
1321 SCOPED_SHARE_CONTEXT_LOCK(context);
1322 bool isCallValid =
1323 (context->skipValidation() ||
1324 ValidateTexBufferRange(context, angle::EntryPoint::GLTexBufferRange, targetPacked,
1325 internalformat, bufferPacked, offset, size));
1326 if (isCallValid)
1327 {
1328 context->texBufferRange(targetPacked, internalformat, bufferPacked, offset, size);
1329 }
1330 ANGLE_CAPTURE_GL(TexBufferRange, isCallValid, context, targetPacked, internalformat,
1331 bufferPacked, offset, size);
1332 }
1333 else
1334 {
1335 GenerateContextLostErrorOnCurrentGlobalContext();
1336 }
1337 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
1338 }
1339
GL_TexParameterIiv(GLenum target,GLenum pname,const GLint * params)1340 void GL_APIENTRY GL_TexParameterIiv(GLenum target, GLenum pname, const GLint *params)
1341 {
1342 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
1343 Context *context = GetValidGlobalContext();
1344 EVENT(context, GLTexParameterIiv,
1345 "context = %d, target = %s, pname = %s, params = 0x%016" PRIxPTR "", CID(context),
1346 GLenumToString(GLESEnum::TextureTarget, target),
1347 GLenumToString(GLESEnum::TextureParameterName, pname), (uintptr_t)params);
1348
1349 if (context)
1350 {
1351 TextureType targetPacked = PackParam<TextureType>(target);
1352 SCOPED_SHARE_CONTEXT_LOCK(context);
1353 bool isCallValid = (context->skipValidation() ||
1354 ValidateTexParameterIiv(context, angle::EntryPoint::GLTexParameterIiv,
1355 targetPacked, pname, params));
1356 if (isCallValid)
1357 {
1358 context->texParameterIiv(targetPacked, pname, params);
1359 }
1360 ANGLE_CAPTURE_GL(TexParameterIiv, isCallValid, context, targetPacked, pname, params);
1361 }
1362 else
1363 {
1364 GenerateContextLostErrorOnCurrentGlobalContext();
1365 }
1366 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
1367 }
1368
GL_TexParameterIuiv(GLenum target,GLenum pname,const GLuint * params)1369 void GL_APIENTRY GL_TexParameterIuiv(GLenum target, GLenum pname, const GLuint *params)
1370 {
1371 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
1372 Context *context = GetValidGlobalContext();
1373 EVENT(context, GLTexParameterIuiv,
1374 "context = %d, target = %s, pname = %s, params = 0x%016" PRIxPTR "", CID(context),
1375 GLenumToString(GLESEnum::TextureTarget, target),
1376 GLenumToString(GLESEnum::TextureParameterName, pname), (uintptr_t)params);
1377
1378 if (context)
1379 {
1380 TextureType targetPacked = PackParam<TextureType>(target);
1381 SCOPED_SHARE_CONTEXT_LOCK(context);
1382 bool isCallValid = (context->skipValidation() ||
1383 ValidateTexParameterIuiv(context, angle::EntryPoint::GLTexParameterIuiv,
1384 targetPacked, pname, params));
1385 if (isCallValid)
1386 {
1387 context->texParameterIuiv(targetPacked, pname, params);
1388 }
1389 ANGLE_CAPTURE_GL(TexParameterIuiv, isCallValid, context, targetPacked, pname, params);
1390 }
1391 else
1392 {
1393 GenerateContextLostErrorOnCurrentGlobalContext();
1394 }
1395 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
1396 }
1397
GL_TexStorage3DMultisample(GLenum target,GLsizei samples,GLenum internalformat,GLsizei width,GLsizei height,GLsizei depth,GLboolean fixedsamplelocations)1398 void GL_APIENTRY GL_TexStorage3DMultisample(GLenum target,
1399 GLsizei samples,
1400 GLenum internalformat,
1401 GLsizei width,
1402 GLsizei height,
1403 GLsizei depth,
1404 GLboolean fixedsamplelocations)
1405 {
1406 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
1407 Context *context = GetValidGlobalContext();
1408 EVENT(context, GLTexStorage3DMultisample,
1409 "context = %d, target = %s, samples = %d, internalformat = %s, width = %d, height = %d, "
1410 "depth = %d, fixedsamplelocations = %s",
1411 CID(context), GLenumToString(GLESEnum::TextureTarget, target), samples,
1412 GLenumToString(GLESEnum::SizedInternalFormat, internalformat), width, height, depth,
1413 GLbooleanToString(fixedsamplelocations));
1414
1415 if (context)
1416 {
1417 TextureType targetPacked = PackParam<TextureType>(target);
1418 SCOPED_SHARE_CONTEXT_LOCK(context);
1419 bool isCallValid =
1420 (context->skipValidation() ||
1421 ValidateTexStorage3DMultisample(context, angle::EntryPoint::GLTexStorage3DMultisample,
1422 targetPacked, samples, internalformat, width, height,
1423 depth, fixedsamplelocations));
1424 if (isCallValid)
1425 {
1426 context->texStorage3DMultisample(targetPacked, samples, internalformat, width, height,
1427 depth, fixedsamplelocations);
1428 }
1429 ANGLE_CAPTURE_GL(TexStorage3DMultisample, isCallValid, context, targetPacked, samples,
1430 internalformat, width, height, depth, fixedsamplelocations);
1431 }
1432 else
1433 {
1434 GenerateContextLostErrorOnCurrentGlobalContext();
1435 }
1436 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
1437 }
1438
1439 } // extern "C"
1440