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