xref: /aosp_15_r20/external/angle/src/libGLESv2/entry_points_gles_3_2_autogen.cpp (revision 8975f5c5ed3d1c378011245431ada316dfb6f244)
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