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