1 // GENERATED FILE - DO NOT EDIT.
2 // Generated by generate_entry_points.py using data from gl.xml and gl_angle_ext.xml.
3 //
4 // Copyright 2020 The ANGLE Project Authors. All rights reserved.
5 // Use of this source code is governed by a BSD-style license that can be
6 // found in the LICENSE file.
7 //
8 // entry_points_gles_ext_autogen.cpp:
9 // Defines the GLES extension entry points.
10
11 #include "libGLESv2/entry_points_gles_ext_autogen.h"
12
13 #include "common/entry_points_enum_autogen.h"
14 #include "common/gl_enum_utils.h"
15 #include "libANGLE/Context.h"
16 #include "libANGLE/Context.inl.h"
17 #include "libANGLE/capture/capture_gles_ext_autogen.h"
18 #include "libANGLE/context_private_call_autogen.h"
19 #include "libANGLE/entry_points_utils.h"
20 #include "libANGLE/validationESEXT.h"
21 #include "libGLESv2/global_state.h"
22
23 using namespace gl;
24
25 #include "libANGLE/capture/capture_gles_1_0_autogen.h"
26 #include "libANGLE/capture/capture_gles_2_0_autogen.h"
27 #include "libANGLE/capture/capture_gles_3_0_autogen.h"
28 #include "libANGLE/capture/capture_gles_3_1_autogen.h"
29 #include "libANGLE/capture/capture_gles_3_2_autogen.h"
30 #include "libANGLE/validationES1.h"
31 #include "libANGLE/validationES2.h"
32 #include "libANGLE/validationES3.h"
33 #include "libANGLE/validationES31.h"
34 #include "libANGLE/validationES32.h"
35
36 using namespace gl;
37
38 extern "C" {
39
40 // GL_AMD_performance_monitor
GL_BeginPerfMonitorAMD(GLuint monitor)41 void GL_APIENTRY GL_BeginPerfMonitorAMD(GLuint monitor)
42 {
43 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
44 Context *context = GetValidGlobalContext();
45 EVENT(context, GLBeginPerfMonitorAMD, "context = %d, monitor = %u", CID(context), monitor);
46
47 if (context)
48 {
49 SCOPED_SHARE_CONTEXT_LOCK(context);
50 bool isCallValid =
51 (context->skipValidation() ||
52 (ValidatePixelLocalStorageInactive(context->getPrivateState(),
53 context->getMutableErrorSetForValidation(),
54 angle::EntryPoint::GLBeginPerfMonitorAMD) &&
55 ValidateBeginPerfMonitorAMD(context, angle::EntryPoint::GLBeginPerfMonitorAMD,
56 monitor)));
57 if (isCallValid)
58 {
59 context->beginPerfMonitor(monitor);
60 }
61 ANGLE_CAPTURE_GL(BeginPerfMonitorAMD, isCallValid, context, monitor);
62 }
63 else
64 {
65 GenerateContextLostErrorOnCurrentGlobalContext();
66 }
67 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
68 }
69
GL_DeletePerfMonitorsAMD(GLsizei n,GLuint * monitors)70 void GL_APIENTRY GL_DeletePerfMonitorsAMD(GLsizei n, GLuint *monitors)
71 {
72 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
73 Context *context = GetValidGlobalContext();
74 EVENT(context, GLDeletePerfMonitorsAMD, "context = %d, n = %d, monitors = 0x%016" PRIxPTR "",
75 CID(context), n, (uintptr_t)monitors);
76
77 if (context)
78 {
79 SCOPED_SHARE_CONTEXT_LOCK(context);
80 bool isCallValid = (context->skipValidation() ||
81 ValidateDeletePerfMonitorsAMD(
82 context, angle::EntryPoint::GLDeletePerfMonitorsAMD, n, monitors));
83 if (isCallValid)
84 {
85 context->deletePerfMonitors(n, monitors);
86 }
87 ANGLE_CAPTURE_GL(DeletePerfMonitorsAMD, isCallValid, context, n, monitors);
88 }
89 else
90 {
91 GenerateContextLostErrorOnCurrentGlobalContext();
92 }
93 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
94 }
95
GL_EndPerfMonitorAMD(GLuint monitor)96 void GL_APIENTRY GL_EndPerfMonitorAMD(GLuint monitor)
97 {
98 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
99 Context *context = GetValidGlobalContext();
100 EVENT(context, GLEndPerfMonitorAMD, "context = %d, monitor = %u", CID(context), monitor);
101
102 if (context)
103 {
104 SCOPED_SHARE_CONTEXT_LOCK(context);
105 bool isCallValid =
106 (context->skipValidation() ||
107 (ValidatePixelLocalStorageInactive(context->getPrivateState(),
108 context->getMutableErrorSetForValidation(),
109 angle::EntryPoint::GLEndPerfMonitorAMD) &&
110 ValidateEndPerfMonitorAMD(context, angle::EntryPoint::GLEndPerfMonitorAMD, monitor)));
111 if (isCallValid)
112 {
113 context->endPerfMonitor(monitor);
114 }
115 ANGLE_CAPTURE_GL(EndPerfMonitorAMD, isCallValid, context, monitor);
116 }
117 else
118 {
119 GenerateContextLostErrorOnCurrentGlobalContext();
120 }
121 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
122 }
123
GL_GenPerfMonitorsAMD(GLsizei n,GLuint * monitors)124 void GL_APIENTRY GL_GenPerfMonitorsAMD(GLsizei n, GLuint *monitors)
125 {
126 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
127 Context *context = GetValidGlobalContext();
128 EVENT(context, GLGenPerfMonitorsAMD, "context = %d, n = %d, monitors = 0x%016" PRIxPTR "",
129 CID(context), n, (uintptr_t)monitors);
130
131 if (context)
132 {
133 SCOPED_SHARE_CONTEXT_LOCK(context);
134 bool isCallValid = (context->skipValidation() ||
135 ValidateGenPerfMonitorsAMD(
136 context, angle::EntryPoint::GLGenPerfMonitorsAMD, n, monitors));
137 if (isCallValid)
138 {
139 context->genPerfMonitors(n, monitors);
140 }
141 ANGLE_CAPTURE_GL(GenPerfMonitorsAMD, isCallValid, context, n, monitors);
142 }
143 else
144 {
145 GenerateContextLostErrorOnCurrentGlobalContext();
146 }
147 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
148 }
149
GL_GetPerfMonitorCounterDataAMD(GLuint monitor,GLenum pname,GLsizei dataSize,GLuint * data,GLint * bytesWritten)150 void GL_APIENTRY GL_GetPerfMonitorCounterDataAMD(GLuint monitor,
151 GLenum pname,
152 GLsizei dataSize,
153 GLuint *data,
154 GLint *bytesWritten)
155 {
156 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
157 Context *context = GetValidGlobalContext();
158 EVENT(context, GLGetPerfMonitorCounterDataAMD,
159 "context = %d, monitor = %u, pname = %s, dataSize = %d, data = 0x%016" PRIxPTR
160 ", bytesWritten = 0x%016" PRIxPTR "",
161 CID(context), monitor, GLenumToString(GLESEnum::AllEnums, pname), dataSize,
162 (uintptr_t)data, (uintptr_t)bytesWritten);
163
164 if (context)
165 {
166 SCOPED_SHARE_CONTEXT_LOCK(context);
167 bool isCallValid = (context->skipValidation() ||
168 ValidateGetPerfMonitorCounterDataAMD(
169 context, angle::EntryPoint::GLGetPerfMonitorCounterDataAMD, monitor,
170 pname, dataSize, data, bytesWritten));
171 if (isCallValid)
172 {
173 context->getPerfMonitorCounterData(monitor, pname, dataSize, data, bytesWritten);
174 }
175 ANGLE_CAPTURE_GL(GetPerfMonitorCounterDataAMD, isCallValid, context, monitor, pname,
176 dataSize, data, bytesWritten);
177 }
178 else
179 {
180 GenerateContextLostErrorOnCurrentGlobalContext();
181 }
182 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
183 }
184
GL_GetPerfMonitorCounterInfoAMD(GLuint group,GLuint counter,GLenum pname,void * data)185 void GL_APIENTRY GL_GetPerfMonitorCounterInfoAMD(GLuint group,
186 GLuint counter,
187 GLenum pname,
188 void *data)
189 {
190 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
191 Context *context = GetValidGlobalContext();
192 EVENT(context, GLGetPerfMonitorCounterInfoAMD,
193 "context = %d, group = %u, counter = %u, pname = %s, data = 0x%016" PRIxPTR "",
194 CID(context), group, counter, GLenumToString(GLESEnum::AllEnums, pname), (uintptr_t)data);
195
196 if (context)
197 {
198 SCOPED_SHARE_CONTEXT_LOCK(context);
199 bool isCallValid = (context->skipValidation() ||
200 ValidateGetPerfMonitorCounterInfoAMD(
201 context, angle::EntryPoint::GLGetPerfMonitorCounterInfoAMD, group,
202 counter, pname, data));
203 if (isCallValid)
204 {
205 context->getPerfMonitorCounterInfo(group, counter, pname, data);
206 }
207 ANGLE_CAPTURE_GL(GetPerfMonitorCounterInfoAMD, isCallValid, context, group, counter, pname,
208 data);
209 }
210 else
211 {
212 GenerateContextLostErrorOnCurrentGlobalContext();
213 }
214 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
215 }
216
GL_GetPerfMonitorCounterStringAMD(GLuint group,GLuint counter,GLsizei bufSize,GLsizei * length,GLchar * counterString)217 void GL_APIENTRY GL_GetPerfMonitorCounterStringAMD(GLuint group,
218 GLuint counter,
219 GLsizei bufSize,
220 GLsizei *length,
221 GLchar *counterString)
222 {
223 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
224 Context *context = GetValidGlobalContext();
225 EVENT(context, GLGetPerfMonitorCounterStringAMD,
226 "context = %d, group = %u, counter = %u, bufSize = %d, length = 0x%016" PRIxPTR
227 ", counterString = 0x%016" PRIxPTR "",
228 CID(context), group, counter, bufSize, (uintptr_t)length, (uintptr_t)counterString);
229
230 if (context)
231 {
232 SCOPED_SHARE_CONTEXT_LOCK(context);
233 bool isCallValid = (context->skipValidation() ||
234 ValidateGetPerfMonitorCounterStringAMD(
235 context, angle::EntryPoint::GLGetPerfMonitorCounterStringAMD, group,
236 counter, bufSize, length, counterString));
237 if (isCallValid)
238 {
239 context->getPerfMonitorCounterString(group, counter, bufSize, length, counterString);
240 }
241 ANGLE_CAPTURE_GL(GetPerfMonitorCounterStringAMD, isCallValid, context, group, counter,
242 bufSize, length, counterString);
243 }
244 else
245 {
246 GenerateContextLostErrorOnCurrentGlobalContext();
247 }
248 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
249 }
250
GL_GetPerfMonitorCountersAMD(GLuint group,GLint * numCounters,GLint * maxActiveCounters,GLsizei counterSize,GLuint * counters)251 void GL_APIENTRY GL_GetPerfMonitorCountersAMD(GLuint group,
252 GLint *numCounters,
253 GLint *maxActiveCounters,
254 GLsizei counterSize,
255 GLuint *counters)
256 {
257 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
258 Context *context = GetValidGlobalContext();
259 EVENT(context, GLGetPerfMonitorCountersAMD,
260 "context = %d, group = %u, numCounters = 0x%016" PRIxPTR
261 ", maxActiveCounters = 0x%016" PRIxPTR ", counterSize = %d, counters = 0x%016" PRIxPTR "",
262 CID(context), group, (uintptr_t)numCounters, (uintptr_t)maxActiveCounters, counterSize,
263 (uintptr_t)counters);
264
265 if (context)
266 {
267 SCOPED_SHARE_CONTEXT_LOCK(context);
268 bool isCallValid = (context->skipValidation() ||
269 ValidateGetPerfMonitorCountersAMD(
270 context, angle::EntryPoint::GLGetPerfMonitorCountersAMD, group,
271 numCounters, maxActiveCounters, counterSize, counters));
272 if (isCallValid)
273 {
274 context->getPerfMonitorCounters(group, numCounters, maxActiveCounters, counterSize,
275 counters);
276 }
277 ANGLE_CAPTURE_GL(GetPerfMonitorCountersAMD, isCallValid, context, group, numCounters,
278 maxActiveCounters, counterSize, counters);
279 }
280 else
281 {
282 GenerateContextLostErrorOnCurrentGlobalContext();
283 }
284 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
285 }
286
GL_GetPerfMonitorGroupStringAMD(GLuint group,GLsizei bufSize,GLsizei * length,GLchar * groupString)287 void GL_APIENTRY GL_GetPerfMonitorGroupStringAMD(GLuint group,
288 GLsizei bufSize,
289 GLsizei *length,
290 GLchar *groupString)
291 {
292 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
293 Context *context = GetValidGlobalContext();
294 EVENT(context, GLGetPerfMonitorGroupStringAMD,
295 "context = %d, group = %u, bufSize = %d, length = 0x%016" PRIxPTR
296 ", groupString = 0x%016" PRIxPTR "",
297 CID(context), group, bufSize, (uintptr_t)length, (uintptr_t)groupString);
298
299 if (context)
300 {
301 SCOPED_SHARE_CONTEXT_LOCK(context);
302 bool isCallValid = (context->skipValidation() ||
303 ValidateGetPerfMonitorGroupStringAMD(
304 context, angle::EntryPoint::GLGetPerfMonitorGroupStringAMD, group,
305 bufSize, length, groupString));
306 if (isCallValid)
307 {
308 context->getPerfMonitorGroupString(group, bufSize, length, groupString);
309 }
310 ANGLE_CAPTURE_GL(GetPerfMonitorGroupStringAMD, isCallValid, context, group, bufSize, length,
311 groupString);
312 }
313 else
314 {
315 GenerateContextLostErrorOnCurrentGlobalContext();
316 }
317 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
318 }
319
GL_GetPerfMonitorGroupsAMD(GLint * numGroups,GLsizei groupsSize,GLuint * groups)320 void GL_APIENTRY GL_GetPerfMonitorGroupsAMD(GLint *numGroups, GLsizei groupsSize, GLuint *groups)
321 {
322 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
323 Context *context = GetValidGlobalContext();
324 EVENT(context, GLGetPerfMonitorGroupsAMD,
325 "context = %d, numGroups = 0x%016" PRIxPTR ", groupsSize = %d, groups = 0x%016" PRIxPTR
326 "",
327 CID(context), (uintptr_t)numGroups, groupsSize, (uintptr_t)groups);
328
329 if (context)
330 {
331 SCOPED_SHARE_CONTEXT_LOCK(context);
332 bool isCallValid =
333 (context->skipValidation() ||
334 ValidateGetPerfMonitorGroupsAMD(context, angle::EntryPoint::GLGetPerfMonitorGroupsAMD,
335 numGroups, groupsSize, groups));
336 if (isCallValid)
337 {
338 context->getPerfMonitorGroups(numGroups, groupsSize, groups);
339 }
340 ANGLE_CAPTURE_GL(GetPerfMonitorGroupsAMD, isCallValid, context, numGroups, groupsSize,
341 groups);
342 }
343 else
344 {
345 GenerateContextLostErrorOnCurrentGlobalContext();
346 }
347 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
348 }
349
GL_SelectPerfMonitorCountersAMD(GLuint monitor,GLboolean enable,GLuint group,GLint numCounters,GLuint * counterList)350 void GL_APIENTRY GL_SelectPerfMonitorCountersAMD(GLuint monitor,
351 GLboolean enable,
352 GLuint group,
353 GLint numCounters,
354 GLuint *counterList)
355 {
356 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
357 Context *context = GetValidGlobalContext();
358 EVENT(context, GLSelectPerfMonitorCountersAMD,
359 "context = %d, monitor = %u, enable = %s, group = %u, numCounters = %d, counterList = "
360 "0x%016" PRIxPTR "",
361 CID(context), monitor, GLbooleanToString(enable), group, numCounters,
362 (uintptr_t)counterList);
363
364 if (context)
365 {
366 SCOPED_SHARE_CONTEXT_LOCK(context);
367 bool isCallValid =
368 (context->skipValidation() ||
369 (ValidatePixelLocalStorageInactive(
370 context->getPrivateState(), context->getMutableErrorSetForValidation(),
371 angle::EntryPoint::GLSelectPerfMonitorCountersAMD) &&
372 ValidateSelectPerfMonitorCountersAMD(
373 context, angle::EntryPoint::GLSelectPerfMonitorCountersAMD, monitor, enable,
374 group, numCounters, counterList)));
375 if (isCallValid)
376 {
377 context->selectPerfMonitorCounters(monitor, enable, group, numCounters, counterList);
378 }
379 ANGLE_CAPTURE_GL(SelectPerfMonitorCountersAMD, isCallValid, context, monitor, enable, group,
380 numCounters, counterList);
381 }
382 else
383 {
384 GenerateContextLostErrorOnCurrentGlobalContext();
385 }
386 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
387 }
388
389 // GL_ANDROID_extension_pack_es31a
390
391 // GL_ANGLE_base_vertex_base_instance
GL_DrawArraysInstancedBaseInstanceANGLE(GLenum mode,GLint first,GLsizei count,GLsizei instanceCount,GLuint baseInstance)392 void GL_APIENTRY GL_DrawArraysInstancedBaseInstanceANGLE(GLenum mode,
393 GLint first,
394 GLsizei count,
395 GLsizei instanceCount,
396 GLuint baseInstance)
397 {
398 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
399 Context *context = GetValidGlobalContext();
400 EVENT(context, GLDrawArraysInstancedBaseInstanceANGLE,
401 "context = %d, mode = %s, first = %d, count = %d, instanceCount = %d, baseInstance = %u",
402 CID(context), GLenumToString(GLESEnum::PrimitiveType, mode), first, count, instanceCount,
403 baseInstance);
404
405 if (context)
406 {
407 PrimitiveMode modePacked = PackParam<PrimitiveMode>(mode);
408 SCOPED_SHARE_CONTEXT_LOCK(context);
409 bool isCallValid = (context->skipValidation() ||
410 ValidateDrawArraysInstancedBaseInstanceANGLE(
411 context, angle::EntryPoint::GLDrawArraysInstancedBaseInstanceANGLE,
412 modePacked, first, count, instanceCount, baseInstance));
413 if (isCallValid)
414 {
415 context->drawArraysInstancedBaseInstanceANGLE(modePacked, first, count, instanceCount,
416 baseInstance);
417 }
418 ANGLE_CAPTURE_GL(DrawArraysInstancedBaseInstanceANGLE, isCallValid, context, modePacked,
419 first, count, instanceCount, baseInstance);
420 }
421 else
422 {
423 GenerateContextLostErrorOnCurrentGlobalContext();
424 }
425 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
426 }
427
GL_DrawElementsInstancedBaseVertexBaseInstanceANGLE(GLenum mode,GLsizei count,GLenum type,const void * indices,GLsizei instanceCount,GLint baseVertex,GLuint baseInstance)428 void GL_APIENTRY GL_DrawElementsInstancedBaseVertexBaseInstanceANGLE(GLenum mode,
429 GLsizei count,
430 GLenum type,
431 const void *indices,
432 GLsizei instanceCount,
433 GLint baseVertex,
434 GLuint baseInstance)
435 {
436 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
437 Context *context = GetValidGlobalContext();
438 EVENT(context, GLDrawElementsInstancedBaseVertexBaseInstanceANGLE,
439 "context = %d, mode = %s, count = %d, type = %s, indices = 0x%016" PRIxPTR
440 ", instanceCount = %d, baseVertex = %d, baseInstance = %u",
441 CID(context), GLenumToString(GLESEnum::PrimitiveType, mode), count,
442 GLenumToString(GLESEnum::DrawElementsType, type), (uintptr_t)indices, instanceCount,
443 baseVertex, baseInstance);
444
445 if (context)
446 {
447 PrimitiveMode modePacked = PackParam<PrimitiveMode>(mode);
448 DrawElementsType typePacked = PackParam<DrawElementsType>(type);
449 SCOPED_SHARE_CONTEXT_LOCK(context);
450 bool isCallValid =
451 (context->skipValidation() ||
452 ValidateDrawElementsInstancedBaseVertexBaseInstanceANGLE(
453 context, angle::EntryPoint::GLDrawElementsInstancedBaseVertexBaseInstanceANGLE,
454 modePacked, count, typePacked, indices, instanceCount, baseVertex, baseInstance));
455 if (isCallValid)
456 {
457 context->drawElementsInstancedBaseVertexBaseInstanceANGLE(
458 modePacked, count, typePacked, indices, instanceCount, baseVertex, baseInstance);
459 }
460 ANGLE_CAPTURE_GL(DrawElementsInstancedBaseVertexBaseInstanceANGLE, isCallValid, context,
461 modePacked, count, typePacked, indices, instanceCount, baseVertex,
462 baseInstance);
463 }
464 else
465 {
466 GenerateContextLostErrorOnCurrentGlobalContext();
467 }
468 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
469 }
470
GL_MultiDrawArraysInstancedBaseInstanceANGLE(GLenum mode,const GLint * firsts,const GLsizei * counts,const GLsizei * instanceCounts,const GLuint * baseInstances,GLsizei drawcount)471 void GL_APIENTRY GL_MultiDrawArraysInstancedBaseInstanceANGLE(GLenum mode,
472 const GLint *firsts,
473 const GLsizei *counts,
474 const GLsizei *instanceCounts,
475 const GLuint *baseInstances,
476 GLsizei drawcount)
477 {
478 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
479 Context *context = GetValidGlobalContext();
480 EVENT(context, GLMultiDrawArraysInstancedBaseInstanceANGLE,
481 "context = %d, mode = %s, firsts = 0x%016" PRIxPTR ", counts = 0x%016" PRIxPTR
482 ", instanceCounts = 0x%016" PRIxPTR ", baseInstances = 0x%016" PRIxPTR ", drawcount = %d",
483 CID(context), GLenumToString(GLESEnum::PrimitiveType, mode), (uintptr_t)firsts,
484 (uintptr_t)counts, (uintptr_t)instanceCounts, (uintptr_t)baseInstances, drawcount);
485
486 if (context)
487 {
488 PrimitiveMode modePacked = PackParam<PrimitiveMode>(mode);
489 SCOPED_SHARE_CONTEXT_LOCK(context);
490 bool isCallValid =
491 (context->skipValidation() ||
492 (ValidatePixelLocalStorageInactive(
493 context->getPrivateState(), context->getMutableErrorSetForValidation(),
494 angle::EntryPoint::GLMultiDrawArraysInstancedBaseInstanceANGLE) &&
495 ValidateMultiDrawArraysInstancedBaseInstanceANGLE(
496 context, angle::EntryPoint::GLMultiDrawArraysInstancedBaseInstanceANGLE,
497 modePacked, firsts, counts, instanceCounts, baseInstances, drawcount)));
498 if (isCallValid)
499 {
500 context->multiDrawArraysInstancedBaseInstance(modePacked, firsts, counts,
501 instanceCounts, baseInstances, drawcount);
502 }
503 ANGLE_CAPTURE_GL(MultiDrawArraysInstancedBaseInstanceANGLE, isCallValid, context,
504 modePacked, firsts, counts, instanceCounts, baseInstances, drawcount);
505 }
506 else
507 {
508 GenerateContextLostErrorOnCurrentGlobalContext();
509 }
510 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
511 }
512
513 void GL_APIENTRY
GL_MultiDrawElementsInstancedBaseVertexBaseInstanceANGLE(GLenum mode,const GLsizei * counts,GLenum type,const void * const * indices,const GLsizei * instanceCounts,const GLint * baseVertices,const GLuint * baseInstances,GLsizei drawcount)514 GL_MultiDrawElementsInstancedBaseVertexBaseInstanceANGLE(GLenum mode,
515 const GLsizei *counts,
516 GLenum type,
517 const void *const *indices,
518 const GLsizei *instanceCounts,
519 const GLint *baseVertices,
520 const GLuint *baseInstances,
521 GLsizei drawcount)
522 {
523 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
524 Context *context = GetValidGlobalContext();
525 EVENT(context, GLMultiDrawElementsInstancedBaseVertexBaseInstanceANGLE,
526 "context = %d, mode = %s, counts = 0x%016" PRIxPTR ", type = %s, indices = 0x%016" PRIxPTR
527 ", instanceCounts = 0x%016" PRIxPTR ", baseVertices = 0x%016" PRIxPTR
528 ", baseInstances = 0x%016" PRIxPTR ", drawcount = %d",
529 CID(context), GLenumToString(GLESEnum::PrimitiveType, mode), (uintptr_t)counts,
530 GLenumToString(GLESEnum::DrawElementsType, type), (uintptr_t)indices,
531 (uintptr_t)instanceCounts, (uintptr_t)baseVertices, (uintptr_t)baseInstances, drawcount);
532
533 if (context)
534 {
535 PrimitiveMode modePacked = PackParam<PrimitiveMode>(mode);
536 DrawElementsType typePacked = PackParam<DrawElementsType>(type);
537 SCOPED_SHARE_CONTEXT_LOCK(context);
538 bool isCallValid =
539 (context->skipValidation() ||
540 (ValidatePixelLocalStorageInactive(
541 context->getPrivateState(), context->getMutableErrorSetForValidation(),
542 angle::EntryPoint::GLMultiDrawElementsInstancedBaseVertexBaseInstanceANGLE) &&
543 ValidateMultiDrawElementsInstancedBaseVertexBaseInstanceANGLE(
544 context,
545 angle::EntryPoint::GLMultiDrawElementsInstancedBaseVertexBaseInstanceANGLE,
546 modePacked, counts, typePacked, indices, instanceCounts, baseVertices,
547 baseInstances, drawcount)));
548 if (isCallValid)
549 {
550 context->multiDrawElementsInstancedBaseVertexBaseInstance(
551 modePacked, counts, typePacked, indices, instanceCounts, baseVertices,
552 baseInstances, drawcount);
553 }
554 ANGLE_CAPTURE_GL(MultiDrawElementsInstancedBaseVertexBaseInstanceANGLE, isCallValid,
555 context, modePacked, counts, typePacked, indices, instanceCounts,
556 baseVertices, baseInstances, drawcount);
557 }
558 else
559 {
560 GenerateContextLostErrorOnCurrentGlobalContext();
561 }
562 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
563 }
564
565 // GL_ANGLE_blob_cache
GL_BlobCacheCallbacksANGLE(GLSETBLOBPROCANGLE set,GLGETBLOBPROCANGLE get,const void * userParam)566 void GL_APIENTRY GL_BlobCacheCallbacksANGLE(GLSETBLOBPROCANGLE set,
567 GLGETBLOBPROCANGLE get,
568 const void *userParam)
569 {
570 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
571 Context *context = GetValidGlobalContext();
572 EVENT(context, GLBlobCacheCallbacksANGLE,
573 "context = %d, set = 0x%016" PRIxPTR ", get = 0x%016" PRIxPTR
574 ", userParam = 0x%016" PRIxPTR "",
575 CID(context), (uintptr_t)set, (uintptr_t)get, (uintptr_t)userParam);
576
577 if (context)
578 {
579 SCOPED_SHARE_CONTEXT_LOCK(context);
580 bool isCallValid =
581 (context->skipValidation() ||
582 (ValidatePixelLocalStorageInactive(context->getPrivateState(),
583 context->getMutableErrorSetForValidation(),
584 angle::EntryPoint::GLBlobCacheCallbacksANGLE) &&
585 ValidateBlobCacheCallbacksANGLE(context, angle::EntryPoint::GLBlobCacheCallbacksANGLE,
586 set, get, userParam)));
587 if (isCallValid)
588 {
589 context->blobCacheCallbacks(set, get, userParam);
590 }
591 ANGLE_CAPTURE_GL(BlobCacheCallbacksANGLE, isCallValid, context, set, get, userParam);
592 }
593 else
594 {
595 GenerateContextLostErrorOnCurrentGlobalContext();
596 }
597 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
598 }
599
GL_GetPointervANGLE(GLenum pname,void ** params)600 void GL_APIENTRY GL_GetPointervANGLE(GLenum pname, void **params)
601 {
602 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
603 Context *context = GetValidGlobalContext();
604 EVENT(context, GLGetPointervANGLE, "context = %d, pname = %s, params = 0x%016" PRIxPTR "",
605 CID(context), GLenumToString(GLESEnum::AllEnums, pname), (uintptr_t)params);
606
607 if (context)
608 {
609 SCOPED_SHARE_CONTEXT_LOCK(context);
610 bool isCallValid = (context->skipValidation() ||
611 ValidateGetPointervANGLE(context, angle::EntryPoint::GLGetPointervANGLE,
612 pname, params));
613 if (isCallValid)
614 {
615 context->getPointerv(pname, params);
616 }
617 ANGLE_CAPTURE_GL(GetPointervANGLE, isCallValid, context, pname, params);
618 }
619 else
620 {
621 GenerateContextLostErrorOnCurrentGlobalContext();
622 }
623 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
624 }
625
626 // GL_ANGLE_client_arrays
627
628 // GL_ANGLE_clip_cull_distance
629
630 // GL_ANGLE_copy_texture_3d
GL_CopyTexture3DANGLE(GLuint sourceId,GLint sourceLevel,GLenum destTarget,GLuint destId,GLint destLevel,GLint internalFormat,GLenum destType,GLboolean unpackFlipY,GLboolean unpackPremultiplyAlpha,GLboolean unpackUnmultiplyAlpha)631 void GL_APIENTRY GL_CopyTexture3DANGLE(GLuint sourceId,
632 GLint sourceLevel,
633 GLenum destTarget,
634 GLuint destId,
635 GLint destLevel,
636 GLint internalFormat,
637 GLenum destType,
638 GLboolean unpackFlipY,
639 GLboolean unpackPremultiplyAlpha,
640 GLboolean unpackUnmultiplyAlpha)
641 {
642 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
643 Context *context = GetValidGlobalContext();
644 EVENT(context, GLCopyTexture3DANGLE,
645 "context = %d, sourceId = %u, sourceLevel = %d, destTarget = %s, destId = %u, destLevel "
646 "= %d, internalFormat = %d, destType = %s, unpackFlipY = %s, unpackPremultiplyAlpha = "
647 "%s, unpackUnmultiplyAlpha = %s",
648 CID(context), sourceId, sourceLevel, GLenumToString(GLESEnum::AllEnums, destTarget),
649 destId, destLevel, internalFormat, GLenumToString(GLESEnum::AllEnums, destType),
650 GLbooleanToString(unpackFlipY), GLbooleanToString(unpackPremultiplyAlpha),
651 GLbooleanToString(unpackUnmultiplyAlpha));
652
653 if (context)
654 {
655 TextureID sourceIdPacked = PackParam<TextureID>(sourceId);
656 TextureTarget destTargetPacked = PackParam<TextureTarget>(destTarget);
657 TextureID destIdPacked = PackParam<TextureID>(destId);
658 SCOPED_SHARE_CONTEXT_LOCK(context);
659 bool isCallValid =
660 (context->skipValidation() ||
661 (ValidatePixelLocalStorageInactive(context->getPrivateState(),
662 context->getMutableErrorSetForValidation(),
663 angle::EntryPoint::GLCopyTexture3DANGLE) &&
664 ValidateCopyTexture3DANGLE(
665 context, angle::EntryPoint::GLCopyTexture3DANGLE, sourceIdPacked, sourceLevel,
666 destTargetPacked, destIdPacked, destLevel, internalFormat, destType, unpackFlipY,
667 unpackPremultiplyAlpha, unpackUnmultiplyAlpha)));
668 if (isCallValid)
669 {
670 context->copyTexture3D(sourceIdPacked, sourceLevel, destTargetPacked, destIdPacked,
671 destLevel, internalFormat, destType, unpackFlipY,
672 unpackPremultiplyAlpha, unpackUnmultiplyAlpha);
673 }
674 ANGLE_CAPTURE_GL(CopyTexture3DANGLE, isCallValid, context, sourceIdPacked, sourceLevel,
675 destTargetPacked, destIdPacked, destLevel, internalFormat, destType,
676 unpackFlipY, unpackPremultiplyAlpha, unpackUnmultiplyAlpha);
677 }
678 else
679 {
680 GenerateContextLostErrorOnCurrentGlobalContext();
681 }
682 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
683 }
684
GL_CopySubTexture3DANGLE(GLuint sourceId,GLint sourceLevel,GLenum destTarget,GLuint destId,GLint destLevel,GLint xoffset,GLint yoffset,GLint zoffset,GLint x,GLint y,GLint z,GLint width,GLint height,GLint depth,GLboolean unpackFlipY,GLboolean unpackPremultiplyAlpha,GLboolean unpackUnmultiplyAlpha)685 void GL_APIENTRY GL_CopySubTexture3DANGLE(GLuint sourceId,
686 GLint sourceLevel,
687 GLenum destTarget,
688 GLuint destId,
689 GLint destLevel,
690 GLint xoffset,
691 GLint yoffset,
692 GLint zoffset,
693 GLint x,
694 GLint y,
695 GLint z,
696 GLint width,
697 GLint height,
698 GLint depth,
699 GLboolean unpackFlipY,
700 GLboolean unpackPremultiplyAlpha,
701 GLboolean unpackUnmultiplyAlpha)
702 {
703 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
704 Context *context = GetValidGlobalContext();
705 EVENT(context, GLCopySubTexture3DANGLE,
706 "context = %d, sourceId = %u, sourceLevel = %d, destTarget = %s, destId = %u, destLevel "
707 "= %d, xoffset = %d, yoffset = %d, zoffset = %d, x = %d, y = %d, z = %d, width = %d, "
708 "height = %d, depth = %d, unpackFlipY = %s, unpackPremultiplyAlpha = %s, "
709 "unpackUnmultiplyAlpha = %s",
710 CID(context), sourceId, sourceLevel, GLenumToString(GLESEnum::AllEnums, destTarget),
711 destId, destLevel, xoffset, yoffset, zoffset, x, y, z, width, height, depth,
712 GLbooleanToString(unpackFlipY), GLbooleanToString(unpackPremultiplyAlpha),
713 GLbooleanToString(unpackUnmultiplyAlpha));
714
715 if (context)
716 {
717 TextureID sourceIdPacked = PackParam<TextureID>(sourceId);
718 TextureTarget destTargetPacked = PackParam<TextureTarget>(destTarget);
719 TextureID destIdPacked = PackParam<TextureID>(destId);
720 SCOPED_SHARE_CONTEXT_LOCK(context);
721 bool isCallValid =
722 (context->skipValidation() ||
723 (ValidatePixelLocalStorageInactive(context->getPrivateState(),
724 context->getMutableErrorSetForValidation(),
725 angle::EntryPoint::GLCopySubTexture3DANGLE) &&
726 ValidateCopySubTexture3DANGLE(context, angle::EntryPoint::GLCopySubTexture3DANGLE,
727 sourceIdPacked, sourceLevel, destTargetPacked,
728 destIdPacked, destLevel, xoffset, yoffset, zoffset, x,
729 y, z, width, height, depth, unpackFlipY,
730 unpackPremultiplyAlpha, unpackUnmultiplyAlpha)));
731 if (isCallValid)
732 {
733 context->copySubTexture3D(sourceIdPacked, sourceLevel, destTargetPacked, destIdPacked,
734 destLevel, xoffset, yoffset, zoffset, x, y, z, width, height,
735 depth, unpackFlipY, unpackPremultiplyAlpha,
736 unpackUnmultiplyAlpha);
737 }
738 ANGLE_CAPTURE_GL(CopySubTexture3DANGLE, isCallValid, context, sourceIdPacked, sourceLevel,
739 destTargetPacked, destIdPacked, destLevel, xoffset, yoffset, zoffset, x, y,
740 z, width, height, depth, unpackFlipY, unpackPremultiplyAlpha,
741 unpackUnmultiplyAlpha);
742 }
743 else
744 {
745 GenerateContextLostErrorOnCurrentGlobalContext();
746 }
747 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
748 }
749
750 // GL_ANGLE_depth_texture
751
752 // GL_ANGLE_framebuffer_blit
GL_BlitFramebufferANGLE(GLint srcX0,GLint srcY0,GLint srcX1,GLint srcY1,GLint dstX0,GLint dstY0,GLint dstX1,GLint dstY1,GLbitfield mask,GLenum filter)753 void GL_APIENTRY GL_BlitFramebufferANGLE(GLint srcX0,
754 GLint srcY0,
755 GLint srcX1,
756 GLint srcY1,
757 GLint dstX0,
758 GLint dstY0,
759 GLint dstX1,
760 GLint dstY1,
761 GLbitfield mask,
762 GLenum filter)
763 {
764 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
765 Context *context = GetValidGlobalContext();
766 EVENT(context, GLBlitFramebufferANGLE,
767 "context = %d, srcX0 = %d, srcY0 = %d, srcX1 = %d, srcY1 = %d, dstX0 = %d, dstY0 = %d, "
768 "dstX1 = %d, dstY1 = %d, mask = %s, filter = %s",
769 CID(context), srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1,
770 GLbitfieldToString(GLESEnum::ClearBufferMask, mask).c_str(),
771 GLenumToString(GLESEnum::BlitFramebufferFilter, filter));
772
773 if (context)
774 {
775 SCOPED_SHARE_CONTEXT_LOCK(context);
776 bool isCallValid =
777 (context->skipValidation() ||
778 (ValidatePixelLocalStorageInactive(context->getPrivateState(),
779 context->getMutableErrorSetForValidation(),
780 angle::EntryPoint::GLBlitFramebufferANGLE) &&
781 ValidateBlitFramebufferANGLE(context, angle::EntryPoint::GLBlitFramebufferANGLE,
782 srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1,
783 mask, filter)));
784 if (isCallValid)
785 {
786 context->blitFramebuffer(srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask,
787 filter);
788 }
789 ANGLE_CAPTURE_GL(BlitFramebufferANGLE, isCallValid, context, srcX0, srcY0, srcX1, srcY1,
790 dstX0, dstY0, dstX1, dstY1, mask, filter);
791 }
792 else
793 {
794 GenerateContextLostErrorOnCurrentGlobalContext();
795 }
796 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
797 }
798
799 // GL_ANGLE_framebuffer_multisample
GL_RenderbufferStorageMultisampleANGLE(GLenum target,GLsizei samples,GLenum internalformat,GLsizei width,GLsizei height)800 void GL_APIENTRY GL_RenderbufferStorageMultisampleANGLE(GLenum target,
801 GLsizei samples,
802 GLenum internalformat,
803 GLsizei width,
804 GLsizei height)
805 {
806 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
807 Context *context = GetValidGlobalContext();
808 EVENT(context, GLRenderbufferStorageMultisampleANGLE,
809 "context = %d, target = %s, samples = %d, internalformat = %s, width = %d, height = %d",
810 CID(context), GLenumToString(GLESEnum::RenderbufferTarget, target), samples,
811 GLenumToString(GLESEnum::InternalFormat, internalformat), width, height);
812
813 if (context)
814 {
815 SCOPED_SHARE_CONTEXT_LOCK(context);
816 bool isCallValid =
817 (context->skipValidation() ||
818 (ValidatePixelLocalStorageInactive(
819 context->getPrivateState(), context->getMutableErrorSetForValidation(),
820 angle::EntryPoint::GLRenderbufferStorageMultisampleANGLE) &&
821 ValidateRenderbufferStorageMultisampleANGLE(
822 context, angle::EntryPoint::GLRenderbufferStorageMultisampleANGLE, target,
823 samples, internalformat, width, height)));
824 if (isCallValid)
825 {
826 context->renderbufferStorageMultisample(target, samples, internalformat, width, height);
827 }
828 ANGLE_CAPTURE_GL(RenderbufferStorageMultisampleANGLE, isCallValid, context, target, samples,
829 internalformat, width, height);
830 }
831 else
832 {
833 GenerateContextLostErrorOnCurrentGlobalContext();
834 }
835 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
836 }
837
838 // GL_ANGLE_get_image
839 void GL_APIENTRY
GL_GetTexImageANGLE(GLenum target,GLint level,GLenum format,GLenum type,void * pixels)840 GL_GetTexImageANGLE(GLenum target, GLint level, GLenum format, GLenum type, void *pixels)
841 {
842 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
843 Context *context = GetValidGlobalContext();
844 EVENT(context, GLGetTexImageANGLE,
845 "context = %d, target = %s, level = %d, format = %s, type = %s, pixels = 0x%016" PRIxPTR
846 "",
847 CID(context), GLenumToString(GLESEnum::TextureTarget, target), level,
848 GLenumToString(GLESEnum::PixelFormat, format), GLenumToString(GLESEnum::PixelType, type),
849 (uintptr_t)pixels);
850
851 if (context)
852 {
853 TextureTarget targetPacked = PackParam<TextureTarget>(target);
854 SCOPED_SHARE_CONTEXT_LOCK(context);
855 bool isCallValid = (context->skipValidation() ||
856 ValidateGetTexImageANGLE(context, angle::EntryPoint::GLGetTexImageANGLE,
857 targetPacked, level, format, type, pixels));
858 if (isCallValid)
859 {
860 context->getTexImage(targetPacked, level, format, type, pixels);
861 }
862 ANGLE_CAPTURE_GL(GetTexImageANGLE, isCallValid, context, targetPacked, level, format, type,
863 pixels);
864 }
865 else
866 {
867 GenerateContextLostErrorOnCurrentGlobalContext();
868 }
869 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
870 }
871
GL_GetCompressedTexImageANGLE(GLenum target,GLint level,void * pixels)872 void GL_APIENTRY GL_GetCompressedTexImageANGLE(GLenum target, GLint level, void *pixels)
873 {
874 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
875 Context *context = GetValidGlobalContext();
876 EVENT(context, GLGetCompressedTexImageANGLE,
877 "context = %d, target = %s, level = %d, pixels = 0x%016" PRIxPTR "", CID(context),
878 GLenumToString(GLESEnum::TextureTarget, target), level, (uintptr_t)pixels);
879
880 if (context)
881 {
882 TextureTarget targetPacked = PackParam<TextureTarget>(target);
883 SCOPED_SHARE_CONTEXT_LOCK(context);
884 bool isCallValid = (context->skipValidation() ||
885 ValidateGetCompressedTexImageANGLE(
886 context, angle::EntryPoint::GLGetCompressedTexImageANGLE,
887 targetPacked, level, pixels));
888 if (isCallValid)
889 {
890 context->getCompressedTexImage(targetPacked, level, pixels);
891 }
892 ANGLE_CAPTURE_GL(GetCompressedTexImageANGLE, isCallValid, context, targetPacked, level,
893 pixels);
894 }
895 else
896 {
897 GenerateContextLostErrorOnCurrentGlobalContext();
898 }
899 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
900 }
901
GL_GetRenderbufferImageANGLE(GLenum target,GLenum format,GLenum type,void * pixels)902 void GL_APIENTRY GL_GetRenderbufferImageANGLE(GLenum target,
903 GLenum format,
904 GLenum type,
905 void *pixels)
906 {
907 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
908 Context *context = GetValidGlobalContext();
909 EVENT(context, GLGetRenderbufferImageANGLE,
910 "context = %d, target = %s, format = %s, type = %s, pixels = 0x%016" PRIxPTR "",
911 CID(context), GLenumToString(GLESEnum::RenderbufferTarget, target),
912 GLenumToString(GLESEnum::PixelFormat, format), GLenumToString(GLESEnum::PixelType, type),
913 (uintptr_t)pixels);
914
915 if (context)
916 {
917 SCOPED_SHARE_CONTEXT_LOCK(context);
918 bool isCallValid = (context->skipValidation() ||
919 ValidateGetRenderbufferImageANGLE(
920 context, angle::EntryPoint::GLGetRenderbufferImageANGLE, target,
921 format, type, pixels));
922 if (isCallValid)
923 {
924 context->getRenderbufferImage(target, format, type, pixels);
925 }
926 ANGLE_CAPTURE_GL(GetRenderbufferImageANGLE, isCallValid, context, target, format, type,
927 pixels);
928 }
929 else
930 {
931 GenerateContextLostErrorOnCurrentGlobalContext();
932 }
933 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
934 }
935
936 // GL_ANGLE_get_serialized_context_string
937
938 // GL_ANGLE_get_tex_level_parameter
GL_GetTexLevelParameterivANGLE(GLenum target,GLint level,GLenum pname,GLint * params)939 void GL_APIENTRY GL_GetTexLevelParameterivANGLE(GLenum target,
940 GLint level,
941 GLenum pname,
942 GLint *params)
943 {
944 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
945 Context *context = GetValidGlobalContext();
946 EVENT(context, GLGetTexLevelParameterivANGLE,
947 "context = %d, target = %s, level = %d, pname = %s, params = 0x%016" PRIxPTR "",
948 CID(context), GLenumToString(GLESEnum::TextureTarget, target), level,
949 GLenumToString(GLESEnum::GetTextureParameter, pname), (uintptr_t)params);
950
951 if (context)
952 {
953 TextureTarget targetPacked = PackParam<TextureTarget>(target);
954 SCOPED_SHARE_CONTEXT_LOCK(context);
955 bool isCallValid = (context->skipValidation() ||
956 ValidateGetTexLevelParameterivANGLE(
957 context, angle::EntryPoint::GLGetTexLevelParameterivANGLE,
958 targetPacked, level, pname, params));
959 if (isCallValid)
960 {
961 context->getTexLevelParameteriv(targetPacked, level, pname, params);
962 }
963 ANGLE_CAPTURE_GL(GetTexLevelParameterivANGLE, isCallValid, context, targetPacked, level,
964 pname, params);
965 }
966 else
967 {
968 GenerateContextLostErrorOnCurrentGlobalContext();
969 }
970 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
971 }
972
GL_GetTexLevelParameterfvANGLE(GLenum target,GLint level,GLenum pname,GLfloat * params)973 void GL_APIENTRY GL_GetTexLevelParameterfvANGLE(GLenum target,
974 GLint level,
975 GLenum pname,
976 GLfloat *params)
977 {
978 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
979 Context *context = GetValidGlobalContext();
980 EVENT(context, GLGetTexLevelParameterfvANGLE,
981 "context = %d, target = %s, level = %d, pname = %s, params = 0x%016" PRIxPTR "",
982 CID(context), GLenumToString(GLESEnum::AllEnums, target), level,
983 GLenumToString(GLESEnum::AllEnums, pname), (uintptr_t)params);
984
985 if (context)
986 {
987 TextureTarget targetPacked = PackParam<TextureTarget>(target);
988 SCOPED_SHARE_CONTEXT_LOCK(context);
989 bool isCallValid = (context->skipValidation() ||
990 ValidateGetTexLevelParameterfvANGLE(
991 context, angle::EntryPoint::GLGetTexLevelParameterfvANGLE,
992 targetPacked, level, pname, params));
993 if (isCallValid)
994 {
995 context->getTexLevelParameterfv(targetPacked, level, pname, params);
996 }
997 ANGLE_CAPTURE_GL(GetTexLevelParameterfvANGLE, isCallValid, context, targetPacked, level,
998 pname, params);
999 }
1000 else
1001 {
1002 GenerateContextLostErrorOnCurrentGlobalContext();
1003 }
1004 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
1005 }
1006
1007 // GL_ANGLE_instanced_arrays
GL_DrawArraysInstancedANGLE(GLenum mode,GLint first,GLsizei count,GLsizei primcount)1008 void GL_APIENTRY GL_DrawArraysInstancedANGLE(GLenum mode,
1009 GLint first,
1010 GLsizei count,
1011 GLsizei primcount)
1012 {
1013 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
1014 Context *context = GetValidGlobalContext();
1015 EVENT(context, GLDrawArraysInstancedANGLE,
1016 "context = %d, mode = %s, first = %d, count = %d, primcount = %d", CID(context),
1017 GLenumToString(GLESEnum::PrimitiveType, mode), first, count, primcount);
1018
1019 if (context)
1020 {
1021 PrimitiveMode modePacked = PackParam<PrimitiveMode>(mode);
1022 SCOPED_SHARE_CONTEXT_LOCK(context);
1023 bool isCallValid = (context->skipValidation() ||
1024 ValidateDrawArraysInstancedANGLE(
1025 context, angle::EntryPoint::GLDrawArraysInstancedANGLE, modePacked,
1026 first, count, primcount));
1027 if (isCallValid)
1028 {
1029 context->drawArraysInstanced(modePacked, first, count, primcount);
1030 }
1031 ANGLE_CAPTURE_GL(DrawArraysInstancedANGLE, isCallValid, context, modePacked, first, count,
1032 primcount);
1033 }
1034 else
1035 {
1036 GenerateContextLostErrorOnCurrentGlobalContext();
1037 }
1038 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
1039 }
1040
GL_DrawElementsInstancedANGLE(GLenum mode,GLsizei count,GLenum type,const void * indices,GLsizei primcount)1041 void GL_APIENTRY GL_DrawElementsInstancedANGLE(GLenum mode,
1042 GLsizei count,
1043 GLenum type,
1044 const void *indices,
1045 GLsizei primcount)
1046 {
1047 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
1048 Context *context = GetValidGlobalContext();
1049 EVENT(context, GLDrawElementsInstancedANGLE,
1050 "context = %d, mode = %s, count = %d, type = %s, indices = 0x%016" PRIxPTR
1051 ", primcount = %d",
1052 CID(context), GLenumToString(GLESEnum::PrimitiveType, mode), count,
1053 GLenumToString(GLESEnum::PrimitiveType, type), (uintptr_t)indices, primcount);
1054
1055 if (context)
1056 {
1057 PrimitiveMode modePacked = PackParam<PrimitiveMode>(mode);
1058 DrawElementsType typePacked = PackParam<DrawElementsType>(type);
1059 SCOPED_SHARE_CONTEXT_LOCK(context);
1060 bool isCallValid = (context->skipValidation() ||
1061 ValidateDrawElementsInstancedANGLE(
1062 context, angle::EntryPoint::GLDrawElementsInstancedANGLE,
1063 modePacked, count, typePacked, indices, primcount));
1064 if (isCallValid)
1065 {
1066 context->drawElementsInstanced(modePacked, count, typePacked, indices, primcount);
1067 }
1068 ANGLE_CAPTURE_GL(DrawElementsInstancedANGLE, isCallValid, context, modePacked, count,
1069 typePacked, indices, primcount);
1070 }
1071 else
1072 {
1073 GenerateContextLostErrorOnCurrentGlobalContext();
1074 }
1075 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
1076 }
1077
GL_VertexAttribDivisorANGLE(GLuint index,GLuint divisor)1078 void GL_APIENTRY GL_VertexAttribDivisorANGLE(GLuint index, GLuint divisor)
1079 {
1080 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
1081 Context *context = GetValidGlobalContext();
1082 EVENT(context, GLVertexAttribDivisorANGLE, "context = %d, index = %u, divisor = %u",
1083 CID(context), index, divisor);
1084
1085 if (context)
1086 {
1087 SCOPED_SHARE_CONTEXT_LOCK(context);
1088 bool isCallValid =
1089 (context->skipValidation() ||
1090 ValidateVertexAttribDivisorANGLE(
1091 context, angle::EntryPoint::GLVertexAttribDivisorANGLE, index, divisor));
1092 if (isCallValid)
1093 {
1094 context->vertexAttribDivisor(index, divisor);
1095 }
1096 ANGLE_CAPTURE_GL(VertexAttribDivisorANGLE, isCallValid, context, index, divisor);
1097 }
1098 else
1099 {
1100 GenerateContextLostErrorOnCurrentGlobalContext();
1101 }
1102 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
1103 }
1104
1105 // GL_ANGLE_logic_op
GL_LogicOpANGLE(GLenum opcode)1106 void GL_APIENTRY GL_LogicOpANGLE(GLenum opcode)
1107 {
1108 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
1109 Context *context = GetValidGlobalContext();
1110 EVENT(context, GLLogicOpANGLE, "context = %d, opcode = %s", CID(context),
1111 GLenumToString(GLESEnum::LogicOp, opcode));
1112
1113 if (context)
1114 {
1115 LogicalOperation opcodePacked = PackParam<LogicalOperation>(opcode);
1116 bool isCallValid =
1117 (context->skipValidation() ||
1118 (ValidatePixelLocalStorageInactive(context->getPrivateState(),
1119 context->getMutableErrorSetForValidation(),
1120 angle::EntryPoint::GLLogicOpANGLE) &&
1121 ValidateLogicOpANGLE(context->getPrivateState(),
1122 context->getMutableErrorSetForValidation(),
1123 angle::EntryPoint::GLLogicOpANGLE, opcodePacked)));
1124 if (isCallValid)
1125 {
1126 ContextPrivateLogicOpANGLE(context->getMutablePrivateState(),
1127 context->getMutablePrivateStateCache(), opcodePacked);
1128 }
1129 ANGLE_CAPTURE_GL(LogicOpANGLE, isCallValid, context, opcodePacked);
1130 }
1131 else
1132 {
1133 GenerateContextLostErrorOnCurrentGlobalContext();
1134 }
1135 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
1136 }
1137
1138 // GL_ANGLE_lossy_etc_decode
1139
1140 // GL_ANGLE_memory_object_flags
GL_TexStorageMemFlags2DANGLE(GLenum target,GLsizei levels,GLenum internalFormat,GLsizei width,GLsizei height,GLuint memory,GLuint64 offset,GLbitfield createFlags,GLbitfield usageFlags,const void * imageCreateInfoPNext)1141 void GL_APIENTRY GL_TexStorageMemFlags2DANGLE(GLenum target,
1142 GLsizei levels,
1143 GLenum internalFormat,
1144 GLsizei width,
1145 GLsizei height,
1146 GLuint memory,
1147 GLuint64 offset,
1148 GLbitfield createFlags,
1149 GLbitfield usageFlags,
1150 const void *imageCreateInfoPNext)
1151 {
1152 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
1153 Context *context = GetValidGlobalContext();
1154 EVENT(context, GLTexStorageMemFlags2DANGLE,
1155 "context = %d, target = %s, levels = %d, internalFormat = %s, width = %d, height = %d, "
1156 "memory = %u, offset = %llu, createFlags = %s, usageFlags = %s, imageCreateInfoPNext = "
1157 "0x%016" PRIxPTR "",
1158 CID(context), GLenumToString(GLESEnum::TextureTarget, target), levels,
1159 GLenumToString(GLESEnum::AllEnums, internalFormat), width, height, memory,
1160 static_cast<unsigned long long>(offset),
1161 GLbitfieldToString(GLESEnum::AllEnums, createFlags).c_str(),
1162 GLbitfieldToString(GLESEnum::AllEnums, usageFlags).c_str(),
1163 (uintptr_t)imageCreateInfoPNext);
1164
1165 if (context)
1166 {
1167 TextureType targetPacked = PackParam<TextureType>(target);
1168 MemoryObjectID memoryPacked = PackParam<MemoryObjectID>(memory);
1169 SCOPED_SHARE_CONTEXT_LOCK(context);
1170 bool isCallValid =
1171 (context->skipValidation() ||
1172 (ValidatePixelLocalStorageInactive(context->getPrivateState(),
1173 context->getMutableErrorSetForValidation(),
1174 angle::EntryPoint::GLTexStorageMemFlags2DANGLE) &&
1175 ValidateTexStorageMemFlags2DANGLE(
1176 context, angle::EntryPoint::GLTexStorageMemFlags2DANGLE, targetPacked, levels,
1177 internalFormat, width, height, memoryPacked, offset, createFlags, usageFlags,
1178 imageCreateInfoPNext)));
1179 if (isCallValid)
1180 {
1181 context->texStorageMemFlags2D(targetPacked, levels, internalFormat, width, height,
1182 memoryPacked, offset, createFlags, usageFlags,
1183 imageCreateInfoPNext);
1184 }
1185 ANGLE_CAPTURE_GL(TexStorageMemFlags2DANGLE, isCallValid, context, targetPacked, levels,
1186 internalFormat, width, height, memoryPacked, offset, createFlags,
1187 usageFlags, imageCreateInfoPNext);
1188 }
1189 else
1190 {
1191 GenerateContextLostErrorOnCurrentGlobalContext();
1192 }
1193 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
1194 }
1195
GL_TexStorageMemFlags2DMultisampleANGLE(GLenum target,GLsizei samples,GLenum internalFormat,GLsizei width,GLsizei height,GLboolean fixedSampleLocations,GLuint memory,GLuint64 offset,GLbitfield createFlags,GLbitfield usageFlags,const void * imageCreateInfoPNext)1196 void GL_APIENTRY GL_TexStorageMemFlags2DMultisampleANGLE(GLenum target,
1197 GLsizei samples,
1198 GLenum internalFormat,
1199 GLsizei width,
1200 GLsizei height,
1201 GLboolean fixedSampleLocations,
1202 GLuint memory,
1203 GLuint64 offset,
1204 GLbitfield createFlags,
1205 GLbitfield usageFlags,
1206 const void *imageCreateInfoPNext)
1207 {
1208 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
1209 Context *context = GetValidGlobalContext();
1210 EVENT(context, GLTexStorageMemFlags2DMultisampleANGLE,
1211 "context = %d, target = %s, samples = %d, internalFormat = %s, width = %d, height = %d, "
1212 "fixedSampleLocations = %s, memory = %u, offset = %llu, createFlags = %s, usageFlags = "
1213 "%s, imageCreateInfoPNext = 0x%016" PRIxPTR "",
1214 CID(context), GLenumToString(GLESEnum::TextureTarget, target), samples,
1215 GLenumToString(GLESEnum::AllEnums, internalFormat), width, height,
1216 GLbooleanToString(fixedSampleLocations), memory, static_cast<unsigned long long>(offset),
1217 GLbitfieldToString(GLESEnum::AllEnums, createFlags).c_str(),
1218 GLbitfieldToString(GLESEnum::AllEnums, usageFlags).c_str(),
1219 (uintptr_t)imageCreateInfoPNext);
1220
1221 if (context)
1222 {
1223 TextureType targetPacked = PackParam<TextureType>(target);
1224 MemoryObjectID memoryPacked = PackParam<MemoryObjectID>(memory);
1225 SCOPED_SHARE_CONTEXT_LOCK(context);
1226 bool isCallValid =
1227 (context->skipValidation() ||
1228 (ValidatePixelLocalStorageInactive(
1229 context->getPrivateState(), context->getMutableErrorSetForValidation(),
1230 angle::EntryPoint::GLTexStorageMemFlags2DMultisampleANGLE) &&
1231 ValidateTexStorageMemFlags2DMultisampleANGLE(
1232 context, angle::EntryPoint::GLTexStorageMemFlags2DMultisampleANGLE, targetPacked,
1233 samples, internalFormat, width, height, fixedSampleLocations, memoryPacked,
1234 offset, createFlags, usageFlags, imageCreateInfoPNext)));
1235 if (isCallValid)
1236 {
1237 context->texStorageMemFlags2DMultisample(
1238 targetPacked, samples, internalFormat, width, height, fixedSampleLocations,
1239 memoryPacked, offset, createFlags, usageFlags, imageCreateInfoPNext);
1240 }
1241 ANGLE_CAPTURE_GL(TexStorageMemFlags2DMultisampleANGLE, isCallValid, context, targetPacked,
1242 samples, internalFormat, width, height, fixedSampleLocations, memoryPacked,
1243 offset, createFlags, usageFlags, imageCreateInfoPNext);
1244 }
1245 else
1246 {
1247 GenerateContextLostErrorOnCurrentGlobalContext();
1248 }
1249 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
1250 }
1251
GL_TexStorageMemFlags3DANGLE(GLenum target,GLsizei levels,GLenum internalFormat,GLsizei width,GLsizei height,GLsizei depth,GLuint memory,GLuint64 offset,GLbitfield createFlags,GLbitfield usageFlags,const void * imageCreateInfoPNext)1252 void GL_APIENTRY GL_TexStorageMemFlags3DANGLE(GLenum target,
1253 GLsizei levels,
1254 GLenum internalFormat,
1255 GLsizei width,
1256 GLsizei height,
1257 GLsizei depth,
1258 GLuint memory,
1259 GLuint64 offset,
1260 GLbitfield createFlags,
1261 GLbitfield usageFlags,
1262 const void *imageCreateInfoPNext)
1263 {
1264 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
1265 Context *context = GetValidGlobalContext();
1266 EVENT(context, GLTexStorageMemFlags3DANGLE,
1267 "context = %d, target = %s, levels = %d, internalFormat = %s, width = %d, height = %d, "
1268 "depth = %d, memory = %u, offset = %llu, createFlags = %s, usageFlags = %s, "
1269 "imageCreateInfoPNext = 0x%016" PRIxPTR "",
1270 CID(context), GLenumToString(GLESEnum::TextureTarget, target), levels,
1271 GLenumToString(GLESEnum::AllEnums, internalFormat), width, height, depth, memory,
1272 static_cast<unsigned long long>(offset),
1273 GLbitfieldToString(GLESEnum::AllEnums, createFlags).c_str(),
1274 GLbitfieldToString(GLESEnum::AllEnums, usageFlags).c_str(),
1275 (uintptr_t)imageCreateInfoPNext);
1276
1277 if (context)
1278 {
1279 TextureType targetPacked = PackParam<TextureType>(target);
1280 MemoryObjectID memoryPacked = PackParam<MemoryObjectID>(memory);
1281 SCOPED_SHARE_CONTEXT_LOCK(context);
1282 bool isCallValid =
1283 (context->skipValidation() ||
1284 (ValidatePixelLocalStorageInactive(context->getPrivateState(),
1285 context->getMutableErrorSetForValidation(),
1286 angle::EntryPoint::GLTexStorageMemFlags3DANGLE) &&
1287 ValidateTexStorageMemFlags3DANGLE(
1288 context, angle::EntryPoint::GLTexStorageMemFlags3DANGLE, targetPacked, levels,
1289 internalFormat, width, height, depth, memoryPacked, offset, createFlags,
1290 usageFlags, imageCreateInfoPNext)));
1291 if (isCallValid)
1292 {
1293 context->texStorageMemFlags3D(targetPacked, levels, internalFormat, width, height,
1294 depth, memoryPacked, offset, createFlags, usageFlags,
1295 imageCreateInfoPNext);
1296 }
1297 ANGLE_CAPTURE_GL(TexStorageMemFlags3DANGLE, isCallValid, context, targetPacked, levels,
1298 internalFormat, width, height, depth, memoryPacked, offset, createFlags,
1299 usageFlags, imageCreateInfoPNext);
1300 }
1301 else
1302 {
1303 GenerateContextLostErrorOnCurrentGlobalContext();
1304 }
1305 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
1306 }
1307
GL_TexStorageMemFlags3DMultisampleANGLE(GLenum target,GLsizei samples,GLenum internalFormat,GLsizei width,GLsizei height,GLsizei depth,GLboolean fixedSampleLocations,GLuint memory,GLuint64 offset,GLbitfield createFlags,GLbitfield usageFlags,const void * imageCreateInfoPNext)1308 void GL_APIENTRY GL_TexStorageMemFlags3DMultisampleANGLE(GLenum target,
1309 GLsizei samples,
1310 GLenum internalFormat,
1311 GLsizei width,
1312 GLsizei height,
1313 GLsizei depth,
1314 GLboolean fixedSampleLocations,
1315 GLuint memory,
1316 GLuint64 offset,
1317 GLbitfield createFlags,
1318 GLbitfield usageFlags,
1319 const void *imageCreateInfoPNext)
1320 {
1321 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
1322 Context *context = GetValidGlobalContext();
1323 EVENT(context, GLTexStorageMemFlags3DMultisampleANGLE,
1324 "context = %d, target = %s, samples = %d, internalFormat = %s, width = %d, height = %d, "
1325 "depth = %d, fixedSampleLocations = %s, memory = %u, offset = %llu, createFlags = %s, "
1326 "usageFlags = %s, imageCreateInfoPNext = 0x%016" PRIxPTR "",
1327 CID(context), GLenumToString(GLESEnum::TextureTarget, target), samples,
1328 GLenumToString(GLESEnum::AllEnums, internalFormat), width, height, depth,
1329 GLbooleanToString(fixedSampleLocations), memory, static_cast<unsigned long long>(offset),
1330 GLbitfieldToString(GLESEnum::AllEnums, createFlags).c_str(),
1331 GLbitfieldToString(GLESEnum::AllEnums, usageFlags).c_str(),
1332 (uintptr_t)imageCreateInfoPNext);
1333
1334 if (context)
1335 {
1336 TextureType targetPacked = PackParam<TextureType>(target);
1337 MemoryObjectID memoryPacked = PackParam<MemoryObjectID>(memory);
1338 SCOPED_SHARE_CONTEXT_LOCK(context);
1339 bool isCallValid =
1340 (context->skipValidation() ||
1341 (ValidatePixelLocalStorageInactive(
1342 context->getPrivateState(), context->getMutableErrorSetForValidation(),
1343 angle::EntryPoint::GLTexStorageMemFlags3DMultisampleANGLE) &&
1344 ValidateTexStorageMemFlags3DMultisampleANGLE(
1345 context, angle::EntryPoint::GLTexStorageMemFlags3DMultisampleANGLE, targetPacked,
1346 samples, internalFormat, width, height, depth, fixedSampleLocations, memoryPacked,
1347 offset, createFlags, usageFlags, imageCreateInfoPNext)));
1348 if (isCallValid)
1349 {
1350 context->texStorageMemFlags3DMultisample(
1351 targetPacked, samples, internalFormat, width, height, depth, fixedSampleLocations,
1352 memoryPacked, offset, createFlags, usageFlags, imageCreateInfoPNext);
1353 }
1354 ANGLE_CAPTURE_GL(TexStorageMemFlags3DMultisampleANGLE, isCallValid, context, targetPacked,
1355 samples, internalFormat, width, height, depth, fixedSampleLocations,
1356 memoryPacked, offset, createFlags, usageFlags, imageCreateInfoPNext);
1357 }
1358 else
1359 {
1360 GenerateContextLostErrorOnCurrentGlobalContext();
1361 }
1362 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
1363 }
1364
1365 // GL_ANGLE_memory_object_fuchsia
GL_ImportMemoryZirconHandleANGLE(GLuint memory,GLuint64 size,GLenum handleType,GLuint handle)1366 void GL_APIENTRY GL_ImportMemoryZirconHandleANGLE(GLuint memory,
1367 GLuint64 size,
1368 GLenum handleType,
1369 GLuint handle)
1370 {
1371 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
1372 Context *context = GetValidGlobalContext();
1373 EVENT(context, GLImportMemoryZirconHandleANGLE,
1374 "context = %d, memory = %u, size = %llu, handleType = %s, handle = %u", CID(context),
1375 memory, static_cast<unsigned long long>(size),
1376 GLenumToString(GLESEnum::ExternalHandleType, handleType), handle);
1377
1378 if (context)
1379 {
1380 MemoryObjectID memoryPacked = PackParam<MemoryObjectID>(memory);
1381 HandleType handleTypePacked = PackParam<HandleType>(handleType);
1382 SCOPED_SHARE_CONTEXT_LOCK(context);
1383 bool isCallValid =
1384 (context->skipValidation() ||
1385 (ValidatePixelLocalStorageInactive(
1386 context->getPrivateState(), context->getMutableErrorSetForValidation(),
1387 angle::EntryPoint::GLImportMemoryZirconHandleANGLE) &&
1388 ValidateImportMemoryZirconHandleANGLE(
1389 context, angle::EntryPoint::GLImportMemoryZirconHandleANGLE, memoryPacked, size,
1390 handleTypePacked, handle)));
1391 if (isCallValid)
1392 {
1393 context->importMemoryZirconHandle(memoryPacked, size, handleTypePacked, handle);
1394 }
1395 ANGLE_CAPTURE_GL(ImportMemoryZirconHandleANGLE, isCallValid, context, memoryPacked, size,
1396 handleTypePacked, handle);
1397 }
1398 else
1399 {
1400 GenerateContextLostErrorOnCurrentGlobalContext();
1401 }
1402 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
1403 }
1404
1405 // GL_ANGLE_memory_size
1406
1407 // GL_ANGLE_multi_draw
GL_MultiDrawArraysANGLE(GLenum mode,const GLint * firsts,const GLsizei * counts,GLsizei drawcount)1408 void GL_APIENTRY GL_MultiDrawArraysANGLE(GLenum mode,
1409 const GLint *firsts,
1410 const GLsizei *counts,
1411 GLsizei drawcount)
1412 {
1413 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
1414 Context *context = GetValidGlobalContext();
1415 EVENT(context, GLMultiDrawArraysANGLE,
1416 "context = %d, mode = %s, firsts = 0x%016" PRIxPTR ", counts = 0x%016" PRIxPTR
1417 ", drawcount = %d",
1418 CID(context), GLenumToString(GLESEnum::PrimitiveType, mode), (uintptr_t)firsts,
1419 (uintptr_t)counts, drawcount);
1420
1421 if (context)
1422 {
1423 PrimitiveMode modePacked = PackParam<PrimitiveMode>(mode);
1424 SCOPED_SHARE_CONTEXT_LOCK(context);
1425 bool isCallValid =
1426 (context->skipValidation() ||
1427 (ValidatePixelLocalStorageInactive(context->getPrivateState(),
1428 context->getMutableErrorSetForValidation(),
1429 angle::EntryPoint::GLMultiDrawArraysANGLE) &&
1430 ValidateMultiDrawArraysANGLE(context, angle::EntryPoint::GLMultiDrawArraysANGLE,
1431 modePacked, firsts, counts, drawcount)));
1432 if (isCallValid)
1433 {
1434 context->multiDrawArrays(modePacked, firsts, counts, drawcount);
1435 }
1436 ANGLE_CAPTURE_GL(MultiDrawArraysANGLE, isCallValid, context, modePacked, firsts, counts,
1437 drawcount);
1438 }
1439 else
1440 {
1441 GenerateContextLostErrorOnCurrentGlobalContext();
1442 }
1443 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
1444 }
1445
GL_MultiDrawArraysInstancedANGLE(GLenum mode,const GLint * firsts,const GLsizei * counts,const GLsizei * instanceCounts,GLsizei drawcount)1446 void GL_APIENTRY GL_MultiDrawArraysInstancedANGLE(GLenum mode,
1447 const GLint *firsts,
1448 const GLsizei *counts,
1449 const GLsizei *instanceCounts,
1450 GLsizei drawcount)
1451 {
1452 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
1453 Context *context = GetValidGlobalContext();
1454 EVENT(context, GLMultiDrawArraysInstancedANGLE,
1455 "context = %d, mode = %s, firsts = 0x%016" PRIxPTR ", counts = 0x%016" PRIxPTR
1456 ", instanceCounts = 0x%016" PRIxPTR ", drawcount = %d",
1457 CID(context), GLenumToString(GLESEnum::PrimitiveType, mode), (uintptr_t)firsts,
1458 (uintptr_t)counts, (uintptr_t)instanceCounts, drawcount);
1459
1460 if (context)
1461 {
1462 PrimitiveMode modePacked = PackParam<PrimitiveMode>(mode);
1463 SCOPED_SHARE_CONTEXT_LOCK(context);
1464 bool isCallValid =
1465 (context->skipValidation() ||
1466 (ValidatePixelLocalStorageInactive(
1467 context->getPrivateState(), context->getMutableErrorSetForValidation(),
1468 angle::EntryPoint::GLMultiDrawArraysInstancedANGLE) &&
1469 ValidateMultiDrawArraysInstancedANGLE(
1470 context, angle::EntryPoint::GLMultiDrawArraysInstancedANGLE, modePacked, firsts,
1471 counts, instanceCounts, drawcount)));
1472 if (isCallValid)
1473 {
1474 context->multiDrawArraysInstanced(modePacked, firsts, counts, instanceCounts,
1475 drawcount);
1476 }
1477 ANGLE_CAPTURE_GL(MultiDrawArraysInstancedANGLE, isCallValid, context, modePacked, firsts,
1478 counts, instanceCounts, drawcount);
1479 }
1480 else
1481 {
1482 GenerateContextLostErrorOnCurrentGlobalContext();
1483 }
1484 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
1485 }
1486
GL_MultiDrawElementsANGLE(GLenum mode,const GLsizei * counts,GLenum type,const void * const * indices,GLsizei drawcount)1487 void GL_APIENTRY GL_MultiDrawElementsANGLE(GLenum mode,
1488 const GLsizei *counts,
1489 GLenum type,
1490 const void *const *indices,
1491 GLsizei drawcount)
1492 {
1493 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
1494 Context *context = GetValidGlobalContext();
1495 EVENT(context, GLMultiDrawElementsANGLE,
1496 "context = %d, mode = %s, counts = 0x%016" PRIxPTR ", type = %s, indices = 0x%016" PRIxPTR
1497 ", drawcount = %d",
1498 CID(context), GLenumToString(GLESEnum::PrimitiveType, mode), (uintptr_t)counts,
1499 GLenumToString(GLESEnum::DrawElementsType, type), (uintptr_t)indices, drawcount);
1500
1501 if (context)
1502 {
1503 PrimitiveMode modePacked = PackParam<PrimitiveMode>(mode);
1504 DrawElementsType typePacked = PackParam<DrawElementsType>(type);
1505 SCOPED_SHARE_CONTEXT_LOCK(context);
1506 bool isCallValid =
1507 (context->skipValidation() ||
1508 (ValidatePixelLocalStorageInactive(context->getPrivateState(),
1509 context->getMutableErrorSetForValidation(),
1510 angle::EntryPoint::GLMultiDrawElementsANGLE) &&
1511 ValidateMultiDrawElementsANGLE(context, angle::EntryPoint::GLMultiDrawElementsANGLE,
1512 modePacked, counts, typePacked, indices, drawcount)));
1513 if (isCallValid)
1514 {
1515 context->multiDrawElements(modePacked, counts, typePacked, indices, drawcount);
1516 }
1517 ANGLE_CAPTURE_GL(MultiDrawElementsANGLE, isCallValid, context, modePacked, counts,
1518 typePacked, indices, drawcount);
1519 }
1520 else
1521 {
1522 GenerateContextLostErrorOnCurrentGlobalContext();
1523 }
1524 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
1525 }
1526
GL_MultiDrawElementsInstancedANGLE(GLenum mode,const GLsizei * counts,GLenum type,const void * const * indices,const GLsizei * instanceCounts,GLsizei drawcount)1527 void GL_APIENTRY GL_MultiDrawElementsInstancedANGLE(GLenum mode,
1528 const GLsizei *counts,
1529 GLenum type,
1530 const void *const *indices,
1531 const GLsizei *instanceCounts,
1532 GLsizei drawcount)
1533 {
1534 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
1535 Context *context = GetValidGlobalContext();
1536 EVENT(context, GLMultiDrawElementsInstancedANGLE,
1537 "context = %d, mode = %s, counts = 0x%016" PRIxPTR ", type = %s, indices = 0x%016" PRIxPTR
1538 ", instanceCounts = 0x%016" PRIxPTR ", drawcount = %d",
1539 CID(context), GLenumToString(GLESEnum::PrimitiveType, mode), (uintptr_t)counts,
1540 GLenumToString(GLESEnum::DrawElementsType, type), (uintptr_t)indices,
1541 (uintptr_t)instanceCounts, drawcount);
1542
1543 if (context)
1544 {
1545 PrimitiveMode modePacked = PackParam<PrimitiveMode>(mode);
1546 DrawElementsType typePacked = PackParam<DrawElementsType>(type);
1547 SCOPED_SHARE_CONTEXT_LOCK(context);
1548 bool isCallValid =
1549 (context->skipValidation() ||
1550 (ValidatePixelLocalStorageInactive(
1551 context->getPrivateState(), context->getMutableErrorSetForValidation(),
1552 angle::EntryPoint::GLMultiDrawElementsInstancedANGLE) &&
1553 ValidateMultiDrawElementsInstancedANGLE(
1554 context, angle::EntryPoint::GLMultiDrawElementsInstancedANGLE, modePacked, counts,
1555 typePacked, indices, instanceCounts, drawcount)));
1556 if (isCallValid)
1557 {
1558 context->multiDrawElementsInstanced(modePacked, counts, typePacked, indices,
1559 instanceCounts, drawcount);
1560 }
1561 ANGLE_CAPTURE_GL(MultiDrawElementsInstancedANGLE, isCallValid, context, modePacked, counts,
1562 typePacked, indices, instanceCounts, drawcount);
1563 }
1564 else
1565 {
1566 GenerateContextLostErrorOnCurrentGlobalContext();
1567 }
1568 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
1569 }
1570
1571 // GL_ANGLE_pack_reverse_row_order
1572
1573 // GL_ANGLE_polygon_mode
GL_PolygonModeANGLE(GLenum face,GLenum mode)1574 void GL_APIENTRY GL_PolygonModeANGLE(GLenum face, GLenum mode)
1575 {
1576 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
1577 Context *context = GetValidGlobalContext();
1578 EVENT(context, GLPolygonModeANGLE, "context = %d, face = %s, mode = %s", CID(context),
1579 GLenumToString(GLESEnum::TriangleFace, face),
1580 GLenumToString(GLESEnum::PolygonMode, mode));
1581
1582 if (context)
1583 {
1584 PolygonMode modePacked = PackParam<PolygonMode>(mode);
1585 bool isCallValid =
1586 (context->skipValidation() ||
1587 ValidatePolygonModeANGLE(context->getPrivateState(),
1588 context->getMutableErrorSetForValidation(),
1589 angle::EntryPoint::GLPolygonModeANGLE, face, modePacked));
1590 if (isCallValid)
1591 {
1592 ContextPrivatePolygonMode(context->getMutablePrivateState(),
1593 context->getMutablePrivateStateCache(), face, modePacked);
1594 }
1595 ANGLE_CAPTURE_GL(PolygonModeANGLE, isCallValid, context, face, modePacked);
1596 }
1597 else
1598 {
1599 GenerateContextLostErrorOnCurrentGlobalContext();
1600 }
1601 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
1602 }
1603
1604 // GL_ANGLE_program_binary
1605
1606 // GL_ANGLE_program_binary_readiness_query
1607
1608 // GL_ANGLE_program_cache_control
1609
1610 // GL_ANGLE_provoking_vertex
GL_ProvokingVertexANGLE(GLenum provokeMode)1611 void GL_APIENTRY GL_ProvokingVertexANGLE(GLenum provokeMode)
1612 {
1613 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
1614 Context *context = GetValidGlobalContext();
1615 EVENT(context, GLProvokingVertexANGLE, "context = %d, provokeMode = %s", CID(context),
1616 GLenumToString(GLESEnum::VertexProvokingMode, provokeMode));
1617
1618 if (context)
1619 {
1620 ProvokingVertexConvention provokeModePacked =
1621 PackParam<ProvokingVertexConvention>(provokeMode);
1622 bool isCallValid =
1623 (context->skipValidation() ||
1624 ValidateProvokingVertexANGLE(
1625 context->getPrivateState(), context->getMutableErrorSetForValidation(),
1626 angle::EntryPoint::GLProvokingVertexANGLE, provokeModePacked));
1627 if (isCallValid)
1628 {
1629 ContextPrivateProvokingVertex(context->getMutablePrivateState(),
1630 context->getMutablePrivateStateCache(),
1631 provokeModePacked);
1632 }
1633 ANGLE_CAPTURE_GL(ProvokingVertexANGLE, isCallValid, context, provokeModePacked);
1634 }
1635 else
1636 {
1637 GenerateContextLostErrorOnCurrentGlobalContext();
1638 }
1639 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
1640 }
1641
1642 // GL_ANGLE_renderability_validation
1643
1644 // GL_ANGLE_request_extension
GL_RequestExtensionANGLE(const GLchar * name)1645 void GL_APIENTRY GL_RequestExtensionANGLE(const GLchar *name)
1646 {
1647 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
1648 Context *context = GetValidGlobalContext();
1649 EVENT(context, GLRequestExtensionANGLE, "context = %d, name = 0x%016" PRIxPTR "", CID(context),
1650 (uintptr_t)name);
1651
1652 if (context)
1653 {
1654 SCOPED_SHARE_CONTEXT_LOCK(context);
1655 bool isCallValid =
1656 (context->skipValidation() ||
1657 (ValidatePixelLocalStorageInactive(context->getPrivateState(),
1658 context->getMutableErrorSetForValidation(),
1659 angle::EntryPoint::GLRequestExtensionANGLE) &&
1660 ValidateRequestExtensionANGLE(context, angle::EntryPoint::GLRequestExtensionANGLE,
1661 name)));
1662 if (isCallValid)
1663 {
1664 context->requestExtension(name);
1665 }
1666 ANGLE_CAPTURE_GL(RequestExtensionANGLE, isCallValid, context, name);
1667 }
1668 else
1669 {
1670 GenerateContextLostErrorOnCurrentGlobalContext();
1671 }
1672 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
1673 }
1674
GL_DisableExtensionANGLE(const GLchar * name)1675 void GL_APIENTRY GL_DisableExtensionANGLE(const GLchar *name)
1676 {
1677 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
1678 Context *context = GetValidGlobalContext();
1679 EVENT(context, GLDisableExtensionANGLE, "context = %d, name = 0x%016" PRIxPTR "", CID(context),
1680 (uintptr_t)name);
1681
1682 if (context)
1683 {
1684 SCOPED_SHARE_CONTEXT_LOCK(context);
1685 bool isCallValid =
1686 (context->skipValidation() ||
1687 (ValidatePixelLocalStorageInactive(context->getPrivateState(),
1688 context->getMutableErrorSetForValidation(),
1689 angle::EntryPoint::GLDisableExtensionANGLE) &&
1690 ValidateDisableExtensionANGLE(context, angle::EntryPoint::GLDisableExtensionANGLE,
1691 name)));
1692 if (isCallValid)
1693 {
1694 context->disableExtension(name);
1695 }
1696 ANGLE_CAPTURE_GL(DisableExtensionANGLE, isCallValid, context, name);
1697 }
1698 else
1699 {
1700 GenerateContextLostErrorOnCurrentGlobalContext();
1701 }
1702 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
1703 }
1704
1705 // GL_ANGLE_rgbx_internal_format
1706
1707 // GL_ANGLE_robust_client_memory
GL_GetBooleanvRobustANGLE(GLenum pname,GLsizei bufSize,GLsizei * length,GLboolean * params)1708 void GL_APIENTRY GL_GetBooleanvRobustANGLE(GLenum pname,
1709 GLsizei bufSize,
1710 GLsizei *length,
1711 GLboolean *params)
1712 {
1713 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
1714 Context *context = GetValidGlobalContext();
1715 EVENT(context, GLGetBooleanvRobustANGLE,
1716 "context = %d, pname = %s, bufSize = %d, length = 0x%016" PRIxPTR
1717 ", params = 0x%016" PRIxPTR "",
1718 CID(context), GLenumToString(GLESEnum::AllEnums, pname), bufSize, (uintptr_t)length,
1719 (uintptr_t)params);
1720
1721 if (context)
1722 {
1723 SCOPED_SHARE_CONTEXT_LOCK(context);
1724 bool isCallValid =
1725 (context->skipValidation() ||
1726 ValidateGetBooleanvRobustANGLE(context, angle::EntryPoint::GLGetBooleanvRobustANGLE,
1727 pname, bufSize, length, params));
1728 if (isCallValid)
1729 {
1730 context->getBooleanvRobust(pname, bufSize, length, params);
1731 }
1732 ANGLE_CAPTURE_GL(GetBooleanvRobustANGLE, isCallValid, context, pname, bufSize, length,
1733 params);
1734 }
1735 else
1736 {
1737 GenerateContextLostErrorOnCurrentGlobalContext();
1738 }
1739 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
1740 }
1741
GL_GetBufferParameterivRobustANGLE(GLenum target,GLenum pname,GLsizei bufSize,GLsizei * length,GLint * params)1742 void GL_APIENTRY GL_GetBufferParameterivRobustANGLE(GLenum target,
1743 GLenum pname,
1744 GLsizei bufSize,
1745 GLsizei *length,
1746 GLint *params)
1747 {
1748 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
1749 Context *context = GetValidGlobalContext();
1750 EVENT(context, GLGetBufferParameterivRobustANGLE,
1751 "context = %d, target = %s, pname = %s, bufSize = %d, length = 0x%016" PRIxPTR
1752 ", params = 0x%016" PRIxPTR "",
1753 CID(context), GLenumToString(GLESEnum::AllEnums, target),
1754 GLenumToString(GLESEnum::AllEnums, pname), bufSize, (uintptr_t)length, (uintptr_t)params);
1755
1756 if (context)
1757 {
1758 BufferBinding targetPacked = PackParam<BufferBinding>(target);
1759 SCOPED_SHARE_CONTEXT_LOCK(context);
1760 bool isCallValid = (context->skipValidation() ||
1761 ValidateGetBufferParameterivRobustANGLE(
1762 context, angle::EntryPoint::GLGetBufferParameterivRobustANGLE,
1763 targetPacked, pname, bufSize, length, params));
1764 if (isCallValid)
1765 {
1766 context->getBufferParameterivRobust(targetPacked, pname, bufSize, length, params);
1767 }
1768 ANGLE_CAPTURE_GL(GetBufferParameterivRobustANGLE, isCallValid, context, targetPacked, pname,
1769 bufSize, length, params);
1770 }
1771 else
1772 {
1773 GenerateContextLostErrorOnCurrentGlobalContext();
1774 }
1775 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
1776 }
1777
GL_GetFloatvRobustANGLE(GLenum pname,GLsizei bufSize,GLsizei * length,GLfloat * params)1778 void GL_APIENTRY GL_GetFloatvRobustANGLE(GLenum pname,
1779 GLsizei bufSize,
1780 GLsizei *length,
1781 GLfloat *params)
1782 {
1783 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
1784 Context *context = GetValidGlobalContext();
1785 EVENT(context, GLGetFloatvRobustANGLE,
1786 "context = %d, pname = %s, bufSize = %d, length = 0x%016" PRIxPTR
1787 ", params = 0x%016" PRIxPTR "",
1788 CID(context), GLenumToString(GLESEnum::AllEnums, pname), bufSize, (uintptr_t)length,
1789 (uintptr_t)params);
1790
1791 if (context)
1792 {
1793 SCOPED_SHARE_CONTEXT_LOCK(context);
1794 bool isCallValid =
1795 (context->skipValidation() ||
1796 ValidateGetFloatvRobustANGLE(context, angle::EntryPoint::GLGetFloatvRobustANGLE, pname,
1797 bufSize, length, params));
1798 if (isCallValid)
1799 {
1800 context->getFloatvRobust(pname, bufSize, length, params);
1801 }
1802 ANGLE_CAPTURE_GL(GetFloatvRobustANGLE, isCallValid, context, pname, bufSize, length,
1803 params);
1804 }
1805 else
1806 {
1807 GenerateContextLostErrorOnCurrentGlobalContext();
1808 }
1809 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
1810 }
1811
GL_GetFramebufferAttachmentParameterivRobustANGLE(GLenum target,GLenum attachment,GLenum pname,GLsizei bufSize,GLsizei * length,GLint * params)1812 void GL_APIENTRY GL_GetFramebufferAttachmentParameterivRobustANGLE(GLenum target,
1813 GLenum attachment,
1814 GLenum pname,
1815 GLsizei bufSize,
1816 GLsizei *length,
1817 GLint *params)
1818 {
1819 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
1820 Context *context = GetValidGlobalContext();
1821 EVENT(context, GLGetFramebufferAttachmentParameterivRobustANGLE,
1822 "context = %d, target = %s, attachment = %s, pname = %s, bufSize = %d, length = "
1823 "0x%016" PRIxPTR ", params = 0x%016" PRIxPTR "",
1824 CID(context), GLenumToString(GLESEnum::AllEnums, target),
1825 GLenumToString(GLESEnum::AllEnums, attachment), GLenumToString(GLESEnum::AllEnums, pname),
1826 bufSize, (uintptr_t)length, (uintptr_t)params);
1827
1828 if (context)
1829 {
1830 SCOPED_SHARE_CONTEXT_LOCK(context);
1831 bool isCallValid =
1832 (context->skipValidation() ||
1833 ValidateGetFramebufferAttachmentParameterivRobustANGLE(
1834 context, angle::EntryPoint::GLGetFramebufferAttachmentParameterivRobustANGLE,
1835 target, attachment, pname, bufSize, length, params));
1836 if (isCallValid)
1837 {
1838 context->getFramebufferAttachmentParameterivRobust(target, attachment, pname, bufSize,
1839 length, params);
1840 }
1841 ANGLE_CAPTURE_GL(GetFramebufferAttachmentParameterivRobustANGLE, isCallValid, context,
1842 target, attachment, pname, bufSize, length, params);
1843 }
1844 else
1845 {
1846 GenerateContextLostErrorOnCurrentGlobalContext();
1847 }
1848 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
1849 }
1850
GL_GetIntegervRobustANGLE(GLenum pname,GLsizei bufSize,GLsizei * length,GLint * data)1851 void GL_APIENTRY GL_GetIntegervRobustANGLE(GLenum pname,
1852 GLsizei bufSize,
1853 GLsizei *length,
1854 GLint *data)
1855 {
1856 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
1857 Context *context = GetValidGlobalContext();
1858 EVENT(context, GLGetIntegervRobustANGLE,
1859 "context = %d, pname = %s, bufSize = %d, length = 0x%016" PRIxPTR
1860 ", data = 0x%016" PRIxPTR "",
1861 CID(context), GLenumToString(GLESEnum::AllEnums, pname), bufSize, (uintptr_t)length,
1862 (uintptr_t)data);
1863
1864 if (context)
1865 {
1866 SCOPED_SHARE_CONTEXT_LOCK(context);
1867 bool isCallValid =
1868 (context->skipValidation() ||
1869 ValidateGetIntegervRobustANGLE(context, angle::EntryPoint::GLGetIntegervRobustANGLE,
1870 pname, bufSize, length, data));
1871 if (isCallValid)
1872 {
1873 context->getIntegervRobust(pname, bufSize, length, data);
1874 }
1875 ANGLE_CAPTURE_GL(GetIntegervRobustANGLE, isCallValid, context, pname, bufSize, length,
1876 data);
1877 }
1878 else
1879 {
1880 GenerateContextLostErrorOnCurrentGlobalContext();
1881 }
1882 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
1883 }
1884
GL_GetProgramivRobustANGLE(GLuint program,GLenum pname,GLsizei bufSize,GLsizei * length,GLint * params)1885 void GL_APIENTRY GL_GetProgramivRobustANGLE(GLuint program,
1886 GLenum pname,
1887 GLsizei bufSize,
1888 GLsizei *length,
1889 GLint *params)
1890 {
1891 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
1892 Context *context = GetGlobalContext();
1893 EVENT(context, GLGetProgramivRobustANGLE,
1894 "context = %d, program = %u, pname = %s, bufSize = %d, length = 0x%016" PRIxPTR
1895 ", params = 0x%016" PRIxPTR "",
1896 CID(context), program, GLenumToString(GLESEnum::AllEnums, pname), bufSize,
1897 (uintptr_t)length, (uintptr_t)params);
1898
1899 if (context)
1900 {
1901 ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);
1902 SCOPED_SHARE_CONTEXT_LOCK(context);
1903 bool isCallValid =
1904 (context->skipValidation() ||
1905 ValidateGetProgramivRobustANGLE(context, angle::EntryPoint::GLGetProgramivRobustANGLE,
1906 programPacked, pname, bufSize, length, params));
1907 if (isCallValid)
1908 {
1909 context->getProgramivRobust(programPacked, pname, bufSize, length, params);
1910 }
1911 ANGLE_CAPTURE_GL(GetProgramivRobustANGLE, isCallValid, context, programPacked, pname,
1912 bufSize, length, params);
1913 }
1914 else
1915 {
1916 }
1917 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
1918 }
1919
GL_GetRenderbufferParameterivRobustANGLE(GLenum target,GLenum pname,GLsizei bufSize,GLsizei * length,GLint * params)1920 void GL_APIENTRY GL_GetRenderbufferParameterivRobustANGLE(GLenum target,
1921 GLenum pname,
1922 GLsizei bufSize,
1923 GLsizei *length,
1924 GLint *params)
1925 {
1926 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
1927 Context *context = GetValidGlobalContext();
1928 EVENT(context, GLGetRenderbufferParameterivRobustANGLE,
1929 "context = %d, target = %s, pname = %s, bufSize = %d, length = 0x%016" PRIxPTR
1930 ", params = 0x%016" PRIxPTR "",
1931 CID(context), GLenumToString(GLESEnum::AllEnums, target),
1932 GLenumToString(GLESEnum::AllEnums, pname), bufSize, (uintptr_t)length, (uintptr_t)params);
1933
1934 if (context)
1935 {
1936 SCOPED_SHARE_CONTEXT_LOCK(context);
1937 bool isCallValid = (context->skipValidation() ||
1938 ValidateGetRenderbufferParameterivRobustANGLE(
1939 context, angle::EntryPoint::GLGetRenderbufferParameterivRobustANGLE,
1940 target, pname, bufSize, length, params));
1941 if (isCallValid)
1942 {
1943 context->getRenderbufferParameterivRobust(target, pname, bufSize, length, params);
1944 }
1945 ANGLE_CAPTURE_GL(GetRenderbufferParameterivRobustANGLE, isCallValid, context, target, pname,
1946 bufSize, length, params);
1947 }
1948 else
1949 {
1950 GenerateContextLostErrorOnCurrentGlobalContext();
1951 }
1952 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
1953 }
1954
GL_GetShaderivRobustANGLE(GLuint shader,GLenum pname,GLsizei bufSize,GLsizei * length,GLint * params)1955 void GL_APIENTRY GL_GetShaderivRobustANGLE(GLuint shader,
1956 GLenum pname,
1957 GLsizei bufSize,
1958 GLsizei *length,
1959 GLint *params)
1960 {
1961 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
1962 Context *context = GetGlobalContext();
1963 EVENT(context, GLGetShaderivRobustANGLE,
1964 "context = %d, shader = %u, pname = %s, bufSize = %d, length = 0x%016" PRIxPTR
1965 ", params = 0x%016" PRIxPTR "",
1966 CID(context), shader, GLenumToString(GLESEnum::AllEnums, pname), bufSize,
1967 (uintptr_t)length, (uintptr_t)params);
1968
1969 if (context)
1970 {
1971 ShaderProgramID shaderPacked = PackParam<ShaderProgramID>(shader);
1972 SCOPED_SHARE_CONTEXT_LOCK(context);
1973 bool isCallValid =
1974 (context->skipValidation() ||
1975 ValidateGetShaderivRobustANGLE(context, angle::EntryPoint::GLGetShaderivRobustANGLE,
1976 shaderPacked, pname, bufSize, length, params));
1977 if (isCallValid)
1978 {
1979 context->getShaderivRobust(shaderPacked, pname, bufSize, length, params);
1980 }
1981 ANGLE_CAPTURE_GL(GetShaderivRobustANGLE, isCallValid, context, shaderPacked, pname, bufSize,
1982 length, params);
1983 }
1984 else
1985 {
1986 }
1987 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
1988 }
1989
GL_GetTexParameterfvRobustANGLE(GLenum target,GLenum pname,GLsizei bufSize,GLsizei * length,GLfloat * params)1990 void GL_APIENTRY GL_GetTexParameterfvRobustANGLE(GLenum target,
1991 GLenum pname,
1992 GLsizei bufSize,
1993 GLsizei *length,
1994 GLfloat *params)
1995 {
1996 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
1997 Context *context = GetValidGlobalContext();
1998 EVENT(context, GLGetTexParameterfvRobustANGLE,
1999 "context = %d, target = %s, pname = %s, bufSize = %d, length = 0x%016" PRIxPTR
2000 ", params = 0x%016" PRIxPTR "",
2001 CID(context), GLenumToString(GLESEnum::AllEnums, target),
2002 GLenumToString(GLESEnum::AllEnums, pname), bufSize, (uintptr_t)length, (uintptr_t)params);
2003
2004 if (context)
2005 {
2006 TextureType targetPacked = PackParam<TextureType>(target);
2007 SCOPED_SHARE_CONTEXT_LOCK(context);
2008 bool isCallValid = (context->skipValidation() ||
2009 ValidateGetTexParameterfvRobustANGLE(
2010 context, angle::EntryPoint::GLGetTexParameterfvRobustANGLE,
2011 targetPacked, pname, bufSize, length, params));
2012 if (isCallValid)
2013 {
2014 context->getTexParameterfvRobust(targetPacked, pname, bufSize, length, params);
2015 }
2016 ANGLE_CAPTURE_GL(GetTexParameterfvRobustANGLE, isCallValid, context, targetPacked, pname,
2017 bufSize, length, params);
2018 }
2019 else
2020 {
2021 GenerateContextLostErrorOnCurrentGlobalContext();
2022 }
2023 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
2024 }
2025
GL_GetTexParameterivRobustANGLE(GLenum target,GLenum pname,GLsizei bufSize,GLsizei * length,GLint * params)2026 void GL_APIENTRY GL_GetTexParameterivRobustANGLE(GLenum target,
2027 GLenum pname,
2028 GLsizei bufSize,
2029 GLsizei *length,
2030 GLint *params)
2031 {
2032 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
2033 Context *context = GetValidGlobalContext();
2034 EVENT(context, GLGetTexParameterivRobustANGLE,
2035 "context = %d, target = %s, pname = %s, bufSize = %d, length = 0x%016" PRIxPTR
2036 ", params = 0x%016" PRIxPTR "",
2037 CID(context), GLenumToString(GLESEnum::AllEnums, target),
2038 GLenumToString(GLESEnum::AllEnums, pname), bufSize, (uintptr_t)length, (uintptr_t)params);
2039
2040 if (context)
2041 {
2042 TextureType targetPacked = PackParam<TextureType>(target);
2043 SCOPED_SHARE_CONTEXT_LOCK(context);
2044 bool isCallValid = (context->skipValidation() ||
2045 ValidateGetTexParameterivRobustANGLE(
2046 context, angle::EntryPoint::GLGetTexParameterivRobustANGLE,
2047 targetPacked, pname, bufSize, length, params));
2048 if (isCallValid)
2049 {
2050 context->getTexParameterivRobust(targetPacked, pname, bufSize, length, params);
2051 }
2052 ANGLE_CAPTURE_GL(GetTexParameterivRobustANGLE, isCallValid, context, targetPacked, pname,
2053 bufSize, length, params);
2054 }
2055 else
2056 {
2057 GenerateContextLostErrorOnCurrentGlobalContext();
2058 }
2059 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
2060 }
2061
GL_GetUniformfvRobustANGLE(GLuint program,GLint location,GLsizei bufSize,GLsizei * length,GLfloat * params)2062 void GL_APIENTRY GL_GetUniformfvRobustANGLE(GLuint program,
2063 GLint location,
2064 GLsizei bufSize,
2065 GLsizei *length,
2066 GLfloat *params)
2067 {
2068 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
2069 Context *context = GetValidGlobalContext();
2070 EVENT(context, GLGetUniformfvRobustANGLE,
2071 "context = %d, program = %u, location = %d, bufSize = %d, length = 0x%016" PRIxPTR
2072 ", params = 0x%016" PRIxPTR "",
2073 CID(context), program, location, bufSize, (uintptr_t)length, (uintptr_t)params);
2074
2075 if (context)
2076 {
2077 ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);
2078 UniformLocation locationPacked = PackParam<UniformLocation>(location);
2079 SCOPED_SHARE_CONTEXT_LOCK(context);
2080 bool isCallValid = (context->skipValidation() ||
2081 ValidateGetUniformfvRobustANGLE(
2082 context, angle::EntryPoint::GLGetUniformfvRobustANGLE,
2083 programPacked, locationPacked, bufSize, length, params));
2084 if (isCallValid)
2085 {
2086 context->getUniformfvRobust(programPacked, locationPacked, bufSize, length, params);
2087 }
2088 ANGLE_CAPTURE_GL(GetUniformfvRobustANGLE, isCallValid, context, programPacked,
2089 locationPacked, bufSize, length, params);
2090 }
2091 else
2092 {
2093 GenerateContextLostErrorOnCurrentGlobalContext();
2094 }
2095 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
2096 }
2097
GL_GetUniformivRobustANGLE(GLuint program,GLint location,GLsizei bufSize,GLsizei * length,GLint * params)2098 void GL_APIENTRY GL_GetUniformivRobustANGLE(GLuint program,
2099 GLint location,
2100 GLsizei bufSize,
2101 GLsizei *length,
2102 GLint *params)
2103 {
2104 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
2105 Context *context = GetValidGlobalContext();
2106 EVENT(context, GLGetUniformivRobustANGLE,
2107 "context = %d, program = %u, location = %d, bufSize = %d, length = 0x%016" PRIxPTR
2108 ", params = 0x%016" PRIxPTR "",
2109 CID(context), program, location, bufSize, (uintptr_t)length, (uintptr_t)params);
2110
2111 if (context)
2112 {
2113 ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);
2114 UniformLocation locationPacked = PackParam<UniformLocation>(location);
2115 SCOPED_SHARE_CONTEXT_LOCK(context);
2116 bool isCallValid = (context->skipValidation() ||
2117 ValidateGetUniformivRobustANGLE(
2118 context, angle::EntryPoint::GLGetUniformivRobustANGLE,
2119 programPacked, locationPacked, bufSize, length, params));
2120 if (isCallValid)
2121 {
2122 context->getUniformivRobust(programPacked, locationPacked, bufSize, length, params);
2123 }
2124 ANGLE_CAPTURE_GL(GetUniformivRobustANGLE, isCallValid, context, programPacked,
2125 locationPacked, bufSize, length, params);
2126 }
2127 else
2128 {
2129 GenerateContextLostErrorOnCurrentGlobalContext();
2130 }
2131 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
2132 }
2133
GL_GetVertexAttribfvRobustANGLE(GLuint index,GLenum pname,GLsizei bufSize,GLsizei * length,GLfloat * params)2134 void GL_APIENTRY GL_GetVertexAttribfvRobustANGLE(GLuint index,
2135 GLenum pname,
2136 GLsizei bufSize,
2137 GLsizei *length,
2138 GLfloat *params)
2139 {
2140 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
2141 Context *context = GetValidGlobalContext();
2142 EVENT(context, GLGetVertexAttribfvRobustANGLE,
2143 "context = %d, index = %u, pname = %s, bufSize = %d, length = 0x%016" PRIxPTR
2144 ", params = 0x%016" PRIxPTR "",
2145 CID(context), index, GLenumToString(GLESEnum::AllEnums, pname), bufSize,
2146 (uintptr_t)length, (uintptr_t)params);
2147
2148 if (context)
2149 {
2150 SCOPED_SHARE_CONTEXT_LOCK(context);
2151 bool isCallValid = (context->skipValidation() ||
2152 ValidateGetVertexAttribfvRobustANGLE(
2153 context, angle::EntryPoint::GLGetVertexAttribfvRobustANGLE, index,
2154 pname, bufSize, length, params));
2155 if (isCallValid)
2156 {
2157 context->getVertexAttribfvRobust(index, pname, bufSize, length, params);
2158 }
2159 ANGLE_CAPTURE_GL(GetVertexAttribfvRobustANGLE, isCallValid, context, index, pname, bufSize,
2160 length, params);
2161 }
2162 else
2163 {
2164 GenerateContextLostErrorOnCurrentGlobalContext();
2165 }
2166 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
2167 }
2168
GL_GetVertexAttribivRobustANGLE(GLuint index,GLenum pname,GLsizei bufSize,GLsizei * length,GLint * params)2169 void GL_APIENTRY GL_GetVertexAttribivRobustANGLE(GLuint index,
2170 GLenum pname,
2171 GLsizei bufSize,
2172 GLsizei *length,
2173 GLint *params)
2174 {
2175 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
2176 Context *context = GetValidGlobalContext();
2177 EVENT(context, GLGetVertexAttribivRobustANGLE,
2178 "context = %d, index = %u, pname = %s, bufSize = %d, length = 0x%016" PRIxPTR
2179 ", params = 0x%016" PRIxPTR "",
2180 CID(context), index, GLenumToString(GLESEnum::AllEnums, pname), bufSize,
2181 (uintptr_t)length, (uintptr_t)params);
2182
2183 if (context)
2184 {
2185 SCOPED_SHARE_CONTEXT_LOCK(context);
2186 bool isCallValid = (context->skipValidation() ||
2187 ValidateGetVertexAttribivRobustANGLE(
2188 context, angle::EntryPoint::GLGetVertexAttribivRobustANGLE, index,
2189 pname, bufSize, length, params));
2190 if (isCallValid)
2191 {
2192 context->getVertexAttribivRobust(index, pname, bufSize, length, params);
2193 }
2194 ANGLE_CAPTURE_GL(GetVertexAttribivRobustANGLE, isCallValid, context, index, pname, bufSize,
2195 length, params);
2196 }
2197 else
2198 {
2199 GenerateContextLostErrorOnCurrentGlobalContext();
2200 }
2201 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
2202 }
2203
GL_GetVertexAttribPointervRobustANGLE(GLuint index,GLenum pname,GLsizei bufSize,GLsizei * length,void ** pointer)2204 void GL_APIENTRY GL_GetVertexAttribPointervRobustANGLE(GLuint index,
2205 GLenum pname,
2206 GLsizei bufSize,
2207 GLsizei *length,
2208 void **pointer)
2209 {
2210 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
2211 Context *context = GetValidGlobalContext();
2212 EVENT(context, GLGetVertexAttribPointervRobustANGLE,
2213 "context = %d, index = %u, pname = %s, bufSize = %d, length = 0x%016" PRIxPTR
2214 ", pointer = 0x%016" PRIxPTR "",
2215 CID(context), index, GLenumToString(GLESEnum::AllEnums, pname), bufSize,
2216 (uintptr_t)length, (uintptr_t)pointer);
2217
2218 if (context)
2219 {
2220 SCOPED_SHARE_CONTEXT_LOCK(context);
2221 bool isCallValid = (context->skipValidation() ||
2222 ValidateGetVertexAttribPointervRobustANGLE(
2223 context, angle::EntryPoint::GLGetVertexAttribPointervRobustANGLE,
2224 index, pname, bufSize, length, pointer));
2225 if (isCallValid)
2226 {
2227 context->getVertexAttribPointervRobust(index, pname, bufSize, length, pointer);
2228 }
2229 ANGLE_CAPTURE_GL(GetVertexAttribPointervRobustANGLE, isCallValid, context, index, pname,
2230 bufSize, length, pointer);
2231 }
2232 else
2233 {
2234 GenerateContextLostErrorOnCurrentGlobalContext();
2235 }
2236 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
2237 }
2238
GL_ReadPixelsRobustANGLE(GLint x,GLint y,GLsizei width,GLsizei height,GLenum format,GLenum type,GLsizei bufSize,GLsizei * length,GLsizei * columns,GLsizei * rows,void * pixels)2239 void GL_APIENTRY GL_ReadPixelsRobustANGLE(GLint x,
2240 GLint y,
2241 GLsizei width,
2242 GLsizei height,
2243 GLenum format,
2244 GLenum type,
2245 GLsizei bufSize,
2246 GLsizei *length,
2247 GLsizei *columns,
2248 GLsizei *rows,
2249 void *pixels)
2250 {
2251 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
2252 Context *context = GetValidGlobalContext();
2253 EVENT(context, GLReadPixelsRobustANGLE,
2254 "context = %d, x = %d, y = %d, width = %d, height = %d, format = %s, type = %s, bufSize "
2255 "= %d, length = 0x%016" PRIxPTR ", columns = 0x%016" PRIxPTR ", rows = 0x%016" PRIxPTR
2256 ", pixels = 0x%016" PRIxPTR "",
2257 CID(context), x, y, width, height, GLenumToString(GLESEnum::AllEnums, format),
2258 GLenumToString(GLESEnum::AllEnums, type), bufSize, (uintptr_t)length, (uintptr_t)columns,
2259 (uintptr_t)rows, (uintptr_t)pixels);
2260
2261 if (context)
2262 {
2263 SCOPED_SHARE_CONTEXT_LOCK(context);
2264 bool isCallValid =
2265 (context->skipValidation() ||
2266 (ValidatePixelLocalStorageInactive(context->getPrivateState(),
2267 context->getMutableErrorSetForValidation(),
2268 angle::EntryPoint::GLReadPixelsRobustANGLE) &&
2269 ValidateReadPixelsRobustANGLE(context, angle::EntryPoint::GLReadPixelsRobustANGLE, x,
2270 y, width, height, format, type, bufSize, length,
2271 columns, rows, pixels)));
2272 if (isCallValid)
2273 {
2274 context->readPixelsRobust(x, y, width, height, format, type, bufSize, length, columns,
2275 rows, pixels);
2276 }
2277 ANGLE_CAPTURE_GL(ReadPixelsRobustANGLE, isCallValid, context, x, y, width, height, format,
2278 type, bufSize, length, columns, rows, pixels);
2279 }
2280 else
2281 {
2282 GenerateContextLostErrorOnCurrentGlobalContext();
2283 }
2284 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
2285 }
2286
GL_TexImage2DRobustANGLE(GLenum target,GLint level,GLint internalformat,GLsizei width,GLsizei height,GLint border,GLenum format,GLenum type,GLsizei bufSize,const void * pixels)2287 void GL_APIENTRY GL_TexImage2DRobustANGLE(GLenum target,
2288 GLint level,
2289 GLint internalformat,
2290 GLsizei width,
2291 GLsizei height,
2292 GLint border,
2293 GLenum format,
2294 GLenum type,
2295 GLsizei bufSize,
2296 const void *pixels)
2297 {
2298 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
2299 Context *context = GetValidGlobalContext();
2300 EVENT(context, GLTexImage2DRobustANGLE,
2301 "context = %d, target = %s, level = %d, internalformat = %d, width = %d, height = %d, "
2302 "border = %d, format = %s, type = %s, bufSize = %d, pixels = 0x%016" PRIxPTR "",
2303 CID(context), GLenumToString(GLESEnum::AllEnums, target), level, internalformat, width,
2304 height, border, GLenumToString(GLESEnum::AllEnums, format),
2305 GLenumToString(GLESEnum::AllEnums, type), bufSize, (uintptr_t)pixels);
2306
2307 if (context)
2308 {
2309 TextureTarget targetPacked = PackParam<TextureTarget>(target);
2310 SCOPED_SHARE_CONTEXT_LOCK(context);
2311 bool isCallValid =
2312 (context->skipValidation() ||
2313 (ValidatePixelLocalStorageInactive(context->getPrivateState(),
2314 context->getMutableErrorSetForValidation(),
2315 angle::EntryPoint::GLTexImage2DRobustANGLE) &&
2316 ValidateTexImage2DRobustANGLE(context, angle::EntryPoint::GLTexImage2DRobustANGLE,
2317 targetPacked, level, internalformat, width, height,
2318 border, format, type, bufSize, pixels)));
2319 if (isCallValid)
2320 {
2321 context->texImage2DRobust(targetPacked, level, internalformat, width, height, border,
2322 format, type, bufSize, pixels);
2323 }
2324 ANGLE_CAPTURE_GL(TexImage2DRobustANGLE, isCallValid, context, targetPacked, level,
2325 internalformat, width, height, border, format, type, bufSize, pixels);
2326 }
2327 else
2328 {
2329 GenerateContextLostErrorOnCurrentGlobalContext();
2330 }
2331 egl::Display::GetCurrentThreadUnlockedTailCall()->run(nullptr);
2332 }
2333
GL_TexParameterfvRobustANGLE(GLenum target,GLenum pname,GLsizei bufSize,const GLfloat * params)2334 void GL_APIENTRY GL_TexParameterfvRobustANGLE(GLenum target,
2335 GLenum pname,
2336 GLsizei bufSize,
2337 const GLfloat *params)
2338 {
2339 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
2340 Context *context = GetValidGlobalContext();
2341 EVENT(context, GLTexParameterfvRobustANGLE,
2342 "context = %d, target = %s, pname = %s, bufSize = %d, params = 0x%016" PRIxPTR "",
2343 CID(context), GLenumToString(GLESEnum::AllEnums, target),
2344 GLenumToString(GLESEnum::AllEnums, pname), bufSize, (uintptr_t)params);
2345
2346 if (context)
2347 {
2348 TextureType targetPacked = PackParam<TextureType>(target);
2349 SCOPED_SHARE_CONTEXT_LOCK(context);
2350 bool isCallValid = (context->skipValidation() ||
2351 ValidateTexParameterfvRobustANGLE(
2352 context, angle::EntryPoint::GLTexParameterfvRobustANGLE,
2353 targetPacked, pname, bufSize, params));
2354 if (isCallValid)
2355 {
2356 context->texParameterfvRobust(targetPacked, pname, bufSize, params);
2357 }
2358 ANGLE_CAPTURE_GL(TexParameterfvRobustANGLE, isCallValid, context, targetPacked, pname,
2359 bufSize, params);
2360 }
2361 else
2362 {
2363 GenerateContextLostErrorOnCurrentGlobalContext();
2364 }
2365 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
2366 }
2367
GL_TexParameterivRobustANGLE(GLenum target,GLenum pname,GLsizei bufSize,const GLint * params)2368 void GL_APIENTRY GL_TexParameterivRobustANGLE(GLenum target,
2369 GLenum pname,
2370 GLsizei bufSize,
2371 const GLint *params)
2372 {
2373 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
2374 Context *context = GetValidGlobalContext();
2375 EVENT(context, GLTexParameterivRobustANGLE,
2376 "context = %d, target = %s, pname = %s, bufSize = %d, params = 0x%016" PRIxPTR "",
2377 CID(context), GLenumToString(GLESEnum::AllEnums, target),
2378 GLenumToString(GLESEnum::AllEnums, pname), bufSize, (uintptr_t)params);
2379
2380 if (context)
2381 {
2382 TextureType targetPacked = PackParam<TextureType>(target);
2383 SCOPED_SHARE_CONTEXT_LOCK(context);
2384 bool isCallValid = (context->skipValidation() ||
2385 ValidateTexParameterivRobustANGLE(
2386 context, angle::EntryPoint::GLTexParameterivRobustANGLE,
2387 targetPacked, pname, bufSize, params));
2388 if (isCallValid)
2389 {
2390 context->texParameterivRobust(targetPacked, pname, bufSize, params);
2391 }
2392 ANGLE_CAPTURE_GL(TexParameterivRobustANGLE, isCallValid, context, targetPacked, pname,
2393 bufSize, params);
2394 }
2395 else
2396 {
2397 GenerateContextLostErrorOnCurrentGlobalContext();
2398 }
2399 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
2400 }
2401
GL_TexSubImage2DRobustANGLE(GLenum target,GLint level,GLint xoffset,GLint yoffset,GLsizei width,GLsizei height,GLenum format,GLenum type,GLsizei bufSize,const void * pixels)2402 void GL_APIENTRY GL_TexSubImage2DRobustANGLE(GLenum target,
2403 GLint level,
2404 GLint xoffset,
2405 GLint yoffset,
2406 GLsizei width,
2407 GLsizei height,
2408 GLenum format,
2409 GLenum type,
2410 GLsizei bufSize,
2411 const void *pixels)
2412 {
2413 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
2414 Context *context = GetValidGlobalContext();
2415 EVENT(context, GLTexSubImage2DRobustANGLE,
2416 "context = %d, target = %s, level = %d, xoffset = %d, yoffset = %d, width = %d, height = "
2417 "%d, format = %s, type = %s, bufSize = %d, pixels = 0x%016" PRIxPTR "",
2418 CID(context), GLenumToString(GLESEnum::AllEnums, target), level, xoffset, yoffset, width,
2419 height, GLenumToString(GLESEnum::AllEnums, format),
2420 GLenumToString(GLESEnum::AllEnums, type), bufSize, (uintptr_t)pixels);
2421
2422 if (context)
2423 {
2424 TextureTarget targetPacked = PackParam<TextureTarget>(target);
2425 SCOPED_SHARE_CONTEXT_LOCK(context);
2426 bool isCallValid =
2427 (context->skipValidation() ||
2428 (ValidatePixelLocalStorageInactive(context->getPrivateState(),
2429 context->getMutableErrorSetForValidation(),
2430 angle::EntryPoint::GLTexSubImage2DRobustANGLE) &&
2431 ValidateTexSubImage2DRobustANGLE(
2432 context, angle::EntryPoint::GLTexSubImage2DRobustANGLE, targetPacked, level,
2433 xoffset, yoffset, width, height, format, type, bufSize, pixels)));
2434 if (isCallValid)
2435 {
2436 context->texSubImage2DRobust(targetPacked, level, xoffset, yoffset, width, height,
2437 format, type, bufSize, pixels);
2438 }
2439 ANGLE_CAPTURE_GL(TexSubImage2DRobustANGLE, isCallValid, context, targetPacked, level,
2440 xoffset, yoffset, width, height, format, type, bufSize, pixels);
2441 }
2442 else
2443 {
2444 GenerateContextLostErrorOnCurrentGlobalContext();
2445 }
2446 egl::Display::GetCurrentThreadUnlockedTailCall()->run(nullptr);
2447 }
2448
GL_TexImage3DRobustANGLE(GLenum target,GLint level,GLint internalformat,GLsizei width,GLsizei height,GLsizei depth,GLint border,GLenum format,GLenum type,GLsizei bufSize,const void * pixels)2449 void GL_APIENTRY GL_TexImage3DRobustANGLE(GLenum target,
2450 GLint level,
2451 GLint internalformat,
2452 GLsizei width,
2453 GLsizei height,
2454 GLsizei depth,
2455 GLint border,
2456 GLenum format,
2457 GLenum type,
2458 GLsizei bufSize,
2459 const void *pixels)
2460 {
2461 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
2462 Context *context = GetValidGlobalContext();
2463 EVENT(context, GLTexImage3DRobustANGLE,
2464 "context = %d, target = %s, level = %d, internalformat = %d, width = %d, height = %d, "
2465 "depth = %d, border = %d, format = %s, type = %s, bufSize = %d, pixels = 0x%016" PRIxPTR
2466 "",
2467 CID(context), GLenumToString(GLESEnum::AllEnums, target), level, internalformat, width,
2468 height, depth, border, GLenumToString(GLESEnum::AllEnums, format),
2469 GLenumToString(GLESEnum::AllEnums, type), bufSize, (uintptr_t)pixels);
2470
2471 if (context)
2472 {
2473 TextureTarget targetPacked = PackParam<TextureTarget>(target);
2474 SCOPED_SHARE_CONTEXT_LOCK(context);
2475 bool isCallValid =
2476 (context->skipValidation() ||
2477 (ValidatePixelLocalStorageInactive(context->getPrivateState(),
2478 context->getMutableErrorSetForValidation(),
2479 angle::EntryPoint::GLTexImage3DRobustANGLE) &&
2480 ValidateTexImage3DRobustANGLE(context, angle::EntryPoint::GLTexImage3DRobustANGLE,
2481 targetPacked, level, internalformat, width, height,
2482 depth, border, format, type, bufSize, pixels)));
2483 if (isCallValid)
2484 {
2485 context->texImage3DRobust(targetPacked, level, internalformat, width, height, depth,
2486 border, format, type, bufSize, pixels);
2487 }
2488 ANGLE_CAPTURE_GL(TexImage3DRobustANGLE, isCallValid, context, targetPacked, level,
2489 internalformat, width, height, depth, border, format, type, bufSize,
2490 pixels);
2491 }
2492 else
2493 {
2494 GenerateContextLostErrorOnCurrentGlobalContext();
2495 }
2496 egl::Display::GetCurrentThreadUnlockedTailCall()->run(nullptr);
2497 }
2498
GL_TexSubImage3DRobustANGLE(GLenum target,GLint level,GLint xoffset,GLint yoffset,GLint zoffset,GLsizei width,GLsizei height,GLsizei depth,GLenum format,GLenum type,GLsizei bufSize,const void * pixels)2499 void GL_APIENTRY GL_TexSubImage3DRobustANGLE(GLenum target,
2500 GLint level,
2501 GLint xoffset,
2502 GLint yoffset,
2503 GLint zoffset,
2504 GLsizei width,
2505 GLsizei height,
2506 GLsizei depth,
2507 GLenum format,
2508 GLenum type,
2509 GLsizei bufSize,
2510 const void *pixels)
2511 {
2512 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
2513 Context *context = GetValidGlobalContext();
2514 EVENT(
2515 context, GLTexSubImage3DRobustANGLE,
2516 "context = %d, target = %s, level = %d, xoffset = %d, yoffset = %d, zoffset = %d, width = "
2517 "%d, height = %d, depth = %d, format = %s, type = %s, bufSize = %d, pixels = 0x%016" PRIxPTR
2518 "",
2519 CID(context), GLenumToString(GLESEnum::AllEnums, target), level, xoffset, yoffset, zoffset,
2520 width, height, depth, GLenumToString(GLESEnum::AllEnums, format),
2521 GLenumToString(GLESEnum::AllEnums, type), bufSize, (uintptr_t)pixels);
2522
2523 if (context)
2524 {
2525 TextureTarget targetPacked = PackParam<TextureTarget>(target);
2526 SCOPED_SHARE_CONTEXT_LOCK(context);
2527 bool isCallValid =
2528 (context->skipValidation() ||
2529 (ValidatePixelLocalStorageInactive(context->getPrivateState(),
2530 context->getMutableErrorSetForValidation(),
2531 angle::EntryPoint::GLTexSubImage3DRobustANGLE) &&
2532 ValidateTexSubImage3DRobustANGLE(
2533 context, angle::EntryPoint::GLTexSubImage3DRobustANGLE, targetPacked, level,
2534 xoffset, yoffset, zoffset, width, height, depth, format, type, bufSize, pixels)));
2535 if (isCallValid)
2536 {
2537 context->texSubImage3DRobust(targetPacked, level, xoffset, yoffset, zoffset, width,
2538 height, depth, format, type, bufSize, pixels);
2539 }
2540 ANGLE_CAPTURE_GL(TexSubImage3DRobustANGLE, isCallValid, context, targetPacked, level,
2541 xoffset, yoffset, zoffset, width, height, depth, format, type, bufSize,
2542 pixels);
2543 }
2544 else
2545 {
2546 GenerateContextLostErrorOnCurrentGlobalContext();
2547 }
2548 egl::Display::GetCurrentThreadUnlockedTailCall()->run(nullptr);
2549 }
2550
GL_CompressedTexImage2DRobustANGLE(GLenum target,GLint level,GLenum internalformat,GLsizei width,GLsizei height,GLint border,GLsizei imageSize,GLsizei dataSize,const void * data)2551 void GL_APIENTRY GL_CompressedTexImage2DRobustANGLE(GLenum target,
2552 GLint level,
2553 GLenum internalformat,
2554 GLsizei width,
2555 GLsizei height,
2556 GLint border,
2557 GLsizei imageSize,
2558 GLsizei dataSize,
2559 const void *data)
2560 {
2561 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
2562 Context *context = GetValidGlobalContext();
2563 EVENT(context, GLCompressedTexImage2DRobustANGLE,
2564 "context = %d, target = %s, level = %d, internalformat = %s, width = %d, height = %d, "
2565 "border = %d, imageSize = %d, dataSize = %d, data = 0x%016" PRIxPTR "",
2566 CID(context), GLenumToString(GLESEnum::AllEnums, target), level,
2567 GLenumToString(GLESEnum::AllEnums, internalformat), width, height, border, imageSize,
2568 dataSize, (uintptr_t)data);
2569
2570 if (context)
2571 {
2572 TextureTarget targetPacked = PackParam<TextureTarget>(target);
2573 SCOPED_SHARE_CONTEXT_LOCK(context);
2574 bool isCallValid =
2575 (context->skipValidation() ||
2576 (ValidatePixelLocalStorageInactive(
2577 context->getPrivateState(), context->getMutableErrorSetForValidation(),
2578 angle::EntryPoint::GLCompressedTexImage2DRobustANGLE) &&
2579 ValidateCompressedTexImage2DRobustANGLE(
2580 context, angle::EntryPoint::GLCompressedTexImage2DRobustANGLE, targetPacked,
2581 level, internalformat, width, height, border, imageSize, dataSize, data)));
2582 if (isCallValid)
2583 {
2584 context->compressedTexImage2DRobust(targetPacked, level, internalformat, width, height,
2585 border, imageSize, dataSize, data);
2586 }
2587 ANGLE_CAPTURE_GL(CompressedTexImage2DRobustANGLE, isCallValid, context, targetPacked, level,
2588 internalformat, width, height, border, imageSize, dataSize, data);
2589 }
2590 else
2591 {
2592 GenerateContextLostErrorOnCurrentGlobalContext();
2593 }
2594 egl::Display::GetCurrentThreadUnlockedTailCall()->run(nullptr);
2595 }
2596
GL_CompressedTexSubImage2DRobustANGLE(GLenum target,GLint level,GLsizei xoffset,GLsizei yoffset,GLsizei width,GLsizei height,GLenum format,GLsizei imageSize,GLsizei dataSize,const void * data)2597 void GL_APIENTRY GL_CompressedTexSubImage2DRobustANGLE(GLenum target,
2598 GLint level,
2599 GLsizei xoffset,
2600 GLsizei yoffset,
2601 GLsizei width,
2602 GLsizei height,
2603 GLenum format,
2604 GLsizei imageSize,
2605 GLsizei dataSize,
2606 const void *data)
2607 {
2608 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
2609 Context *context = GetValidGlobalContext();
2610 EVENT(context, GLCompressedTexSubImage2DRobustANGLE,
2611 "context = %d, target = %s, level = %d, xoffset = %d, yoffset = %d, width = %d, height = "
2612 "%d, format = %s, imageSize = %d, dataSize = %d, data = 0x%016" PRIxPTR "",
2613 CID(context), GLenumToString(GLESEnum::AllEnums, target), level, xoffset, yoffset, width,
2614 height, GLenumToString(GLESEnum::AllEnums, format), imageSize, dataSize, (uintptr_t)data);
2615
2616 if (context)
2617 {
2618 TextureTarget targetPacked = PackParam<TextureTarget>(target);
2619 SCOPED_SHARE_CONTEXT_LOCK(context);
2620 bool isCallValid =
2621 (context->skipValidation() ||
2622 (ValidatePixelLocalStorageInactive(
2623 context->getPrivateState(), context->getMutableErrorSetForValidation(),
2624 angle::EntryPoint::GLCompressedTexSubImage2DRobustANGLE) &&
2625 ValidateCompressedTexSubImage2DRobustANGLE(
2626 context, angle::EntryPoint::GLCompressedTexSubImage2DRobustANGLE, targetPacked,
2627 level, xoffset, yoffset, width, height, format, imageSize, dataSize, data)));
2628 if (isCallValid)
2629 {
2630 context->compressedTexSubImage2DRobust(targetPacked, level, xoffset, yoffset, width,
2631 height, format, imageSize, dataSize, data);
2632 }
2633 ANGLE_CAPTURE_GL(CompressedTexSubImage2DRobustANGLE, isCallValid, context, targetPacked,
2634 level, xoffset, yoffset, width, height, format, imageSize, dataSize, data);
2635 }
2636 else
2637 {
2638 GenerateContextLostErrorOnCurrentGlobalContext();
2639 }
2640 egl::Display::GetCurrentThreadUnlockedTailCall()->run(nullptr);
2641 }
2642
GL_CompressedTexImage3DRobustANGLE(GLenum target,GLint level,GLenum internalformat,GLsizei width,GLsizei height,GLsizei depth,GLint border,GLsizei imageSize,GLsizei dataSize,const void * data)2643 void GL_APIENTRY GL_CompressedTexImage3DRobustANGLE(GLenum target,
2644 GLint level,
2645 GLenum internalformat,
2646 GLsizei width,
2647 GLsizei height,
2648 GLsizei depth,
2649 GLint border,
2650 GLsizei imageSize,
2651 GLsizei dataSize,
2652 const void *data)
2653 {
2654 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
2655 Context *context = GetValidGlobalContext();
2656 EVENT(context, GLCompressedTexImage3DRobustANGLE,
2657 "context = %d, target = %s, level = %d, internalformat = %s, width = %d, height = %d, "
2658 "depth = %d, border = %d, imageSize = %d, dataSize = %d, data = 0x%016" PRIxPTR "",
2659 CID(context), GLenumToString(GLESEnum::AllEnums, target), level,
2660 GLenumToString(GLESEnum::AllEnums, internalformat), width, height, depth, border,
2661 imageSize, dataSize, (uintptr_t)data);
2662
2663 if (context)
2664 {
2665 TextureTarget targetPacked = PackParam<TextureTarget>(target);
2666 SCOPED_SHARE_CONTEXT_LOCK(context);
2667 bool isCallValid =
2668 (context->skipValidation() ||
2669 (ValidatePixelLocalStorageInactive(
2670 context->getPrivateState(), context->getMutableErrorSetForValidation(),
2671 angle::EntryPoint::GLCompressedTexImage3DRobustANGLE) &&
2672 ValidateCompressedTexImage3DRobustANGLE(
2673 context, angle::EntryPoint::GLCompressedTexImage3DRobustANGLE, targetPacked,
2674 level, internalformat, width, height, depth, border, imageSize, dataSize, data)));
2675 if (isCallValid)
2676 {
2677 context->compressedTexImage3DRobust(targetPacked, level, internalformat, width, height,
2678 depth, border, imageSize, dataSize, data);
2679 }
2680 ANGLE_CAPTURE_GL(CompressedTexImage3DRobustANGLE, isCallValid, context, targetPacked, level,
2681 internalformat, width, height, depth, border, imageSize, dataSize, data);
2682 }
2683 else
2684 {
2685 GenerateContextLostErrorOnCurrentGlobalContext();
2686 }
2687 egl::Display::GetCurrentThreadUnlockedTailCall()->run(nullptr);
2688 }
2689
GL_CompressedTexSubImage3DRobustANGLE(GLenum target,GLint level,GLint xoffset,GLint yoffset,GLint zoffset,GLsizei width,GLsizei height,GLsizei depth,GLenum format,GLsizei imageSize,GLsizei dataSize,const void * data)2690 void GL_APIENTRY GL_CompressedTexSubImage3DRobustANGLE(GLenum target,
2691 GLint level,
2692 GLint xoffset,
2693 GLint yoffset,
2694 GLint zoffset,
2695 GLsizei width,
2696 GLsizei height,
2697 GLsizei depth,
2698 GLenum format,
2699 GLsizei imageSize,
2700 GLsizei dataSize,
2701 const void *data)
2702 {
2703 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
2704 Context *context = GetValidGlobalContext();
2705 EVENT(context, GLCompressedTexSubImage3DRobustANGLE,
2706 "context = %d, target = %s, level = %d, xoffset = %d, yoffset = %d, zoffset = %d, width "
2707 "= %d, height = %d, depth = %d, format = %s, imageSize = %d, dataSize = %d, data = "
2708 "0x%016" PRIxPTR "",
2709 CID(context), GLenumToString(GLESEnum::AllEnums, target), level, xoffset, yoffset,
2710 zoffset, width, height, depth, GLenumToString(GLESEnum::AllEnums, format), imageSize,
2711 dataSize, (uintptr_t)data);
2712
2713 if (context)
2714 {
2715 TextureTarget targetPacked = PackParam<TextureTarget>(target);
2716 SCOPED_SHARE_CONTEXT_LOCK(context);
2717 bool isCallValid =
2718 (context->skipValidation() ||
2719 (ValidatePixelLocalStorageInactive(
2720 context->getPrivateState(), context->getMutableErrorSetForValidation(),
2721 angle::EntryPoint::GLCompressedTexSubImage3DRobustANGLE) &&
2722 ValidateCompressedTexSubImage3DRobustANGLE(
2723 context, angle::EntryPoint::GLCompressedTexSubImage3DRobustANGLE, targetPacked,
2724 level, xoffset, yoffset, zoffset, width, height, depth, format, imageSize,
2725 dataSize, data)));
2726 if (isCallValid)
2727 {
2728 context->compressedTexSubImage3DRobust(targetPacked, level, xoffset, yoffset, zoffset,
2729 width, height, depth, format, imageSize,
2730 dataSize, data);
2731 }
2732 ANGLE_CAPTURE_GL(CompressedTexSubImage3DRobustANGLE, isCallValid, context, targetPacked,
2733 level, xoffset, yoffset, zoffset, width, height, depth, format, imageSize,
2734 dataSize, data);
2735 }
2736 else
2737 {
2738 GenerateContextLostErrorOnCurrentGlobalContext();
2739 }
2740 egl::Display::GetCurrentThreadUnlockedTailCall()->run(nullptr);
2741 }
2742
GL_GetQueryivRobustANGLE(GLenum target,GLenum pname,GLsizei bufSize,GLsizei * length,GLint * params)2743 void GL_APIENTRY GL_GetQueryivRobustANGLE(GLenum target,
2744 GLenum pname,
2745 GLsizei bufSize,
2746 GLsizei *length,
2747 GLint *params)
2748 {
2749 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
2750 Context *context = GetValidGlobalContext();
2751 EVENT(context, GLGetQueryivRobustANGLE,
2752 "context = %d, target = %s, pname = %s, bufSize = %d, length = 0x%016" PRIxPTR
2753 ", params = 0x%016" PRIxPTR "",
2754 CID(context), GLenumToString(GLESEnum::AllEnums, target),
2755 GLenumToString(GLESEnum::AllEnums, pname), bufSize, (uintptr_t)length, (uintptr_t)params);
2756
2757 if (context)
2758 {
2759 QueryType targetPacked = PackParam<QueryType>(target);
2760 SCOPED_SHARE_CONTEXT_LOCK(context);
2761 bool isCallValid =
2762 (context->skipValidation() ||
2763 ValidateGetQueryivRobustANGLE(context, angle::EntryPoint::GLGetQueryivRobustANGLE,
2764 targetPacked, pname, bufSize, length, params));
2765 if (isCallValid)
2766 {
2767 context->getQueryivRobust(targetPacked, pname, bufSize, length, params);
2768 }
2769 ANGLE_CAPTURE_GL(GetQueryivRobustANGLE, isCallValid, context, targetPacked, pname, bufSize,
2770 length, params);
2771 }
2772 else
2773 {
2774 GenerateContextLostErrorOnCurrentGlobalContext();
2775 }
2776 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
2777 }
2778
GL_GetQueryObjectuivRobustANGLE(GLuint id,GLenum pname,GLsizei bufSize,GLsizei * length,GLuint * params)2779 void GL_APIENTRY GL_GetQueryObjectuivRobustANGLE(GLuint id,
2780 GLenum pname,
2781 GLsizei bufSize,
2782 GLsizei *length,
2783 GLuint *params)
2784 {
2785 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
2786 Context *context = GetValidGlobalContext();
2787 EVENT(context, GLGetQueryObjectuivRobustANGLE,
2788 "context = %d, id = %u, pname = %s, bufSize = %d, length = 0x%016" PRIxPTR
2789 ", params = 0x%016" PRIxPTR "",
2790 CID(context), id, GLenumToString(GLESEnum::AllEnums, pname), bufSize, (uintptr_t)length,
2791 (uintptr_t)params);
2792
2793 if (context)
2794 {
2795 QueryID idPacked = PackParam<QueryID>(id);
2796 SCOPED_SHARE_CONTEXT_LOCK(context);
2797 bool isCallValid = (context->skipValidation() ||
2798 ValidateGetQueryObjectuivRobustANGLE(
2799 context, angle::EntryPoint::GLGetQueryObjectuivRobustANGLE,
2800 idPacked, pname, bufSize, length, params));
2801 if (isCallValid)
2802 {
2803 context->getQueryObjectuivRobust(idPacked, pname, bufSize, length, params);
2804 }
2805 ANGLE_CAPTURE_GL(GetQueryObjectuivRobustANGLE, isCallValid, context, idPacked, pname,
2806 bufSize, length, params);
2807 }
2808 else
2809 {
2810 GenerateContextLostErrorOnCurrentGlobalContext();
2811 }
2812 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
2813 }
2814
GL_GetBufferPointervRobustANGLE(GLenum target,GLenum pname,GLsizei bufSize,GLsizei * length,void ** params)2815 void GL_APIENTRY GL_GetBufferPointervRobustANGLE(GLenum target,
2816 GLenum pname,
2817 GLsizei bufSize,
2818 GLsizei *length,
2819 void **params)
2820 {
2821 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
2822 Context *context = GetValidGlobalContext();
2823 EVENT(context, GLGetBufferPointervRobustANGLE,
2824 "context = %d, target = %s, pname = %s, bufSize = %d, length = 0x%016" PRIxPTR
2825 ", params = 0x%016" PRIxPTR "",
2826 CID(context), GLenumToString(GLESEnum::AllEnums, target),
2827 GLenumToString(GLESEnum::AllEnums, pname), bufSize, (uintptr_t)length, (uintptr_t)params);
2828
2829 if (context)
2830 {
2831 BufferBinding targetPacked = PackParam<BufferBinding>(target);
2832 SCOPED_SHARE_CONTEXT_LOCK(context);
2833 bool isCallValid = (context->skipValidation() ||
2834 ValidateGetBufferPointervRobustANGLE(
2835 context, angle::EntryPoint::GLGetBufferPointervRobustANGLE,
2836 targetPacked, pname, bufSize, length, params));
2837 if (isCallValid)
2838 {
2839 context->getBufferPointervRobust(targetPacked, pname, bufSize, length, params);
2840 }
2841 ANGLE_CAPTURE_GL(GetBufferPointervRobustANGLE, isCallValid, context, targetPacked, pname,
2842 bufSize, length, params);
2843 }
2844 else
2845 {
2846 GenerateContextLostErrorOnCurrentGlobalContext();
2847 }
2848 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
2849 }
2850
GL_GetIntegeri_vRobustANGLE(GLenum target,GLuint index,GLsizei bufSize,GLsizei * length,GLint * data)2851 void GL_APIENTRY GL_GetIntegeri_vRobustANGLE(GLenum target,
2852 GLuint index,
2853 GLsizei bufSize,
2854 GLsizei *length,
2855 GLint *data)
2856 {
2857 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
2858 Context *context = GetValidGlobalContext();
2859 EVENT(context, GLGetIntegeri_vRobustANGLE,
2860 "context = %d, target = %s, index = %u, bufSize = %d, length = 0x%016" PRIxPTR
2861 ", data = 0x%016" PRIxPTR "",
2862 CID(context), GLenumToString(GLESEnum::AllEnums, target), index, bufSize,
2863 (uintptr_t)length, (uintptr_t)data);
2864
2865 if (context)
2866 {
2867 SCOPED_SHARE_CONTEXT_LOCK(context);
2868 bool isCallValid = (context->skipValidation() ||
2869 ValidateGetIntegeri_vRobustANGLE(
2870 context, angle::EntryPoint::GLGetIntegeri_vRobustANGLE, target,
2871 index, bufSize, length, data));
2872 if (isCallValid)
2873 {
2874 context->getIntegeri_vRobust(target, index, bufSize, length, data);
2875 }
2876 ANGLE_CAPTURE_GL(GetIntegeri_vRobustANGLE, isCallValid, context, target, index, bufSize,
2877 length, data);
2878 }
2879 else
2880 {
2881 GenerateContextLostErrorOnCurrentGlobalContext();
2882 }
2883 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
2884 }
2885
GL_GetInternalformativRobustANGLE(GLenum target,GLenum internalformat,GLenum pname,GLsizei bufSize,GLsizei * length,GLint * params)2886 void GL_APIENTRY GL_GetInternalformativRobustANGLE(GLenum target,
2887 GLenum internalformat,
2888 GLenum pname,
2889 GLsizei bufSize,
2890 GLsizei *length,
2891 GLint *params)
2892 {
2893 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
2894 Context *context = GetValidGlobalContext();
2895 EVENT(context, GLGetInternalformativRobustANGLE,
2896 "context = %d, target = %s, internalformat = %s, pname = %s, bufSize = %d, length = "
2897 "0x%016" PRIxPTR ", params = 0x%016" PRIxPTR "",
2898 CID(context), GLenumToString(GLESEnum::AllEnums, target),
2899 GLenumToString(GLESEnum::AllEnums, internalformat),
2900 GLenumToString(GLESEnum::AllEnums, pname), bufSize, (uintptr_t)length, (uintptr_t)params);
2901
2902 if (context)
2903 {
2904 SCOPED_SHARE_CONTEXT_LOCK(context);
2905 bool isCallValid = (context->skipValidation() ||
2906 ValidateGetInternalformativRobustANGLE(
2907 context, angle::EntryPoint::GLGetInternalformativRobustANGLE,
2908 target, internalformat, pname, bufSize, length, params));
2909 if (isCallValid)
2910 {
2911 context->getInternalformativRobust(target, internalformat, pname, bufSize, length,
2912 params);
2913 }
2914 ANGLE_CAPTURE_GL(GetInternalformativRobustANGLE, isCallValid, context, target,
2915 internalformat, pname, bufSize, length, params);
2916 }
2917 else
2918 {
2919 GenerateContextLostErrorOnCurrentGlobalContext();
2920 }
2921 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
2922 }
2923
GL_GetVertexAttribIivRobustANGLE(GLuint index,GLenum pname,GLsizei bufSize,GLsizei * length,GLint * params)2924 void GL_APIENTRY GL_GetVertexAttribIivRobustANGLE(GLuint index,
2925 GLenum pname,
2926 GLsizei bufSize,
2927 GLsizei *length,
2928 GLint *params)
2929 {
2930 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
2931 Context *context = GetValidGlobalContext();
2932 EVENT(context, GLGetVertexAttribIivRobustANGLE,
2933 "context = %d, index = %u, pname = %s, bufSize = %d, length = 0x%016" PRIxPTR
2934 ", params = 0x%016" PRIxPTR "",
2935 CID(context), index, GLenumToString(GLESEnum::AllEnums, pname), bufSize,
2936 (uintptr_t)length, (uintptr_t)params);
2937
2938 if (context)
2939 {
2940 SCOPED_SHARE_CONTEXT_LOCK(context);
2941 bool isCallValid = (context->skipValidation() ||
2942 ValidateGetVertexAttribIivRobustANGLE(
2943 context, angle::EntryPoint::GLGetVertexAttribIivRobustANGLE, index,
2944 pname, bufSize, length, params));
2945 if (isCallValid)
2946 {
2947 context->getVertexAttribIivRobust(index, pname, bufSize, length, params);
2948 }
2949 ANGLE_CAPTURE_GL(GetVertexAttribIivRobustANGLE, isCallValid, context, index, pname, bufSize,
2950 length, params);
2951 }
2952 else
2953 {
2954 GenerateContextLostErrorOnCurrentGlobalContext();
2955 }
2956 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
2957 }
2958
GL_GetVertexAttribIuivRobustANGLE(GLuint index,GLenum pname,GLsizei bufSize,GLsizei * length,GLuint * params)2959 void GL_APIENTRY GL_GetVertexAttribIuivRobustANGLE(GLuint index,
2960 GLenum pname,
2961 GLsizei bufSize,
2962 GLsizei *length,
2963 GLuint *params)
2964 {
2965 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
2966 Context *context = GetValidGlobalContext();
2967 EVENT(context, GLGetVertexAttribIuivRobustANGLE,
2968 "context = %d, index = %u, pname = %s, bufSize = %d, length = 0x%016" PRIxPTR
2969 ", params = 0x%016" PRIxPTR "",
2970 CID(context), index, GLenumToString(GLESEnum::AllEnums, pname), bufSize,
2971 (uintptr_t)length, (uintptr_t)params);
2972
2973 if (context)
2974 {
2975 SCOPED_SHARE_CONTEXT_LOCK(context);
2976 bool isCallValid = (context->skipValidation() ||
2977 ValidateGetVertexAttribIuivRobustANGLE(
2978 context, angle::EntryPoint::GLGetVertexAttribIuivRobustANGLE, index,
2979 pname, bufSize, length, params));
2980 if (isCallValid)
2981 {
2982 context->getVertexAttribIuivRobust(index, pname, bufSize, length, params);
2983 }
2984 ANGLE_CAPTURE_GL(GetVertexAttribIuivRobustANGLE, isCallValid, context, index, pname,
2985 bufSize, length, params);
2986 }
2987 else
2988 {
2989 GenerateContextLostErrorOnCurrentGlobalContext();
2990 }
2991 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
2992 }
2993
GL_GetUniformuivRobustANGLE(GLuint program,GLint location,GLsizei bufSize,GLsizei * length,GLuint * params)2994 void GL_APIENTRY GL_GetUniformuivRobustANGLE(GLuint program,
2995 GLint location,
2996 GLsizei bufSize,
2997 GLsizei *length,
2998 GLuint *params)
2999 {
3000 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
3001 Context *context = GetValidGlobalContext();
3002 EVENT(context, GLGetUniformuivRobustANGLE,
3003 "context = %d, program = %u, location = %d, bufSize = %d, length = 0x%016" PRIxPTR
3004 ", params = 0x%016" PRIxPTR "",
3005 CID(context), program, location, bufSize, (uintptr_t)length, (uintptr_t)params);
3006
3007 if (context)
3008 {
3009 ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);
3010 UniformLocation locationPacked = PackParam<UniformLocation>(location);
3011 SCOPED_SHARE_CONTEXT_LOCK(context);
3012 bool isCallValid = (context->skipValidation() ||
3013 ValidateGetUniformuivRobustANGLE(
3014 context, angle::EntryPoint::GLGetUniformuivRobustANGLE,
3015 programPacked, locationPacked, bufSize, length, params));
3016 if (isCallValid)
3017 {
3018 context->getUniformuivRobust(programPacked, locationPacked, bufSize, length, params);
3019 }
3020 ANGLE_CAPTURE_GL(GetUniformuivRobustANGLE, isCallValid, context, programPacked,
3021 locationPacked, bufSize, length, params);
3022 }
3023 else
3024 {
3025 GenerateContextLostErrorOnCurrentGlobalContext();
3026 }
3027 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
3028 }
3029
GL_GetActiveUniformBlockivRobustANGLE(GLuint program,GLuint uniformBlockIndex,GLenum pname,GLsizei bufSize,GLsizei * length,GLint * params)3030 void GL_APIENTRY GL_GetActiveUniformBlockivRobustANGLE(GLuint program,
3031 GLuint uniformBlockIndex,
3032 GLenum pname,
3033 GLsizei bufSize,
3034 GLsizei *length,
3035 GLint *params)
3036 {
3037 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
3038 Context *context = GetValidGlobalContext();
3039 EVENT(context, GLGetActiveUniformBlockivRobustANGLE,
3040 "context = %d, program = %u, uniformBlockIndex = %u, pname = %s, bufSize = %d, length = "
3041 "0x%016" PRIxPTR ", params = 0x%016" PRIxPTR "",
3042 CID(context), program, uniformBlockIndex, GLenumToString(GLESEnum::AllEnums, pname),
3043 bufSize, (uintptr_t)length, (uintptr_t)params);
3044
3045 if (context)
3046 {
3047 ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);
3048 UniformBlockIndex uniformBlockIndexPacked = PackParam<UniformBlockIndex>(uniformBlockIndex);
3049 SCOPED_SHARE_CONTEXT_LOCK(context);
3050 bool isCallValid =
3051 (context->skipValidation() ||
3052 ValidateGetActiveUniformBlockivRobustANGLE(
3053 context, angle::EntryPoint::GLGetActiveUniformBlockivRobustANGLE, programPacked,
3054 uniformBlockIndexPacked, pname, bufSize, length, params));
3055 if (isCallValid)
3056 {
3057 context->getActiveUniformBlockivRobust(programPacked, uniformBlockIndexPacked, pname,
3058 bufSize, length, params);
3059 }
3060 ANGLE_CAPTURE_GL(GetActiveUniformBlockivRobustANGLE, isCallValid, context, programPacked,
3061 uniformBlockIndexPacked, pname, bufSize, length, params);
3062 }
3063 else
3064 {
3065 GenerateContextLostErrorOnCurrentGlobalContext();
3066 }
3067 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
3068 }
3069
GL_GetInteger64vRobustANGLE(GLenum pname,GLsizei bufSize,GLsizei * length,GLint64 * data)3070 void GL_APIENTRY GL_GetInteger64vRobustANGLE(GLenum pname,
3071 GLsizei bufSize,
3072 GLsizei *length,
3073 GLint64 *data)
3074 {
3075 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
3076 Context *context = GetValidGlobalContext();
3077 EVENT(context, GLGetInteger64vRobustANGLE,
3078 "context = %d, pname = %s, bufSize = %d, length = 0x%016" PRIxPTR
3079 ", data = 0x%016" PRIxPTR "",
3080 CID(context), GLenumToString(GLESEnum::AllEnums, pname), bufSize, (uintptr_t)length,
3081 (uintptr_t)data);
3082
3083 if (context)
3084 {
3085 SCOPED_SHARE_CONTEXT_LOCK(context);
3086 bool isCallValid = (context->skipValidation() ||
3087 ValidateGetInteger64vRobustANGLE(
3088 context, angle::EntryPoint::GLGetInteger64vRobustANGLE, pname,
3089 bufSize, length, data));
3090 if (isCallValid)
3091 {
3092 context->getInteger64vRobust(pname, bufSize, length, data);
3093 }
3094 ANGLE_CAPTURE_GL(GetInteger64vRobustANGLE, isCallValid, context, pname, bufSize, length,
3095 data);
3096 }
3097 else
3098 {
3099 GenerateContextLostErrorOnCurrentGlobalContext();
3100 }
3101 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
3102 }
3103
GL_GetInteger64i_vRobustANGLE(GLenum target,GLuint index,GLsizei bufSize,GLsizei * length,GLint64 * data)3104 void GL_APIENTRY GL_GetInteger64i_vRobustANGLE(GLenum target,
3105 GLuint index,
3106 GLsizei bufSize,
3107 GLsizei *length,
3108 GLint64 *data)
3109 {
3110 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
3111 Context *context = GetValidGlobalContext();
3112 EVENT(context, GLGetInteger64i_vRobustANGLE,
3113 "context = %d, target = %s, index = %u, bufSize = %d, length = 0x%016" PRIxPTR
3114 ", data = 0x%016" PRIxPTR "",
3115 CID(context), GLenumToString(GLESEnum::AllEnums, target), index, bufSize,
3116 (uintptr_t)length, (uintptr_t)data);
3117
3118 if (context)
3119 {
3120 SCOPED_SHARE_CONTEXT_LOCK(context);
3121 bool isCallValid = (context->skipValidation() ||
3122 ValidateGetInteger64i_vRobustANGLE(
3123 context, angle::EntryPoint::GLGetInteger64i_vRobustANGLE, target,
3124 index, bufSize, length, data));
3125 if (isCallValid)
3126 {
3127 context->getInteger64i_vRobust(target, index, bufSize, length, data);
3128 }
3129 ANGLE_CAPTURE_GL(GetInteger64i_vRobustANGLE, isCallValid, context, target, index, bufSize,
3130 length, data);
3131 }
3132 else
3133 {
3134 GenerateContextLostErrorOnCurrentGlobalContext();
3135 }
3136 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
3137 }
3138
GL_GetBufferParameteri64vRobustANGLE(GLenum target,GLenum pname,GLsizei bufSize,GLsizei * length,GLint64 * params)3139 void GL_APIENTRY GL_GetBufferParameteri64vRobustANGLE(GLenum target,
3140 GLenum pname,
3141 GLsizei bufSize,
3142 GLsizei *length,
3143 GLint64 *params)
3144 {
3145 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
3146 Context *context = GetValidGlobalContext();
3147 EVENT(context, GLGetBufferParameteri64vRobustANGLE,
3148 "context = %d, target = %s, pname = %s, bufSize = %d, length = 0x%016" PRIxPTR
3149 ", params = 0x%016" PRIxPTR "",
3150 CID(context), GLenumToString(GLESEnum::AllEnums, target),
3151 GLenumToString(GLESEnum::AllEnums, pname), bufSize, (uintptr_t)length, (uintptr_t)params);
3152
3153 if (context)
3154 {
3155 BufferBinding targetPacked = PackParam<BufferBinding>(target);
3156 SCOPED_SHARE_CONTEXT_LOCK(context);
3157 bool isCallValid = (context->skipValidation() ||
3158 ValidateGetBufferParameteri64vRobustANGLE(
3159 context, angle::EntryPoint::GLGetBufferParameteri64vRobustANGLE,
3160 targetPacked, pname, bufSize, length, params));
3161 if (isCallValid)
3162 {
3163 context->getBufferParameteri64vRobust(targetPacked, pname, bufSize, length, params);
3164 }
3165 ANGLE_CAPTURE_GL(GetBufferParameteri64vRobustANGLE, isCallValid, context, targetPacked,
3166 pname, bufSize, length, params);
3167 }
3168 else
3169 {
3170 GenerateContextLostErrorOnCurrentGlobalContext();
3171 }
3172 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
3173 }
3174
GL_SamplerParameterivRobustANGLE(GLuint sampler,GLuint pname,GLsizei bufSize,const GLint * param)3175 void GL_APIENTRY GL_SamplerParameterivRobustANGLE(GLuint sampler,
3176 GLuint pname,
3177 GLsizei bufSize,
3178 const GLint *param)
3179 {
3180 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
3181 Context *context = GetValidGlobalContext();
3182 EVENT(context, GLSamplerParameterivRobustANGLE,
3183 "context = %d, sampler = %u, pname = %u, bufSize = %d, param = 0x%016" PRIxPTR "",
3184 CID(context), sampler, pname, bufSize, (uintptr_t)param);
3185
3186 if (context)
3187 {
3188 SamplerID samplerPacked = PackParam<SamplerID>(sampler);
3189 SCOPED_SHARE_CONTEXT_LOCK(context);
3190 bool isCallValid = (context->skipValidation() ||
3191 ValidateSamplerParameterivRobustANGLE(
3192 context, angle::EntryPoint::GLSamplerParameterivRobustANGLE,
3193 samplerPacked, pname, bufSize, param));
3194 if (isCallValid)
3195 {
3196 context->samplerParameterivRobust(samplerPacked, pname, bufSize, param);
3197 }
3198 ANGLE_CAPTURE_GL(SamplerParameterivRobustANGLE, isCallValid, context, samplerPacked, pname,
3199 bufSize, param);
3200 }
3201 else
3202 {
3203 GenerateContextLostErrorOnCurrentGlobalContext();
3204 }
3205 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
3206 }
3207
GL_SamplerParameterfvRobustANGLE(GLuint sampler,GLenum pname,GLsizei bufSize,const GLfloat * param)3208 void GL_APIENTRY GL_SamplerParameterfvRobustANGLE(GLuint sampler,
3209 GLenum pname,
3210 GLsizei bufSize,
3211 const GLfloat *param)
3212 {
3213 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
3214 Context *context = GetValidGlobalContext();
3215 EVENT(context, GLSamplerParameterfvRobustANGLE,
3216 "context = %d, sampler = %u, pname = %s, bufSize = %d, param = 0x%016" PRIxPTR "",
3217 CID(context), sampler, GLenumToString(GLESEnum::AllEnums, pname), bufSize,
3218 (uintptr_t)param);
3219
3220 if (context)
3221 {
3222 SamplerID samplerPacked = PackParam<SamplerID>(sampler);
3223 SCOPED_SHARE_CONTEXT_LOCK(context);
3224 bool isCallValid = (context->skipValidation() ||
3225 ValidateSamplerParameterfvRobustANGLE(
3226 context, angle::EntryPoint::GLSamplerParameterfvRobustANGLE,
3227 samplerPacked, pname, bufSize, param));
3228 if (isCallValid)
3229 {
3230 context->samplerParameterfvRobust(samplerPacked, pname, bufSize, param);
3231 }
3232 ANGLE_CAPTURE_GL(SamplerParameterfvRobustANGLE, isCallValid, context, samplerPacked, pname,
3233 bufSize, param);
3234 }
3235 else
3236 {
3237 GenerateContextLostErrorOnCurrentGlobalContext();
3238 }
3239 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
3240 }
3241
GL_GetSamplerParameterivRobustANGLE(GLuint sampler,GLenum pname,GLsizei bufSize,GLsizei * length,GLint * params)3242 void GL_APIENTRY GL_GetSamplerParameterivRobustANGLE(GLuint sampler,
3243 GLenum pname,
3244 GLsizei bufSize,
3245 GLsizei *length,
3246 GLint *params)
3247 {
3248 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
3249 Context *context = GetValidGlobalContext();
3250 EVENT(context, GLGetSamplerParameterivRobustANGLE,
3251 "context = %d, sampler = %u, pname = %s, bufSize = %d, length = 0x%016" PRIxPTR
3252 ", params = 0x%016" PRIxPTR "",
3253 CID(context), sampler, GLenumToString(GLESEnum::AllEnums, pname), bufSize,
3254 (uintptr_t)length, (uintptr_t)params);
3255
3256 if (context)
3257 {
3258 SamplerID samplerPacked = PackParam<SamplerID>(sampler);
3259 SCOPED_SHARE_CONTEXT_LOCK(context);
3260 bool isCallValid = (context->skipValidation() ||
3261 ValidateGetSamplerParameterivRobustANGLE(
3262 context, angle::EntryPoint::GLGetSamplerParameterivRobustANGLE,
3263 samplerPacked, pname, bufSize, length, params));
3264 if (isCallValid)
3265 {
3266 context->getSamplerParameterivRobust(samplerPacked, pname, bufSize, length, params);
3267 }
3268 ANGLE_CAPTURE_GL(GetSamplerParameterivRobustANGLE, isCallValid, context, samplerPacked,
3269 pname, bufSize, length, params);
3270 }
3271 else
3272 {
3273 GenerateContextLostErrorOnCurrentGlobalContext();
3274 }
3275 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
3276 }
3277
GL_GetSamplerParameterfvRobustANGLE(GLuint sampler,GLenum pname,GLsizei bufSize,GLsizei * length,GLfloat * params)3278 void GL_APIENTRY GL_GetSamplerParameterfvRobustANGLE(GLuint sampler,
3279 GLenum pname,
3280 GLsizei bufSize,
3281 GLsizei *length,
3282 GLfloat *params)
3283 {
3284 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
3285 Context *context = GetValidGlobalContext();
3286 EVENT(context, GLGetSamplerParameterfvRobustANGLE,
3287 "context = %d, sampler = %u, pname = %s, bufSize = %d, length = 0x%016" PRIxPTR
3288 ", params = 0x%016" PRIxPTR "",
3289 CID(context), sampler, GLenumToString(GLESEnum::AllEnums, pname), bufSize,
3290 (uintptr_t)length, (uintptr_t)params);
3291
3292 if (context)
3293 {
3294 SamplerID samplerPacked = PackParam<SamplerID>(sampler);
3295 SCOPED_SHARE_CONTEXT_LOCK(context);
3296 bool isCallValid = (context->skipValidation() ||
3297 ValidateGetSamplerParameterfvRobustANGLE(
3298 context, angle::EntryPoint::GLGetSamplerParameterfvRobustANGLE,
3299 samplerPacked, pname, bufSize, length, params));
3300 if (isCallValid)
3301 {
3302 context->getSamplerParameterfvRobust(samplerPacked, pname, bufSize, length, params);
3303 }
3304 ANGLE_CAPTURE_GL(GetSamplerParameterfvRobustANGLE, isCallValid, context, samplerPacked,
3305 pname, bufSize, length, params);
3306 }
3307 else
3308 {
3309 GenerateContextLostErrorOnCurrentGlobalContext();
3310 }
3311 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
3312 }
3313
GL_GetFramebufferParameterivRobustANGLE(GLenum target,GLenum pname,GLsizei bufSize,GLsizei * length,GLint * params)3314 void GL_APIENTRY GL_GetFramebufferParameterivRobustANGLE(GLenum target,
3315 GLenum pname,
3316 GLsizei bufSize,
3317 GLsizei *length,
3318 GLint *params)
3319 {
3320 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
3321 Context *context = GetValidGlobalContext();
3322 EVENT(context, GLGetFramebufferParameterivRobustANGLE,
3323 "context = %d, target = %s, pname = %s, bufSize = %d, length = 0x%016" PRIxPTR
3324 ", params = 0x%016" PRIxPTR "",
3325 CID(context), GLenumToString(GLESEnum::AllEnums, target),
3326 GLenumToString(GLESEnum::AllEnums, pname), bufSize, (uintptr_t)length, (uintptr_t)params);
3327
3328 if (context)
3329 {
3330 SCOPED_SHARE_CONTEXT_LOCK(context);
3331 bool isCallValid = (context->skipValidation() ||
3332 ValidateGetFramebufferParameterivRobustANGLE(
3333 context, angle::EntryPoint::GLGetFramebufferParameterivRobustANGLE,
3334 target, pname, bufSize, length, params));
3335 if (isCallValid)
3336 {
3337 context->getFramebufferParameterivRobust(target, pname, bufSize, length, params);
3338 }
3339 ANGLE_CAPTURE_GL(GetFramebufferParameterivRobustANGLE, isCallValid, context, target, pname,
3340 bufSize, length, params);
3341 }
3342 else
3343 {
3344 GenerateContextLostErrorOnCurrentGlobalContext();
3345 }
3346 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
3347 }
3348
GL_GetProgramInterfaceivRobustANGLE(GLuint program,GLenum programInterface,GLenum pname,GLsizei bufSize,GLsizei * length,GLint * params)3349 void GL_APIENTRY GL_GetProgramInterfaceivRobustANGLE(GLuint program,
3350 GLenum programInterface,
3351 GLenum pname,
3352 GLsizei bufSize,
3353 GLsizei *length,
3354 GLint *params)
3355 {
3356 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
3357 Context *context = GetValidGlobalContext();
3358 EVENT(context, GLGetProgramInterfaceivRobustANGLE,
3359 "context = %d, program = %u, programInterface = %s, pname = %s, bufSize = %d, length = "
3360 "0x%016" PRIxPTR ", params = 0x%016" PRIxPTR "",
3361 CID(context), program, GLenumToString(GLESEnum::AllEnums, programInterface),
3362 GLenumToString(GLESEnum::AllEnums, pname), bufSize, (uintptr_t)length, (uintptr_t)params);
3363
3364 if (context)
3365 {
3366 ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);
3367 SCOPED_SHARE_CONTEXT_LOCK(context);
3368 bool isCallValid = (context->skipValidation() ||
3369 ValidateGetProgramInterfaceivRobustANGLE(
3370 context, angle::EntryPoint::GLGetProgramInterfaceivRobustANGLE,
3371 programPacked, programInterface, pname, bufSize, length, params));
3372 if (isCallValid)
3373 {
3374 context->getProgramInterfaceivRobust(programPacked, programInterface, pname, bufSize,
3375 length, params);
3376 }
3377 ANGLE_CAPTURE_GL(GetProgramInterfaceivRobustANGLE, isCallValid, context, programPacked,
3378 programInterface, pname, bufSize, length, params);
3379 }
3380 else
3381 {
3382 GenerateContextLostErrorOnCurrentGlobalContext();
3383 }
3384 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
3385 }
3386
GL_GetBooleani_vRobustANGLE(GLenum target,GLuint index,GLsizei bufSize,GLsizei * length,GLboolean * data)3387 void GL_APIENTRY GL_GetBooleani_vRobustANGLE(GLenum target,
3388 GLuint index,
3389 GLsizei bufSize,
3390 GLsizei *length,
3391 GLboolean *data)
3392 {
3393 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
3394 Context *context = GetValidGlobalContext();
3395 EVENT(context, GLGetBooleani_vRobustANGLE,
3396 "context = %d, target = %s, index = %u, bufSize = %d, length = 0x%016" PRIxPTR
3397 ", data = 0x%016" PRIxPTR "",
3398 CID(context), GLenumToString(GLESEnum::AllEnums, target), index, bufSize,
3399 (uintptr_t)length, (uintptr_t)data);
3400
3401 if (context)
3402 {
3403 SCOPED_SHARE_CONTEXT_LOCK(context);
3404 bool isCallValid = (context->skipValidation() ||
3405 ValidateGetBooleani_vRobustANGLE(
3406 context, angle::EntryPoint::GLGetBooleani_vRobustANGLE, target,
3407 index, bufSize, length, data));
3408 if (isCallValid)
3409 {
3410 context->getBooleani_vRobust(target, index, bufSize, length, data);
3411 }
3412 ANGLE_CAPTURE_GL(GetBooleani_vRobustANGLE, isCallValid, context, target, index, bufSize,
3413 length, data);
3414 }
3415 else
3416 {
3417 GenerateContextLostErrorOnCurrentGlobalContext();
3418 }
3419 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
3420 }
3421
GL_GetMultisamplefvRobustANGLE(GLenum pname,GLuint index,GLsizei bufSize,GLsizei * length,GLfloat * val)3422 void GL_APIENTRY GL_GetMultisamplefvRobustANGLE(GLenum pname,
3423 GLuint index,
3424 GLsizei bufSize,
3425 GLsizei *length,
3426 GLfloat *val)
3427 {
3428 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
3429 Context *context = GetValidGlobalContext();
3430 EVENT(context, GLGetMultisamplefvRobustANGLE,
3431 "context = %d, pname = %s, index = %u, bufSize = %d, length = 0x%016" PRIxPTR
3432 ", val = 0x%016" PRIxPTR "",
3433 CID(context), GLenumToString(GLESEnum::AllEnums, pname), index, bufSize,
3434 (uintptr_t)length, (uintptr_t)val);
3435
3436 if (context)
3437 {
3438 SCOPED_SHARE_CONTEXT_LOCK(context);
3439 bool isCallValid = (context->skipValidation() ||
3440 ValidateGetMultisamplefvRobustANGLE(
3441 context, angle::EntryPoint::GLGetMultisamplefvRobustANGLE, pname,
3442 index, bufSize, length, val));
3443 if (isCallValid)
3444 {
3445 context->getMultisamplefvRobust(pname, index, bufSize, length, val);
3446 }
3447 ANGLE_CAPTURE_GL(GetMultisamplefvRobustANGLE, isCallValid, context, pname, index, bufSize,
3448 length, val);
3449 }
3450 else
3451 {
3452 GenerateContextLostErrorOnCurrentGlobalContext();
3453 }
3454 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
3455 }
3456
GL_GetTexLevelParameterivRobustANGLE(GLenum target,GLint level,GLenum pname,GLsizei bufSize,GLsizei * length,GLint * params)3457 void GL_APIENTRY GL_GetTexLevelParameterivRobustANGLE(GLenum target,
3458 GLint level,
3459 GLenum pname,
3460 GLsizei bufSize,
3461 GLsizei *length,
3462 GLint *params)
3463 {
3464 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
3465 Context *context = GetValidGlobalContext();
3466 EVENT(context, GLGetTexLevelParameterivRobustANGLE,
3467 "context = %d, target = %s, level = %d, pname = %s, bufSize = %d, length = 0x%016" PRIxPTR
3468 ", params = 0x%016" PRIxPTR "",
3469 CID(context), GLenumToString(GLESEnum::AllEnums, target), level,
3470 GLenumToString(GLESEnum::AllEnums, pname), bufSize, (uintptr_t)length, (uintptr_t)params);
3471
3472 if (context)
3473 {
3474 TextureTarget targetPacked = PackParam<TextureTarget>(target);
3475 SCOPED_SHARE_CONTEXT_LOCK(context);
3476 bool isCallValid = (context->skipValidation() ||
3477 ValidateGetTexLevelParameterivRobustANGLE(
3478 context, angle::EntryPoint::GLGetTexLevelParameterivRobustANGLE,
3479 targetPacked, level, pname, bufSize, length, params));
3480 if (isCallValid)
3481 {
3482 context->getTexLevelParameterivRobust(targetPacked, level, pname, bufSize, length,
3483 params);
3484 }
3485 ANGLE_CAPTURE_GL(GetTexLevelParameterivRobustANGLE, isCallValid, context, targetPacked,
3486 level, pname, bufSize, length, params);
3487 }
3488 else
3489 {
3490 GenerateContextLostErrorOnCurrentGlobalContext();
3491 }
3492 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
3493 }
3494
GL_GetTexLevelParameterfvRobustANGLE(GLenum target,GLint level,GLenum pname,GLsizei bufSize,GLsizei * length,GLfloat * params)3495 void GL_APIENTRY GL_GetTexLevelParameterfvRobustANGLE(GLenum target,
3496 GLint level,
3497 GLenum pname,
3498 GLsizei bufSize,
3499 GLsizei *length,
3500 GLfloat *params)
3501 {
3502 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
3503 Context *context = GetValidGlobalContext();
3504 EVENT(context, GLGetTexLevelParameterfvRobustANGLE,
3505 "context = %d, target = %s, level = %d, pname = %s, bufSize = %d, length = 0x%016" PRIxPTR
3506 ", params = 0x%016" PRIxPTR "",
3507 CID(context), GLenumToString(GLESEnum::AllEnums, target), level,
3508 GLenumToString(GLESEnum::AllEnums, pname), bufSize, (uintptr_t)length, (uintptr_t)params);
3509
3510 if (context)
3511 {
3512 TextureTarget targetPacked = PackParam<TextureTarget>(target);
3513 SCOPED_SHARE_CONTEXT_LOCK(context);
3514 bool isCallValid = (context->skipValidation() ||
3515 ValidateGetTexLevelParameterfvRobustANGLE(
3516 context, angle::EntryPoint::GLGetTexLevelParameterfvRobustANGLE,
3517 targetPacked, level, pname, bufSize, length, params));
3518 if (isCallValid)
3519 {
3520 context->getTexLevelParameterfvRobust(targetPacked, level, pname, bufSize, length,
3521 params);
3522 }
3523 ANGLE_CAPTURE_GL(GetTexLevelParameterfvRobustANGLE, isCallValid, context, targetPacked,
3524 level, pname, bufSize, length, params);
3525 }
3526 else
3527 {
3528 GenerateContextLostErrorOnCurrentGlobalContext();
3529 }
3530 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
3531 }
3532
GL_GetPointervRobustANGLERobustANGLE(GLenum pname,GLsizei bufSize,GLsizei * length,void ** params)3533 void GL_APIENTRY GL_GetPointervRobustANGLERobustANGLE(GLenum pname,
3534 GLsizei bufSize,
3535 GLsizei *length,
3536 void **params)
3537 {
3538 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
3539 Context *context = GetValidGlobalContext();
3540 EVENT(context, GLGetPointervRobustANGLERobustANGLE,
3541 "context = %d, pname = %s, bufSize = %d, length = 0x%016" PRIxPTR
3542 ", params = 0x%016" PRIxPTR "",
3543 CID(context), GLenumToString(GLESEnum::AllEnums, pname), bufSize, (uintptr_t)length,
3544 (uintptr_t)params);
3545
3546 if (context)
3547 {
3548 SCOPED_SHARE_CONTEXT_LOCK(context);
3549 bool isCallValid = (context->skipValidation() ||
3550 ValidateGetPointervRobustANGLERobustANGLE(
3551 context, angle::EntryPoint::GLGetPointervRobustANGLERobustANGLE,
3552 pname, bufSize, length, params));
3553 if (isCallValid)
3554 {
3555 context->getPointervRobustANGLERobust(pname, bufSize, length, params);
3556 }
3557 ANGLE_CAPTURE_GL(GetPointervRobustANGLERobustANGLE, isCallValid, context, pname, bufSize,
3558 length, params);
3559 }
3560 else
3561 {
3562 GenerateContextLostErrorOnCurrentGlobalContext();
3563 }
3564 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
3565 }
3566
GL_ReadnPixelsRobustANGLE(GLint x,GLint y,GLsizei width,GLsizei height,GLenum format,GLenum type,GLsizei bufSize,GLsizei * length,GLsizei * columns,GLsizei * rows,void * data)3567 void GL_APIENTRY GL_ReadnPixelsRobustANGLE(GLint x,
3568 GLint y,
3569 GLsizei width,
3570 GLsizei height,
3571 GLenum format,
3572 GLenum type,
3573 GLsizei bufSize,
3574 GLsizei *length,
3575 GLsizei *columns,
3576 GLsizei *rows,
3577 void *data)
3578 {
3579 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
3580 Context *context = GetValidGlobalContext();
3581 EVENT(context, GLReadnPixelsRobustANGLE,
3582 "context = %d, x = %d, y = %d, width = %d, height = %d, format = %s, type = %s, bufSize "
3583 "= %d, length = 0x%016" PRIxPTR ", columns = 0x%016" PRIxPTR ", rows = 0x%016" PRIxPTR
3584 ", data = 0x%016" PRIxPTR "",
3585 CID(context), x, y, width, height, GLenumToString(GLESEnum::AllEnums, format),
3586 GLenumToString(GLESEnum::AllEnums, type), bufSize, (uintptr_t)length, (uintptr_t)columns,
3587 (uintptr_t)rows, (uintptr_t)data);
3588
3589 if (context)
3590 {
3591 SCOPED_SHARE_CONTEXT_LOCK(context);
3592 bool isCallValid =
3593 (context->skipValidation() ||
3594 (ValidatePixelLocalStorageInactive(context->getPrivateState(),
3595 context->getMutableErrorSetForValidation(),
3596 angle::EntryPoint::GLReadnPixelsRobustANGLE) &&
3597 ValidateReadnPixelsRobustANGLE(context, angle::EntryPoint::GLReadnPixelsRobustANGLE,
3598 x, y, width, height, format, type, bufSize, length,
3599 columns, rows, data)));
3600 if (isCallValid)
3601 {
3602 context->readnPixelsRobust(x, y, width, height, format, type, bufSize, length, columns,
3603 rows, data);
3604 }
3605 ANGLE_CAPTURE_GL(ReadnPixelsRobustANGLE, isCallValid, context, x, y, width, height, format,
3606 type, bufSize, length, columns, rows, data);
3607 }
3608 else
3609 {
3610 GenerateContextLostErrorOnCurrentGlobalContext();
3611 }
3612 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
3613 }
3614
GL_GetnUniformfvRobustANGLE(GLuint program,GLint location,GLsizei bufSize,GLsizei * length,GLfloat * params)3615 void GL_APIENTRY GL_GetnUniformfvRobustANGLE(GLuint program,
3616 GLint location,
3617 GLsizei bufSize,
3618 GLsizei *length,
3619 GLfloat *params)
3620 {
3621 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
3622 Context *context = GetValidGlobalContext();
3623 EVENT(context, GLGetnUniformfvRobustANGLE,
3624 "context = %d, program = %u, location = %d, bufSize = %d, length = 0x%016" PRIxPTR
3625 ", params = 0x%016" PRIxPTR "",
3626 CID(context), program, location, bufSize, (uintptr_t)length, (uintptr_t)params);
3627
3628 if (context)
3629 {
3630 ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);
3631 UniformLocation locationPacked = PackParam<UniformLocation>(location);
3632 SCOPED_SHARE_CONTEXT_LOCK(context);
3633 bool isCallValid = (context->skipValidation() ||
3634 ValidateGetnUniformfvRobustANGLE(
3635 context, angle::EntryPoint::GLGetnUniformfvRobustANGLE,
3636 programPacked, locationPacked, bufSize, length, params));
3637 if (isCallValid)
3638 {
3639 context->getnUniformfvRobust(programPacked, locationPacked, bufSize, length, params);
3640 }
3641 ANGLE_CAPTURE_GL(GetnUniformfvRobustANGLE, isCallValid, context, programPacked,
3642 locationPacked, bufSize, length, params);
3643 }
3644 else
3645 {
3646 GenerateContextLostErrorOnCurrentGlobalContext();
3647 }
3648 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
3649 }
3650
GL_GetnUniformivRobustANGLE(GLuint program,GLint location,GLsizei bufSize,GLsizei * length,GLint * params)3651 void GL_APIENTRY GL_GetnUniformivRobustANGLE(GLuint program,
3652 GLint location,
3653 GLsizei bufSize,
3654 GLsizei *length,
3655 GLint *params)
3656 {
3657 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
3658 Context *context = GetValidGlobalContext();
3659 EVENT(context, GLGetnUniformivRobustANGLE,
3660 "context = %d, program = %u, location = %d, bufSize = %d, length = 0x%016" PRIxPTR
3661 ", params = 0x%016" PRIxPTR "",
3662 CID(context), program, location, bufSize, (uintptr_t)length, (uintptr_t)params);
3663
3664 if (context)
3665 {
3666 ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);
3667 UniformLocation locationPacked = PackParam<UniformLocation>(location);
3668 SCOPED_SHARE_CONTEXT_LOCK(context);
3669 bool isCallValid = (context->skipValidation() ||
3670 ValidateGetnUniformivRobustANGLE(
3671 context, angle::EntryPoint::GLGetnUniformivRobustANGLE,
3672 programPacked, locationPacked, bufSize, length, params));
3673 if (isCallValid)
3674 {
3675 context->getnUniformivRobust(programPacked, locationPacked, bufSize, length, params);
3676 }
3677 ANGLE_CAPTURE_GL(GetnUniformivRobustANGLE, isCallValid, context, programPacked,
3678 locationPacked, bufSize, length, params);
3679 }
3680 else
3681 {
3682 GenerateContextLostErrorOnCurrentGlobalContext();
3683 }
3684 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
3685 }
3686
GL_GetnUniformuivRobustANGLE(GLuint program,GLint location,GLsizei bufSize,GLsizei * length,GLuint * params)3687 void GL_APIENTRY GL_GetnUniformuivRobustANGLE(GLuint program,
3688 GLint location,
3689 GLsizei bufSize,
3690 GLsizei *length,
3691 GLuint *params)
3692 {
3693 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
3694 Context *context = GetValidGlobalContext();
3695 EVENT(context, GLGetnUniformuivRobustANGLE,
3696 "context = %d, program = %u, location = %d, bufSize = %d, length = 0x%016" PRIxPTR
3697 ", params = 0x%016" PRIxPTR "",
3698 CID(context), program, location, bufSize, (uintptr_t)length, (uintptr_t)params);
3699
3700 if (context)
3701 {
3702 ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);
3703 UniformLocation locationPacked = PackParam<UniformLocation>(location);
3704 SCOPED_SHARE_CONTEXT_LOCK(context);
3705 bool isCallValid = (context->skipValidation() ||
3706 ValidateGetnUniformuivRobustANGLE(
3707 context, angle::EntryPoint::GLGetnUniformuivRobustANGLE,
3708 programPacked, locationPacked, bufSize, length, params));
3709 if (isCallValid)
3710 {
3711 context->getnUniformuivRobust(programPacked, locationPacked, bufSize, length, params);
3712 }
3713 ANGLE_CAPTURE_GL(GetnUniformuivRobustANGLE, isCallValid, context, programPacked,
3714 locationPacked, bufSize, length, params);
3715 }
3716 else
3717 {
3718 GenerateContextLostErrorOnCurrentGlobalContext();
3719 }
3720 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
3721 }
3722
GL_TexParameterIivRobustANGLE(GLenum target,GLenum pname,GLsizei bufSize,const GLint * params)3723 void GL_APIENTRY GL_TexParameterIivRobustANGLE(GLenum target,
3724 GLenum pname,
3725 GLsizei bufSize,
3726 const GLint *params)
3727 {
3728 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
3729 Context *context = GetValidGlobalContext();
3730 EVENT(context, GLTexParameterIivRobustANGLE,
3731 "context = %d, target = %s, pname = %s, bufSize = %d, params = 0x%016" PRIxPTR "",
3732 CID(context), GLenumToString(GLESEnum::AllEnums, target),
3733 GLenumToString(GLESEnum::AllEnums, pname), bufSize, (uintptr_t)params);
3734
3735 if (context)
3736 {
3737 TextureType targetPacked = PackParam<TextureType>(target);
3738 SCOPED_SHARE_CONTEXT_LOCK(context);
3739 bool isCallValid = (context->skipValidation() ||
3740 ValidateTexParameterIivRobustANGLE(
3741 context, angle::EntryPoint::GLTexParameterIivRobustANGLE,
3742 targetPacked, pname, bufSize, params));
3743 if (isCallValid)
3744 {
3745 context->texParameterIivRobust(targetPacked, pname, bufSize, params);
3746 }
3747 ANGLE_CAPTURE_GL(TexParameterIivRobustANGLE, isCallValid, context, targetPacked, pname,
3748 bufSize, params);
3749 }
3750 else
3751 {
3752 GenerateContextLostErrorOnCurrentGlobalContext();
3753 }
3754 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
3755 }
3756
GL_TexParameterIuivRobustANGLE(GLenum target,GLenum pname,GLsizei bufSize,const GLuint * params)3757 void GL_APIENTRY GL_TexParameterIuivRobustANGLE(GLenum target,
3758 GLenum pname,
3759 GLsizei bufSize,
3760 const GLuint *params)
3761 {
3762 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
3763 Context *context = GetValidGlobalContext();
3764 EVENT(context, GLTexParameterIuivRobustANGLE,
3765 "context = %d, target = %s, pname = %s, bufSize = %d, params = 0x%016" PRIxPTR "",
3766 CID(context), GLenumToString(GLESEnum::AllEnums, target),
3767 GLenumToString(GLESEnum::AllEnums, pname), bufSize, (uintptr_t)params);
3768
3769 if (context)
3770 {
3771 TextureType targetPacked = PackParam<TextureType>(target);
3772 SCOPED_SHARE_CONTEXT_LOCK(context);
3773 bool isCallValid = (context->skipValidation() ||
3774 ValidateTexParameterIuivRobustANGLE(
3775 context, angle::EntryPoint::GLTexParameterIuivRobustANGLE,
3776 targetPacked, pname, bufSize, params));
3777 if (isCallValid)
3778 {
3779 context->texParameterIuivRobust(targetPacked, pname, bufSize, params);
3780 }
3781 ANGLE_CAPTURE_GL(TexParameterIuivRobustANGLE, isCallValid, context, targetPacked, pname,
3782 bufSize, params);
3783 }
3784 else
3785 {
3786 GenerateContextLostErrorOnCurrentGlobalContext();
3787 }
3788 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
3789 }
3790
GL_GetTexParameterIivRobustANGLE(GLenum target,GLenum pname,GLsizei bufSize,GLsizei * length,GLint * params)3791 void GL_APIENTRY GL_GetTexParameterIivRobustANGLE(GLenum target,
3792 GLenum pname,
3793 GLsizei bufSize,
3794 GLsizei *length,
3795 GLint *params)
3796 {
3797 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
3798 Context *context = GetValidGlobalContext();
3799 EVENT(context, GLGetTexParameterIivRobustANGLE,
3800 "context = %d, target = %s, pname = %s, bufSize = %d, length = 0x%016" PRIxPTR
3801 ", params = 0x%016" PRIxPTR "",
3802 CID(context), GLenumToString(GLESEnum::AllEnums, target),
3803 GLenumToString(GLESEnum::AllEnums, pname), bufSize, (uintptr_t)length, (uintptr_t)params);
3804
3805 if (context)
3806 {
3807 TextureType targetPacked = PackParam<TextureType>(target);
3808 SCOPED_SHARE_CONTEXT_LOCK(context);
3809 bool isCallValid = (context->skipValidation() ||
3810 ValidateGetTexParameterIivRobustANGLE(
3811 context, angle::EntryPoint::GLGetTexParameterIivRobustANGLE,
3812 targetPacked, pname, bufSize, length, params));
3813 if (isCallValid)
3814 {
3815 context->getTexParameterIivRobust(targetPacked, pname, bufSize, length, params);
3816 }
3817 ANGLE_CAPTURE_GL(GetTexParameterIivRobustANGLE, isCallValid, context, targetPacked, pname,
3818 bufSize, length, params);
3819 }
3820 else
3821 {
3822 GenerateContextLostErrorOnCurrentGlobalContext();
3823 }
3824 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
3825 }
3826
GL_GetTexParameterIuivRobustANGLE(GLenum target,GLenum pname,GLsizei bufSize,GLsizei * length,GLuint * params)3827 void GL_APIENTRY GL_GetTexParameterIuivRobustANGLE(GLenum target,
3828 GLenum pname,
3829 GLsizei bufSize,
3830 GLsizei *length,
3831 GLuint *params)
3832 {
3833 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
3834 Context *context = GetValidGlobalContext();
3835 EVENT(context, GLGetTexParameterIuivRobustANGLE,
3836 "context = %d, target = %s, pname = %s, bufSize = %d, length = 0x%016" PRIxPTR
3837 ", params = 0x%016" PRIxPTR "",
3838 CID(context), GLenumToString(GLESEnum::AllEnums, target),
3839 GLenumToString(GLESEnum::AllEnums, pname), bufSize, (uintptr_t)length, (uintptr_t)params);
3840
3841 if (context)
3842 {
3843 TextureType targetPacked = PackParam<TextureType>(target);
3844 SCOPED_SHARE_CONTEXT_LOCK(context);
3845 bool isCallValid = (context->skipValidation() ||
3846 ValidateGetTexParameterIuivRobustANGLE(
3847 context, angle::EntryPoint::GLGetTexParameterIuivRobustANGLE,
3848 targetPacked, pname, bufSize, length, params));
3849 if (isCallValid)
3850 {
3851 context->getTexParameterIuivRobust(targetPacked, pname, bufSize, length, params);
3852 }
3853 ANGLE_CAPTURE_GL(GetTexParameterIuivRobustANGLE, isCallValid, context, targetPacked, pname,
3854 bufSize, length, params);
3855 }
3856 else
3857 {
3858 GenerateContextLostErrorOnCurrentGlobalContext();
3859 }
3860 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
3861 }
3862
GL_SamplerParameterIivRobustANGLE(GLuint sampler,GLenum pname,GLsizei bufSize,const GLint * param)3863 void GL_APIENTRY GL_SamplerParameterIivRobustANGLE(GLuint sampler,
3864 GLenum pname,
3865 GLsizei bufSize,
3866 const GLint *param)
3867 {
3868 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
3869 Context *context = GetValidGlobalContext();
3870 EVENT(context, GLSamplerParameterIivRobustANGLE,
3871 "context = %d, sampler = %u, pname = %s, bufSize = %d, param = 0x%016" PRIxPTR "",
3872 CID(context), sampler, GLenumToString(GLESEnum::AllEnums, pname), bufSize,
3873 (uintptr_t)param);
3874
3875 if (context)
3876 {
3877 SamplerID samplerPacked = PackParam<SamplerID>(sampler);
3878 SCOPED_SHARE_CONTEXT_LOCK(context);
3879 bool isCallValid = (context->skipValidation() ||
3880 ValidateSamplerParameterIivRobustANGLE(
3881 context, angle::EntryPoint::GLSamplerParameterIivRobustANGLE,
3882 samplerPacked, pname, bufSize, param));
3883 if (isCallValid)
3884 {
3885 context->samplerParameterIivRobust(samplerPacked, pname, bufSize, param);
3886 }
3887 ANGLE_CAPTURE_GL(SamplerParameterIivRobustANGLE, isCallValid, context, samplerPacked, pname,
3888 bufSize, param);
3889 }
3890 else
3891 {
3892 GenerateContextLostErrorOnCurrentGlobalContext();
3893 }
3894 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
3895 }
3896
GL_SamplerParameterIuivRobustANGLE(GLuint sampler,GLenum pname,GLsizei bufSize,const GLuint * param)3897 void GL_APIENTRY GL_SamplerParameterIuivRobustANGLE(GLuint sampler,
3898 GLenum pname,
3899 GLsizei bufSize,
3900 const GLuint *param)
3901 {
3902 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
3903 Context *context = GetValidGlobalContext();
3904 EVENT(context, GLSamplerParameterIuivRobustANGLE,
3905 "context = %d, sampler = %u, pname = %s, bufSize = %d, param = 0x%016" PRIxPTR "",
3906 CID(context), sampler, GLenumToString(GLESEnum::AllEnums, pname), bufSize,
3907 (uintptr_t)param);
3908
3909 if (context)
3910 {
3911 SamplerID samplerPacked = PackParam<SamplerID>(sampler);
3912 SCOPED_SHARE_CONTEXT_LOCK(context);
3913 bool isCallValid = (context->skipValidation() ||
3914 ValidateSamplerParameterIuivRobustANGLE(
3915 context, angle::EntryPoint::GLSamplerParameterIuivRobustANGLE,
3916 samplerPacked, pname, bufSize, param));
3917 if (isCallValid)
3918 {
3919 context->samplerParameterIuivRobust(samplerPacked, pname, bufSize, param);
3920 }
3921 ANGLE_CAPTURE_GL(SamplerParameterIuivRobustANGLE, isCallValid, context, samplerPacked,
3922 pname, bufSize, param);
3923 }
3924 else
3925 {
3926 GenerateContextLostErrorOnCurrentGlobalContext();
3927 }
3928 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
3929 }
3930
GL_GetSamplerParameterIivRobustANGLE(GLuint sampler,GLenum pname,GLsizei bufSize,GLsizei * length,GLint * params)3931 void GL_APIENTRY GL_GetSamplerParameterIivRobustANGLE(GLuint sampler,
3932 GLenum pname,
3933 GLsizei bufSize,
3934 GLsizei *length,
3935 GLint *params)
3936 {
3937 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
3938 Context *context = GetValidGlobalContext();
3939 EVENT(context, GLGetSamplerParameterIivRobustANGLE,
3940 "context = %d, sampler = %u, pname = %s, bufSize = %d, length = 0x%016" PRIxPTR
3941 ", params = 0x%016" PRIxPTR "",
3942 CID(context), sampler, GLenumToString(GLESEnum::AllEnums, pname), bufSize,
3943 (uintptr_t)length, (uintptr_t)params);
3944
3945 if (context)
3946 {
3947 SamplerID samplerPacked = PackParam<SamplerID>(sampler);
3948 SCOPED_SHARE_CONTEXT_LOCK(context);
3949 bool isCallValid = (context->skipValidation() ||
3950 ValidateGetSamplerParameterIivRobustANGLE(
3951 context, angle::EntryPoint::GLGetSamplerParameterIivRobustANGLE,
3952 samplerPacked, pname, bufSize, length, params));
3953 if (isCallValid)
3954 {
3955 context->getSamplerParameterIivRobust(samplerPacked, pname, bufSize, length, params);
3956 }
3957 ANGLE_CAPTURE_GL(GetSamplerParameterIivRobustANGLE, isCallValid, context, samplerPacked,
3958 pname, bufSize, length, params);
3959 }
3960 else
3961 {
3962 GenerateContextLostErrorOnCurrentGlobalContext();
3963 }
3964 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
3965 }
3966
GL_GetSamplerParameterIuivRobustANGLE(GLuint sampler,GLenum pname,GLsizei bufSize,GLsizei * length,GLuint * params)3967 void GL_APIENTRY GL_GetSamplerParameterIuivRobustANGLE(GLuint sampler,
3968 GLenum pname,
3969 GLsizei bufSize,
3970 GLsizei *length,
3971 GLuint *params)
3972 {
3973 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
3974 Context *context = GetValidGlobalContext();
3975 EVENT(context, GLGetSamplerParameterIuivRobustANGLE,
3976 "context = %d, sampler = %u, pname = %s, bufSize = %d, length = 0x%016" PRIxPTR
3977 ", params = 0x%016" PRIxPTR "",
3978 CID(context), sampler, GLenumToString(GLESEnum::AllEnums, pname), bufSize,
3979 (uintptr_t)length, (uintptr_t)params);
3980
3981 if (context)
3982 {
3983 SamplerID samplerPacked = PackParam<SamplerID>(sampler);
3984 SCOPED_SHARE_CONTEXT_LOCK(context);
3985 bool isCallValid = (context->skipValidation() ||
3986 ValidateGetSamplerParameterIuivRobustANGLE(
3987 context, angle::EntryPoint::GLGetSamplerParameterIuivRobustANGLE,
3988 samplerPacked, pname, bufSize, length, params));
3989 if (isCallValid)
3990 {
3991 context->getSamplerParameterIuivRobust(samplerPacked, pname, bufSize, length, params);
3992 }
3993 ANGLE_CAPTURE_GL(GetSamplerParameterIuivRobustANGLE, isCallValid, context, samplerPacked,
3994 pname, bufSize, length, params);
3995 }
3996 else
3997 {
3998 GenerateContextLostErrorOnCurrentGlobalContext();
3999 }
4000 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
4001 }
4002
GL_GetQueryObjectivRobustANGLE(GLuint id,GLenum pname,GLsizei bufSize,GLsizei * length,GLint * params)4003 void GL_APIENTRY GL_GetQueryObjectivRobustANGLE(GLuint id,
4004 GLenum pname,
4005 GLsizei bufSize,
4006 GLsizei *length,
4007 GLint *params)
4008 {
4009 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
4010 Context *context = GetGlobalContext();
4011 EVENT(context, GLGetQueryObjectivRobustANGLE,
4012 "context = %d, id = %u, pname = %s, bufSize = %d, length = 0x%016" PRIxPTR
4013 ", params = 0x%016" PRIxPTR "",
4014 CID(context), id, GLenumToString(GLESEnum::AllEnums, pname), bufSize, (uintptr_t)length,
4015 (uintptr_t)params);
4016
4017 if (context)
4018 {
4019 QueryID idPacked = PackParam<QueryID>(id);
4020 SCOPED_SHARE_CONTEXT_LOCK(context);
4021 bool isCallValid = (context->skipValidation() ||
4022 ValidateGetQueryObjectivRobustANGLE(
4023 context, angle::EntryPoint::GLGetQueryObjectivRobustANGLE, idPacked,
4024 pname, bufSize, length, params));
4025 if (isCallValid)
4026 {
4027 context->getQueryObjectivRobust(idPacked, pname, bufSize, length, params);
4028 }
4029 ANGLE_CAPTURE_GL(GetQueryObjectivRobustANGLE, isCallValid, context, idPacked, pname,
4030 bufSize, length, params);
4031 }
4032 else
4033 {
4034 }
4035 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
4036 }
4037
GL_GetQueryObjecti64vRobustANGLE(GLuint id,GLenum pname,GLsizei bufSize,GLsizei * length,GLint64 * params)4038 void GL_APIENTRY GL_GetQueryObjecti64vRobustANGLE(GLuint id,
4039 GLenum pname,
4040 GLsizei bufSize,
4041 GLsizei *length,
4042 GLint64 *params)
4043 {
4044 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
4045 Context *context = GetGlobalContext();
4046 EVENT(context, GLGetQueryObjecti64vRobustANGLE,
4047 "context = %d, id = %u, pname = %s, bufSize = %d, length = 0x%016" PRIxPTR
4048 ", params = 0x%016" PRIxPTR "",
4049 CID(context), id, GLenumToString(GLESEnum::AllEnums, pname), bufSize, (uintptr_t)length,
4050 (uintptr_t)params);
4051
4052 if (context)
4053 {
4054 QueryID idPacked = PackParam<QueryID>(id);
4055 SCOPED_SHARE_CONTEXT_LOCK(context);
4056 bool isCallValid = (context->skipValidation() ||
4057 ValidateGetQueryObjecti64vRobustANGLE(
4058 context, angle::EntryPoint::GLGetQueryObjecti64vRobustANGLE,
4059 idPacked, pname, bufSize, length, params));
4060 if (isCallValid)
4061 {
4062 context->getQueryObjecti64vRobust(idPacked, pname, bufSize, length, params);
4063 }
4064 ANGLE_CAPTURE_GL(GetQueryObjecti64vRobustANGLE, isCallValid, context, idPacked, pname,
4065 bufSize, length, params);
4066 }
4067 else
4068 {
4069 }
4070 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
4071 }
4072
GL_GetQueryObjectui64vRobustANGLE(GLuint id,GLenum pname,GLsizei bufSize,GLsizei * length,GLuint64 * params)4073 void GL_APIENTRY GL_GetQueryObjectui64vRobustANGLE(GLuint id,
4074 GLenum pname,
4075 GLsizei bufSize,
4076 GLsizei *length,
4077 GLuint64 *params)
4078 {
4079 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
4080 Context *context = GetValidGlobalContext();
4081 EVENT(context, GLGetQueryObjectui64vRobustANGLE,
4082 "context = %d, id = %u, pname = %s, bufSize = %d, length = 0x%016" PRIxPTR
4083 ", params = 0x%016" PRIxPTR "",
4084 CID(context), id, GLenumToString(GLESEnum::AllEnums, pname), bufSize, (uintptr_t)length,
4085 (uintptr_t)params);
4086
4087 if (context)
4088 {
4089 QueryID idPacked = PackParam<QueryID>(id);
4090 SCOPED_SHARE_CONTEXT_LOCK(context);
4091 bool isCallValid = (context->skipValidation() ||
4092 ValidateGetQueryObjectui64vRobustANGLE(
4093 context, angle::EntryPoint::GLGetQueryObjectui64vRobustANGLE,
4094 idPacked, pname, bufSize, length, params));
4095 if (isCallValid)
4096 {
4097 context->getQueryObjectui64vRobust(idPacked, pname, bufSize, length, params);
4098 }
4099 ANGLE_CAPTURE_GL(GetQueryObjectui64vRobustANGLE, isCallValid, context, idPacked, pname,
4100 bufSize, length, params);
4101 }
4102 else
4103 {
4104 GenerateContextLostErrorOnCurrentGlobalContext();
4105 }
4106 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
4107 }
4108
4109 // GL_ANGLE_robust_fragment_shader_output
4110
4111 // GL_ANGLE_robust_resource_initialization
4112
4113 // GL_ANGLE_semaphore_fuchsia
GL_ImportSemaphoreZirconHandleANGLE(GLuint semaphore,GLenum handleType,GLuint handle)4114 void GL_APIENTRY GL_ImportSemaphoreZirconHandleANGLE(GLuint semaphore,
4115 GLenum handleType,
4116 GLuint handle)
4117 {
4118 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
4119 Context *context = GetValidGlobalContext();
4120 EVENT(context, GLImportSemaphoreZirconHandleANGLE,
4121 "context = %d, semaphore = %u, handleType = %s, handle = %u", CID(context), semaphore,
4122 GLenumToString(GLESEnum::ExternalHandleType, handleType), handle);
4123
4124 if (context)
4125 {
4126 SemaphoreID semaphorePacked = PackParam<SemaphoreID>(semaphore);
4127 HandleType handleTypePacked = PackParam<HandleType>(handleType);
4128 SCOPED_SHARE_CONTEXT_LOCK(context);
4129 bool isCallValid =
4130 (context->skipValidation() ||
4131 (ValidatePixelLocalStorageInactive(
4132 context->getPrivateState(), context->getMutableErrorSetForValidation(),
4133 angle::EntryPoint::GLImportSemaphoreZirconHandleANGLE) &&
4134 ValidateImportSemaphoreZirconHandleANGLE(
4135 context, angle::EntryPoint::GLImportSemaphoreZirconHandleANGLE, semaphorePacked,
4136 handleTypePacked, handle)));
4137 if (isCallValid)
4138 {
4139 context->importSemaphoreZirconHandle(semaphorePacked, handleTypePacked, handle);
4140 }
4141 ANGLE_CAPTURE_GL(ImportSemaphoreZirconHandleANGLE, isCallValid, context, semaphorePacked,
4142 handleTypePacked, handle);
4143 }
4144 else
4145 {
4146 GenerateContextLostErrorOnCurrentGlobalContext();
4147 }
4148 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
4149 }
4150
4151 // GL_ANGLE_shader_binary
4152
4153 // GL_ANGLE_shader_pixel_local_storage
GL_FramebufferMemorylessPixelLocalStorageANGLE(GLint plane,GLenum internalformat)4154 void GL_APIENTRY GL_FramebufferMemorylessPixelLocalStorageANGLE(GLint plane, GLenum internalformat)
4155 {
4156 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
4157 Context *context = GetValidGlobalContext();
4158 EVENT(context, GLFramebufferMemorylessPixelLocalStorageANGLE,
4159 "context = %d, plane = %d, internalformat = %s", CID(context), plane,
4160 GLenumToString(GLESEnum::AllEnums, internalformat));
4161
4162 if (context)
4163 {
4164 SCOPED_SHARE_CONTEXT_LOCK(context);
4165 bool isCallValid =
4166 (context->skipValidation() ||
4167 ValidateFramebufferMemorylessPixelLocalStorageANGLE(
4168 context, angle::EntryPoint::GLFramebufferMemorylessPixelLocalStorageANGLE, plane,
4169 internalformat));
4170 if (isCallValid)
4171 {
4172 context->framebufferMemorylessPixelLocalStorage(plane, internalformat);
4173 }
4174 ANGLE_CAPTURE_GL(FramebufferMemorylessPixelLocalStorageANGLE, isCallValid, context, plane,
4175 internalformat);
4176 }
4177 else
4178 {
4179 GenerateContextLostErrorOnCurrentGlobalContext();
4180 }
4181 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
4182 }
4183
GL_FramebufferTexturePixelLocalStorageANGLE(GLint plane,GLuint backingtexture,GLint level,GLint layer)4184 void GL_APIENTRY GL_FramebufferTexturePixelLocalStorageANGLE(GLint plane,
4185 GLuint backingtexture,
4186 GLint level,
4187 GLint layer)
4188 {
4189 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
4190 Context *context = GetValidGlobalContext();
4191 EVENT(context, GLFramebufferTexturePixelLocalStorageANGLE,
4192 "context = %d, plane = %d, backingtexture = %u, level = %d, layer = %d", CID(context),
4193 plane, backingtexture, level, layer);
4194
4195 if (context)
4196 {
4197 TextureID backingtexturePacked = PackParam<TextureID>(backingtexture);
4198 SCOPED_SHARE_CONTEXT_LOCK(context);
4199 bool isCallValid =
4200 (context->skipValidation() ||
4201 ValidateFramebufferTexturePixelLocalStorageANGLE(
4202 context, angle::EntryPoint::GLFramebufferTexturePixelLocalStorageANGLE, plane,
4203 backingtexturePacked, level, layer));
4204 if (isCallValid)
4205 {
4206 context->framebufferTexturePixelLocalStorage(plane, backingtexturePacked, level, layer);
4207 }
4208 ANGLE_CAPTURE_GL(FramebufferTexturePixelLocalStorageANGLE, isCallValid, context, plane,
4209 backingtexturePacked, level, layer);
4210 }
4211 else
4212 {
4213 GenerateContextLostErrorOnCurrentGlobalContext();
4214 }
4215 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
4216 }
4217
GL_FramebufferPixelLocalClearValuefvANGLE(GLint plane,const GLfloat * value)4218 void GL_APIENTRY GL_FramebufferPixelLocalClearValuefvANGLE(GLint plane, const GLfloat *value)
4219 {
4220 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
4221 Context *context = GetValidGlobalContext();
4222 EVENT(context, GLFramebufferPixelLocalClearValuefvANGLE,
4223 "context = %d, plane = %d, value = 0x%016" PRIxPTR "", CID(context), plane,
4224 (uintptr_t)value);
4225
4226 if (context)
4227 {
4228 SCOPED_SHARE_CONTEXT_LOCK(context);
4229 bool isCallValid =
4230 (context->skipValidation() ||
4231 (ValidatePixelLocalStorageInactive(
4232 context->getPrivateState(), context->getMutableErrorSetForValidation(),
4233 angle::EntryPoint::GLFramebufferPixelLocalClearValuefvANGLE) &&
4234 ValidateFramebufferPixelLocalClearValuefvANGLE(
4235 context, angle::EntryPoint::GLFramebufferPixelLocalClearValuefvANGLE, plane,
4236 value)));
4237 if (isCallValid)
4238 {
4239 context->framebufferPixelLocalClearValuefv(plane, value);
4240 }
4241 ANGLE_CAPTURE_GL(FramebufferPixelLocalClearValuefvANGLE, isCallValid, context, plane,
4242 value);
4243 }
4244 else
4245 {
4246 GenerateContextLostErrorOnCurrentGlobalContext();
4247 }
4248 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
4249 }
4250
GL_FramebufferPixelLocalClearValueivANGLE(GLint plane,const GLint * value)4251 void GL_APIENTRY GL_FramebufferPixelLocalClearValueivANGLE(GLint plane, const GLint *value)
4252 {
4253 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
4254 Context *context = GetValidGlobalContext();
4255 EVENT(context, GLFramebufferPixelLocalClearValueivANGLE,
4256 "context = %d, plane = %d, value = 0x%016" PRIxPTR "", CID(context), plane,
4257 (uintptr_t)value);
4258
4259 if (context)
4260 {
4261 SCOPED_SHARE_CONTEXT_LOCK(context);
4262 bool isCallValid =
4263 (context->skipValidation() ||
4264 (ValidatePixelLocalStorageInactive(
4265 context->getPrivateState(), context->getMutableErrorSetForValidation(),
4266 angle::EntryPoint::GLFramebufferPixelLocalClearValueivANGLE) &&
4267 ValidateFramebufferPixelLocalClearValueivANGLE(
4268 context, angle::EntryPoint::GLFramebufferPixelLocalClearValueivANGLE, plane,
4269 value)));
4270 if (isCallValid)
4271 {
4272 context->framebufferPixelLocalClearValueiv(plane, value);
4273 }
4274 ANGLE_CAPTURE_GL(FramebufferPixelLocalClearValueivANGLE, isCallValid, context, plane,
4275 value);
4276 }
4277 else
4278 {
4279 GenerateContextLostErrorOnCurrentGlobalContext();
4280 }
4281 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
4282 }
4283
GL_FramebufferPixelLocalClearValueuivANGLE(GLint plane,const GLuint * value)4284 void GL_APIENTRY GL_FramebufferPixelLocalClearValueuivANGLE(GLint plane, const GLuint *value)
4285 {
4286 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
4287 Context *context = GetValidGlobalContext();
4288 EVENT(context, GLFramebufferPixelLocalClearValueuivANGLE,
4289 "context = %d, plane = %d, value = 0x%016" PRIxPTR "", CID(context), plane,
4290 (uintptr_t)value);
4291
4292 if (context)
4293 {
4294 SCOPED_SHARE_CONTEXT_LOCK(context);
4295 bool isCallValid =
4296 (context->skipValidation() ||
4297 (ValidatePixelLocalStorageInactive(
4298 context->getPrivateState(), context->getMutableErrorSetForValidation(),
4299 angle::EntryPoint::GLFramebufferPixelLocalClearValueuivANGLE) &&
4300 ValidateFramebufferPixelLocalClearValueuivANGLE(
4301 context, angle::EntryPoint::GLFramebufferPixelLocalClearValueuivANGLE, plane,
4302 value)));
4303 if (isCallValid)
4304 {
4305 context->framebufferPixelLocalClearValueuiv(plane, value);
4306 }
4307 ANGLE_CAPTURE_GL(FramebufferPixelLocalClearValueuivANGLE, isCallValid, context, plane,
4308 value);
4309 }
4310 else
4311 {
4312 GenerateContextLostErrorOnCurrentGlobalContext();
4313 }
4314 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
4315 }
4316
GL_BeginPixelLocalStorageANGLE(GLsizei n,const GLenum * loadops)4317 void GL_APIENTRY GL_BeginPixelLocalStorageANGLE(GLsizei n, const GLenum *loadops)
4318 {
4319 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
4320 Context *context = GetValidGlobalContext();
4321 EVENT(context, GLBeginPixelLocalStorageANGLE,
4322 "context = %d, n = %d, loadops = 0x%016" PRIxPTR "", CID(context), n, (uintptr_t)loadops);
4323
4324 if (context)
4325 {
4326 SCOPED_SHARE_CONTEXT_LOCK(context);
4327 bool isCallValid =
4328 (context->skipValidation() ||
4329 (ValidatePixelLocalStorageInactive(context->getPrivateState(),
4330 context->getMutableErrorSetForValidation(),
4331 angle::EntryPoint::GLBeginPixelLocalStorageANGLE) &&
4332 ValidateBeginPixelLocalStorageANGLE(
4333 context, angle::EntryPoint::GLBeginPixelLocalStorageANGLE, n, loadops)));
4334 if (isCallValid)
4335 {
4336 context->beginPixelLocalStorage(n, loadops);
4337 }
4338 ANGLE_CAPTURE_GL(BeginPixelLocalStorageANGLE, isCallValid, context, n, loadops);
4339 }
4340 else
4341 {
4342 GenerateContextLostErrorOnCurrentGlobalContext();
4343 }
4344 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
4345 }
4346
GL_EndPixelLocalStorageANGLE(GLsizei n,const GLenum * storeops)4347 void GL_APIENTRY GL_EndPixelLocalStorageANGLE(GLsizei n, const GLenum *storeops)
4348 {
4349 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
4350 Context *context = GetValidGlobalContext();
4351 EVENT(context, GLEndPixelLocalStorageANGLE,
4352 "context = %d, n = %d, storeops = 0x%016" PRIxPTR "", CID(context), n,
4353 (uintptr_t)storeops);
4354
4355 if (context)
4356 {
4357 SCOPED_SHARE_CONTEXT_LOCK(context);
4358 bool isCallValid =
4359 (context->skipValidation() ||
4360 ValidateEndPixelLocalStorageANGLE(
4361 context, angle::EntryPoint::GLEndPixelLocalStorageANGLE, n, storeops));
4362 if (isCallValid)
4363 {
4364 context->endPixelLocalStorage(n, storeops);
4365 }
4366 ANGLE_CAPTURE_GL(EndPixelLocalStorageANGLE, isCallValid, context, n, storeops);
4367 }
4368 else
4369 {
4370 GenerateContextLostErrorOnCurrentGlobalContext();
4371 }
4372 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
4373 }
4374
GL_PixelLocalStorageBarrierANGLE()4375 void GL_APIENTRY GL_PixelLocalStorageBarrierANGLE()
4376 {
4377 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
4378 Context *context = GetValidGlobalContext();
4379 EVENT(context, GLPixelLocalStorageBarrierANGLE, "context = %d", CID(context));
4380
4381 if (context)
4382 {
4383 SCOPED_SHARE_CONTEXT_LOCK(context);
4384 bool isCallValid = (context->skipValidation() ||
4385 ValidatePixelLocalStorageBarrierANGLE(
4386 context, angle::EntryPoint::GLPixelLocalStorageBarrierANGLE));
4387 if (isCallValid)
4388 {
4389 context->pixelLocalStorageBarrier();
4390 }
4391 ANGLE_CAPTURE_GL(PixelLocalStorageBarrierANGLE, isCallValid, context);
4392 }
4393 else
4394 {
4395 GenerateContextLostErrorOnCurrentGlobalContext();
4396 }
4397 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
4398 }
4399
GL_FramebufferPixelLocalStorageInterruptANGLE()4400 void GL_APIENTRY GL_FramebufferPixelLocalStorageInterruptANGLE()
4401 {
4402 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
4403 Context *context = GetValidGlobalContext();
4404 EVENT(context, GLFramebufferPixelLocalStorageInterruptANGLE, "context = %d", CID(context));
4405
4406 if (context)
4407 {
4408 SCOPED_SHARE_CONTEXT_LOCK(context);
4409 bool isCallValid =
4410 (context->skipValidation() ||
4411 ValidateFramebufferPixelLocalStorageInterruptANGLE(
4412 context, angle::EntryPoint::GLFramebufferPixelLocalStorageInterruptANGLE));
4413 if (isCallValid)
4414 {
4415 context->framebufferPixelLocalStorageInterrupt();
4416 }
4417 ANGLE_CAPTURE_GL(FramebufferPixelLocalStorageInterruptANGLE, isCallValid, context);
4418 }
4419 else
4420 {
4421 GenerateContextLostErrorOnCurrentGlobalContext();
4422 }
4423 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
4424 }
4425
GL_FramebufferPixelLocalStorageRestoreANGLE()4426 void GL_APIENTRY GL_FramebufferPixelLocalStorageRestoreANGLE()
4427 {
4428 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
4429 Context *context = GetValidGlobalContext();
4430 EVENT(context, GLFramebufferPixelLocalStorageRestoreANGLE, "context = %d", CID(context));
4431
4432 if (context)
4433 {
4434 SCOPED_SHARE_CONTEXT_LOCK(context);
4435 bool isCallValid =
4436 (context->skipValidation() ||
4437 (ValidatePixelLocalStorageInactive(
4438 context->getPrivateState(), context->getMutableErrorSetForValidation(),
4439 angle::EntryPoint::GLFramebufferPixelLocalStorageRestoreANGLE) &&
4440 ValidateFramebufferPixelLocalStorageRestoreANGLE(
4441 context, angle::EntryPoint::GLFramebufferPixelLocalStorageRestoreANGLE)));
4442 if (isCallValid)
4443 {
4444 context->framebufferPixelLocalStorageRestore();
4445 }
4446 ANGLE_CAPTURE_GL(FramebufferPixelLocalStorageRestoreANGLE, isCallValid, context);
4447 }
4448 else
4449 {
4450 GenerateContextLostErrorOnCurrentGlobalContext();
4451 }
4452 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
4453 }
4454
GL_GetFramebufferPixelLocalStorageParameterfvANGLE(GLint plane,GLenum pname,GLfloat * params)4455 void GL_APIENTRY GL_GetFramebufferPixelLocalStorageParameterfvANGLE(GLint plane,
4456 GLenum pname,
4457 GLfloat *params)
4458 {
4459 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
4460 Context *context = GetValidGlobalContext();
4461 EVENT(context, GLGetFramebufferPixelLocalStorageParameterfvANGLE,
4462 "context = %d, plane = %d, pname = %s, params = 0x%016" PRIxPTR "", CID(context), plane,
4463 GLenumToString(GLESEnum::PLSQueryFloat, pname), (uintptr_t)params);
4464
4465 if (context)
4466 {
4467 SCOPED_SHARE_CONTEXT_LOCK(context);
4468 bool isCallValid =
4469 (context->skipValidation() ||
4470 ValidateGetFramebufferPixelLocalStorageParameterfvANGLE(
4471 context, angle::EntryPoint::GLGetFramebufferPixelLocalStorageParameterfvANGLE,
4472 plane, pname, params));
4473 if (isCallValid)
4474 {
4475 context->getFramebufferPixelLocalStorageParameterfv(plane, pname, params);
4476 }
4477 ANGLE_CAPTURE_GL(GetFramebufferPixelLocalStorageParameterfvANGLE, isCallValid, context,
4478 plane, pname, params);
4479 }
4480 else
4481 {
4482 GenerateContextLostErrorOnCurrentGlobalContext();
4483 }
4484 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
4485 }
4486
GL_GetFramebufferPixelLocalStorageParameterivANGLE(GLint plane,GLenum pname,GLint * params)4487 void GL_APIENTRY GL_GetFramebufferPixelLocalStorageParameterivANGLE(GLint plane,
4488 GLenum pname,
4489 GLint *params)
4490 {
4491 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
4492 Context *context = GetValidGlobalContext();
4493 EVENT(context, GLGetFramebufferPixelLocalStorageParameterivANGLE,
4494 "context = %d, plane = %d, pname = %s, params = 0x%016" PRIxPTR "", CID(context), plane,
4495 GLenumToString(GLESEnum::PLSQueryInt, pname), (uintptr_t)params);
4496
4497 if (context)
4498 {
4499 SCOPED_SHARE_CONTEXT_LOCK(context);
4500 bool isCallValid =
4501 (context->skipValidation() ||
4502 ValidateGetFramebufferPixelLocalStorageParameterivANGLE(
4503 context, angle::EntryPoint::GLGetFramebufferPixelLocalStorageParameterivANGLE,
4504 plane, pname, params));
4505 if (isCallValid)
4506 {
4507 context->getFramebufferPixelLocalStorageParameteriv(plane, pname, params);
4508 }
4509 ANGLE_CAPTURE_GL(GetFramebufferPixelLocalStorageParameterivANGLE, isCallValid, context,
4510 plane, pname, params);
4511 }
4512 else
4513 {
4514 GenerateContextLostErrorOnCurrentGlobalContext();
4515 }
4516 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
4517 }
4518
GL_GetFramebufferPixelLocalStorageParameterfvRobustANGLE(GLint plane,GLenum pname,GLsizei bufSize,GLsizei * length,GLfloat * params)4519 void GL_APIENTRY GL_GetFramebufferPixelLocalStorageParameterfvRobustANGLE(GLint plane,
4520 GLenum pname,
4521 GLsizei bufSize,
4522 GLsizei *length,
4523 GLfloat *params)
4524 {
4525 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
4526 Context *context = GetValidGlobalContext();
4527 EVENT(context, GLGetFramebufferPixelLocalStorageParameterfvRobustANGLE,
4528 "context = %d, plane = %d, pname = %s, bufSize = %d, length = 0x%016" PRIxPTR
4529 ", params = 0x%016" PRIxPTR "",
4530 CID(context), plane, GLenumToString(GLESEnum::PLSQueryFloat, pname), bufSize,
4531 (uintptr_t)length, (uintptr_t)params);
4532
4533 if (context)
4534 {
4535 SCOPED_SHARE_CONTEXT_LOCK(context);
4536 bool isCallValid =
4537 (context->skipValidation() ||
4538 ValidateGetFramebufferPixelLocalStorageParameterfvRobustANGLE(
4539 context,
4540 angle::EntryPoint::GLGetFramebufferPixelLocalStorageParameterfvRobustANGLE, plane,
4541 pname, bufSize, length, params));
4542 if (isCallValid)
4543 {
4544 context->getFramebufferPixelLocalStorageParameterfvRobust(plane, pname, bufSize, length,
4545 params);
4546 }
4547 ANGLE_CAPTURE_GL(GetFramebufferPixelLocalStorageParameterfvRobustANGLE, isCallValid,
4548 context, plane, pname, bufSize, length, params);
4549 }
4550 else
4551 {
4552 GenerateContextLostErrorOnCurrentGlobalContext();
4553 }
4554 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
4555 }
4556
GL_GetFramebufferPixelLocalStorageParameterivRobustANGLE(GLint plane,GLenum pname,GLsizei bufSize,GLsizei * length,GLint * params)4557 void GL_APIENTRY GL_GetFramebufferPixelLocalStorageParameterivRobustANGLE(GLint plane,
4558 GLenum pname,
4559 GLsizei bufSize,
4560 GLsizei *length,
4561 GLint *params)
4562 {
4563 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
4564 Context *context = GetValidGlobalContext();
4565 EVENT(context, GLGetFramebufferPixelLocalStorageParameterivRobustANGLE,
4566 "context = %d, plane = %d, pname = %s, bufSize = %d, length = 0x%016" PRIxPTR
4567 ", params = 0x%016" PRIxPTR "",
4568 CID(context), plane, GLenumToString(GLESEnum::PLSQueryInt, pname), bufSize,
4569 (uintptr_t)length, (uintptr_t)params);
4570
4571 if (context)
4572 {
4573 SCOPED_SHARE_CONTEXT_LOCK(context);
4574 bool isCallValid =
4575 (context->skipValidation() ||
4576 ValidateGetFramebufferPixelLocalStorageParameterivRobustANGLE(
4577 context,
4578 angle::EntryPoint::GLGetFramebufferPixelLocalStorageParameterivRobustANGLE, plane,
4579 pname, bufSize, length, params));
4580 if (isCallValid)
4581 {
4582 context->getFramebufferPixelLocalStorageParameterivRobust(plane, pname, bufSize, length,
4583 params);
4584 }
4585 ANGLE_CAPTURE_GL(GetFramebufferPixelLocalStorageParameterivRobustANGLE, isCallValid,
4586 context, plane, pname, bufSize, length, params);
4587 }
4588 else
4589 {
4590 GenerateContextLostErrorOnCurrentGlobalContext();
4591 }
4592 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
4593 }
4594
4595 // GL_ANGLE_stencil_texturing
4596
4597 // GL_ANGLE_texture_compression_dxt3
4598
4599 // GL_ANGLE_texture_compression_dxt5
4600
4601 // GL_ANGLE_texture_external_update
GL_TexImage2DExternalANGLE(GLenum target,GLint level,GLint internalformat,GLsizei width,GLsizei height,GLint border,GLenum format,GLenum type)4602 void GL_APIENTRY GL_TexImage2DExternalANGLE(GLenum target,
4603 GLint level,
4604 GLint internalformat,
4605 GLsizei width,
4606 GLsizei height,
4607 GLint border,
4608 GLenum format,
4609 GLenum type)
4610 {
4611 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
4612 Context *context = GetValidGlobalContext();
4613 EVENT(context, GLTexImage2DExternalANGLE,
4614 "context = %d, target = %s, level = %d, internalformat = %d, width = %d, height = %d, "
4615 "border = %d, format = %s, type = %s",
4616 CID(context), GLenumToString(GLESEnum::TextureTarget, target), level, internalformat,
4617 width, height, border, GLenumToString(GLESEnum::PixelFormat, format),
4618 GLenumToString(GLESEnum::PixelType, type));
4619
4620 if (context)
4621 {
4622 TextureTarget targetPacked = PackParam<TextureTarget>(target);
4623 SCOPED_SHARE_CONTEXT_LOCK(context);
4624 bool isCallValid =
4625 (context->skipValidation() ||
4626 (ValidatePixelLocalStorageInactive(context->getPrivateState(),
4627 context->getMutableErrorSetForValidation(),
4628 angle::EntryPoint::GLTexImage2DExternalANGLE) &&
4629 ValidateTexImage2DExternalANGLE(context, angle::EntryPoint::GLTexImage2DExternalANGLE,
4630 targetPacked, level, internalformat, width, height,
4631 border, format, type)));
4632 if (isCallValid)
4633 {
4634 context->texImage2DExternal(targetPacked, level, internalformat, width, height, border,
4635 format, type);
4636 }
4637 ANGLE_CAPTURE_GL(TexImage2DExternalANGLE, isCallValid, context, targetPacked, level,
4638 internalformat, width, height, border, format, type);
4639 }
4640 else
4641 {
4642 GenerateContextLostErrorOnCurrentGlobalContext();
4643 }
4644 egl::Display::GetCurrentThreadUnlockedTailCall()->run(nullptr);
4645 }
4646
GL_InvalidateTextureANGLE(GLenum target)4647 void GL_APIENTRY GL_InvalidateTextureANGLE(GLenum target)
4648 {
4649 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
4650 Context *context = GetValidGlobalContext();
4651 EVENT(context, GLInvalidateTextureANGLE, "context = %d, target = %s", CID(context),
4652 GLenumToString(GLESEnum::TextureTarget, target));
4653
4654 if (context)
4655 {
4656 TextureType targetPacked = PackParam<TextureType>(target);
4657 SCOPED_SHARE_CONTEXT_LOCK(context);
4658 bool isCallValid =
4659 (context->skipValidation() ||
4660 (ValidatePixelLocalStorageInactive(context->getPrivateState(),
4661 context->getMutableErrorSetForValidation(),
4662 angle::EntryPoint::GLInvalidateTextureANGLE) &&
4663 ValidateInvalidateTextureANGLE(context, angle::EntryPoint::GLInvalidateTextureANGLE,
4664 targetPacked)));
4665 if (isCallValid)
4666 {
4667 context->invalidateTexture(targetPacked);
4668 }
4669 ANGLE_CAPTURE_GL(InvalidateTextureANGLE, isCallValid, context, targetPacked);
4670 }
4671 else
4672 {
4673 GenerateContextLostErrorOnCurrentGlobalContext();
4674 }
4675 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
4676 }
4677
4678 // GL_ANGLE_texture_multisample
GL_TexStorage2DMultisampleANGLE(GLenum target,GLsizei samples,GLenum internalformat,GLsizei width,GLsizei height,GLboolean fixedsamplelocations)4679 void GL_APIENTRY GL_TexStorage2DMultisampleANGLE(GLenum target,
4680 GLsizei samples,
4681 GLenum internalformat,
4682 GLsizei width,
4683 GLsizei height,
4684 GLboolean fixedsamplelocations)
4685 {
4686 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
4687 Context *context = GetValidGlobalContext();
4688 EVENT(context, GLTexStorage2DMultisampleANGLE,
4689 "context = %d, target = %s, samples = %d, internalformat = %s, width = %d, height = %d, "
4690 "fixedsamplelocations = %s",
4691 CID(context), GLenumToString(GLESEnum::AllEnums, target), samples,
4692 GLenumToString(GLESEnum::AllEnums, internalformat), width, height,
4693 GLbooleanToString(fixedsamplelocations));
4694
4695 if (context)
4696 {
4697 TextureType targetPacked = PackParam<TextureType>(target);
4698 SCOPED_SHARE_CONTEXT_LOCK(context);
4699 bool isCallValid =
4700 (context->skipValidation() ||
4701 (ValidatePixelLocalStorageInactive(
4702 context->getPrivateState(), context->getMutableErrorSetForValidation(),
4703 angle::EntryPoint::GLTexStorage2DMultisampleANGLE) &&
4704 ValidateTexStorage2DMultisampleANGLE(
4705 context, angle::EntryPoint::GLTexStorage2DMultisampleANGLE, targetPacked, samples,
4706 internalformat, width, height, fixedsamplelocations)));
4707 if (isCallValid)
4708 {
4709 context->texStorage2DMultisample(targetPacked, samples, internalformat, width, height,
4710 fixedsamplelocations);
4711 }
4712 ANGLE_CAPTURE_GL(TexStorage2DMultisampleANGLE, isCallValid, context, targetPacked, samples,
4713 internalformat, width, height, fixedsamplelocations);
4714 }
4715 else
4716 {
4717 GenerateContextLostErrorOnCurrentGlobalContext();
4718 }
4719 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
4720 }
4721
GL_GetMultisamplefvANGLE(GLenum pname,GLuint index,GLfloat * val)4722 void GL_APIENTRY GL_GetMultisamplefvANGLE(GLenum pname, GLuint index, GLfloat *val)
4723 {
4724 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
4725 Context *context = GetValidGlobalContext();
4726 EVENT(context, GLGetMultisamplefvANGLE,
4727 "context = %d, pname = %s, index = %u, val = 0x%016" PRIxPTR "", CID(context),
4728 GLenumToString(GLESEnum::AllEnums, pname), index, (uintptr_t)val);
4729
4730 if (context)
4731 {
4732 SCOPED_SHARE_CONTEXT_LOCK(context);
4733 bool isCallValid =
4734 (context->skipValidation() ||
4735 ValidateGetMultisamplefvANGLE(context, angle::EntryPoint::GLGetMultisamplefvANGLE,
4736 pname, index, val));
4737 if (isCallValid)
4738 {
4739 context->getMultisamplefv(pname, index, val);
4740 }
4741 ANGLE_CAPTURE_GL(GetMultisamplefvANGLE, isCallValid, context, pname, index, val);
4742 }
4743 else
4744 {
4745 GenerateContextLostErrorOnCurrentGlobalContext();
4746 }
4747 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
4748 }
4749
GL_SampleMaskiANGLE(GLuint maskNumber,GLbitfield mask)4750 void GL_APIENTRY GL_SampleMaskiANGLE(GLuint maskNumber, GLbitfield mask)
4751 {
4752 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
4753 Context *context = GetValidGlobalContext();
4754 EVENT(context, GLSampleMaskiANGLE, "context = %d, maskNumber = %u, mask = %s", CID(context),
4755 maskNumber, GLbitfieldToString(GLESEnum::AllEnums, mask).c_str());
4756
4757 if (context)
4758 {
4759 bool isCallValid =
4760 (context->skipValidation() ||
4761 (ValidatePixelLocalStorageInactive(context->getPrivateState(),
4762 context->getMutableErrorSetForValidation(),
4763 angle::EntryPoint::GLSampleMaskiANGLE) &&
4764 ValidateSampleMaskiANGLE(context->getPrivateState(),
4765 context->getMutableErrorSetForValidation(),
4766 angle::EntryPoint::GLSampleMaskiANGLE, maskNumber, mask)));
4767 if (isCallValid)
4768 {
4769 ContextPrivateSampleMaski(context->getMutablePrivateState(),
4770 context->getMutablePrivateStateCache(), maskNumber, mask);
4771 }
4772 ANGLE_CAPTURE_GL(SampleMaskiANGLE, isCallValid, context, maskNumber, mask);
4773 }
4774 else
4775 {
4776 GenerateContextLostErrorOnCurrentGlobalContext();
4777 }
4778 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
4779 }
4780
4781
4782 // GL_ANGLE_texture_usage
4783
4784 // GL_ANGLE_translated_shader_source
GL_GetTranslatedShaderSourceANGLE(GLuint shader,GLsizei bufSize,GLsizei * length,GLchar * source)4785 void GL_APIENTRY GL_GetTranslatedShaderSourceANGLE(GLuint shader,
4786 GLsizei bufSize,
4787 GLsizei *length,
4788 GLchar *source)
4789 {
4790 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
4791 Context *context = GetValidGlobalContext();
4792 EVENT(context, GLGetTranslatedShaderSourceANGLE,
4793 "context = %d, shader = %u, bufSize = %d, length = 0x%016" PRIxPTR
4794 ", source = 0x%016" PRIxPTR "",
4795 CID(context), shader, bufSize, (uintptr_t)length, (uintptr_t)source);
4796
4797 if (context)
4798 {
4799 ShaderProgramID shaderPacked = PackParam<ShaderProgramID>(shader);
4800 SCOPED_SHARE_CONTEXT_LOCK(context);
4801 bool isCallValid = (context->skipValidation() ||
4802 ValidateGetTranslatedShaderSourceANGLE(
4803 context, angle::EntryPoint::GLGetTranslatedShaderSourceANGLE,
4804 shaderPacked, bufSize, length, source));
4805 if (isCallValid)
4806 {
4807 context->getTranslatedShaderSource(shaderPacked, bufSize, length, source);
4808 }
4809 ANGLE_CAPTURE_GL(GetTranslatedShaderSourceANGLE, isCallValid, context, shaderPacked,
4810 bufSize, length, source);
4811 }
4812 else
4813 {
4814 GenerateContextLostErrorOnCurrentGlobalContext();
4815 }
4816 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
4817 }
4818
4819 // GL_ANGLE_vulkan_image
GL_AcquireTexturesANGLE(GLuint numTextures,const GLuint * textures,const GLenum * layouts)4820 void GL_APIENTRY GL_AcquireTexturesANGLE(GLuint numTextures,
4821 const GLuint *textures,
4822 const GLenum *layouts)
4823 {
4824 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
4825 Context *context = GetValidGlobalContext();
4826 EVENT(context, GLAcquireTexturesANGLE,
4827 "context = %d, numTextures = %u, textures = 0x%016" PRIxPTR ", layouts = 0x%016" PRIxPTR
4828 "",
4829 CID(context), numTextures, (uintptr_t)textures, (uintptr_t)layouts);
4830
4831 if (context)
4832 {
4833 const TextureID *texturesPacked = PackParam<const TextureID *>(textures);
4834 SCOPED_SHARE_CONTEXT_LOCK(context);
4835 bool isCallValid =
4836 (context->skipValidation() ||
4837 (ValidatePixelLocalStorageInactive(context->getPrivateState(),
4838 context->getMutableErrorSetForValidation(),
4839 angle::EntryPoint::GLAcquireTexturesANGLE) &&
4840 ValidateAcquireTexturesANGLE(context, angle::EntryPoint::GLAcquireTexturesANGLE,
4841 numTextures, texturesPacked, layouts)));
4842 if (isCallValid)
4843 {
4844 context->acquireTextures(numTextures, texturesPacked, layouts);
4845 }
4846 ANGLE_CAPTURE_GL(AcquireTexturesANGLE, isCallValid, context, numTextures, texturesPacked,
4847 layouts);
4848 }
4849 else
4850 {
4851 GenerateContextLostErrorOnCurrentGlobalContext();
4852 }
4853 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
4854 }
4855
GL_ReleaseTexturesANGLE(GLuint numTextures,const GLuint * textures,GLenum * layouts)4856 void GL_APIENTRY GL_ReleaseTexturesANGLE(GLuint numTextures,
4857 const GLuint *textures,
4858 GLenum *layouts)
4859 {
4860 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
4861 Context *context = GetValidGlobalContext();
4862 EVENT(context, GLReleaseTexturesANGLE,
4863 "context = %d, numTextures = %u, textures = 0x%016" PRIxPTR ", layouts = 0x%016" PRIxPTR
4864 "",
4865 CID(context), numTextures, (uintptr_t)textures, (uintptr_t)layouts);
4866
4867 if (context)
4868 {
4869 const TextureID *texturesPacked = PackParam<const TextureID *>(textures);
4870 SCOPED_SHARE_CONTEXT_LOCK(context);
4871 bool isCallValid =
4872 (context->skipValidation() ||
4873 (ValidatePixelLocalStorageInactive(context->getPrivateState(),
4874 context->getMutableErrorSetForValidation(),
4875 angle::EntryPoint::GLReleaseTexturesANGLE) &&
4876 ValidateReleaseTexturesANGLE(context, angle::EntryPoint::GLReleaseTexturesANGLE,
4877 numTextures, texturesPacked, layouts)));
4878 if (isCallValid)
4879 {
4880 context->releaseTextures(numTextures, texturesPacked, layouts);
4881 }
4882 ANGLE_CAPTURE_GL(ReleaseTexturesANGLE, isCallValid, context, numTextures, texturesPacked,
4883 layouts);
4884 }
4885 else
4886 {
4887 GenerateContextLostErrorOnCurrentGlobalContext();
4888 }
4889 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
4890 }
4891
4892 // GL_ANGLE_yuv_internal_format
4893
4894 // GL_APPLE_clip_distance
4895
4896 // GL_ARB_sync
4897 // ClientWaitSync is already defined.
4898
4899 // DeleteSync is already defined.
4900
4901 // FenceSync is already defined.
4902
4903 // GetInteger64v is already defined.
4904
4905 // GetSynciv is already defined.
4906
4907 // IsSync is already defined.
4908
4909 // WaitSync is already defined.
4910
4911 // GL_ARM_rgba8
4912
4913 // GL_ARM_shader_framebuffer_fetch
4914
4915 // GL_ARM_shader_framebuffer_fetch_depth_stencil
4916
4917 // GL_CHROMIUM_bind_uniform_location
GL_BindUniformLocationCHROMIUM(GLuint program,GLint location,const GLchar * name)4918 void GL_APIENTRY GL_BindUniformLocationCHROMIUM(GLuint program, GLint location, const GLchar *name)
4919 {
4920 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
4921 Context *context = GetValidGlobalContext();
4922 EVENT(context, GLBindUniformLocationCHROMIUM,
4923 "context = %d, program = %u, location = %d, name = 0x%016" PRIxPTR "", CID(context),
4924 program, location, (uintptr_t)name);
4925
4926 if (context)
4927 {
4928 ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);
4929 UniformLocation locationPacked = PackParam<UniformLocation>(location);
4930 SCOPED_SHARE_CONTEXT_LOCK(context);
4931 bool isCallValid =
4932 (context->skipValidation() ||
4933 (ValidatePixelLocalStorageInactive(context->getPrivateState(),
4934 context->getMutableErrorSetForValidation(),
4935 angle::EntryPoint::GLBindUniformLocationCHROMIUM) &&
4936 ValidateBindUniformLocationCHROMIUM(context,
4937 angle::EntryPoint::GLBindUniformLocationCHROMIUM,
4938 programPacked, locationPacked, name)));
4939 if (isCallValid)
4940 {
4941 context->bindUniformLocation(programPacked, locationPacked, name);
4942 }
4943 ANGLE_CAPTURE_GL(BindUniformLocationCHROMIUM, isCallValid, context, programPacked,
4944 locationPacked, name);
4945 }
4946 else
4947 {
4948 GenerateContextLostErrorOnCurrentGlobalContext();
4949 }
4950 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
4951 }
4952
4953 // GL_CHROMIUM_copy_compressed_texture
GL_CompressedCopyTextureCHROMIUM(GLuint sourceId,GLuint destId)4954 void GL_APIENTRY GL_CompressedCopyTextureCHROMIUM(GLuint sourceId, GLuint destId)
4955 {
4956 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
4957 Context *context = GetValidGlobalContext();
4958 EVENT(context, GLCompressedCopyTextureCHROMIUM, "context = %d, sourceId = %u, destId = %u",
4959 CID(context), sourceId, destId);
4960
4961 if (context)
4962 {
4963 TextureID sourceIdPacked = PackParam<TextureID>(sourceId);
4964 TextureID destIdPacked = PackParam<TextureID>(destId);
4965 SCOPED_SHARE_CONTEXT_LOCK(context);
4966 bool isCallValid =
4967 (context->skipValidation() ||
4968 (ValidatePixelLocalStorageInactive(
4969 context->getPrivateState(), context->getMutableErrorSetForValidation(),
4970 angle::EntryPoint::GLCompressedCopyTextureCHROMIUM) &&
4971 ValidateCompressedCopyTextureCHROMIUM(
4972 context, angle::EntryPoint::GLCompressedCopyTextureCHROMIUM, sourceIdPacked,
4973 destIdPacked)));
4974 if (isCallValid)
4975 {
4976 context->compressedCopyTexture(sourceIdPacked, destIdPacked);
4977 }
4978 ANGLE_CAPTURE_GL(CompressedCopyTextureCHROMIUM, isCallValid, context, sourceIdPacked,
4979 destIdPacked);
4980 }
4981 else
4982 {
4983 GenerateContextLostErrorOnCurrentGlobalContext();
4984 }
4985 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
4986 }
4987
4988 // GL_CHROMIUM_copy_texture
GL_CopyTextureCHROMIUM(GLuint sourceId,GLint sourceLevel,GLenum destTarget,GLuint destId,GLint destLevel,GLint internalFormat,GLenum destType,GLboolean unpackFlipY,GLboolean unpackPremultiplyAlpha,GLboolean unpackUnmultiplyAlpha)4989 void GL_APIENTRY GL_CopyTextureCHROMIUM(GLuint sourceId,
4990 GLint sourceLevel,
4991 GLenum destTarget,
4992 GLuint destId,
4993 GLint destLevel,
4994 GLint internalFormat,
4995 GLenum destType,
4996 GLboolean unpackFlipY,
4997 GLboolean unpackPremultiplyAlpha,
4998 GLboolean unpackUnmultiplyAlpha)
4999 {
5000 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
5001 Context *context = GetValidGlobalContext();
5002 EVENT(context, GLCopyTextureCHROMIUM,
5003 "context = %d, sourceId = %u, sourceLevel = %d, destTarget = %s, destId = %u, destLevel "
5004 "= %d, internalFormat = %d, destType = %s, unpackFlipY = %s, unpackPremultiplyAlpha = "
5005 "%s, unpackUnmultiplyAlpha = %s",
5006 CID(context), sourceId, sourceLevel, GLenumToString(GLESEnum::AllEnums, destTarget),
5007 destId, destLevel, internalFormat, GLenumToString(GLESEnum::AllEnums, destType),
5008 GLbooleanToString(unpackFlipY), GLbooleanToString(unpackPremultiplyAlpha),
5009 GLbooleanToString(unpackUnmultiplyAlpha));
5010
5011 if (context)
5012 {
5013 TextureID sourceIdPacked = PackParam<TextureID>(sourceId);
5014 TextureTarget destTargetPacked = PackParam<TextureTarget>(destTarget);
5015 TextureID destIdPacked = PackParam<TextureID>(destId);
5016 SCOPED_SHARE_CONTEXT_LOCK(context);
5017 bool isCallValid =
5018 (context->skipValidation() ||
5019 (ValidatePixelLocalStorageInactive(context->getPrivateState(),
5020 context->getMutableErrorSetForValidation(),
5021 angle::EntryPoint::GLCopyTextureCHROMIUM) &&
5022 ValidateCopyTextureCHROMIUM(
5023 context, angle::EntryPoint::GLCopyTextureCHROMIUM, sourceIdPacked, sourceLevel,
5024 destTargetPacked, destIdPacked, destLevel, internalFormat, destType, unpackFlipY,
5025 unpackPremultiplyAlpha, unpackUnmultiplyAlpha)));
5026 if (isCallValid)
5027 {
5028 context->copyTexture(sourceIdPacked, sourceLevel, destTargetPacked, destIdPacked,
5029 destLevel, internalFormat, destType, unpackFlipY,
5030 unpackPremultiplyAlpha, unpackUnmultiplyAlpha);
5031 }
5032 ANGLE_CAPTURE_GL(CopyTextureCHROMIUM, isCallValid, context, sourceIdPacked, sourceLevel,
5033 destTargetPacked, destIdPacked, destLevel, internalFormat, destType,
5034 unpackFlipY, unpackPremultiplyAlpha, unpackUnmultiplyAlpha);
5035 }
5036 else
5037 {
5038 GenerateContextLostErrorOnCurrentGlobalContext();
5039 }
5040 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
5041 }
5042
GL_CopySubTextureCHROMIUM(GLuint sourceId,GLint sourceLevel,GLenum destTarget,GLuint destId,GLint destLevel,GLint xoffset,GLint yoffset,GLint x,GLint y,GLint width,GLint height,GLboolean unpackFlipY,GLboolean unpackPremultiplyAlpha,GLboolean unpackUnmultiplyAlpha)5043 void GL_APIENTRY GL_CopySubTextureCHROMIUM(GLuint sourceId,
5044 GLint sourceLevel,
5045 GLenum destTarget,
5046 GLuint destId,
5047 GLint destLevel,
5048 GLint xoffset,
5049 GLint yoffset,
5050 GLint x,
5051 GLint y,
5052 GLint width,
5053 GLint height,
5054 GLboolean unpackFlipY,
5055 GLboolean unpackPremultiplyAlpha,
5056 GLboolean unpackUnmultiplyAlpha)
5057 {
5058 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
5059 Context *context = GetValidGlobalContext();
5060 EVENT(context, GLCopySubTextureCHROMIUM,
5061 "context = %d, sourceId = %u, sourceLevel = %d, destTarget = %s, destId = %u, destLevel "
5062 "= %d, xoffset = %d, yoffset = %d, x = %d, y = %d, width = %d, height = %d, unpackFlipY "
5063 "= %s, unpackPremultiplyAlpha = %s, unpackUnmultiplyAlpha = %s",
5064 CID(context), sourceId, sourceLevel, GLenumToString(GLESEnum::AllEnums, destTarget),
5065 destId, destLevel, xoffset, yoffset, x, y, width, height, GLbooleanToString(unpackFlipY),
5066 GLbooleanToString(unpackPremultiplyAlpha), GLbooleanToString(unpackUnmultiplyAlpha));
5067
5068 if (context)
5069 {
5070 TextureID sourceIdPacked = PackParam<TextureID>(sourceId);
5071 TextureTarget destTargetPacked = PackParam<TextureTarget>(destTarget);
5072 TextureID destIdPacked = PackParam<TextureID>(destId);
5073 SCOPED_SHARE_CONTEXT_LOCK(context);
5074 bool isCallValid =
5075 (context->skipValidation() ||
5076 (ValidatePixelLocalStorageInactive(context->getPrivateState(),
5077 context->getMutableErrorSetForValidation(),
5078 angle::EntryPoint::GLCopySubTextureCHROMIUM) &&
5079 ValidateCopySubTextureCHROMIUM(
5080 context, angle::EntryPoint::GLCopySubTextureCHROMIUM, sourceIdPacked, sourceLevel,
5081 destTargetPacked, destIdPacked, destLevel, xoffset, yoffset, x, y, width, height,
5082 unpackFlipY, unpackPremultiplyAlpha, unpackUnmultiplyAlpha)));
5083 if (isCallValid)
5084 {
5085 context->copySubTexture(sourceIdPacked, sourceLevel, destTargetPacked, destIdPacked,
5086 destLevel, xoffset, yoffset, x, y, width, height, unpackFlipY,
5087 unpackPremultiplyAlpha, unpackUnmultiplyAlpha);
5088 }
5089 ANGLE_CAPTURE_GL(CopySubTextureCHROMIUM, isCallValid, context, sourceIdPacked, sourceLevel,
5090 destTargetPacked, destIdPacked, destLevel, xoffset, yoffset, x, y, width,
5091 height, unpackFlipY, unpackPremultiplyAlpha, unpackUnmultiplyAlpha);
5092 }
5093 else
5094 {
5095 GenerateContextLostErrorOnCurrentGlobalContext();
5096 }
5097 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
5098 }
5099
5100 // GL_CHROMIUM_framebuffer_mixed_samples
GL_CoverageModulationCHROMIUM(GLenum components)5101 void GL_APIENTRY GL_CoverageModulationCHROMIUM(GLenum components)
5102 {
5103 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
5104 Context *context = GetValidGlobalContext();
5105 EVENT(context, GLCoverageModulationCHROMIUM, "context = %d, components = %s", CID(context),
5106 GLenumToString(GLESEnum::AllEnums, components));
5107
5108 if (context)
5109 {
5110 bool isCallValid =
5111 (context->skipValidation() ||
5112 (ValidatePixelLocalStorageInactive(context->getPrivateState(),
5113 context->getMutableErrorSetForValidation(),
5114 angle::EntryPoint::GLCoverageModulationCHROMIUM) &&
5115 ValidateCoverageModulationCHROMIUM(
5116 context->getPrivateState(), context->getMutableErrorSetForValidation(),
5117 angle::EntryPoint::GLCoverageModulationCHROMIUM, components)));
5118 if (isCallValid)
5119 {
5120 ContextPrivateCoverageModulation(context->getMutablePrivateState(),
5121 context->getMutablePrivateStateCache(), components);
5122 }
5123 ANGLE_CAPTURE_GL(CoverageModulationCHROMIUM, isCallValid, context, components);
5124 }
5125 else
5126 {
5127 GenerateContextLostErrorOnCurrentGlobalContext();
5128 }
5129 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
5130 }
5131
5132 // GL_CHROMIUM_lose_context
GL_LoseContextCHROMIUM(GLenum current,GLenum other)5133 void GL_APIENTRY GL_LoseContextCHROMIUM(GLenum current, GLenum other)
5134 {
5135 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
5136 Context *context = GetValidGlobalContext();
5137 EVENT(context, GLLoseContextCHROMIUM, "context = %d, current = %s, other = %s", CID(context),
5138 GLenumToString(GLESEnum::GraphicsResetStatus, current),
5139 GLenumToString(GLESEnum::GraphicsResetStatus, other));
5140
5141 if (context)
5142 {
5143 GraphicsResetStatus currentPacked = PackParam<GraphicsResetStatus>(current);
5144 GraphicsResetStatus otherPacked = PackParam<GraphicsResetStatus>(other);
5145 SCOPED_SHARE_CONTEXT_LOCK(context);
5146 bool isCallValid =
5147 (context->skipValidation() ||
5148 (ValidatePixelLocalStorageInactive(context->getPrivateState(),
5149 context->getMutableErrorSetForValidation(),
5150 angle::EntryPoint::GLLoseContextCHROMIUM) &&
5151 ValidateLoseContextCHROMIUM(context, angle::EntryPoint::GLLoseContextCHROMIUM,
5152 currentPacked, otherPacked)));
5153 if (isCallValid)
5154 {
5155 context->loseContext(currentPacked, otherPacked);
5156 }
5157 ANGLE_CAPTURE_GL(LoseContextCHROMIUM, isCallValid, context, currentPacked, otherPacked);
5158 }
5159 else
5160 {
5161 GenerateContextLostErrorOnCurrentGlobalContext();
5162 }
5163 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
5164 }
5165
5166 // GL_EXT_EGL_image_array
5167
5168 // GL_EXT_EGL_image_storage
GL_EGLImageTargetTexStorageEXT(GLenum target,GLeglImageOES image,const GLint * attrib_list)5169 void GL_APIENTRY GL_EGLImageTargetTexStorageEXT(GLenum target,
5170 GLeglImageOES image,
5171 const GLint *attrib_list)
5172 {
5173 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
5174 Context *context = GetValidGlobalContext();
5175 EVENT(context, GLEGLImageTargetTexStorageEXT,
5176 "context = %d, target = %s, image = 0x%016" PRIxPTR ", attrib_list = 0x%016" PRIxPTR "",
5177 CID(context), GLenumToString(GLESEnum::AllEnums, target), (uintptr_t)image,
5178 (uintptr_t)attrib_list);
5179
5180 if (context)
5181 {
5182 egl::ImageID imagePacked = PackParam<egl::ImageID>(image);
5183 SCOPED_EGL_IMAGE_SHARE_CONTEXT_LOCK(context, imagePacked);
5184 bool isCallValid =
5185 (context->skipValidation() ||
5186 (ValidatePixelLocalStorageInactive(context->getPrivateState(),
5187 context->getMutableErrorSetForValidation(),
5188 angle::EntryPoint::GLEGLImageTargetTexStorageEXT) &&
5189 ValidateEGLImageTargetTexStorageEXT(context,
5190 angle::EntryPoint::GLEGLImageTargetTexStorageEXT,
5191 target, imagePacked, attrib_list)));
5192 if (isCallValid)
5193 {
5194 context->eGLImageTargetTexStorage(target, imagePacked, attrib_list);
5195 }
5196 ANGLE_CAPTURE_GL(EGLImageTargetTexStorageEXT, isCallValid, context, target, imagePacked,
5197 attrib_list);
5198 }
5199 else
5200 {
5201 GenerateContextLostErrorOnCurrentGlobalContext();
5202 }
5203 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
5204 }
5205
GL_EGLImageTargetTextureStorageEXT(GLuint texture,GLeglImageOES image,const GLint * attrib_list)5206 void GL_APIENTRY GL_EGLImageTargetTextureStorageEXT(GLuint texture,
5207 GLeglImageOES image,
5208 const GLint *attrib_list)
5209 {
5210 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
5211 Context *context = GetValidGlobalContext();
5212 EVENT(context, GLEGLImageTargetTextureStorageEXT,
5213 "context = %d, texture = %u, image = 0x%016" PRIxPTR ", attrib_list = 0x%016" PRIxPTR "",
5214 CID(context), texture, (uintptr_t)image, (uintptr_t)attrib_list);
5215
5216 if (context)
5217 {
5218 egl::ImageID imagePacked = PackParam<egl::ImageID>(image);
5219 SCOPED_EGL_IMAGE_SHARE_CONTEXT_LOCK(context, imagePacked);
5220 bool isCallValid =
5221 (context->skipValidation() ||
5222 (ValidatePixelLocalStorageInactive(
5223 context->getPrivateState(), context->getMutableErrorSetForValidation(),
5224 angle::EntryPoint::GLEGLImageTargetTextureStorageEXT) &&
5225 ValidateEGLImageTargetTextureStorageEXT(
5226 context, angle::EntryPoint::GLEGLImageTargetTextureStorageEXT, texture,
5227 imagePacked, attrib_list)));
5228 if (isCallValid)
5229 {
5230 context->eGLImageTargetTextureStorage(texture, imagePacked, attrib_list);
5231 }
5232 ANGLE_CAPTURE_GL(EGLImageTargetTextureStorageEXT, isCallValid, context, texture,
5233 imagePacked, attrib_list);
5234 }
5235 else
5236 {
5237 GenerateContextLostErrorOnCurrentGlobalContext();
5238 }
5239 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
5240 }
5241
5242 // GL_EXT_EGL_image_storage_compression
5243
5244 // GL_EXT_YUV_target
5245
5246 // GL_EXT_base_instance
GL_DrawArraysInstancedBaseInstanceEXT(GLenum mode,GLint first,GLsizei count,GLsizei instancecount,GLuint baseinstance)5247 void GL_APIENTRY GL_DrawArraysInstancedBaseInstanceEXT(GLenum mode,
5248 GLint first,
5249 GLsizei count,
5250 GLsizei instancecount,
5251 GLuint baseinstance)
5252 {
5253 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
5254 Context *context = GetValidGlobalContext();
5255 EVENT(context, GLDrawArraysInstancedBaseInstanceEXT,
5256 "context = %d, mode = %s, first = %d, count = %d, instancecount = %d, baseinstance = %u",
5257 CID(context), GLenumToString(GLESEnum::PrimitiveType, mode), first, count, instancecount,
5258 baseinstance);
5259
5260 if (context)
5261 {
5262 PrimitiveMode modePacked = PackParam<PrimitiveMode>(mode);
5263 SCOPED_SHARE_CONTEXT_LOCK(context);
5264 bool isCallValid = (context->skipValidation() ||
5265 ValidateDrawArraysInstancedBaseInstanceEXT(
5266 context, angle::EntryPoint::GLDrawArraysInstancedBaseInstanceEXT,
5267 modePacked, first, count, instancecount, baseinstance));
5268 if (isCallValid)
5269 {
5270 context->drawArraysInstancedBaseInstance(modePacked, first, count, instancecount,
5271 baseinstance);
5272 }
5273 ANGLE_CAPTURE_GL(DrawArraysInstancedBaseInstanceEXT, isCallValid, context, modePacked,
5274 first, count, instancecount, baseinstance);
5275 }
5276 else
5277 {
5278 GenerateContextLostErrorOnCurrentGlobalContext();
5279 }
5280 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
5281 }
5282
GL_DrawElementsInstancedBaseInstanceEXT(GLenum mode,GLsizei count,GLenum type,const void * indices,GLsizei instancecount,GLuint baseinstance)5283 void GL_APIENTRY GL_DrawElementsInstancedBaseInstanceEXT(GLenum mode,
5284 GLsizei count,
5285 GLenum type,
5286 const void *indices,
5287 GLsizei instancecount,
5288 GLuint baseinstance)
5289 {
5290 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
5291 Context *context = GetValidGlobalContext();
5292 EVENT(context, GLDrawElementsInstancedBaseInstanceEXT,
5293 "context = %d, mode = %s, count = %d, type = %s, indices = 0x%016" PRIxPTR
5294 ", instancecount = %d, baseinstance = %u",
5295 CID(context), GLenumToString(GLESEnum::PrimitiveType, mode), count,
5296 GLenumToString(GLESEnum::PrimitiveType, type), (uintptr_t)indices, instancecount,
5297 baseinstance);
5298
5299 if (context)
5300 {
5301 PrimitiveMode modePacked = PackParam<PrimitiveMode>(mode);
5302 DrawElementsType typePacked = PackParam<DrawElementsType>(type);
5303 SCOPED_SHARE_CONTEXT_LOCK(context);
5304 bool isCallValid =
5305 (context->skipValidation() ||
5306 ValidateDrawElementsInstancedBaseInstanceEXT(
5307 context, angle::EntryPoint::GLDrawElementsInstancedBaseInstanceEXT, modePacked,
5308 count, typePacked, indices, instancecount, baseinstance));
5309 if (isCallValid)
5310 {
5311 context->drawElementsInstancedBaseInstance(modePacked, count, typePacked, indices,
5312 instancecount, baseinstance);
5313 }
5314 ANGLE_CAPTURE_GL(DrawElementsInstancedBaseInstanceEXT, isCallValid, context, modePacked,
5315 count, typePacked, indices, instancecount, baseinstance);
5316 }
5317 else
5318 {
5319 GenerateContextLostErrorOnCurrentGlobalContext();
5320 }
5321 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
5322 }
5323
GL_DrawElementsInstancedBaseVertexBaseInstanceEXT(GLenum mode,GLsizei count,GLenum type,const void * indices,GLsizei instancecount,GLint basevertex,GLuint baseinstance)5324 void GL_APIENTRY GL_DrawElementsInstancedBaseVertexBaseInstanceEXT(GLenum mode,
5325 GLsizei count,
5326 GLenum type,
5327 const void *indices,
5328 GLsizei instancecount,
5329 GLint basevertex,
5330 GLuint baseinstance)
5331 {
5332 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
5333 Context *context = GetValidGlobalContext();
5334 EVENT(context, GLDrawElementsInstancedBaseVertexBaseInstanceEXT,
5335 "context = %d, mode = %s, count = %d, type = %s, indices = 0x%016" PRIxPTR
5336 ", instancecount = %d, basevertex = %d, baseinstance = %u",
5337 CID(context), GLenumToString(GLESEnum::PrimitiveType, mode), count,
5338 GLenumToString(GLESEnum::DrawElementsType, type), (uintptr_t)indices, instancecount,
5339 basevertex, baseinstance);
5340
5341 if (context)
5342 {
5343 PrimitiveMode modePacked = PackParam<PrimitiveMode>(mode);
5344 DrawElementsType typePacked = PackParam<DrawElementsType>(type);
5345 SCOPED_SHARE_CONTEXT_LOCK(context);
5346 bool isCallValid =
5347 (context->skipValidation() ||
5348 ValidateDrawElementsInstancedBaseVertexBaseInstanceEXT(
5349 context, angle::EntryPoint::GLDrawElementsInstancedBaseVertexBaseInstanceEXT,
5350 modePacked, count, typePacked, indices, instancecount, basevertex, baseinstance));
5351 if (isCallValid)
5352 {
5353 context->drawElementsInstancedBaseVertexBaseInstance(
5354 modePacked, count, typePacked, indices, instancecount, basevertex, baseinstance);
5355 }
5356 ANGLE_CAPTURE_GL(DrawElementsInstancedBaseVertexBaseInstanceEXT, isCallValid, context,
5357 modePacked, count, typePacked, indices, instancecount, basevertex,
5358 baseinstance);
5359 }
5360 else
5361 {
5362 GenerateContextLostErrorOnCurrentGlobalContext();
5363 }
5364 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
5365 }
5366
5367 // GL_EXT_blend_func_extended
GL_BindFragDataLocationEXT(GLuint program,GLuint color,const GLchar * name)5368 void GL_APIENTRY GL_BindFragDataLocationEXT(GLuint program, GLuint color, const GLchar *name)
5369 {
5370 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
5371 Context *context = GetValidGlobalContext();
5372 EVENT(context, GLBindFragDataLocationEXT,
5373 "context = %d, program = %u, color = %u, name = 0x%016" PRIxPTR "", CID(context), program,
5374 color, (uintptr_t)name);
5375
5376 if (context)
5377 {
5378 ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);
5379 SCOPED_SHARE_CONTEXT_LOCK(context);
5380 bool isCallValid =
5381 (context->skipValidation() ||
5382 (ValidatePixelLocalStorageInactive(context->getPrivateState(),
5383 context->getMutableErrorSetForValidation(),
5384 angle::EntryPoint::GLBindFragDataLocationEXT) &&
5385 ValidateBindFragDataLocationEXT(context, angle::EntryPoint::GLBindFragDataLocationEXT,
5386 programPacked, color, name)));
5387 if (isCallValid)
5388 {
5389 context->bindFragDataLocation(programPacked, color, name);
5390 }
5391 ANGLE_CAPTURE_GL(BindFragDataLocationEXT, isCallValid, context, programPacked, color, name);
5392 }
5393 else
5394 {
5395 GenerateContextLostErrorOnCurrentGlobalContext();
5396 }
5397 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
5398 }
5399
GL_BindFragDataLocationIndexedEXT(GLuint program,GLuint colorNumber,GLuint index,const GLchar * name)5400 void GL_APIENTRY GL_BindFragDataLocationIndexedEXT(GLuint program,
5401 GLuint colorNumber,
5402 GLuint index,
5403 const GLchar *name)
5404 {
5405 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
5406 Context *context = GetValidGlobalContext();
5407 EVENT(context, GLBindFragDataLocationIndexedEXT,
5408 "context = %d, program = %u, colorNumber = %u, index = %u, name = 0x%016" PRIxPTR "",
5409 CID(context), program, colorNumber, index, (uintptr_t)name);
5410
5411 if (context)
5412 {
5413 ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);
5414 SCOPED_SHARE_CONTEXT_LOCK(context);
5415 bool isCallValid =
5416 (context->skipValidation() ||
5417 (ValidatePixelLocalStorageInactive(
5418 context->getPrivateState(), context->getMutableErrorSetForValidation(),
5419 angle::EntryPoint::GLBindFragDataLocationIndexedEXT) &&
5420 ValidateBindFragDataLocationIndexedEXT(
5421 context, angle::EntryPoint::GLBindFragDataLocationIndexedEXT, programPacked,
5422 colorNumber, index, name)));
5423 if (isCallValid)
5424 {
5425 context->bindFragDataLocationIndexed(programPacked, colorNumber, index, name);
5426 }
5427 ANGLE_CAPTURE_GL(BindFragDataLocationIndexedEXT, isCallValid, context, programPacked,
5428 colorNumber, index, name);
5429 }
5430 else
5431 {
5432 GenerateContextLostErrorOnCurrentGlobalContext();
5433 }
5434 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
5435 }
5436
GL_GetFragDataIndexEXT(GLuint program,const GLchar * name)5437 GLint GL_APIENTRY GL_GetFragDataIndexEXT(GLuint program, const GLchar *name)
5438 {
5439 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
5440 Context *context = GetValidGlobalContext();
5441 EVENT(context, GLGetFragDataIndexEXT, "context = %d, program = %u, name = 0x%016" PRIxPTR "",
5442 CID(context), program, (uintptr_t)name);
5443
5444 GLint returnValue;
5445 if (context)
5446 {
5447 ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);
5448 SCOPED_SHARE_CONTEXT_LOCK(context);
5449 bool isCallValid =
5450 (context->skipValidation() ||
5451 ValidateGetFragDataIndexEXT(context, angle::EntryPoint::GLGetFragDataIndexEXT,
5452 programPacked, name));
5453 if (isCallValid)
5454 {
5455 returnValue = context->getFragDataIndex(programPacked, name);
5456 }
5457 else
5458 {
5459 returnValue = GetDefaultReturnValue<angle::EntryPoint::GLGetFragDataIndexEXT, GLint>();
5460 }
5461 ANGLE_CAPTURE_GL(GetFragDataIndexEXT, isCallValid, context, programPacked, name,
5462 returnValue);
5463 }
5464 else
5465 {
5466 GenerateContextLostErrorOnCurrentGlobalContext();
5467 returnValue = GetDefaultReturnValue<angle::EntryPoint::GLGetFragDataIndexEXT, GLint>();
5468 }
5469 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
5470 return returnValue;
5471 }
5472
GL_GetProgramResourceLocationIndexEXT(GLuint program,GLenum programInterface,const GLchar * name)5473 GLint GL_APIENTRY GL_GetProgramResourceLocationIndexEXT(GLuint program,
5474 GLenum programInterface,
5475 const GLchar *name)
5476 {
5477 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
5478 Context *context = GetValidGlobalContext();
5479 EVENT(context, GLGetProgramResourceLocationIndexEXT,
5480 "context = %d, program = %u, programInterface = %s, name = 0x%016" PRIxPTR "",
5481 CID(context), program, GLenumToString(GLESEnum::ProgramInterface, programInterface),
5482 (uintptr_t)name);
5483
5484 GLint returnValue;
5485 if (context)
5486 {
5487 ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);
5488 SCOPED_SHARE_CONTEXT_LOCK(context);
5489 bool isCallValid = (context->skipValidation() ||
5490 ValidateGetProgramResourceLocationIndexEXT(
5491 context, angle::EntryPoint::GLGetProgramResourceLocationIndexEXT,
5492 programPacked, programInterface, name));
5493 if (isCallValid)
5494 {
5495 returnValue =
5496 context->getProgramResourceLocationIndex(programPacked, programInterface, name);
5497 }
5498 else
5499 {
5500 returnValue =
5501 GetDefaultReturnValue<angle::EntryPoint::GLGetProgramResourceLocationIndexEXT,
5502 GLint>();
5503 }
5504 ANGLE_CAPTURE_GL(GetProgramResourceLocationIndexEXT, isCallValid, context, programPacked,
5505 programInterface, name, returnValue);
5506 }
5507 else
5508 {
5509 GenerateContextLostErrorOnCurrentGlobalContext();
5510 returnValue =
5511 GetDefaultReturnValue<angle::EntryPoint::GLGetProgramResourceLocationIndexEXT, GLint>();
5512 }
5513 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
5514 return returnValue;
5515 }
5516
5517 // GL_EXT_blend_minmax
5518
5519 // GL_EXT_buffer_storage
GL_BufferStorageEXT(GLenum target,GLsizeiptr size,const void * data,GLbitfield flags)5520 void GL_APIENTRY GL_BufferStorageEXT(GLenum target,
5521 GLsizeiptr size,
5522 const void *data,
5523 GLbitfield flags)
5524 {
5525 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
5526 Context *context = GetValidGlobalContext();
5527 EVENT(context, GLBufferStorageEXT,
5528 "context = %d, target = %s, size = %llu, data = 0x%016" PRIxPTR ", flags = %s",
5529 CID(context), GLenumToString(GLESEnum::BufferStorageTarget, target),
5530 static_cast<unsigned long long>(size), (uintptr_t)data,
5531 GLbitfieldToString(GLESEnum::BufferStorageMask, flags).c_str());
5532
5533 if (context)
5534 {
5535 BufferBinding targetPacked = PackParam<BufferBinding>(target);
5536 SCOPED_SHARE_CONTEXT_LOCK(context);
5537 bool isCallValid =
5538 (context->skipValidation() ||
5539 (ValidatePixelLocalStorageInactive(context->getPrivateState(),
5540 context->getMutableErrorSetForValidation(),
5541 angle::EntryPoint::GLBufferStorageEXT) &&
5542 ValidateBufferStorageEXT(context, angle::EntryPoint::GLBufferStorageEXT, targetPacked,
5543 size, data, flags)));
5544 if (isCallValid)
5545 {
5546 context->bufferStorage(targetPacked, size, data, flags);
5547 }
5548 ANGLE_CAPTURE_GL(BufferStorageEXT, isCallValid, context, targetPacked, size, data, flags);
5549 }
5550 else
5551 {
5552 GenerateContextLostErrorOnCurrentGlobalContext();
5553 }
5554 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
5555 }
5556
5557 // GL_EXT_clear_texture
5558 void GL_APIENTRY
GL_ClearTexImageEXT(GLuint texture,GLint level,GLenum format,GLenum type,const void * data)5559 GL_ClearTexImageEXT(GLuint texture, GLint level, GLenum format, GLenum type, const void *data)
5560 {
5561 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
5562 Context *context = GetValidGlobalContext();
5563 EVENT(context, GLClearTexImageEXT,
5564 "context = %d, texture = %u, level = %d, format = %s, type = %s, data = 0x%016" PRIxPTR
5565 "",
5566 CID(context), texture, level, GLenumToString(GLESEnum::PixelFormat, format),
5567 GLenumToString(GLESEnum::PixelType, type), (uintptr_t)data);
5568
5569 if (context)
5570 {
5571 TextureID texturePacked = PackParam<TextureID>(texture);
5572 SCOPED_SHARE_CONTEXT_LOCK(context);
5573 bool isCallValid =
5574 (context->skipValidation() ||
5575 (ValidatePixelLocalStorageInactive(context->getPrivateState(),
5576 context->getMutableErrorSetForValidation(),
5577 angle::EntryPoint::GLClearTexImageEXT) &&
5578 ValidateClearTexImageEXT(context, angle::EntryPoint::GLClearTexImageEXT,
5579 texturePacked, level, format, type, data)));
5580 if (isCallValid)
5581 {
5582 context->clearTexImage(texturePacked, level, format, type, data);
5583 }
5584 ANGLE_CAPTURE_GL(ClearTexImageEXT, isCallValid, context, texturePacked, level, format, type,
5585 data);
5586 }
5587 else
5588 {
5589 GenerateContextLostErrorOnCurrentGlobalContext();
5590 }
5591 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
5592 }
5593
GL_ClearTexSubImageEXT(GLuint texture,GLint level,GLint xoffset,GLint yoffset,GLint zoffset,GLsizei width,GLsizei height,GLsizei depth,GLenum format,GLenum type,const void * data)5594 void GL_APIENTRY GL_ClearTexSubImageEXT(GLuint texture,
5595 GLint level,
5596 GLint xoffset,
5597 GLint yoffset,
5598 GLint zoffset,
5599 GLsizei width,
5600 GLsizei height,
5601 GLsizei depth,
5602 GLenum format,
5603 GLenum type,
5604 const void *data)
5605 {
5606 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
5607 Context *context = GetValidGlobalContext();
5608 EVENT(context, GLClearTexSubImageEXT,
5609 "context = %d, texture = %u, level = %d, xoffset = %d, yoffset = %d, zoffset = %d, width "
5610 "= %d, height = %d, depth = %d, format = %s, type = %s, data = 0x%016" PRIxPTR "",
5611 CID(context), texture, level, xoffset, yoffset, zoffset, width, height, depth,
5612 GLenumToString(GLESEnum::PixelFormat, format), GLenumToString(GLESEnum::PixelType, type),
5613 (uintptr_t)data);
5614
5615 if (context)
5616 {
5617 TextureID texturePacked = PackParam<TextureID>(texture);
5618 SCOPED_SHARE_CONTEXT_LOCK(context);
5619 bool isCallValid =
5620 (context->skipValidation() ||
5621 (ValidatePixelLocalStorageInactive(context->getPrivateState(),
5622 context->getMutableErrorSetForValidation(),
5623 angle::EntryPoint::GLClearTexSubImageEXT) &&
5624 ValidateClearTexSubImageEXT(context, angle::EntryPoint::GLClearTexSubImageEXT,
5625 texturePacked, level, xoffset, yoffset, zoffset, width,
5626 height, depth, format, type, data)));
5627 if (isCallValid)
5628 {
5629 context->clearTexSubImage(texturePacked, level, xoffset, yoffset, zoffset, width,
5630 height, depth, format, type, data);
5631 }
5632 ANGLE_CAPTURE_GL(ClearTexSubImageEXT, isCallValid, context, texturePacked, level, xoffset,
5633 yoffset, zoffset, width, height, depth, format, type, data);
5634 }
5635 else
5636 {
5637 GenerateContextLostErrorOnCurrentGlobalContext();
5638 }
5639 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
5640 }
5641
5642 // GL_EXT_clip_control
GL_ClipControlEXT(GLenum origin,GLenum depth)5643 void GL_APIENTRY GL_ClipControlEXT(GLenum origin, GLenum depth)
5644 {
5645 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
5646 Context *context = GetValidGlobalContext();
5647 EVENT(context, GLClipControlEXT, "context = %d, origin = %s, depth = %s", CID(context),
5648 GLenumToString(GLESEnum::AllEnums, origin), GLenumToString(GLESEnum::AllEnums, depth));
5649
5650 if (context)
5651 {
5652 ClipOrigin originPacked = PackParam<ClipOrigin>(origin);
5653 ClipDepthMode depthPacked = PackParam<ClipDepthMode>(depth);
5654 bool isCallValid =
5655 (context->skipValidation() ||
5656 ValidateClipControlEXT(
5657 context->getPrivateState(), context->getMutableErrorSetForValidation(),
5658 angle::EntryPoint::GLClipControlEXT, originPacked, depthPacked));
5659 if (isCallValid)
5660 {
5661 ContextPrivateClipControl(context->getMutablePrivateState(),
5662 context->getMutablePrivateStateCache(), originPacked,
5663 depthPacked);
5664 }
5665 ANGLE_CAPTURE_GL(ClipControlEXT, isCallValid, context, originPacked, depthPacked);
5666 }
5667 else
5668 {
5669 GenerateContextLostErrorOnCurrentGlobalContext();
5670 }
5671 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
5672 }
5673
5674 // GL_EXT_clip_cull_distance
5675
5676 // GL_EXT_color_buffer_float
5677
5678 // GL_EXT_color_buffer_half_float
5679
5680 // GL_EXT_conservative_depth
5681
5682 // GL_EXT_copy_image
GL_CopyImageSubDataEXT(GLuint srcName,GLenum srcTarget,GLint srcLevel,GLint srcX,GLint srcY,GLint srcZ,GLuint dstName,GLenum dstTarget,GLint dstLevel,GLint dstX,GLint dstY,GLint dstZ,GLsizei srcWidth,GLsizei srcHeight,GLsizei srcDepth)5683 void GL_APIENTRY GL_CopyImageSubDataEXT(GLuint srcName,
5684 GLenum srcTarget,
5685 GLint srcLevel,
5686 GLint srcX,
5687 GLint srcY,
5688 GLint srcZ,
5689 GLuint dstName,
5690 GLenum dstTarget,
5691 GLint dstLevel,
5692 GLint dstX,
5693 GLint dstY,
5694 GLint dstZ,
5695 GLsizei srcWidth,
5696 GLsizei srcHeight,
5697 GLsizei srcDepth)
5698 {
5699 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
5700 Context *context = GetValidGlobalContext();
5701 EVENT(context, GLCopyImageSubDataEXT,
5702 "context = %d, srcName = %u, srcTarget = %s, srcLevel = %d, srcX = %d, srcY = %d, srcZ = "
5703 "%d, dstName = %u, dstTarget = %s, dstLevel = %d, dstX = %d, dstY = %d, dstZ = %d, "
5704 "srcWidth = %d, srcHeight = %d, srcDepth = %d",
5705 CID(context), srcName, GLenumToString(GLESEnum::CopyBufferSubDataTarget, srcTarget),
5706 srcLevel, srcX, srcY, srcZ, dstName,
5707 GLenumToString(GLESEnum::CopyBufferSubDataTarget, dstTarget), dstLevel, dstX, dstY, dstZ,
5708 srcWidth, srcHeight, srcDepth);
5709
5710 if (context)
5711 {
5712 SCOPED_SHARE_CONTEXT_LOCK(context);
5713 bool isCallValid =
5714 (context->skipValidation() ||
5715 (ValidatePixelLocalStorageInactive(context->getPrivateState(),
5716 context->getMutableErrorSetForValidation(),
5717 angle::EntryPoint::GLCopyImageSubDataEXT) &&
5718 ValidateCopyImageSubDataEXT(context, angle::EntryPoint::GLCopyImageSubDataEXT,
5719 srcName, srcTarget, srcLevel, srcX, srcY, srcZ, dstName,
5720 dstTarget, dstLevel, dstX, dstY, dstZ, srcWidth,
5721 srcHeight, srcDepth)));
5722 if (isCallValid)
5723 {
5724 context->copyImageSubData(srcName, srcTarget, srcLevel, srcX, srcY, srcZ, dstName,
5725 dstTarget, dstLevel, dstX, dstY, dstZ, srcWidth, srcHeight,
5726 srcDepth);
5727 }
5728 ANGLE_CAPTURE_GL(CopyImageSubDataEXT, isCallValid, context, srcName, srcTarget, srcLevel,
5729 srcX, srcY, srcZ, dstName, dstTarget, dstLevel, dstX, dstY, dstZ, srcWidth,
5730 srcHeight, srcDepth);
5731 }
5732 else
5733 {
5734 GenerateContextLostErrorOnCurrentGlobalContext();
5735 }
5736 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
5737 }
5738
5739 // GL_EXT_debug_label
5740 void GL_APIENTRY
GL_GetObjectLabelEXT(GLenum type,GLuint object,GLsizei bufSize,GLsizei * length,GLchar * label)5741 GL_GetObjectLabelEXT(GLenum type, GLuint object, GLsizei bufSize, GLsizei *length, GLchar *label)
5742 {
5743 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
5744 Context *context = GetValidGlobalContext();
5745 EVENT(context, GLGetObjectLabelEXT,
5746 "context = %d, type = %s, object = %u, bufSize = %d, length = 0x%016" PRIxPTR
5747 ", label = 0x%016" PRIxPTR "",
5748 CID(context), GLenumToString(GLESEnum::AllEnums, type), object, bufSize,
5749 (uintptr_t)length, (uintptr_t)label);
5750
5751 if (context)
5752 {
5753 SCOPED_SHARE_CONTEXT_LOCK(context);
5754 bool isCallValid =
5755 (context->skipValidation() ||
5756 ValidateGetObjectLabelEXT(context, angle::EntryPoint::GLGetObjectLabelEXT, type,
5757 object, bufSize, length, label));
5758 if (isCallValid)
5759 {
5760 context->getObjectLabel(type, object, bufSize, length, label);
5761 }
5762 ANGLE_CAPTURE_GL(GetObjectLabelEXT, isCallValid, context, type, object, bufSize, length,
5763 label);
5764 }
5765 else
5766 {
5767 GenerateContextLostErrorOnCurrentGlobalContext();
5768 }
5769 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
5770 }
5771
GL_LabelObjectEXT(GLenum type,GLuint object,GLsizei length,const GLchar * label)5772 void GL_APIENTRY GL_LabelObjectEXT(GLenum type, GLuint object, GLsizei length, const GLchar *label)
5773 {
5774 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
5775 Context *context = GetValidGlobalContext();
5776 EVENT(context, GLLabelObjectEXT,
5777 "context = %d, type = %s, object = %u, length = %d, label = 0x%016" PRIxPTR "",
5778 CID(context), GLenumToString(GLESEnum::AllEnums, type), object, length, (uintptr_t)label);
5779
5780 if (context)
5781 {
5782 SCOPED_SHARE_CONTEXT_LOCK(context);
5783 bool isCallValid =
5784 (context->skipValidation() ||
5785 (ValidatePixelLocalStorageInactive(context->getPrivateState(),
5786 context->getMutableErrorSetForValidation(),
5787 angle::EntryPoint::GLLabelObjectEXT) &&
5788 ValidateLabelObjectEXT(context, angle::EntryPoint::GLLabelObjectEXT, type, object,
5789 length, label)));
5790 if (isCallValid)
5791 {
5792 context->labelObject(type, object, length, label);
5793 }
5794 ANGLE_CAPTURE_GL(LabelObjectEXT, isCallValid, context, type, object, length, label);
5795 }
5796 else
5797 {
5798 GenerateContextLostErrorOnCurrentGlobalContext();
5799 }
5800 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
5801 }
5802
5803 // GL_EXT_debug_marker
GL_InsertEventMarkerEXT(GLsizei length,const GLchar * marker)5804 void GL_APIENTRY GL_InsertEventMarkerEXT(GLsizei length, const GLchar *marker)
5805 {
5806 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
5807 Context *context = GetValidGlobalContext();
5808 // Don't run the EVENT() macro on the EXT_debug_marker entry points.
5809 // It can interfere with the debug events being set by the caller.
5810 // EVENT(context, GLInsertEventMarkerEXT, "context = %d, length = %d, marker = 0x%016" PRIxPTR
5811 // "", CID(context), length, (uintptr_t)marker);
5812
5813 if (context)
5814 {
5815 SCOPED_SHARE_CONTEXT_LOCK(context);
5816 bool isCallValid =
5817 (context->skipValidation() ||
5818 (ValidatePixelLocalStorageInactive(context->getPrivateState(),
5819 context->getMutableErrorSetForValidation(),
5820 angle::EntryPoint::GLInsertEventMarkerEXT) &&
5821 ValidateInsertEventMarkerEXT(context, angle::EntryPoint::GLInsertEventMarkerEXT,
5822 length, marker)));
5823 if (isCallValid)
5824 {
5825 context->insertEventMarker(length, marker);
5826 }
5827 ANGLE_CAPTURE_GL(InsertEventMarkerEXT, isCallValid, context, length, marker);
5828 }
5829 else
5830 {
5831 GenerateContextLostErrorOnCurrentGlobalContext();
5832 }
5833 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
5834 }
5835
GL_PopGroupMarkerEXT()5836 void GL_APIENTRY GL_PopGroupMarkerEXT()
5837 {
5838 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
5839 Context *context = GetValidGlobalContext();
5840 // Don't run the EVENT() macro on the EXT_debug_marker entry points.
5841 // It can interfere with the debug events being set by the caller.
5842 // EVENT(context, GLPopGroupMarkerEXT, "context = %d", CID(context));
5843
5844 if (context)
5845 {
5846 SCOPED_SHARE_CONTEXT_LOCK(context);
5847 bool isCallValid =
5848 (context->skipValidation() ||
5849 (ValidatePixelLocalStorageInactive(context->getPrivateState(),
5850 context->getMutableErrorSetForValidation(),
5851 angle::EntryPoint::GLPopGroupMarkerEXT) &&
5852 ValidatePopGroupMarkerEXT(context, angle::EntryPoint::GLPopGroupMarkerEXT)));
5853 if (isCallValid)
5854 {
5855 context->popGroupMarker();
5856 }
5857 ANGLE_CAPTURE_GL(PopGroupMarkerEXT, isCallValid, context);
5858 }
5859 else
5860 {
5861 GenerateContextLostErrorOnCurrentGlobalContext();
5862 }
5863 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
5864 }
5865
GL_PushGroupMarkerEXT(GLsizei length,const GLchar * marker)5866 void GL_APIENTRY GL_PushGroupMarkerEXT(GLsizei length, const GLchar *marker)
5867 {
5868 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
5869 Context *context = GetValidGlobalContext();
5870 // Don't run the EVENT() macro on the EXT_debug_marker entry points.
5871 // It can interfere with the debug events being set by the caller.
5872 // EVENT(context, GLPushGroupMarkerEXT, "context = %d, length = %d, marker = 0x%016" PRIxPTR "",
5873 // CID(context), length, (uintptr_t)marker);
5874
5875 if (context)
5876 {
5877 SCOPED_SHARE_CONTEXT_LOCK(context);
5878 bool isCallValid =
5879 (context->skipValidation() ||
5880 (ValidatePixelLocalStorageInactive(context->getPrivateState(),
5881 context->getMutableErrorSetForValidation(),
5882 angle::EntryPoint::GLPushGroupMarkerEXT) &&
5883 ValidatePushGroupMarkerEXT(context, angle::EntryPoint::GLPushGroupMarkerEXT, length,
5884 marker)));
5885 if (isCallValid)
5886 {
5887 context->pushGroupMarker(length, marker);
5888 }
5889 ANGLE_CAPTURE_GL(PushGroupMarkerEXT, isCallValid, context, length, marker);
5890 }
5891 else
5892 {
5893 GenerateContextLostErrorOnCurrentGlobalContext();
5894 }
5895 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
5896 }
5897
5898 // GL_EXT_depth_clamp
5899
5900 // GL_EXT_discard_framebuffer
GL_DiscardFramebufferEXT(GLenum target,GLsizei numAttachments,const GLenum * attachments)5901 void GL_APIENTRY GL_DiscardFramebufferEXT(GLenum target,
5902 GLsizei numAttachments,
5903 const GLenum *attachments)
5904 {
5905 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
5906 Context *context = GetValidGlobalContext();
5907 EVENT(context, GLDiscardFramebufferEXT,
5908 "context = %d, target = %s, numAttachments = %d, attachments = 0x%016" PRIxPTR "",
5909 CID(context), GLenumToString(GLESEnum::FramebufferTarget, target), numAttachments,
5910 (uintptr_t)attachments);
5911
5912 if (context)
5913 {
5914 SCOPED_SHARE_CONTEXT_LOCK(context);
5915 bool isCallValid =
5916 (context->skipValidation() ||
5917 (ValidatePixelLocalStorageInactive(context->getPrivateState(),
5918 context->getMutableErrorSetForValidation(),
5919 angle::EntryPoint::GLDiscardFramebufferEXT) &&
5920 ValidateDiscardFramebufferEXT(context, angle::EntryPoint::GLDiscardFramebufferEXT,
5921 target, numAttachments, attachments)));
5922 if (isCallValid)
5923 {
5924 context->discardFramebuffer(target, numAttachments, attachments);
5925 }
5926 ANGLE_CAPTURE_GL(DiscardFramebufferEXT, isCallValid, context, target, numAttachments,
5927 attachments);
5928 }
5929 else
5930 {
5931 GenerateContextLostErrorOnCurrentGlobalContext();
5932 }
5933 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
5934 }
5935
5936 // GL_EXT_disjoint_timer_query
GL_BeginQueryEXT(GLenum target,GLuint id)5937 void GL_APIENTRY GL_BeginQueryEXT(GLenum target, GLuint id)
5938 {
5939 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
5940 Context *context = GetValidGlobalContext();
5941 EVENT(context, GLBeginQueryEXT, "context = %d, target = %s, id = %u", CID(context),
5942 GLenumToString(GLESEnum::QueryTarget, target), id);
5943
5944 if (context)
5945 {
5946 QueryType targetPacked = PackParam<QueryType>(target);
5947 QueryID idPacked = PackParam<QueryID>(id);
5948 SCOPED_SHARE_CONTEXT_LOCK(context);
5949 bool isCallValid =
5950 (context->skipValidation() ||
5951 (ValidatePixelLocalStorageInactive(context->getPrivateState(),
5952 context->getMutableErrorSetForValidation(),
5953 angle::EntryPoint::GLBeginQueryEXT) &&
5954 ValidateBeginQueryEXT(context, angle::EntryPoint::GLBeginQueryEXT, targetPacked,
5955 idPacked)));
5956 if (isCallValid)
5957 {
5958 context->beginQuery(targetPacked, idPacked);
5959 }
5960 ANGLE_CAPTURE_GL(BeginQueryEXT, isCallValid, context, targetPacked, idPacked);
5961 }
5962 else
5963 {
5964 GenerateContextLostErrorOnCurrentGlobalContext();
5965 }
5966 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
5967 }
5968
GL_DeleteQueriesEXT(GLsizei n,const GLuint * ids)5969 void GL_APIENTRY GL_DeleteQueriesEXT(GLsizei n, const GLuint *ids)
5970 {
5971 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
5972 Context *context = GetValidGlobalContext();
5973 EVENT(context, GLDeleteQueriesEXT, "context = %d, n = %d, ids = 0x%016" PRIxPTR "",
5974 CID(context), n, (uintptr_t)ids);
5975
5976 if (context)
5977 {
5978 const QueryID *idsPacked = PackParam<const QueryID *>(ids);
5979 SCOPED_SHARE_CONTEXT_LOCK(context);
5980 bool isCallValid = (context->skipValidation() ||
5981 ValidateDeleteQueriesEXT(context, angle::EntryPoint::GLDeleteQueriesEXT,
5982 n, idsPacked));
5983 if (isCallValid)
5984 {
5985 context->deleteQueries(n, idsPacked);
5986 }
5987 ANGLE_CAPTURE_GL(DeleteQueriesEXT, isCallValid, context, n, idsPacked);
5988 }
5989 else
5990 {
5991 GenerateContextLostErrorOnCurrentGlobalContext();
5992 }
5993 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
5994 }
5995
GL_EndQueryEXT(GLenum target)5996 void GL_APIENTRY GL_EndQueryEXT(GLenum target)
5997 {
5998 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
5999 Context *context = GetValidGlobalContext();
6000 EVENT(context, GLEndQueryEXT, "context = %d, target = %s", CID(context),
6001 GLenumToString(GLESEnum::QueryTarget, target));
6002
6003 if (context)
6004 {
6005 QueryType targetPacked = PackParam<QueryType>(target);
6006 SCOPED_SHARE_CONTEXT_LOCK(context);
6007 bool isCallValid =
6008 (context->skipValidation() ||
6009 (ValidatePixelLocalStorageInactive(context->getPrivateState(),
6010 context->getMutableErrorSetForValidation(),
6011 angle::EntryPoint::GLEndQueryEXT) &&
6012 ValidateEndQueryEXT(context, angle::EntryPoint::GLEndQueryEXT, targetPacked)));
6013 if (isCallValid)
6014 {
6015 context->endQuery(targetPacked);
6016 }
6017 ANGLE_CAPTURE_GL(EndQueryEXT, isCallValid, context, targetPacked);
6018 }
6019 else
6020 {
6021 GenerateContextLostErrorOnCurrentGlobalContext();
6022 }
6023 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
6024 }
6025
GL_GenQueriesEXT(GLsizei n,GLuint * ids)6026 void GL_APIENTRY GL_GenQueriesEXT(GLsizei n, GLuint *ids)
6027 {
6028 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
6029 Context *context = GetValidGlobalContext();
6030 EVENT(context, GLGenQueriesEXT, "context = %d, n = %d, ids = 0x%016" PRIxPTR "", CID(context),
6031 n, (uintptr_t)ids);
6032
6033 if (context)
6034 {
6035 QueryID *idsPacked = PackParam<QueryID *>(ids);
6036 SCOPED_SHARE_CONTEXT_LOCK(context);
6037 bool isCallValid =
6038 (context->skipValidation() ||
6039 ValidateGenQueriesEXT(context, angle::EntryPoint::GLGenQueriesEXT, n, idsPacked));
6040 if (isCallValid)
6041 {
6042 context->genQueries(n, idsPacked);
6043 }
6044 ANGLE_CAPTURE_GL(GenQueriesEXT, isCallValid, context, n, idsPacked);
6045 }
6046 else
6047 {
6048 GenerateContextLostErrorOnCurrentGlobalContext();
6049 }
6050 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
6051 }
6052
GL_GetInteger64vEXT(GLenum pname,GLint64 * data)6053 void GL_APIENTRY GL_GetInteger64vEXT(GLenum pname, GLint64 *data)
6054 {
6055 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
6056 Context *context = GetValidGlobalContext();
6057 EVENT(context, GLGetInteger64vEXT, "context = %d, pname = %s, data = 0x%016" PRIxPTR "",
6058 CID(context), GLenumToString(GLESEnum::GetPName, pname), (uintptr_t)data);
6059
6060 if (context)
6061 {
6062 SCOPED_SHARE_CONTEXT_LOCK(context);
6063 bool isCallValid =
6064 (context->skipValidation() ||
6065 ValidateGetInteger64vEXT(context, angle::EntryPoint::GLGetInteger64vEXT, pname, data));
6066 if (isCallValid)
6067 {
6068 context->getInteger64v(pname, data);
6069 }
6070 ANGLE_CAPTURE_GL(GetInteger64vEXT, isCallValid, context, pname, data);
6071 }
6072 else
6073 {
6074 GenerateContextLostErrorOnCurrentGlobalContext();
6075 }
6076 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
6077 }
6078
GL_GetQueryObjecti64vEXT(GLuint id,GLenum pname,GLint64 * params)6079 void GL_APIENTRY GL_GetQueryObjecti64vEXT(GLuint id, GLenum pname, GLint64 *params)
6080 {
6081 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
6082 Context *context = GetGlobalContext();
6083 EVENT(context, GLGetQueryObjecti64vEXT,
6084 "context = %d, id = %u, pname = %s, params = 0x%016" PRIxPTR "", CID(context), id,
6085 GLenumToString(GLESEnum::QueryObjectParameterName, pname), (uintptr_t)params);
6086
6087 if (context)
6088 {
6089 QueryID idPacked = PackParam<QueryID>(id);
6090 SCOPED_SHARE_CONTEXT_LOCK(context);
6091 bool isCallValid =
6092 (context->skipValidation() ||
6093 ValidateGetQueryObjecti64vEXT(context, angle::EntryPoint::GLGetQueryObjecti64vEXT,
6094 idPacked, pname, params));
6095 if (isCallValid)
6096 {
6097 context->getQueryObjecti64v(idPacked, pname, params);
6098 }
6099 ANGLE_CAPTURE_GL(GetQueryObjecti64vEXT, isCallValid, context, idPacked, pname, params);
6100 }
6101 else
6102 {
6103 }
6104 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
6105 }
6106
GL_GetQueryObjectivEXT(GLuint id,GLenum pname,GLint * params)6107 void GL_APIENTRY GL_GetQueryObjectivEXT(GLuint id, GLenum pname, GLint *params)
6108 {
6109 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
6110 Context *context = GetGlobalContext();
6111 EVENT(context, GLGetQueryObjectivEXT,
6112 "context = %d, id = %u, pname = %s, params = 0x%016" PRIxPTR "", CID(context), id,
6113 GLenumToString(GLESEnum::QueryObjectParameterName, pname), (uintptr_t)params);
6114
6115 if (context)
6116 {
6117 QueryID idPacked = PackParam<QueryID>(id);
6118 SCOPED_SHARE_CONTEXT_LOCK(context);
6119 bool isCallValid =
6120 (context->skipValidation() ||
6121 ValidateGetQueryObjectivEXT(context, angle::EntryPoint::GLGetQueryObjectivEXT,
6122 idPacked, pname, params));
6123 if (isCallValid)
6124 {
6125 context->getQueryObjectiv(idPacked, pname, params);
6126 }
6127 ANGLE_CAPTURE_GL(GetQueryObjectivEXT, isCallValid, context, idPacked, pname, params);
6128 }
6129 else
6130 {
6131 }
6132 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
6133 }
6134
GL_GetQueryObjectui64vEXT(GLuint id,GLenum pname,GLuint64 * params)6135 void GL_APIENTRY GL_GetQueryObjectui64vEXT(GLuint id, GLenum pname, GLuint64 *params)
6136 {
6137 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
6138 Context *context = GetValidGlobalContext();
6139 EVENT(context, GLGetQueryObjectui64vEXT,
6140 "context = %d, id = %u, pname = %s, params = 0x%016" PRIxPTR "", CID(context), id,
6141 GLenumToString(GLESEnum::QueryObjectParameterName, pname), (uintptr_t)params);
6142
6143 if (context)
6144 {
6145 QueryID idPacked = PackParam<QueryID>(id);
6146 SCOPED_SHARE_CONTEXT_LOCK(context);
6147 bool isCallValid =
6148 (context->skipValidation() ||
6149 ValidateGetQueryObjectui64vEXT(context, angle::EntryPoint::GLGetQueryObjectui64vEXT,
6150 idPacked, pname, params));
6151 if (isCallValid)
6152 {
6153 context->getQueryObjectui64v(idPacked, pname, params);
6154 }
6155 ANGLE_CAPTURE_GL(GetQueryObjectui64vEXT, isCallValid, context, idPacked, pname, params);
6156 }
6157 else
6158 {
6159 GenerateContextLostErrorOnCurrentGlobalContext();
6160 }
6161 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
6162 }
6163
GL_GetQueryObjectuivEXT(GLuint id,GLenum pname,GLuint * params)6164 void GL_APIENTRY GL_GetQueryObjectuivEXT(GLuint id, GLenum pname, GLuint *params)
6165 {
6166 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
6167 Context *context = GetValidGlobalContext();
6168 EVENT(context, GLGetQueryObjectuivEXT,
6169 "context = %d, id = %u, pname = %s, params = 0x%016" PRIxPTR "", CID(context), id,
6170 GLenumToString(GLESEnum::QueryObjectParameterName, pname), (uintptr_t)params);
6171
6172 if (context)
6173 {
6174 QueryID idPacked = PackParam<QueryID>(id);
6175 SCOPED_SHARE_CONTEXT_LOCK(context);
6176 bool isCallValid =
6177 (context->skipValidation() ||
6178 ValidateGetQueryObjectuivEXT(context, angle::EntryPoint::GLGetQueryObjectuivEXT,
6179 idPacked, pname, params));
6180 if (isCallValid)
6181 {
6182 context->getQueryObjectuiv(idPacked, pname, params);
6183 }
6184 ANGLE_CAPTURE_GL(GetQueryObjectuivEXT, isCallValid, context, idPacked, pname, params);
6185 }
6186 else
6187 {
6188 GenerateContextLostErrorOnCurrentGlobalContext();
6189 }
6190 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
6191 }
6192
GL_GetQueryivEXT(GLenum target,GLenum pname,GLint * params)6193 void GL_APIENTRY GL_GetQueryivEXT(GLenum target, GLenum pname, GLint *params)
6194 {
6195 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
6196 Context *context = GetValidGlobalContext();
6197 EVENT(context, GLGetQueryivEXT,
6198 "context = %d, target = %s, pname = %s, params = 0x%016" PRIxPTR "", CID(context),
6199 GLenumToString(GLESEnum::QueryTarget, target),
6200 GLenumToString(GLESEnum::QueryParameterName, pname), (uintptr_t)params);
6201
6202 if (context)
6203 {
6204 QueryType targetPacked = PackParam<QueryType>(target);
6205 SCOPED_SHARE_CONTEXT_LOCK(context);
6206 bool isCallValid = (context->skipValidation() ||
6207 ValidateGetQueryivEXT(context, angle::EntryPoint::GLGetQueryivEXT,
6208 targetPacked, pname, params));
6209 if (isCallValid)
6210 {
6211 context->getQueryiv(targetPacked, pname, params);
6212 }
6213 ANGLE_CAPTURE_GL(GetQueryivEXT, isCallValid, context, targetPacked, pname, params);
6214 }
6215 else
6216 {
6217 GenerateContextLostErrorOnCurrentGlobalContext();
6218 }
6219 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
6220 }
6221
GL_IsQueryEXT(GLuint id)6222 GLboolean GL_APIENTRY GL_IsQueryEXT(GLuint id)
6223 {
6224 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
6225 Context *context = GetValidGlobalContext();
6226 EVENT(context, GLIsQueryEXT, "context = %d, id = %u", CID(context), id);
6227
6228 GLboolean returnValue;
6229 if (context)
6230 {
6231 QueryID idPacked = PackParam<QueryID>(id);
6232 SCOPED_SHARE_CONTEXT_LOCK(context);
6233 bool isCallValid = (context->skipValidation() ||
6234 ValidateIsQueryEXT(context, angle::EntryPoint::GLIsQueryEXT, idPacked));
6235 if (isCallValid)
6236 {
6237 returnValue = context->isQuery(idPacked);
6238 }
6239 else
6240 {
6241 returnValue = GetDefaultReturnValue<angle::EntryPoint::GLIsQueryEXT, GLboolean>();
6242 }
6243 ANGLE_CAPTURE_GL(IsQueryEXT, isCallValid, context, idPacked, returnValue);
6244 }
6245 else
6246 {
6247 GenerateContextLostErrorOnCurrentGlobalContext();
6248 returnValue = GetDefaultReturnValue<angle::EntryPoint::GLIsQueryEXT, GLboolean>();
6249 }
6250 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
6251 return returnValue;
6252 }
6253
GL_QueryCounterEXT(GLuint id,GLenum target)6254 void GL_APIENTRY GL_QueryCounterEXT(GLuint id, GLenum target)
6255 {
6256 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
6257 Context *context = GetValidGlobalContext();
6258 EVENT(context, GLQueryCounterEXT, "context = %d, id = %u, target = %s", CID(context), id,
6259 GLenumToString(GLESEnum::QueryCounterTarget, target));
6260
6261 if (context)
6262 {
6263 QueryID idPacked = PackParam<QueryID>(id);
6264 QueryType targetPacked = PackParam<QueryType>(target);
6265 SCOPED_SHARE_CONTEXT_LOCK(context);
6266 bool isCallValid =
6267 (context->skipValidation() ||
6268 (ValidatePixelLocalStorageInactive(context->getPrivateState(),
6269 context->getMutableErrorSetForValidation(),
6270 angle::EntryPoint::GLQueryCounterEXT) &&
6271 ValidateQueryCounterEXT(context, angle::EntryPoint::GLQueryCounterEXT, idPacked,
6272 targetPacked)));
6273 if (isCallValid)
6274 {
6275 context->queryCounter(idPacked, targetPacked);
6276 }
6277 ANGLE_CAPTURE_GL(QueryCounterEXT, isCallValid, context, idPacked, targetPacked);
6278 }
6279 else
6280 {
6281 GenerateContextLostErrorOnCurrentGlobalContext();
6282 }
6283 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
6284 }
6285
6286 // GL_EXT_draw_buffers
GL_DrawBuffersEXT(GLsizei n,const GLenum * bufs)6287 void GL_APIENTRY GL_DrawBuffersEXT(GLsizei n, const GLenum *bufs)
6288 {
6289 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
6290 Context *context = GetValidGlobalContext();
6291 EVENT(context, GLDrawBuffersEXT, "context = %d, n = %d, bufs = 0x%016" PRIxPTR "", CID(context),
6292 n, (uintptr_t)bufs);
6293
6294 if (context)
6295 {
6296 SCOPED_SHARE_CONTEXT_LOCK(context);
6297 bool isCallValid =
6298 (context->skipValidation() ||
6299 (ValidatePixelLocalStorageInactive(context->getPrivateState(),
6300 context->getMutableErrorSetForValidation(),
6301 angle::EntryPoint::GLDrawBuffersEXT) &&
6302 ValidateDrawBuffersEXT(context, angle::EntryPoint::GLDrawBuffersEXT, n, bufs)));
6303 if (isCallValid)
6304 {
6305 context->drawBuffers(n, bufs);
6306 }
6307 ANGLE_CAPTURE_GL(DrawBuffersEXT, isCallValid, context, n, bufs);
6308 }
6309 else
6310 {
6311 GenerateContextLostErrorOnCurrentGlobalContext();
6312 }
6313 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
6314 }
6315
6316 // GL_EXT_draw_buffers_indexed
GL_BlendEquationSeparateiEXT(GLuint buf,GLenum modeRGB,GLenum modeAlpha)6317 void GL_APIENTRY GL_BlendEquationSeparateiEXT(GLuint buf, GLenum modeRGB, GLenum modeAlpha)
6318 {
6319 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
6320 Context *context = GetValidGlobalContext();
6321 EVENT(context, GLBlendEquationSeparateiEXT,
6322 "context = %d, buf = %u, modeRGB = %s, modeAlpha = %s", CID(context), buf,
6323 GLenumToString(GLESEnum::BlendEquationModeEXT, modeRGB),
6324 GLenumToString(GLESEnum::BlendEquationModeEXT, modeAlpha));
6325
6326 if (context)
6327 {
6328 bool isCallValid =
6329 (context->skipValidation() ||
6330 ValidateBlendEquationSeparateiEXT(
6331 context->getPrivateState(), context->getMutableErrorSetForValidation(),
6332 angle::EntryPoint::GLBlendEquationSeparateiEXT, buf, modeRGB, modeAlpha));
6333 if (isCallValid)
6334 {
6335 ContextPrivateBlendEquationSeparatei(context->getMutablePrivateState(),
6336 context->getMutablePrivateStateCache(), buf,
6337 modeRGB, modeAlpha);
6338 }
6339 ANGLE_CAPTURE_GL(BlendEquationSeparateiEXT, isCallValid, context, buf, modeRGB, modeAlpha);
6340 }
6341 else
6342 {
6343 GenerateContextLostErrorOnCurrentGlobalContext();
6344 }
6345 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
6346 }
6347
GL_BlendEquationiEXT(GLuint buf,GLenum mode)6348 void GL_APIENTRY GL_BlendEquationiEXT(GLuint buf, GLenum mode)
6349 {
6350 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
6351 Context *context = GetValidGlobalContext();
6352 EVENT(context, GLBlendEquationiEXT, "context = %d, buf = %u, mode = %s", CID(context), buf,
6353 GLenumToString(GLESEnum::BlendEquationModeEXT, mode));
6354
6355 if (context)
6356 {
6357 bool isCallValid =
6358 (context->skipValidation() ||
6359 ValidateBlendEquationiEXT(context->getPrivateState(),
6360 context->getMutableErrorSetForValidation(),
6361 angle::EntryPoint::GLBlendEquationiEXT, buf, mode));
6362 if (isCallValid)
6363 {
6364 ContextPrivateBlendEquationi(context->getMutablePrivateState(),
6365 context->getMutablePrivateStateCache(), buf, mode);
6366 }
6367 ANGLE_CAPTURE_GL(BlendEquationiEXT, isCallValid, context, buf, mode);
6368 }
6369 else
6370 {
6371 GenerateContextLostErrorOnCurrentGlobalContext();
6372 }
6373 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
6374 }
6375
6376 void GL_APIENTRY
GL_BlendFuncSeparateiEXT(GLuint buf,GLenum srcRGB,GLenum dstRGB,GLenum srcAlpha,GLenum dstAlpha)6377 GL_BlendFuncSeparateiEXT(GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha)
6378 {
6379 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
6380 Context *context = GetValidGlobalContext();
6381 EVENT(context, GLBlendFuncSeparateiEXT,
6382 "context = %d, buf = %u, srcRGB = %s, dstRGB = %s, srcAlpha = %s, dstAlpha = %s",
6383 CID(context), buf, GLenumToString(GLESEnum::BlendingFactor, srcRGB),
6384 GLenumToString(GLESEnum::BlendingFactor, dstRGB),
6385 GLenumToString(GLESEnum::BlendingFactor, srcAlpha),
6386 GLenumToString(GLESEnum::BlendingFactor, dstAlpha));
6387
6388 if (context)
6389 {
6390 bool isCallValid =
6391 (context->skipValidation() ||
6392 ValidateBlendFuncSeparateiEXT(context->getPrivateState(),
6393 context->getMutableErrorSetForValidation(),
6394 angle::EntryPoint::GLBlendFuncSeparateiEXT, buf, srcRGB,
6395 dstRGB, srcAlpha, dstAlpha));
6396 if (isCallValid)
6397 {
6398 ContextPrivateBlendFuncSeparatei(context->getMutablePrivateState(),
6399 context->getMutablePrivateStateCache(), buf, srcRGB,
6400 dstRGB, srcAlpha, dstAlpha);
6401 }
6402 ANGLE_CAPTURE_GL(BlendFuncSeparateiEXT, isCallValid, context, buf, srcRGB, dstRGB, srcAlpha,
6403 dstAlpha);
6404 }
6405 else
6406 {
6407 GenerateContextLostErrorOnCurrentGlobalContext();
6408 }
6409 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
6410 }
6411
GL_BlendFunciEXT(GLuint buf,GLenum src,GLenum dst)6412 void GL_APIENTRY GL_BlendFunciEXT(GLuint buf, GLenum src, GLenum dst)
6413 {
6414 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
6415 Context *context = GetValidGlobalContext();
6416 EVENT(context, GLBlendFunciEXT, "context = %d, buf = %u, src = %s, dst = %s", CID(context), buf,
6417 GLenumToString(GLESEnum::BlendingFactor, src),
6418 GLenumToString(GLESEnum::BlendingFactor, dst));
6419
6420 if (context)
6421 {
6422 bool isCallValid =
6423 (context->skipValidation() ||
6424 ValidateBlendFunciEXT(context->getPrivateState(),
6425 context->getMutableErrorSetForValidation(),
6426 angle::EntryPoint::GLBlendFunciEXT, buf, src, dst));
6427 if (isCallValid)
6428 {
6429 ContextPrivateBlendFunci(context->getMutablePrivateState(),
6430 context->getMutablePrivateStateCache(), buf, src, dst);
6431 }
6432 ANGLE_CAPTURE_GL(BlendFunciEXT, isCallValid, context, buf, src, dst);
6433 }
6434 else
6435 {
6436 GenerateContextLostErrorOnCurrentGlobalContext();
6437 }
6438 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
6439 }
6440
GL_ColorMaskiEXT(GLuint index,GLboolean r,GLboolean g,GLboolean b,GLboolean a)6441 void GL_APIENTRY GL_ColorMaskiEXT(GLuint index, GLboolean r, GLboolean g, GLboolean b, GLboolean a)
6442 {
6443 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
6444 Context *context = GetValidGlobalContext();
6445 EVENT(context, GLColorMaskiEXT, "context = %d, index = %u, r = %s, g = %s, b = %s, a = %s",
6446 CID(context), index, GLbooleanToString(r), GLbooleanToString(g), GLbooleanToString(b),
6447 GLbooleanToString(a));
6448
6449 if (context)
6450 {
6451 bool isCallValid =
6452 (context->skipValidation() ||
6453 ValidateColorMaskiEXT(context->getPrivateState(),
6454 context->getMutableErrorSetForValidation(),
6455 angle::EntryPoint::GLColorMaskiEXT, index, r, g, b, a));
6456 if (isCallValid)
6457 {
6458 ContextPrivateColorMaski(context->getMutablePrivateState(),
6459 context->getMutablePrivateStateCache(), index, r, g, b, a);
6460 }
6461 ANGLE_CAPTURE_GL(ColorMaskiEXT, isCallValid, context, index, r, g, b, a);
6462 }
6463 else
6464 {
6465 GenerateContextLostErrorOnCurrentGlobalContext();
6466 }
6467 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
6468 }
6469
GL_DisableiEXT(GLenum target,GLuint index)6470 void GL_APIENTRY GL_DisableiEXT(GLenum target, GLuint index)
6471 {
6472 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
6473 Context *context = GetValidGlobalContext();
6474 EVENT(context, GLDisableiEXT, "context = %d, target = %s, index = %u", CID(context),
6475 GLenumToString(GLESEnum::EnableCap, target), index);
6476
6477 if (context)
6478 {
6479 bool isCallValid = (context->skipValidation() ||
6480 ValidateDisableiEXT(context->getPrivateState(),
6481 context->getMutableErrorSetForValidation(),
6482 angle::EntryPoint::GLDisableiEXT, target, index));
6483 if (isCallValid)
6484 {
6485 ContextPrivateDisablei(context->getMutablePrivateState(),
6486 context->getMutablePrivateStateCache(), target, index);
6487 }
6488 ANGLE_CAPTURE_GL(DisableiEXT, isCallValid, context, target, index);
6489 }
6490 else
6491 {
6492 GenerateContextLostErrorOnCurrentGlobalContext();
6493 }
6494 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
6495 }
6496
GL_EnableiEXT(GLenum target,GLuint index)6497 void GL_APIENTRY GL_EnableiEXT(GLenum target, GLuint index)
6498 {
6499 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
6500 Context *context = GetValidGlobalContext();
6501 EVENT(context, GLEnableiEXT, "context = %d, target = %s, index = %u", CID(context),
6502 GLenumToString(GLESEnum::EnableCap, target), index);
6503
6504 if (context)
6505 {
6506 bool isCallValid = (context->skipValidation() ||
6507 ValidateEnableiEXT(context->getPrivateState(),
6508 context->getMutableErrorSetForValidation(),
6509 angle::EntryPoint::GLEnableiEXT, target, index));
6510 if (isCallValid)
6511 {
6512 ContextPrivateEnablei(context->getMutablePrivateState(),
6513 context->getMutablePrivateStateCache(), target, index);
6514 }
6515 ANGLE_CAPTURE_GL(EnableiEXT, isCallValid, context, target, index);
6516 }
6517 else
6518 {
6519 GenerateContextLostErrorOnCurrentGlobalContext();
6520 }
6521 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
6522 }
6523
GL_IsEnablediEXT(GLenum target,GLuint index)6524 GLboolean GL_APIENTRY GL_IsEnablediEXT(GLenum target, GLuint index)
6525 {
6526 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
6527 Context *context = GetValidGlobalContext();
6528 EVENT(context, GLIsEnablediEXT, "context = %d, target = %s, index = %u", CID(context),
6529 GLenumToString(GLESEnum::EnableCap, target), index);
6530
6531 GLboolean returnValue;
6532 if (context)
6533 {
6534 bool isCallValid =
6535 (context->skipValidation() ||
6536 ValidateIsEnablediEXT(context->getPrivateState(),
6537 context->getMutableErrorSetForValidation(),
6538 angle::EntryPoint::GLIsEnablediEXT, target, index));
6539 if (isCallValid)
6540 {
6541 returnValue =
6542 ContextPrivateIsEnabledi(context->getMutablePrivateState(),
6543 context->getMutablePrivateStateCache(), target, index);
6544 }
6545 else
6546 {
6547 returnValue = GetDefaultReturnValue<angle::EntryPoint::GLIsEnablediEXT, GLboolean>();
6548 }
6549 ANGLE_CAPTURE_GL(IsEnablediEXT, isCallValid, context, target, index, returnValue);
6550 }
6551 else
6552 {
6553 GenerateContextLostErrorOnCurrentGlobalContext();
6554 returnValue = GetDefaultReturnValue<angle::EntryPoint::GLIsEnablediEXT, GLboolean>();
6555 }
6556 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
6557 return returnValue;
6558 }
6559
6560 // GL_EXT_draw_elements_base_vertex
GL_DrawElementsBaseVertexEXT(GLenum mode,GLsizei count,GLenum type,const void * indices,GLint basevertex)6561 void GL_APIENTRY GL_DrawElementsBaseVertexEXT(GLenum mode,
6562 GLsizei count,
6563 GLenum type,
6564 const void *indices,
6565 GLint basevertex)
6566 {
6567 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
6568 Context *context = GetValidGlobalContext();
6569 EVENT(context, GLDrawElementsBaseVertexEXT,
6570 "context = %d, mode = %s, count = %d, type = %s, indices = 0x%016" PRIxPTR
6571 ", basevertex = %d",
6572 CID(context), GLenumToString(GLESEnum::PrimitiveType, mode), count,
6573 GLenumToString(GLESEnum::DrawElementsType, type), (uintptr_t)indices, basevertex);
6574
6575 if (context)
6576 {
6577 PrimitiveMode modePacked = PackParam<PrimitiveMode>(mode);
6578 DrawElementsType typePacked = PackParam<DrawElementsType>(type);
6579 SCOPED_SHARE_CONTEXT_LOCK(context);
6580 bool isCallValid = (context->skipValidation() ||
6581 ValidateDrawElementsBaseVertexEXT(
6582 context, angle::EntryPoint::GLDrawElementsBaseVertexEXT, modePacked,
6583 count, typePacked, indices, basevertex));
6584 if (isCallValid)
6585 {
6586 context->drawElementsBaseVertex(modePacked, count, typePacked, indices, basevertex);
6587 }
6588 ANGLE_CAPTURE_GL(DrawElementsBaseVertexEXT, isCallValid, context, modePacked, count,
6589 typePacked, indices, basevertex);
6590 }
6591 else
6592 {
6593 GenerateContextLostErrorOnCurrentGlobalContext();
6594 }
6595 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
6596 }
6597
GL_DrawElementsInstancedBaseVertexEXT(GLenum mode,GLsizei count,GLenum type,const void * indices,GLsizei instancecount,GLint basevertex)6598 void GL_APIENTRY GL_DrawElementsInstancedBaseVertexEXT(GLenum mode,
6599 GLsizei count,
6600 GLenum type,
6601 const void *indices,
6602 GLsizei instancecount,
6603 GLint basevertex)
6604 {
6605 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
6606 Context *context = GetValidGlobalContext();
6607 EVENT(context, GLDrawElementsInstancedBaseVertexEXT,
6608 "context = %d, mode = %s, count = %d, type = %s, indices = 0x%016" PRIxPTR
6609 ", instancecount = %d, basevertex = %d",
6610 CID(context), GLenumToString(GLESEnum::PrimitiveType, mode), count,
6611 GLenumToString(GLESEnum::DrawElementsType, type), (uintptr_t)indices, instancecount,
6612 basevertex);
6613
6614 if (context)
6615 {
6616 PrimitiveMode modePacked = PackParam<PrimitiveMode>(mode);
6617 DrawElementsType typePacked = PackParam<DrawElementsType>(type);
6618 SCOPED_SHARE_CONTEXT_LOCK(context);
6619 bool isCallValid = (context->skipValidation() ||
6620 ValidateDrawElementsInstancedBaseVertexEXT(
6621 context, angle::EntryPoint::GLDrawElementsInstancedBaseVertexEXT,
6622 modePacked, count, typePacked, indices, instancecount, basevertex));
6623 if (isCallValid)
6624 {
6625 context->drawElementsInstancedBaseVertex(modePacked, count, typePacked, indices,
6626 instancecount, basevertex);
6627 }
6628 ANGLE_CAPTURE_GL(DrawElementsInstancedBaseVertexEXT, isCallValid, context, modePacked,
6629 count, typePacked, indices, instancecount, basevertex);
6630 }
6631 else
6632 {
6633 GenerateContextLostErrorOnCurrentGlobalContext();
6634 }
6635 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
6636 }
6637
GL_DrawRangeElementsBaseVertexEXT(GLenum mode,GLuint start,GLuint end,GLsizei count,GLenum type,const void * indices,GLint basevertex)6638 void GL_APIENTRY GL_DrawRangeElementsBaseVertexEXT(GLenum mode,
6639 GLuint start,
6640 GLuint end,
6641 GLsizei count,
6642 GLenum type,
6643 const void *indices,
6644 GLint basevertex)
6645 {
6646 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
6647 Context *context = GetValidGlobalContext();
6648 EVENT(context, GLDrawRangeElementsBaseVertexEXT,
6649 "context = %d, mode = %s, start = %u, end = %u, count = %d, type = %s, indices = "
6650 "0x%016" PRIxPTR ", basevertex = %d",
6651 CID(context), GLenumToString(GLESEnum::PrimitiveType, mode), start, end, count,
6652 GLenumToString(GLESEnum::DrawElementsType, type), (uintptr_t)indices, basevertex);
6653
6654 if (context)
6655 {
6656 PrimitiveMode modePacked = PackParam<PrimitiveMode>(mode);
6657 DrawElementsType typePacked = PackParam<DrawElementsType>(type);
6658 SCOPED_SHARE_CONTEXT_LOCK(context);
6659 bool isCallValid = (context->skipValidation() ||
6660 ValidateDrawRangeElementsBaseVertexEXT(
6661 context, angle::EntryPoint::GLDrawRangeElementsBaseVertexEXT,
6662 modePacked, start, end, count, typePacked, indices, basevertex));
6663 if (isCallValid)
6664 {
6665 context->drawRangeElementsBaseVertex(modePacked, start, end, count, typePacked, indices,
6666 basevertex);
6667 }
6668 ANGLE_CAPTURE_GL(DrawRangeElementsBaseVertexEXT, isCallValid, context, modePacked, start,
6669 end, count, typePacked, indices, basevertex);
6670 }
6671 else
6672 {
6673 GenerateContextLostErrorOnCurrentGlobalContext();
6674 }
6675 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
6676 }
6677
GL_MultiDrawElementsBaseVertexEXT(GLenum mode,const GLsizei * count,GLenum type,const void * const * indices,GLsizei drawcount,const GLint * basevertex)6678 void GL_APIENTRY GL_MultiDrawElementsBaseVertexEXT(GLenum mode,
6679 const GLsizei *count,
6680 GLenum type,
6681 const void *const *indices,
6682 GLsizei drawcount,
6683 const GLint *basevertex)
6684 {
6685 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
6686 Context *context = GetValidGlobalContext();
6687 EVENT(context, GLMultiDrawElementsBaseVertexEXT,
6688 "context = %d, mode = %s, count = 0x%016" PRIxPTR ", type = %s, indices = 0x%016" PRIxPTR
6689 ", drawcount = %d, basevertex = 0x%016" PRIxPTR "",
6690 CID(context), GLenumToString(GLESEnum::PrimitiveType, mode), (uintptr_t)count,
6691 GLenumToString(GLESEnum::DrawElementsType, type), (uintptr_t)indices, drawcount,
6692 (uintptr_t)basevertex);
6693
6694 if (context)
6695 {
6696 PrimitiveMode modePacked = PackParam<PrimitiveMode>(mode);
6697 DrawElementsType typePacked = PackParam<DrawElementsType>(type);
6698 SCOPED_SHARE_CONTEXT_LOCK(context);
6699 bool isCallValid =
6700 (context->skipValidation() ||
6701 (ValidatePixelLocalStorageInactive(
6702 context->getPrivateState(), context->getMutableErrorSetForValidation(),
6703 angle::EntryPoint::GLMultiDrawElementsBaseVertexEXT) &&
6704 ValidateMultiDrawElementsBaseVertexEXT(
6705 context, angle::EntryPoint::GLMultiDrawElementsBaseVertexEXT, modePacked, count,
6706 typePacked, indices, drawcount, basevertex)));
6707 if (isCallValid)
6708 {
6709 context->multiDrawElementsBaseVertex(modePacked, count, typePacked, indices, drawcount,
6710 basevertex);
6711 }
6712 ANGLE_CAPTURE_GL(MultiDrawElementsBaseVertexEXT, isCallValid, context, modePacked, count,
6713 typePacked, indices, drawcount, basevertex);
6714 }
6715 else
6716 {
6717 GenerateContextLostErrorOnCurrentGlobalContext();
6718 }
6719 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
6720 }
6721
6722 // GL_EXT_external_buffer
GL_BufferStorageExternalEXT(GLenum target,GLintptr offset,GLsizeiptr size,GLeglClientBufferEXT clientBuffer,GLbitfield flags)6723 void GL_APIENTRY GL_BufferStorageExternalEXT(GLenum target,
6724 GLintptr offset,
6725 GLsizeiptr size,
6726 GLeglClientBufferEXT clientBuffer,
6727 GLbitfield flags)
6728 {
6729 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
6730 Context *context = GetValidGlobalContext();
6731 EVENT(context, GLBufferStorageExternalEXT,
6732 "context = %d, target = %s, offset = %llu, size = %llu, clientBuffer = 0x%016" PRIxPTR
6733 ", flags = %s",
6734 CID(context), GLenumToString(GLESEnum::AllEnums, target),
6735 static_cast<unsigned long long>(offset), static_cast<unsigned long long>(size),
6736 (uintptr_t)clientBuffer, GLbitfieldToString(GLESEnum::BufferStorageMask, flags).c_str());
6737
6738 if (context)
6739 {
6740 BufferBinding targetPacked = PackParam<BufferBinding>(target);
6741 SCOPED_SHARE_CONTEXT_LOCK(context);
6742 bool isCallValid =
6743 (context->skipValidation() ||
6744 (ValidatePixelLocalStorageInactive(context->getPrivateState(),
6745 context->getMutableErrorSetForValidation(),
6746 angle::EntryPoint::GLBufferStorageExternalEXT) &&
6747 ValidateBufferStorageExternalEXT(context,
6748 angle::EntryPoint::GLBufferStorageExternalEXT,
6749 targetPacked, offset, size, clientBuffer, flags)));
6750 if (isCallValid)
6751 {
6752 context->bufferStorageExternal(targetPacked, offset, size, clientBuffer, flags);
6753 }
6754 ANGLE_CAPTURE_GL(BufferStorageExternalEXT, isCallValid, context, targetPacked, offset, size,
6755 clientBuffer, flags);
6756 }
6757 else
6758 {
6759 GenerateContextLostErrorOnCurrentGlobalContext();
6760 }
6761 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
6762 }
6763
GL_NamedBufferStorageExternalEXT(GLuint buffer,GLintptr offset,GLsizeiptr size,GLeglClientBufferEXT clientBuffer,GLbitfield flags)6764 void GL_APIENTRY GL_NamedBufferStorageExternalEXT(GLuint buffer,
6765 GLintptr offset,
6766 GLsizeiptr size,
6767 GLeglClientBufferEXT clientBuffer,
6768 GLbitfield flags)
6769 {
6770 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
6771 Context *context = GetValidGlobalContext();
6772 EVENT(context, GLNamedBufferStorageExternalEXT,
6773 "context = %d, buffer = %u, offset = %llu, size = %llu, clientBuffer = 0x%016" PRIxPTR
6774 ", flags = %s",
6775 CID(context), buffer, static_cast<unsigned long long>(offset),
6776 static_cast<unsigned long long>(size), (uintptr_t)clientBuffer,
6777 GLbitfieldToString(GLESEnum::BufferStorageMask, flags).c_str());
6778
6779 if (context)
6780 {
6781 SCOPED_SHARE_CONTEXT_LOCK(context);
6782 bool isCallValid =
6783 (context->skipValidation() ||
6784 (ValidatePixelLocalStorageInactive(
6785 context->getPrivateState(), context->getMutableErrorSetForValidation(),
6786 angle::EntryPoint::GLNamedBufferStorageExternalEXT) &&
6787 ValidateNamedBufferStorageExternalEXT(
6788 context, angle::EntryPoint::GLNamedBufferStorageExternalEXT, buffer, offset, size,
6789 clientBuffer, flags)));
6790 if (isCallValid)
6791 {
6792 context->namedBufferStorageExternal(buffer, offset, size, clientBuffer, flags);
6793 }
6794 ANGLE_CAPTURE_GL(NamedBufferStorageExternalEXT, isCallValid, context, buffer, offset, size,
6795 clientBuffer, flags);
6796 }
6797 else
6798 {
6799 GenerateContextLostErrorOnCurrentGlobalContext();
6800 }
6801 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
6802 }
6803
6804 // GL_EXT_float_blend
6805
6806 // GL_EXT_geometry_shader
GL_FramebufferTextureEXT(GLenum target,GLenum attachment,GLuint texture,GLint level)6807 void GL_APIENTRY GL_FramebufferTextureEXT(GLenum target,
6808 GLenum attachment,
6809 GLuint texture,
6810 GLint level)
6811 {
6812 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
6813 Context *context = GetValidGlobalContext();
6814 EVENT(context, GLFramebufferTextureEXT,
6815 "context = %d, target = %s, attachment = %s, texture = %u, level = %d", CID(context),
6816 GLenumToString(GLESEnum::FramebufferTarget, target),
6817 GLenumToString(GLESEnum::FramebufferAttachment, attachment), texture, level);
6818
6819 if (context)
6820 {
6821 TextureID texturePacked = PackParam<TextureID>(texture);
6822 SCOPED_SHARE_CONTEXT_LOCK(context);
6823 bool isCallValid =
6824 (context->skipValidation() ||
6825 ValidateFramebufferTextureEXT(context, angle::EntryPoint::GLFramebufferTextureEXT,
6826 target, attachment, texturePacked, level));
6827 if (isCallValid)
6828 {
6829 context->framebufferTexture(target, attachment, texturePacked, level);
6830 }
6831 ANGLE_CAPTURE_GL(FramebufferTextureEXT, isCallValid, context, target, attachment,
6832 texturePacked, level);
6833 }
6834 else
6835 {
6836 GenerateContextLostErrorOnCurrentGlobalContext();
6837 }
6838 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
6839 }
6840
6841 // GL_EXT_gpu_shader5
6842
6843 // GL_EXT_instanced_arrays
GL_DrawArraysInstancedEXT(GLenum mode,GLint start,GLsizei count,GLsizei primcount)6844 void GL_APIENTRY GL_DrawArraysInstancedEXT(GLenum mode,
6845 GLint start,
6846 GLsizei count,
6847 GLsizei primcount)
6848 {
6849 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
6850 Context *context = GetValidGlobalContext();
6851 EVENT(context, GLDrawArraysInstancedEXT,
6852 "context = %d, mode = %s, start = %d, count = %d, primcount = %d", CID(context),
6853 GLenumToString(GLESEnum::PrimitiveType, mode), start, count, primcount);
6854
6855 if (context)
6856 {
6857 PrimitiveMode modePacked = PackParam<PrimitiveMode>(mode);
6858 SCOPED_SHARE_CONTEXT_LOCK(context);
6859 bool isCallValid =
6860 (context->skipValidation() ||
6861 ValidateDrawArraysInstancedEXT(context, angle::EntryPoint::GLDrawArraysInstancedEXT,
6862 modePacked, start, count, primcount));
6863 if (isCallValid)
6864 {
6865 context->drawArraysInstanced(modePacked, start, count, primcount);
6866 }
6867 ANGLE_CAPTURE_GL(DrawArraysInstancedEXT, isCallValid, context, modePacked, start, count,
6868 primcount);
6869 }
6870 else
6871 {
6872 GenerateContextLostErrorOnCurrentGlobalContext();
6873 }
6874 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
6875 }
6876
GL_DrawElementsInstancedEXT(GLenum mode,GLsizei count,GLenum type,const void * indices,GLsizei primcount)6877 void GL_APIENTRY GL_DrawElementsInstancedEXT(GLenum mode,
6878 GLsizei count,
6879 GLenum type,
6880 const void *indices,
6881 GLsizei primcount)
6882 {
6883 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
6884 Context *context = GetValidGlobalContext();
6885 EVENT(context, GLDrawElementsInstancedEXT,
6886 "context = %d, mode = %s, count = %d, type = %s, indices = 0x%016" PRIxPTR
6887 ", primcount = %d",
6888 CID(context), GLenumToString(GLESEnum::PrimitiveType, mode), count,
6889 GLenumToString(GLESEnum::DrawElementsType, type), (uintptr_t)indices, primcount);
6890
6891 if (context)
6892 {
6893 PrimitiveMode modePacked = PackParam<PrimitiveMode>(mode);
6894 DrawElementsType typePacked = PackParam<DrawElementsType>(type);
6895 SCOPED_SHARE_CONTEXT_LOCK(context);
6896 bool isCallValid = (context->skipValidation() ||
6897 ValidateDrawElementsInstancedEXT(
6898 context, angle::EntryPoint::GLDrawElementsInstancedEXT, modePacked,
6899 count, typePacked, indices, primcount));
6900 if (isCallValid)
6901 {
6902 context->drawElementsInstanced(modePacked, count, typePacked, indices, primcount);
6903 }
6904 ANGLE_CAPTURE_GL(DrawElementsInstancedEXT, isCallValid, context, modePacked, count,
6905 typePacked, indices, primcount);
6906 }
6907 else
6908 {
6909 GenerateContextLostErrorOnCurrentGlobalContext();
6910 }
6911 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
6912 }
6913
GL_VertexAttribDivisorEXT(GLuint index,GLuint divisor)6914 void GL_APIENTRY GL_VertexAttribDivisorEXT(GLuint index, GLuint divisor)
6915 {
6916 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
6917 Context *context = GetValidGlobalContext();
6918 EVENT(context, GLVertexAttribDivisorEXT, "context = %d, index = %u, divisor = %u", CID(context),
6919 index, divisor);
6920
6921 if (context)
6922 {
6923 SCOPED_SHARE_CONTEXT_LOCK(context);
6924 bool isCallValid =
6925 (context->skipValidation() ||
6926 ValidateVertexAttribDivisorEXT(context, angle::EntryPoint::GLVertexAttribDivisorEXT,
6927 index, divisor));
6928 if (isCallValid)
6929 {
6930 context->vertexAttribDivisor(index, divisor);
6931 }
6932 ANGLE_CAPTURE_GL(VertexAttribDivisorEXT, isCallValid, context, index, divisor);
6933 }
6934 else
6935 {
6936 GenerateContextLostErrorOnCurrentGlobalContext();
6937 }
6938 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
6939 }
6940
6941 // GL_EXT_map_buffer_range
GL_FlushMappedBufferRangeEXT(GLenum target,GLintptr offset,GLsizeiptr length)6942 void GL_APIENTRY GL_FlushMappedBufferRangeEXT(GLenum target, GLintptr offset, GLsizeiptr length)
6943 {
6944 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
6945 Context *context = GetValidGlobalContext();
6946 EVENT(context, GLFlushMappedBufferRangeEXT,
6947 "context = %d, target = %s, offset = %llu, length = %llu", CID(context),
6948 GLenumToString(GLESEnum::BufferTargetARB, target),
6949 static_cast<unsigned long long>(offset), static_cast<unsigned long long>(length));
6950
6951 if (context)
6952 {
6953 BufferBinding targetPacked = PackParam<BufferBinding>(target);
6954 SCOPED_SHARE_CONTEXT_LOCK(context);
6955 bool isCallValid =
6956 (context->skipValidation() ||
6957 (ValidatePixelLocalStorageInactive(context->getPrivateState(),
6958 context->getMutableErrorSetForValidation(),
6959 angle::EntryPoint::GLFlushMappedBufferRangeEXT) &&
6960 ValidateFlushMappedBufferRangeEXT(context,
6961 angle::EntryPoint::GLFlushMappedBufferRangeEXT,
6962 targetPacked, offset, length)));
6963 if (isCallValid)
6964 {
6965 context->flushMappedBufferRange(targetPacked, offset, length);
6966 }
6967 ANGLE_CAPTURE_GL(FlushMappedBufferRangeEXT, isCallValid, context, targetPacked, offset,
6968 length);
6969 }
6970 else
6971 {
6972 GenerateContextLostErrorOnCurrentGlobalContext();
6973 }
6974 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
6975 }
6976
GL_MapBufferRangeEXT(GLenum target,GLintptr offset,GLsizeiptr length,GLbitfield access)6977 void *GL_APIENTRY GL_MapBufferRangeEXT(GLenum target,
6978 GLintptr offset,
6979 GLsizeiptr length,
6980 GLbitfield access)
6981 {
6982 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
6983 Context *context = GetValidGlobalContext();
6984 EVENT(context, GLMapBufferRangeEXT,
6985 "context = %d, target = %s, offset = %llu, length = %llu, access = %s", CID(context),
6986 GLenumToString(GLESEnum::BufferTargetARB, target),
6987 static_cast<unsigned long long>(offset), static_cast<unsigned long long>(length),
6988 GLbitfieldToString(GLESEnum::MapBufferAccessMask, access).c_str());
6989
6990 void *returnValue;
6991 if (context)
6992 {
6993 BufferBinding targetPacked = PackParam<BufferBinding>(target);
6994 SCOPED_SHARE_CONTEXT_LOCK(context);
6995 bool isCallValid =
6996 (context->skipValidation() ||
6997 (ValidatePixelLocalStorageInactive(context->getPrivateState(),
6998 context->getMutableErrorSetForValidation(),
6999 angle::EntryPoint::GLMapBufferRangeEXT) &&
7000 ValidateMapBufferRangeEXT(context, angle::EntryPoint::GLMapBufferRangeEXT,
7001 targetPacked, offset, length, access)));
7002 if (isCallValid)
7003 {
7004 returnValue = context->mapBufferRange(targetPacked, offset, length, access);
7005 }
7006 else
7007 {
7008 returnValue = GetDefaultReturnValue<angle::EntryPoint::GLMapBufferRangeEXT, void *>();
7009 }
7010 ANGLE_CAPTURE_GL(MapBufferRangeEXT, isCallValid, context, targetPacked, offset, length,
7011 access, returnValue);
7012 }
7013 else
7014 {
7015 GenerateContextLostErrorOnCurrentGlobalContext();
7016 returnValue = GetDefaultReturnValue<angle::EntryPoint::GLMapBufferRangeEXT, void *>();
7017 }
7018 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
7019 return returnValue;
7020 }
7021
7022 // GL_EXT_memory_object
GL_BufferStorageMemEXT(GLenum target,GLsizeiptr size,GLuint memory,GLuint64 offset)7023 void GL_APIENTRY GL_BufferStorageMemEXT(GLenum target,
7024 GLsizeiptr size,
7025 GLuint memory,
7026 GLuint64 offset)
7027 {
7028 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
7029 Context *context = GetValidGlobalContext();
7030 EVENT(context, GLBufferStorageMemEXT,
7031 "context = %d, target = %s, size = %llu, memory = %u, offset = %llu", CID(context),
7032 GLenumToString(GLESEnum::BufferTargetARB, target), static_cast<unsigned long long>(size),
7033 memory, static_cast<unsigned long long>(offset));
7034
7035 if (context)
7036 {
7037 TextureType targetPacked = PackParam<TextureType>(target);
7038 MemoryObjectID memoryPacked = PackParam<MemoryObjectID>(memory);
7039 SCOPED_SHARE_CONTEXT_LOCK(context);
7040 bool isCallValid =
7041 (context->skipValidation() ||
7042 (ValidatePixelLocalStorageInactive(context->getPrivateState(),
7043 context->getMutableErrorSetForValidation(),
7044 angle::EntryPoint::GLBufferStorageMemEXT) &&
7045 ValidateBufferStorageMemEXT(context, angle::EntryPoint::GLBufferStorageMemEXT,
7046 targetPacked, size, memoryPacked, offset)));
7047 if (isCallValid)
7048 {
7049 context->bufferStorageMem(targetPacked, size, memoryPacked, offset);
7050 }
7051 ANGLE_CAPTURE_GL(BufferStorageMemEXT, isCallValid, context, targetPacked, size,
7052 memoryPacked, offset);
7053 }
7054 else
7055 {
7056 GenerateContextLostErrorOnCurrentGlobalContext();
7057 }
7058 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
7059 }
7060
GL_CreateMemoryObjectsEXT(GLsizei n,GLuint * memoryObjects)7061 void GL_APIENTRY GL_CreateMemoryObjectsEXT(GLsizei n, GLuint *memoryObjects)
7062 {
7063 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
7064 Context *context = GetValidGlobalContext();
7065 EVENT(context, GLCreateMemoryObjectsEXT,
7066 "context = %d, n = %d, memoryObjects = 0x%016" PRIxPTR "", CID(context), n,
7067 (uintptr_t)memoryObjects);
7068
7069 if (context)
7070 {
7071 MemoryObjectID *memoryObjectsPacked = PackParam<MemoryObjectID *>(memoryObjects);
7072 SCOPED_SHARE_CONTEXT_LOCK(context);
7073 bool isCallValid =
7074 (context->skipValidation() ||
7075 (ValidatePixelLocalStorageInactive(context->getPrivateState(),
7076 context->getMutableErrorSetForValidation(),
7077 angle::EntryPoint::GLCreateMemoryObjectsEXT) &&
7078 ValidateCreateMemoryObjectsEXT(context, angle::EntryPoint::GLCreateMemoryObjectsEXT,
7079 n, memoryObjectsPacked)));
7080 if (isCallValid)
7081 {
7082 context->createMemoryObjects(n, memoryObjectsPacked);
7083 }
7084 ANGLE_CAPTURE_GL(CreateMemoryObjectsEXT, isCallValid, context, n, memoryObjectsPacked);
7085 }
7086 else
7087 {
7088 GenerateContextLostErrorOnCurrentGlobalContext();
7089 }
7090 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
7091 }
7092
GL_DeleteMemoryObjectsEXT(GLsizei n,const GLuint * memoryObjects)7093 void GL_APIENTRY GL_DeleteMemoryObjectsEXT(GLsizei n, const GLuint *memoryObjects)
7094 {
7095 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
7096 Context *context = GetValidGlobalContext();
7097 EVENT(context, GLDeleteMemoryObjectsEXT,
7098 "context = %d, n = %d, memoryObjects = 0x%016" PRIxPTR "", CID(context), n,
7099 (uintptr_t)memoryObjects);
7100
7101 if (context)
7102 {
7103 const MemoryObjectID *memoryObjectsPacked =
7104 PackParam<const MemoryObjectID *>(memoryObjects);
7105 SCOPED_SHARE_CONTEXT_LOCK(context);
7106 bool isCallValid =
7107 (context->skipValidation() ||
7108 ValidateDeleteMemoryObjectsEXT(context, angle::EntryPoint::GLDeleteMemoryObjectsEXT, n,
7109 memoryObjectsPacked));
7110 if (isCallValid)
7111 {
7112 context->deleteMemoryObjects(n, memoryObjectsPacked);
7113 }
7114 ANGLE_CAPTURE_GL(DeleteMemoryObjectsEXT, isCallValid, context, n, memoryObjectsPacked);
7115 }
7116 else
7117 {
7118 GenerateContextLostErrorOnCurrentGlobalContext();
7119 }
7120 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
7121 }
7122
GL_GetMemoryObjectParameterivEXT(GLuint memoryObject,GLenum pname,GLint * params)7123 void GL_APIENTRY GL_GetMemoryObjectParameterivEXT(GLuint memoryObject, GLenum pname, GLint *params)
7124 {
7125 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
7126 Context *context = GetValidGlobalContext();
7127 EVENT(context, GLGetMemoryObjectParameterivEXT,
7128 "context = %d, memoryObject = %u, pname = %s, params = 0x%016" PRIxPTR "", CID(context),
7129 memoryObject, GLenumToString(GLESEnum::MemoryObjectParameterName, pname),
7130 (uintptr_t)params);
7131
7132 if (context)
7133 {
7134 MemoryObjectID memoryObjectPacked = PackParam<MemoryObjectID>(memoryObject);
7135 SCOPED_SHARE_CONTEXT_LOCK(context);
7136 bool isCallValid = (context->skipValidation() ||
7137 ValidateGetMemoryObjectParameterivEXT(
7138 context, angle::EntryPoint::GLGetMemoryObjectParameterivEXT,
7139 memoryObjectPacked, pname, params));
7140 if (isCallValid)
7141 {
7142 context->getMemoryObjectParameteriv(memoryObjectPacked, pname, params);
7143 }
7144 ANGLE_CAPTURE_GL(GetMemoryObjectParameterivEXT, isCallValid, context, memoryObjectPacked,
7145 pname, params);
7146 }
7147 else
7148 {
7149 GenerateContextLostErrorOnCurrentGlobalContext();
7150 }
7151 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
7152 }
7153
GL_GetUnsignedBytevEXT(GLenum pname,GLubyte * data)7154 void GL_APIENTRY GL_GetUnsignedBytevEXT(GLenum pname, GLubyte *data)
7155 {
7156 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
7157 Context *context = GetValidGlobalContext();
7158 EVENT(context, GLGetUnsignedBytevEXT, "context = %d, pname = %s, data = 0x%016" PRIxPTR "",
7159 CID(context), GLenumToString(GLESEnum::GetPName, pname), (uintptr_t)data);
7160
7161 if (context)
7162 {
7163 SCOPED_SHARE_CONTEXT_LOCK(context);
7164 bool isCallValid = (context->skipValidation() ||
7165 ValidateGetUnsignedBytevEXT(
7166 context, angle::EntryPoint::GLGetUnsignedBytevEXT, pname, data));
7167 if (isCallValid)
7168 {
7169 context->getUnsignedBytev(pname, data);
7170 }
7171 ANGLE_CAPTURE_GL(GetUnsignedBytevEXT, isCallValid, context, pname, data);
7172 }
7173 else
7174 {
7175 GenerateContextLostErrorOnCurrentGlobalContext();
7176 }
7177 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
7178 }
7179
GL_GetUnsignedBytei_vEXT(GLenum target,GLuint index,GLubyte * data)7180 void GL_APIENTRY GL_GetUnsignedBytei_vEXT(GLenum target, GLuint index, GLubyte *data)
7181 {
7182 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
7183 Context *context = GetValidGlobalContext();
7184 EVENT(context, GLGetUnsignedBytei_vEXT,
7185 "context = %d, target = %s, index = %u, data = 0x%016" PRIxPTR "", CID(context),
7186 GLenumToString(GLESEnum::AllEnums, target), index, (uintptr_t)data);
7187
7188 if (context)
7189 {
7190 SCOPED_SHARE_CONTEXT_LOCK(context);
7191 bool isCallValid =
7192 (context->skipValidation() ||
7193 ValidateGetUnsignedBytei_vEXT(context, angle::EntryPoint::GLGetUnsignedBytei_vEXT,
7194 target, index, data));
7195 if (isCallValid)
7196 {
7197 context->getUnsignedBytei_v(target, index, data);
7198 }
7199 ANGLE_CAPTURE_GL(GetUnsignedBytei_vEXT, isCallValid, context, target, index, data);
7200 }
7201 else
7202 {
7203 GenerateContextLostErrorOnCurrentGlobalContext();
7204 }
7205 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
7206 }
7207
GL_IsMemoryObjectEXT(GLuint memoryObject)7208 GLboolean GL_APIENTRY GL_IsMemoryObjectEXT(GLuint memoryObject)
7209 {
7210 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
7211 Context *context = GetValidGlobalContext();
7212 EVENT(context, GLIsMemoryObjectEXT, "context = %d, memoryObject = %u", CID(context),
7213 memoryObject);
7214
7215 GLboolean returnValue;
7216 if (context)
7217 {
7218 MemoryObjectID memoryObjectPacked = PackParam<MemoryObjectID>(memoryObject);
7219 SCOPED_SHARE_CONTEXT_LOCK(context);
7220 bool isCallValid =
7221 (context->skipValidation() ||
7222 ValidateIsMemoryObjectEXT(context, angle::EntryPoint::GLIsMemoryObjectEXT,
7223 memoryObjectPacked));
7224 if (isCallValid)
7225 {
7226 returnValue = context->isMemoryObject(memoryObjectPacked);
7227 }
7228 else
7229 {
7230 returnValue =
7231 GetDefaultReturnValue<angle::EntryPoint::GLIsMemoryObjectEXT, GLboolean>();
7232 }
7233 ANGLE_CAPTURE_GL(IsMemoryObjectEXT, isCallValid, context, memoryObjectPacked, returnValue);
7234 }
7235 else
7236 {
7237 GenerateContextLostErrorOnCurrentGlobalContext();
7238 returnValue = GetDefaultReturnValue<angle::EntryPoint::GLIsMemoryObjectEXT, GLboolean>();
7239 }
7240 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
7241 return returnValue;
7242 }
7243
GL_MemoryObjectParameterivEXT(GLuint memoryObject,GLenum pname,const GLint * params)7244 void GL_APIENTRY GL_MemoryObjectParameterivEXT(GLuint memoryObject,
7245 GLenum pname,
7246 const GLint *params)
7247 {
7248 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
7249 Context *context = GetValidGlobalContext();
7250 EVENT(context, GLMemoryObjectParameterivEXT,
7251 "context = %d, memoryObject = %u, pname = %s, params = 0x%016" PRIxPTR "", CID(context),
7252 memoryObject, GLenumToString(GLESEnum::MemoryObjectParameterName, pname),
7253 (uintptr_t)params);
7254
7255 if (context)
7256 {
7257 MemoryObjectID memoryObjectPacked = PackParam<MemoryObjectID>(memoryObject);
7258 SCOPED_SHARE_CONTEXT_LOCK(context);
7259 bool isCallValid =
7260 (context->skipValidation() ||
7261 (ValidatePixelLocalStorageInactive(context->getPrivateState(),
7262 context->getMutableErrorSetForValidation(),
7263 angle::EntryPoint::GLMemoryObjectParameterivEXT) &&
7264 ValidateMemoryObjectParameterivEXT(context,
7265 angle::EntryPoint::GLMemoryObjectParameterivEXT,
7266 memoryObjectPacked, pname, params)));
7267 if (isCallValid)
7268 {
7269 context->memoryObjectParameteriv(memoryObjectPacked, pname, params);
7270 }
7271 ANGLE_CAPTURE_GL(MemoryObjectParameterivEXT, isCallValid, context, memoryObjectPacked,
7272 pname, params);
7273 }
7274 else
7275 {
7276 GenerateContextLostErrorOnCurrentGlobalContext();
7277 }
7278 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
7279 }
7280
GL_TexStorageMem2DEXT(GLenum target,GLsizei levels,GLenum internalFormat,GLsizei width,GLsizei height,GLuint memory,GLuint64 offset)7281 void GL_APIENTRY GL_TexStorageMem2DEXT(GLenum target,
7282 GLsizei levels,
7283 GLenum internalFormat,
7284 GLsizei width,
7285 GLsizei height,
7286 GLuint memory,
7287 GLuint64 offset)
7288 {
7289 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
7290 Context *context = GetValidGlobalContext();
7291 EVENT(context, GLTexStorageMem2DEXT,
7292 "context = %d, target = %s, levels = %d, internalFormat = %s, width = %d, height = %d, "
7293 "memory = %u, offset = %llu",
7294 CID(context), GLenumToString(GLESEnum::TextureTarget, target), levels,
7295 GLenumToString(GLESEnum::SizedInternalFormat, internalFormat), width, height, memory,
7296 static_cast<unsigned long long>(offset));
7297
7298 if (context)
7299 {
7300 TextureType targetPacked = PackParam<TextureType>(target);
7301 MemoryObjectID memoryPacked = PackParam<MemoryObjectID>(memory);
7302 SCOPED_SHARE_CONTEXT_LOCK(context);
7303 bool isCallValid =
7304 (context->skipValidation() ||
7305 (ValidatePixelLocalStorageInactive(context->getPrivateState(),
7306 context->getMutableErrorSetForValidation(),
7307 angle::EntryPoint::GLTexStorageMem2DEXT) &&
7308 ValidateTexStorageMem2DEXT(context, angle::EntryPoint::GLTexStorageMem2DEXT,
7309 targetPacked, levels, internalFormat, width, height,
7310 memoryPacked, offset)));
7311 if (isCallValid)
7312 {
7313 context->texStorageMem2D(targetPacked, levels, internalFormat, width, height,
7314 memoryPacked, offset);
7315 }
7316 ANGLE_CAPTURE_GL(TexStorageMem2DEXT, isCallValid, context, targetPacked, levels,
7317 internalFormat, width, height, memoryPacked, offset);
7318 }
7319 else
7320 {
7321 GenerateContextLostErrorOnCurrentGlobalContext();
7322 }
7323 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
7324 }
7325
GL_TexStorageMem2DMultisampleEXT(GLenum target,GLsizei samples,GLenum internalFormat,GLsizei width,GLsizei height,GLboolean fixedSampleLocations,GLuint memory,GLuint64 offset)7326 void GL_APIENTRY GL_TexStorageMem2DMultisampleEXT(GLenum target,
7327 GLsizei samples,
7328 GLenum internalFormat,
7329 GLsizei width,
7330 GLsizei height,
7331 GLboolean fixedSampleLocations,
7332 GLuint memory,
7333 GLuint64 offset)
7334 {
7335 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
7336 Context *context = GetValidGlobalContext();
7337 EVENT(context, GLTexStorageMem2DMultisampleEXT,
7338 "context = %d, target = %s, samples = %d, internalFormat = %s, width = %d, height = %d, "
7339 "fixedSampleLocations = %s, memory = %u, offset = %llu",
7340 CID(context), GLenumToString(GLESEnum::TextureTarget, target), samples,
7341 GLenumToString(GLESEnum::SizedInternalFormat, internalFormat), width, height,
7342 GLbooleanToString(fixedSampleLocations), memory, static_cast<unsigned long long>(offset));
7343
7344 if (context)
7345 {
7346 TextureType targetPacked = PackParam<TextureType>(target);
7347 MemoryObjectID memoryPacked = PackParam<MemoryObjectID>(memory);
7348 SCOPED_SHARE_CONTEXT_LOCK(context);
7349 bool isCallValid =
7350 (context->skipValidation() ||
7351 (ValidatePixelLocalStorageInactive(
7352 context->getPrivateState(), context->getMutableErrorSetForValidation(),
7353 angle::EntryPoint::GLTexStorageMem2DMultisampleEXT) &&
7354 ValidateTexStorageMem2DMultisampleEXT(
7355 context, angle::EntryPoint::GLTexStorageMem2DMultisampleEXT, targetPacked,
7356 samples, internalFormat, width, height, fixedSampleLocations, memoryPacked,
7357 offset)));
7358 if (isCallValid)
7359 {
7360 context->texStorageMem2DMultisample(targetPacked, samples, internalFormat, width,
7361 height, fixedSampleLocations, memoryPacked, offset);
7362 }
7363 ANGLE_CAPTURE_GL(TexStorageMem2DMultisampleEXT, isCallValid, context, targetPacked, samples,
7364 internalFormat, width, height, fixedSampleLocations, memoryPacked, offset);
7365 }
7366 else
7367 {
7368 GenerateContextLostErrorOnCurrentGlobalContext();
7369 }
7370 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
7371 }
7372
GL_TexStorageMem3DEXT(GLenum target,GLsizei levels,GLenum internalFormat,GLsizei width,GLsizei height,GLsizei depth,GLuint memory,GLuint64 offset)7373 void GL_APIENTRY GL_TexStorageMem3DEXT(GLenum target,
7374 GLsizei levels,
7375 GLenum internalFormat,
7376 GLsizei width,
7377 GLsizei height,
7378 GLsizei depth,
7379 GLuint memory,
7380 GLuint64 offset)
7381 {
7382 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
7383 Context *context = GetValidGlobalContext();
7384 EVENT(context, GLTexStorageMem3DEXT,
7385 "context = %d, target = %s, levels = %d, internalFormat = %s, width = %d, height = %d, "
7386 "depth = %d, memory = %u, offset = %llu",
7387 CID(context), GLenumToString(GLESEnum::TextureTarget, target), levels,
7388 GLenumToString(GLESEnum::SizedInternalFormat, internalFormat), width, height, depth,
7389 memory, static_cast<unsigned long long>(offset));
7390
7391 if (context)
7392 {
7393 TextureType targetPacked = PackParam<TextureType>(target);
7394 MemoryObjectID memoryPacked = PackParam<MemoryObjectID>(memory);
7395 SCOPED_SHARE_CONTEXT_LOCK(context);
7396 bool isCallValid =
7397 (context->skipValidation() ||
7398 (ValidatePixelLocalStorageInactive(context->getPrivateState(),
7399 context->getMutableErrorSetForValidation(),
7400 angle::EntryPoint::GLTexStorageMem3DEXT) &&
7401 ValidateTexStorageMem3DEXT(context, angle::EntryPoint::GLTexStorageMem3DEXT,
7402 targetPacked, levels, internalFormat, width, height, depth,
7403 memoryPacked, offset)));
7404 if (isCallValid)
7405 {
7406 context->texStorageMem3D(targetPacked, levels, internalFormat, width, height, depth,
7407 memoryPacked, offset);
7408 }
7409 ANGLE_CAPTURE_GL(TexStorageMem3DEXT, isCallValid, context, targetPacked, levels,
7410 internalFormat, width, height, depth, memoryPacked, offset);
7411 }
7412 else
7413 {
7414 GenerateContextLostErrorOnCurrentGlobalContext();
7415 }
7416 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
7417 }
7418
GL_TexStorageMem3DMultisampleEXT(GLenum target,GLsizei samples,GLenum internalFormat,GLsizei width,GLsizei height,GLsizei depth,GLboolean fixedSampleLocations,GLuint memory,GLuint64 offset)7419 void GL_APIENTRY GL_TexStorageMem3DMultisampleEXT(GLenum target,
7420 GLsizei samples,
7421 GLenum internalFormat,
7422 GLsizei width,
7423 GLsizei height,
7424 GLsizei depth,
7425 GLboolean fixedSampleLocations,
7426 GLuint memory,
7427 GLuint64 offset)
7428 {
7429 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
7430 Context *context = GetValidGlobalContext();
7431 EVENT(context, GLTexStorageMem3DMultisampleEXT,
7432 "context = %d, target = %s, samples = %d, internalFormat = %s, width = %d, height = %d, "
7433 "depth = %d, fixedSampleLocations = %s, memory = %u, offset = %llu",
7434 CID(context), GLenumToString(GLESEnum::TextureTarget, target), samples,
7435 GLenumToString(GLESEnum::SizedInternalFormat, internalFormat), width, height, depth,
7436 GLbooleanToString(fixedSampleLocations), memory, static_cast<unsigned long long>(offset));
7437
7438 if (context)
7439 {
7440 TextureType targetPacked = PackParam<TextureType>(target);
7441 MemoryObjectID memoryPacked = PackParam<MemoryObjectID>(memory);
7442 SCOPED_SHARE_CONTEXT_LOCK(context);
7443 bool isCallValid =
7444 (context->skipValidation() ||
7445 (ValidatePixelLocalStorageInactive(
7446 context->getPrivateState(), context->getMutableErrorSetForValidation(),
7447 angle::EntryPoint::GLTexStorageMem3DMultisampleEXT) &&
7448 ValidateTexStorageMem3DMultisampleEXT(
7449 context, angle::EntryPoint::GLTexStorageMem3DMultisampleEXT, targetPacked,
7450 samples, internalFormat, width, height, depth, fixedSampleLocations, memoryPacked,
7451 offset)));
7452 if (isCallValid)
7453 {
7454 context->texStorageMem3DMultisample(targetPacked, samples, internalFormat, width,
7455 height, depth, fixedSampleLocations, memoryPacked,
7456 offset);
7457 }
7458 ANGLE_CAPTURE_GL(TexStorageMem3DMultisampleEXT, isCallValid, context, targetPacked, samples,
7459 internalFormat, width, height, depth, fixedSampleLocations, memoryPacked,
7460 offset);
7461 }
7462 else
7463 {
7464 GenerateContextLostErrorOnCurrentGlobalContext();
7465 }
7466 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
7467 }
7468
7469 // GL_EXT_memory_object_fd
GL_ImportMemoryFdEXT(GLuint memory,GLuint64 size,GLenum handleType,GLint fd)7470 void GL_APIENTRY GL_ImportMemoryFdEXT(GLuint memory, GLuint64 size, GLenum handleType, GLint fd)
7471 {
7472 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
7473 Context *context = GetValidGlobalContext();
7474 EVENT(context, GLImportMemoryFdEXT,
7475 "context = %d, memory = %u, size = %llu, handleType = %s, fd = %d", CID(context), memory,
7476 static_cast<unsigned long long>(size),
7477 GLenumToString(GLESEnum::ExternalHandleType, handleType), fd);
7478
7479 if (context)
7480 {
7481 MemoryObjectID memoryPacked = PackParam<MemoryObjectID>(memory);
7482 HandleType handleTypePacked = PackParam<HandleType>(handleType);
7483 SCOPED_SHARE_CONTEXT_LOCK(context);
7484 bool isCallValid =
7485 (context->skipValidation() ||
7486 (ValidatePixelLocalStorageInactive(context->getPrivateState(),
7487 context->getMutableErrorSetForValidation(),
7488 angle::EntryPoint::GLImportMemoryFdEXT) &&
7489 ValidateImportMemoryFdEXT(context, angle::EntryPoint::GLImportMemoryFdEXT,
7490 memoryPacked, size, handleTypePacked, fd)));
7491 if (isCallValid)
7492 {
7493 context->importMemoryFd(memoryPacked, size, handleTypePacked, fd);
7494 }
7495 ANGLE_CAPTURE_GL(ImportMemoryFdEXT, isCallValid, context, memoryPacked, size,
7496 handleTypePacked, fd);
7497 }
7498 else
7499 {
7500 GenerateContextLostErrorOnCurrentGlobalContext();
7501 }
7502 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
7503 }
7504
7505 // GL_EXT_multi_draw_indirect
GL_MultiDrawArraysIndirectEXT(GLenum mode,const void * indirect,GLsizei drawcount,GLsizei stride)7506 void GL_APIENTRY GL_MultiDrawArraysIndirectEXT(GLenum mode,
7507 const void *indirect,
7508 GLsizei drawcount,
7509 GLsizei stride)
7510 {
7511 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
7512 Context *context = GetValidGlobalContext();
7513 EVENT(context, GLMultiDrawArraysIndirectEXT,
7514 "context = %d, mode = %s, indirect = 0x%016" PRIxPTR ", drawcount = %d, stride = %d",
7515 CID(context), GLenumToString(GLESEnum::PrimitiveType, mode), (uintptr_t)indirect,
7516 drawcount, stride);
7517
7518 if (context)
7519 {
7520 PrimitiveMode modePacked = PackParam<PrimitiveMode>(mode);
7521 SCOPED_SHARE_CONTEXT_LOCK(context);
7522 bool isCallValid =
7523 (context->skipValidation() ||
7524 (ValidatePixelLocalStorageInactive(context->getPrivateState(),
7525 context->getMutableErrorSetForValidation(),
7526 angle::EntryPoint::GLMultiDrawArraysIndirectEXT) &&
7527 ValidateMultiDrawArraysIndirectEXT(context,
7528 angle::EntryPoint::GLMultiDrawArraysIndirectEXT,
7529 modePacked, indirect, drawcount, stride)));
7530 if (isCallValid)
7531 {
7532 context->multiDrawArraysIndirect(modePacked, indirect, drawcount, stride);
7533 }
7534 ANGLE_CAPTURE_GL(MultiDrawArraysIndirectEXT, isCallValid, context, modePacked, indirect,
7535 drawcount, stride);
7536 }
7537 else
7538 {
7539 GenerateContextLostErrorOnCurrentGlobalContext();
7540 }
7541 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
7542 }
7543
GL_MultiDrawElementsIndirectEXT(GLenum mode,GLenum type,const void * indirect,GLsizei drawcount,GLsizei stride)7544 void GL_APIENTRY GL_MultiDrawElementsIndirectEXT(GLenum mode,
7545 GLenum type,
7546 const void *indirect,
7547 GLsizei drawcount,
7548 GLsizei stride)
7549 {
7550 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
7551 Context *context = GetValidGlobalContext();
7552 EVENT(context, GLMultiDrawElementsIndirectEXT,
7553 "context = %d, mode = %s, type = %s, indirect = 0x%016" PRIxPTR
7554 ", drawcount = %d, stride = %d",
7555 CID(context), GLenumToString(GLESEnum::PrimitiveType, mode),
7556 GLenumToString(GLESEnum::DrawElementsType, type), (uintptr_t)indirect, drawcount, stride);
7557
7558 if (context)
7559 {
7560 PrimitiveMode modePacked = PackParam<PrimitiveMode>(mode);
7561 DrawElementsType typePacked = PackParam<DrawElementsType>(type);
7562 SCOPED_SHARE_CONTEXT_LOCK(context);
7563 bool isCallValid =
7564 (context->skipValidation() ||
7565 (ValidatePixelLocalStorageInactive(
7566 context->getPrivateState(), context->getMutableErrorSetForValidation(),
7567 angle::EntryPoint::GLMultiDrawElementsIndirectEXT) &&
7568 ValidateMultiDrawElementsIndirectEXT(
7569 context, angle::EntryPoint::GLMultiDrawElementsIndirectEXT, modePacked,
7570 typePacked, indirect, drawcount, stride)));
7571 if (isCallValid)
7572 {
7573 context->multiDrawElementsIndirect(modePacked, typePacked, indirect, drawcount, stride);
7574 }
7575 ANGLE_CAPTURE_GL(MultiDrawElementsIndirectEXT, isCallValid, context, modePacked, typePacked,
7576 indirect, drawcount, stride);
7577 }
7578 else
7579 {
7580 GenerateContextLostErrorOnCurrentGlobalContext();
7581 }
7582 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
7583 }
7584
7585 // GL_EXT_multisampled_render_to_texture
GL_FramebufferTexture2DMultisampleEXT(GLenum target,GLenum attachment,GLenum textarget,GLuint texture,GLint level,GLsizei samples)7586 void GL_APIENTRY GL_FramebufferTexture2DMultisampleEXT(GLenum target,
7587 GLenum attachment,
7588 GLenum textarget,
7589 GLuint texture,
7590 GLint level,
7591 GLsizei samples)
7592 {
7593 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
7594 Context *context = GetValidGlobalContext();
7595 EVENT(context, GLFramebufferTexture2DMultisampleEXT,
7596 "context = %d, target = %s, attachment = %s, textarget = %s, texture = %u, level = %d, "
7597 "samples = %d",
7598 CID(context), GLenumToString(GLESEnum::FramebufferTarget, target),
7599 GLenumToString(GLESEnum::FramebufferAttachment, attachment),
7600 GLenumToString(GLESEnum::TextureTarget, textarget), texture, level, samples);
7601
7602 if (context)
7603 {
7604 TextureTarget textargetPacked = PackParam<TextureTarget>(textarget);
7605 TextureID texturePacked = PackParam<TextureID>(texture);
7606 SCOPED_SHARE_CONTEXT_LOCK(context);
7607 bool isCallValid =
7608 (context->skipValidation() ||
7609 ValidateFramebufferTexture2DMultisampleEXT(
7610 context, angle::EntryPoint::GLFramebufferTexture2DMultisampleEXT, target,
7611 attachment, textargetPacked, texturePacked, level, samples));
7612 if (isCallValid)
7613 {
7614 context->framebufferTexture2DMultisample(target, attachment, textargetPacked,
7615 texturePacked, level, samples);
7616 }
7617 ANGLE_CAPTURE_GL(FramebufferTexture2DMultisampleEXT, isCallValid, context, target,
7618 attachment, textargetPacked, texturePacked, level, samples);
7619 }
7620 else
7621 {
7622 GenerateContextLostErrorOnCurrentGlobalContext();
7623 }
7624 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
7625 }
7626
GL_RenderbufferStorageMultisampleEXT(GLenum target,GLsizei samples,GLenum internalformat,GLsizei width,GLsizei height)7627 void GL_APIENTRY GL_RenderbufferStorageMultisampleEXT(GLenum target,
7628 GLsizei samples,
7629 GLenum internalformat,
7630 GLsizei width,
7631 GLsizei height)
7632 {
7633 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
7634 Context *context = GetValidGlobalContext();
7635 EVENT(context, GLRenderbufferStorageMultisampleEXT,
7636 "context = %d, target = %s, samples = %d, internalformat = %s, width = %d, height = %d",
7637 CID(context), GLenumToString(GLESEnum::RenderbufferTarget, target), samples,
7638 GLenumToString(GLESEnum::InternalFormat, internalformat), width, height);
7639
7640 if (context)
7641 {
7642 SCOPED_SHARE_CONTEXT_LOCK(context);
7643 bool isCallValid =
7644 (context->skipValidation() ||
7645 (ValidatePixelLocalStorageInactive(
7646 context->getPrivateState(), context->getMutableErrorSetForValidation(),
7647 angle::EntryPoint::GLRenderbufferStorageMultisampleEXT) &&
7648 ValidateRenderbufferStorageMultisampleEXT(
7649 context, angle::EntryPoint::GLRenderbufferStorageMultisampleEXT, target, samples,
7650 internalformat, width, height)));
7651 if (isCallValid)
7652 {
7653 context->renderbufferStorageMultisampleEXT(target, samples, internalformat, width,
7654 height);
7655 }
7656 ANGLE_CAPTURE_GL(RenderbufferStorageMultisampleEXT, isCallValid, context, target, samples,
7657 internalformat, width, height);
7658 }
7659 else
7660 {
7661 GenerateContextLostErrorOnCurrentGlobalContext();
7662 }
7663 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
7664 }
7665
7666 // GL_EXT_multisampled_render_to_texture2
7667
7668 // GL_EXT_occlusion_query_boolean
7669 // BeginQueryEXT is already defined.
7670
7671 // DeleteQueriesEXT is already defined.
7672
7673 // EndQueryEXT is already defined.
7674
7675 // GenQueriesEXT is already defined.
7676
7677 // GetQueryObjectuivEXT is already defined.
7678
7679 // GetQueryivEXT is already defined.
7680
7681 // IsQueryEXT is already defined.
7682
7683 // GL_EXT_polygon_offset_clamp
GL_PolygonOffsetClampEXT(GLfloat factor,GLfloat units,GLfloat clamp)7684 void GL_APIENTRY GL_PolygonOffsetClampEXT(GLfloat factor, GLfloat units, GLfloat clamp)
7685 {
7686 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
7687 Context *context = GetValidGlobalContext();
7688 EVENT(context, GLPolygonOffsetClampEXT, "context = %d, factor = %f, units = %f, clamp = %f",
7689 CID(context), factor, units, clamp);
7690
7691 if (context)
7692 {
7693 bool isCallValid =
7694 (context->skipValidation() ||
7695 ValidatePolygonOffsetClampEXT(
7696 context->getPrivateState(), context->getMutableErrorSetForValidation(),
7697 angle::EntryPoint::GLPolygonOffsetClampEXT, factor, units, clamp));
7698 if (isCallValid)
7699 {
7700 ContextPrivatePolygonOffsetClamp(context->getMutablePrivateState(),
7701 context->getMutablePrivateStateCache(), factor, units,
7702 clamp);
7703 }
7704 ANGLE_CAPTURE_GL(PolygonOffsetClampEXT, isCallValid, context, factor, units, clamp);
7705 }
7706 else
7707 {
7708 GenerateContextLostErrorOnCurrentGlobalContext();
7709 }
7710 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
7711 }
7712
7713 // GL_EXT_primitive_bounding_box
GL_PrimitiveBoundingBoxEXT(GLfloat minX,GLfloat minY,GLfloat minZ,GLfloat minW,GLfloat maxX,GLfloat maxY,GLfloat maxZ,GLfloat maxW)7714 void GL_APIENTRY GL_PrimitiveBoundingBoxEXT(GLfloat minX,
7715 GLfloat minY,
7716 GLfloat minZ,
7717 GLfloat minW,
7718 GLfloat maxX,
7719 GLfloat maxY,
7720 GLfloat maxZ,
7721 GLfloat maxW)
7722 {
7723 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
7724 Context *context = GetValidGlobalContext();
7725 EVENT(context, GLPrimitiveBoundingBoxEXT,
7726 "context = %d, minX = %f, minY = %f, minZ = %f, minW = %f, maxX = %f, maxY = %f, maxZ = "
7727 "%f, maxW = %f",
7728 CID(context), minX, minY, minZ, minW, maxX, maxY, maxZ, maxW);
7729
7730 if (context)
7731 {
7732 bool isCallValid =
7733 (context->skipValidation() ||
7734 (ValidatePixelLocalStorageInactive(context->getPrivateState(),
7735 context->getMutableErrorSetForValidation(),
7736 angle::EntryPoint::GLPrimitiveBoundingBoxEXT) &&
7737 ValidatePrimitiveBoundingBoxEXT(context->getPrivateState(),
7738 context->getMutableErrorSetForValidation(),
7739 angle::EntryPoint::GLPrimitiveBoundingBoxEXT, minX,
7740 minY, minZ, minW, maxX, maxY, maxZ, maxW)));
7741 if (isCallValid)
7742 {
7743 ContextPrivatePrimitiveBoundingBox(context->getMutablePrivateState(),
7744 context->getMutablePrivateStateCache(), minX, minY,
7745 minZ, minW, maxX, maxY, maxZ, maxW);
7746 }
7747 ANGLE_CAPTURE_GL(PrimitiveBoundingBoxEXT, isCallValid, context, minX, minY, minZ, minW,
7748 maxX, maxY, maxZ, maxW);
7749 }
7750 else
7751 {
7752 GenerateContextLostErrorOnCurrentGlobalContext();
7753 }
7754 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
7755 }
7756
7757 // GL_EXT_protected_textures
7758
7759 // GL_EXT_pvrtc_sRGB
7760
7761 // GL_EXT_read_format_bgra
7762
7763 // GL_EXT_render_snorm
7764
7765 // GL_EXT_robustness
GL_GetGraphicsResetStatusEXT()7766 GLenum GL_APIENTRY GL_GetGraphicsResetStatusEXT()
7767 {
7768 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
7769 Context *context = GetGlobalContext();
7770 EVENT(context, GLGetGraphicsResetStatusEXT, "context = %d", CID(context));
7771
7772 GLenum returnValue;
7773 if (context)
7774 {
7775 SCOPED_SHARE_CONTEXT_LOCK(context);
7776 bool isCallValid = (context->skipValidation() ||
7777 ValidateGetGraphicsResetStatusEXT(
7778 context, angle::EntryPoint::GLGetGraphicsResetStatusEXT));
7779 if (isCallValid)
7780 {
7781 returnValue = context->getGraphicsResetStatus();
7782 }
7783 else
7784 {
7785 returnValue =
7786 GetDefaultReturnValue<angle::EntryPoint::GLGetGraphicsResetStatusEXT, GLenum>();
7787 }
7788 ANGLE_CAPTURE_GL(GetGraphicsResetStatusEXT, isCallValid, context, returnValue);
7789 }
7790 else
7791 {
7792
7793 returnValue =
7794 GetDefaultReturnValue<angle::EntryPoint::GLGetGraphicsResetStatusEXT, GLenum>();
7795 }
7796 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
7797 return returnValue;
7798 }
7799
GL_GetnUniformfvEXT(GLuint program,GLint location,GLsizei bufSize,GLfloat * params)7800 void GL_APIENTRY GL_GetnUniformfvEXT(GLuint program,
7801 GLint location,
7802 GLsizei bufSize,
7803 GLfloat *params)
7804 {
7805 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
7806 Context *context = GetValidGlobalContext();
7807 EVENT(context, GLGetnUniformfvEXT,
7808 "context = %d, program = %u, location = %d, bufSize = %d, params = 0x%016" PRIxPTR "",
7809 CID(context), program, location, bufSize, (uintptr_t)params);
7810
7811 if (context)
7812 {
7813 ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);
7814 UniformLocation locationPacked = PackParam<UniformLocation>(location);
7815 SCOPED_SHARE_CONTEXT_LOCK(context);
7816 bool isCallValid =
7817 (context->skipValidation() ||
7818 ValidateGetnUniformfvEXT(context, angle::EntryPoint::GLGetnUniformfvEXT, programPacked,
7819 locationPacked, bufSize, params));
7820 if (isCallValid)
7821 {
7822 context->getnUniformfv(programPacked, locationPacked, bufSize, params);
7823 }
7824 ANGLE_CAPTURE_GL(GetnUniformfvEXT, isCallValid, context, programPacked, locationPacked,
7825 bufSize, params);
7826 }
7827 else
7828 {
7829 GenerateContextLostErrorOnCurrentGlobalContext();
7830 }
7831 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
7832 }
7833
GL_GetnUniformivEXT(GLuint program,GLint location,GLsizei bufSize,GLint * params)7834 void GL_APIENTRY GL_GetnUniformivEXT(GLuint program, GLint location, GLsizei bufSize, GLint *params)
7835 {
7836 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
7837 Context *context = GetValidGlobalContext();
7838 EVENT(context, GLGetnUniformivEXT,
7839 "context = %d, program = %u, location = %d, bufSize = %d, params = 0x%016" PRIxPTR "",
7840 CID(context), program, location, bufSize, (uintptr_t)params);
7841
7842 if (context)
7843 {
7844 ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);
7845 UniformLocation locationPacked = PackParam<UniformLocation>(location);
7846 SCOPED_SHARE_CONTEXT_LOCK(context);
7847 bool isCallValid =
7848 (context->skipValidation() ||
7849 ValidateGetnUniformivEXT(context, angle::EntryPoint::GLGetnUniformivEXT, programPacked,
7850 locationPacked, bufSize, params));
7851 if (isCallValid)
7852 {
7853 context->getnUniformiv(programPacked, locationPacked, bufSize, params);
7854 }
7855 ANGLE_CAPTURE_GL(GetnUniformivEXT, isCallValid, context, programPacked, locationPacked,
7856 bufSize, params);
7857 }
7858 else
7859 {
7860 GenerateContextLostErrorOnCurrentGlobalContext();
7861 }
7862 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
7863 }
7864
GL_ReadnPixelsEXT(GLint x,GLint y,GLsizei width,GLsizei height,GLenum format,GLenum type,GLsizei bufSize,void * data)7865 void GL_APIENTRY GL_ReadnPixelsEXT(GLint x,
7866 GLint y,
7867 GLsizei width,
7868 GLsizei height,
7869 GLenum format,
7870 GLenum type,
7871 GLsizei bufSize,
7872 void *data)
7873 {
7874 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
7875 Context *context = GetValidGlobalContext();
7876 EVENT(context, GLReadnPixelsEXT,
7877 "context = %d, x = %d, y = %d, width = %d, height = %d, format = %s, type = %s, bufSize "
7878 "= %d, data = 0x%016" PRIxPTR "",
7879 CID(context), x, y, width, height, GLenumToString(GLESEnum::PixelFormat, format),
7880 GLenumToString(GLESEnum::PixelType, type), bufSize, (uintptr_t)data);
7881
7882 if (context)
7883 {
7884 SCOPED_SHARE_CONTEXT_LOCK(context);
7885 bool isCallValid =
7886 (context->skipValidation() ||
7887 (ValidatePixelLocalStorageInactive(context->getPrivateState(),
7888 context->getMutableErrorSetForValidation(),
7889 angle::EntryPoint::GLReadnPixelsEXT) &&
7890 ValidateReadnPixelsEXT(context, angle::EntryPoint::GLReadnPixelsEXT, x, y, width,
7891 height, format, type, bufSize, data)));
7892 if (isCallValid)
7893 {
7894 context->readnPixels(x, y, width, height, format, type, bufSize, data);
7895 }
7896 ANGLE_CAPTURE_GL(ReadnPixelsEXT, isCallValid, context, x, y, width, height, format, type,
7897 bufSize, data);
7898 }
7899 else
7900 {
7901 GenerateContextLostErrorOnCurrentGlobalContext();
7902 }
7903 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
7904 }
7905
7906 // GL_EXT_sRGB
7907
7908 // GL_EXT_sRGB_write_control
7909
7910 // GL_EXT_semaphore
GL_DeleteSemaphoresEXT(GLsizei n,const GLuint * semaphores)7911 void GL_APIENTRY GL_DeleteSemaphoresEXT(GLsizei n, const GLuint *semaphores)
7912 {
7913 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
7914 Context *context = GetValidGlobalContext();
7915 EVENT(context, GLDeleteSemaphoresEXT, "context = %d, n = %d, semaphores = 0x%016" PRIxPTR "",
7916 CID(context), n, (uintptr_t)semaphores);
7917
7918 if (context)
7919 {
7920 const SemaphoreID *semaphoresPacked = PackParam<const SemaphoreID *>(semaphores);
7921 SCOPED_SHARE_CONTEXT_LOCK(context);
7922 bool isCallValid =
7923 (context->skipValidation() ||
7924 ValidateDeleteSemaphoresEXT(context, angle::EntryPoint::GLDeleteSemaphoresEXT, n,
7925 semaphoresPacked));
7926 if (isCallValid)
7927 {
7928 context->deleteSemaphores(n, semaphoresPacked);
7929 }
7930 ANGLE_CAPTURE_GL(DeleteSemaphoresEXT, isCallValid, context, n, semaphoresPacked);
7931 }
7932 else
7933 {
7934 GenerateContextLostErrorOnCurrentGlobalContext();
7935 }
7936 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
7937 }
7938
GL_GenSemaphoresEXT(GLsizei n,GLuint * semaphores)7939 void GL_APIENTRY GL_GenSemaphoresEXT(GLsizei n, GLuint *semaphores)
7940 {
7941 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
7942 Context *context = GetValidGlobalContext();
7943 EVENT(context, GLGenSemaphoresEXT, "context = %d, n = %d, semaphores = 0x%016" PRIxPTR "",
7944 CID(context), n, (uintptr_t)semaphores);
7945
7946 if (context)
7947 {
7948 SemaphoreID *semaphoresPacked = PackParam<SemaphoreID *>(semaphores);
7949 SCOPED_SHARE_CONTEXT_LOCK(context);
7950 bool isCallValid = (context->skipValidation() ||
7951 ValidateGenSemaphoresEXT(context, angle::EntryPoint::GLGenSemaphoresEXT,
7952 n, semaphoresPacked));
7953 if (isCallValid)
7954 {
7955 context->genSemaphores(n, semaphoresPacked);
7956 }
7957 ANGLE_CAPTURE_GL(GenSemaphoresEXT, isCallValid, context, n, semaphoresPacked);
7958 }
7959 else
7960 {
7961 GenerateContextLostErrorOnCurrentGlobalContext();
7962 }
7963 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
7964 }
7965
GL_GetSemaphoreParameterui64vEXT(GLuint semaphore,GLenum pname,GLuint64 * params)7966 void GL_APIENTRY GL_GetSemaphoreParameterui64vEXT(GLuint semaphore, GLenum pname, GLuint64 *params)
7967 {
7968 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
7969 Context *context = GetValidGlobalContext();
7970 EVENT(context, GLGetSemaphoreParameterui64vEXT,
7971 "context = %d, semaphore = %u, pname = %s, params = 0x%016" PRIxPTR "", CID(context),
7972 semaphore, GLenumToString(GLESEnum::SemaphoreParameterName, pname), (uintptr_t)params);
7973
7974 if (context)
7975 {
7976 SemaphoreID semaphorePacked = PackParam<SemaphoreID>(semaphore);
7977 SCOPED_SHARE_CONTEXT_LOCK(context);
7978 bool isCallValid = (context->skipValidation() ||
7979 ValidateGetSemaphoreParameterui64vEXT(
7980 context, angle::EntryPoint::GLGetSemaphoreParameterui64vEXT,
7981 semaphorePacked, pname, params));
7982 if (isCallValid)
7983 {
7984 context->getSemaphoreParameterui64v(semaphorePacked, pname, params);
7985 }
7986 ANGLE_CAPTURE_GL(GetSemaphoreParameterui64vEXT, isCallValid, context, semaphorePacked,
7987 pname, params);
7988 }
7989 else
7990 {
7991 GenerateContextLostErrorOnCurrentGlobalContext();
7992 }
7993 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
7994 }
7995
GL_IsSemaphoreEXT(GLuint semaphore)7996 GLboolean GL_APIENTRY GL_IsSemaphoreEXT(GLuint semaphore)
7997 {
7998 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
7999 Context *context = GetValidGlobalContext();
8000 EVENT(context, GLIsSemaphoreEXT, "context = %d, semaphore = %u", CID(context), semaphore);
8001
8002 GLboolean returnValue;
8003 if (context)
8004 {
8005 SemaphoreID semaphorePacked = PackParam<SemaphoreID>(semaphore);
8006 SCOPED_SHARE_CONTEXT_LOCK(context);
8007 bool isCallValid =
8008 (context->skipValidation() ||
8009 ValidateIsSemaphoreEXT(context, angle::EntryPoint::GLIsSemaphoreEXT, semaphorePacked));
8010 if (isCallValid)
8011 {
8012 returnValue = context->isSemaphore(semaphorePacked);
8013 }
8014 else
8015 {
8016 returnValue = GetDefaultReturnValue<angle::EntryPoint::GLIsSemaphoreEXT, GLboolean>();
8017 }
8018 ANGLE_CAPTURE_GL(IsSemaphoreEXT, isCallValid, context, semaphorePacked, returnValue);
8019 }
8020 else
8021 {
8022 GenerateContextLostErrorOnCurrentGlobalContext();
8023 returnValue = GetDefaultReturnValue<angle::EntryPoint::GLIsSemaphoreEXT, GLboolean>();
8024 }
8025 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
8026 return returnValue;
8027 }
8028
GL_SemaphoreParameterui64vEXT(GLuint semaphore,GLenum pname,const GLuint64 * params)8029 void GL_APIENTRY GL_SemaphoreParameterui64vEXT(GLuint semaphore,
8030 GLenum pname,
8031 const GLuint64 *params)
8032 {
8033 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
8034 Context *context = GetValidGlobalContext();
8035 EVENT(context, GLSemaphoreParameterui64vEXT,
8036 "context = %d, semaphore = %u, pname = %s, params = 0x%016" PRIxPTR "", CID(context),
8037 semaphore, GLenumToString(GLESEnum::SemaphoreParameterName, pname), (uintptr_t)params);
8038
8039 if (context)
8040 {
8041 SemaphoreID semaphorePacked = PackParam<SemaphoreID>(semaphore);
8042 SCOPED_SHARE_CONTEXT_LOCK(context);
8043 bool isCallValid =
8044 (context->skipValidation() ||
8045 (ValidatePixelLocalStorageInactive(context->getPrivateState(),
8046 context->getMutableErrorSetForValidation(),
8047 angle::EntryPoint::GLSemaphoreParameterui64vEXT) &&
8048 ValidateSemaphoreParameterui64vEXT(context,
8049 angle::EntryPoint::GLSemaphoreParameterui64vEXT,
8050 semaphorePacked, pname, params)));
8051 if (isCallValid)
8052 {
8053 context->semaphoreParameterui64v(semaphorePacked, pname, params);
8054 }
8055 ANGLE_CAPTURE_GL(SemaphoreParameterui64vEXT, isCallValid, context, semaphorePacked, pname,
8056 params);
8057 }
8058 else
8059 {
8060 GenerateContextLostErrorOnCurrentGlobalContext();
8061 }
8062 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
8063 }
8064
GL_SignalSemaphoreEXT(GLuint semaphore,GLuint numBufferBarriers,const GLuint * buffers,GLuint numTextureBarriers,const GLuint * textures,const GLenum * dstLayouts)8065 void GL_APIENTRY GL_SignalSemaphoreEXT(GLuint semaphore,
8066 GLuint numBufferBarriers,
8067 const GLuint *buffers,
8068 GLuint numTextureBarriers,
8069 const GLuint *textures,
8070 const GLenum *dstLayouts)
8071 {
8072 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
8073 Context *context = GetValidGlobalContext();
8074 EVENT(context, GLSignalSemaphoreEXT,
8075 "context = %d, semaphore = %u, numBufferBarriers = %u, buffers = 0x%016" PRIxPTR
8076 ", numTextureBarriers = %u, textures = 0x%016" PRIxPTR ", dstLayouts = 0x%016" PRIxPTR "",
8077 CID(context), semaphore, numBufferBarriers, (uintptr_t)buffers, numTextureBarriers,
8078 (uintptr_t)textures, (uintptr_t)dstLayouts);
8079
8080 if (context)
8081 {
8082 SemaphoreID semaphorePacked = PackParam<SemaphoreID>(semaphore);
8083 const BufferID *buffersPacked = PackParam<const BufferID *>(buffers);
8084 const TextureID *texturesPacked = PackParam<const TextureID *>(textures);
8085 SCOPED_SHARE_CONTEXT_LOCK(context);
8086 bool isCallValid =
8087 (context->skipValidation() ||
8088 (ValidatePixelLocalStorageInactive(context->getPrivateState(),
8089 context->getMutableErrorSetForValidation(),
8090 angle::EntryPoint::GLSignalSemaphoreEXT) &&
8091 ValidateSignalSemaphoreEXT(context, angle::EntryPoint::GLSignalSemaphoreEXT,
8092 semaphorePacked, numBufferBarriers, buffersPacked,
8093 numTextureBarriers, texturesPacked, dstLayouts)));
8094 if (isCallValid)
8095 {
8096 context->signalSemaphore(semaphorePacked, numBufferBarriers, buffersPacked,
8097 numTextureBarriers, texturesPacked, dstLayouts);
8098 }
8099 ANGLE_CAPTURE_GL(SignalSemaphoreEXT, isCallValid, context, semaphorePacked,
8100 numBufferBarriers, buffersPacked, numTextureBarriers, texturesPacked,
8101 dstLayouts);
8102 }
8103 else
8104 {
8105 GenerateContextLostErrorOnCurrentGlobalContext();
8106 }
8107 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
8108 }
8109
GL_WaitSemaphoreEXT(GLuint semaphore,GLuint numBufferBarriers,const GLuint * buffers,GLuint numTextureBarriers,const GLuint * textures,const GLenum * srcLayouts)8110 void GL_APIENTRY GL_WaitSemaphoreEXT(GLuint semaphore,
8111 GLuint numBufferBarriers,
8112 const GLuint *buffers,
8113 GLuint numTextureBarriers,
8114 const GLuint *textures,
8115 const GLenum *srcLayouts)
8116 {
8117 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
8118 Context *context = GetValidGlobalContext();
8119 EVENT(context, GLWaitSemaphoreEXT,
8120 "context = %d, semaphore = %u, numBufferBarriers = %u, buffers = 0x%016" PRIxPTR
8121 ", numTextureBarriers = %u, textures = 0x%016" PRIxPTR ", srcLayouts = 0x%016" PRIxPTR "",
8122 CID(context), semaphore, numBufferBarriers, (uintptr_t)buffers, numTextureBarriers,
8123 (uintptr_t)textures, (uintptr_t)srcLayouts);
8124
8125 if (context)
8126 {
8127 SemaphoreID semaphorePacked = PackParam<SemaphoreID>(semaphore);
8128 const BufferID *buffersPacked = PackParam<const BufferID *>(buffers);
8129 const TextureID *texturesPacked = PackParam<const TextureID *>(textures);
8130 SCOPED_SHARE_CONTEXT_LOCK(context);
8131 bool isCallValid =
8132 (context->skipValidation() ||
8133 (ValidatePixelLocalStorageInactive(context->getPrivateState(),
8134 context->getMutableErrorSetForValidation(),
8135 angle::EntryPoint::GLWaitSemaphoreEXT) &&
8136 ValidateWaitSemaphoreEXT(context, angle::EntryPoint::GLWaitSemaphoreEXT,
8137 semaphorePacked, numBufferBarriers, buffersPacked,
8138 numTextureBarriers, texturesPacked, srcLayouts)));
8139 if (isCallValid)
8140 {
8141 context->waitSemaphore(semaphorePacked, numBufferBarriers, buffersPacked,
8142 numTextureBarriers, texturesPacked, srcLayouts);
8143 }
8144 ANGLE_CAPTURE_GL(WaitSemaphoreEXT, isCallValid, context, semaphorePacked, numBufferBarriers,
8145 buffersPacked, numTextureBarriers, texturesPacked, srcLayouts);
8146 }
8147 else
8148 {
8149 GenerateContextLostErrorOnCurrentGlobalContext();
8150 }
8151 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
8152 }
8153
8154 // GetUnsignedBytei_vEXT is already defined.
8155
8156 // GetUnsignedBytevEXT is already defined.
8157
8158 // GL_EXT_semaphore_fd
GL_ImportSemaphoreFdEXT(GLuint semaphore,GLenum handleType,GLint fd)8159 void GL_APIENTRY GL_ImportSemaphoreFdEXT(GLuint semaphore, GLenum handleType, GLint fd)
8160 {
8161 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
8162 Context *context = GetValidGlobalContext();
8163 EVENT(context, GLImportSemaphoreFdEXT, "context = %d, semaphore = %u, handleType = %s, fd = %d",
8164 CID(context), semaphore, GLenumToString(GLESEnum::ExternalHandleType, handleType), fd);
8165
8166 if (context)
8167 {
8168 SemaphoreID semaphorePacked = PackParam<SemaphoreID>(semaphore);
8169 HandleType handleTypePacked = PackParam<HandleType>(handleType);
8170 SCOPED_SHARE_CONTEXT_LOCK(context);
8171 bool isCallValid =
8172 (context->skipValidation() ||
8173 (ValidatePixelLocalStorageInactive(context->getPrivateState(),
8174 context->getMutableErrorSetForValidation(),
8175 angle::EntryPoint::GLImportSemaphoreFdEXT) &&
8176 ValidateImportSemaphoreFdEXT(context, angle::EntryPoint::GLImportSemaphoreFdEXT,
8177 semaphorePacked, handleTypePacked, fd)));
8178 if (isCallValid)
8179 {
8180 context->importSemaphoreFd(semaphorePacked, handleTypePacked, fd);
8181 }
8182 ANGLE_CAPTURE_GL(ImportSemaphoreFdEXT, isCallValid, context, semaphorePacked,
8183 handleTypePacked, fd);
8184 }
8185 else
8186 {
8187 GenerateContextLostErrorOnCurrentGlobalContext();
8188 }
8189 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
8190 }
8191
8192 // GL_EXT_separate_depth_stencil
8193
8194 // GL_EXT_separate_shader_objects
GL_ActiveShaderProgramEXT(GLuint pipeline,GLuint program)8195 void GL_APIENTRY GL_ActiveShaderProgramEXT(GLuint pipeline, GLuint program)
8196 {
8197 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
8198 Context *context = GetValidGlobalContext();
8199 EVENT(context, GLActiveShaderProgramEXT, "context = %d, pipeline = %u, program = %u",
8200 CID(context), pipeline, program);
8201
8202 if (context)
8203 {
8204 ProgramPipelineID pipelinePacked = PackParam<ProgramPipelineID>(pipeline);
8205 ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);
8206 SCOPED_SHARE_CONTEXT_LOCK(context);
8207 bool isCallValid =
8208 (context->skipValidation() ||
8209 (ValidatePixelLocalStorageInactive(context->getPrivateState(),
8210 context->getMutableErrorSetForValidation(),
8211 angle::EntryPoint::GLActiveShaderProgramEXT) &&
8212 ValidateActiveShaderProgramEXT(context, angle::EntryPoint::GLActiveShaderProgramEXT,
8213 pipelinePacked, programPacked)));
8214 if (isCallValid)
8215 {
8216 context->activeShaderProgram(pipelinePacked, programPacked);
8217 }
8218 ANGLE_CAPTURE_GL(ActiveShaderProgramEXT, isCallValid, context, pipelinePacked,
8219 programPacked);
8220 }
8221 else
8222 {
8223 GenerateContextLostErrorOnCurrentGlobalContext();
8224 }
8225 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
8226 }
8227
GL_BindProgramPipelineEXT(GLuint pipeline)8228 void GL_APIENTRY GL_BindProgramPipelineEXT(GLuint pipeline)
8229 {
8230 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
8231 Context *context = GetValidGlobalContext();
8232 EVENT(context, GLBindProgramPipelineEXT, "context = %d, pipeline = %u", CID(context), pipeline);
8233
8234 if (context)
8235 {
8236 ProgramPipelineID pipelinePacked = PackParam<ProgramPipelineID>(pipeline);
8237 SCOPED_SHARE_CONTEXT_LOCK(context);
8238 bool isCallValid =
8239 (context->skipValidation() ||
8240 (ValidatePixelLocalStorageInactive(context->getPrivateState(),
8241 context->getMutableErrorSetForValidation(),
8242 angle::EntryPoint::GLBindProgramPipelineEXT) &&
8243 ValidateBindProgramPipelineEXT(context, angle::EntryPoint::GLBindProgramPipelineEXT,
8244 pipelinePacked)));
8245 if (isCallValid)
8246 {
8247 context->bindProgramPipeline(pipelinePacked);
8248 }
8249 ANGLE_CAPTURE_GL(BindProgramPipelineEXT, isCallValid, context, pipelinePacked);
8250 }
8251 else
8252 {
8253 GenerateContextLostErrorOnCurrentGlobalContext();
8254 }
8255 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
8256 }
8257
GL_CreateShaderProgramvEXT(GLenum type,GLsizei count,const GLchar ** strings)8258 GLuint GL_APIENTRY GL_CreateShaderProgramvEXT(GLenum type, GLsizei count, const GLchar **strings)
8259 {
8260 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
8261 Context *context = GetValidGlobalContext();
8262 EVENT(context, GLCreateShaderProgramvEXT,
8263 "context = %d, type = %s, count = %d, strings = 0x%016" PRIxPTR "", CID(context),
8264 GLenumToString(GLESEnum::ShaderType, type), count, (uintptr_t)strings);
8265
8266 GLuint returnValue;
8267 if (context)
8268 {
8269 ShaderType typePacked = PackParam<ShaderType>(type);
8270 SCOPED_SHARE_CONTEXT_LOCK(context);
8271 bool isCallValid =
8272 (context->skipValidation() ||
8273 (ValidatePixelLocalStorageInactive(context->getPrivateState(),
8274 context->getMutableErrorSetForValidation(),
8275 angle::EntryPoint::GLCreateShaderProgramvEXT) &&
8276 ValidateCreateShaderProgramvEXT(context, angle::EntryPoint::GLCreateShaderProgramvEXT,
8277 typePacked, count, strings)));
8278 if (isCallValid)
8279 {
8280 returnValue = context->createShaderProgramv(typePacked, count, strings);
8281 }
8282 else
8283 {
8284 returnValue =
8285 GetDefaultReturnValue<angle::EntryPoint::GLCreateShaderProgramvEXT, GLuint>();
8286 }
8287 ANGLE_CAPTURE_GL(CreateShaderProgramvEXT, isCallValid, context, typePacked, count, strings,
8288 returnValue);
8289 }
8290 else
8291 {
8292 GenerateContextLostErrorOnCurrentGlobalContext();
8293 returnValue = GetDefaultReturnValue<angle::EntryPoint::GLCreateShaderProgramvEXT, GLuint>();
8294 }
8295 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
8296 return returnValue;
8297 }
8298
GL_DeleteProgramPipelinesEXT(GLsizei n,const GLuint * pipelines)8299 void GL_APIENTRY GL_DeleteProgramPipelinesEXT(GLsizei n, const GLuint *pipelines)
8300 {
8301 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
8302 Context *context = GetValidGlobalContext();
8303 EVENT(context, GLDeleteProgramPipelinesEXT,
8304 "context = %d, n = %d, pipelines = 0x%016" PRIxPTR "", CID(context), n,
8305 (uintptr_t)pipelines);
8306
8307 if (context)
8308 {
8309 const ProgramPipelineID *pipelinesPacked = PackParam<const ProgramPipelineID *>(pipelines);
8310 SCOPED_SHARE_CONTEXT_LOCK(context);
8311 bool isCallValid =
8312 (context->skipValidation() ||
8313 ValidateDeleteProgramPipelinesEXT(
8314 context, angle::EntryPoint::GLDeleteProgramPipelinesEXT, n, pipelinesPacked));
8315 if (isCallValid)
8316 {
8317 context->deleteProgramPipelines(n, pipelinesPacked);
8318 }
8319 ANGLE_CAPTURE_GL(DeleteProgramPipelinesEXT, isCallValid, context, n, pipelinesPacked);
8320 }
8321 else
8322 {
8323 GenerateContextLostErrorOnCurrentGlobalContext();
8324 }
8325 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
8326 }
8327
GL_GenProgramPipelinesEXT(GLsizei n,GLuint * pipelines)8328 void GL_APIENTRY GL_GenProgramPipelinesEXT(GLsizei n, GLuint *pipelines)
8329 {
8330 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
8331 Context *context = GetValidGlobalContext();
8332 EVENT(context, GLGenProgramPipelinesEXT, "context = %d, n = %d, pipelines = 0x%016" PRIxPTR "",
8333 CID(context), n, (uintptr_t)pipelines);
8334
8335 if (context)
8336 {
8337 ProgramPipelineID *pipelinesPacked = PackParam<ProgramPipelineID *>(pipelines);
8338 SCOPED_SHARE_CONTEXT_LOCK(context);
8339 bool isCallValid =
8340 (context->skipValidation() ||
8341 ValidateGenProgramPipelinesEXT(context, angle::EntryPoint::GLGenProgramPipelinesEXT, n,
8342 pipelinesPacked));
8343 if (isCallValid)
8344 {
8345 context->genProgramPipelines(n, pipelinesPacked);
8346 }
8347 ANGLE_CAPTURE_GL(GenProgramPipelinesEXT, isCallValid, context, n, pipelinesPacked);
8348 }
8349 else
8350 {
8351 GenerateContextLostErrorOnCurrentGlobalContext();
8352 }
8353 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
8354 }
8355
GL_GetProgramPipelineInfoLogEXT(GLuint pipeline,GLsizei bufSize,GLsizei * length,GLchar * infoLog)8356 void GL_APIENTRY GL_GetProgramPipelineInfoLogEXT(GLuint pipeline,
8357 GLsizei bufSize,
8358 GLsizei *length,
8359 GLchar *infoLog)
8360 {
8361 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
8362 Context *context = GetValidGlobalContext();
8363 EVENT(context, GLGetProgramPipelineInfoLogEXT,
8364 "context = %d, pipeline = %u, bufSize = %d, length = 0x%016" PRIxPTR
8365 ", infoLog = 0x%016" PRIxPTR "",
8366 CID(context), pipeline, bufSize, (uintptr_t)length, (uintptr_t)infoLog);
8367
8368 if (context)
8369 {
8370 ProgramPipelineID pipelinePacked = PackParam<ProgramPipelineID>(pipeline);
8371 SCOPED_SHARE_CONTEXT_LOCK(context);
8372 bool isCallValid = (context->skipValidation() ||
8373 ValidateGetProgramPipelineInfoLogEXT(
8374 context, angle::EntryPoint::GLGetProgramPipelineInfoLogEXT,
8375 pipelinePacked, bufSize, length, infoLog));
8376 if (isCallValid)
8377 {
8378 context->getProgramPipelineInfoLog(pipelinePacked, bufSize, length, infoLog);
8379 }
8380 ANGLE_CAPTURE_GL(GetProgramPipelineInfoLogEXT, isCallValid, context, pipelinePacked,
8381 bufSize, length, infoLog);
8382 }
8383 else
8384 {
8385 GenerateContextLostErrorOnCurrentGlobalContext();
8386 }
8387 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
8388 }
8389
GL_GetProgramPipelineivEXT(GLuint pipeline,GLenum pname,GLint * params)8390 void GL_APIENTRY GL_GetProgramPipelineivEXT(GLuint pipeline, GLenum pname, GLint *params)
8391 {
8392 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
8393 Context *context = GetValidGlobalContext();
8394 EVENT(context, GLGetProgramPipelineivEXT,
8395 "context = %d, pipeline = %u, pname = %s, params = 0x%016" PRIxPTR "", CID(context),
8396 pipeline, GLenumToString(GLESEnum::PipelineParameterName, pname), (uintptr_t)params);
8397
8398 if (context)
8399 {
8400 ProgramPipelineID pipelinePacked = PackParam<ProgramPipelineID>(pipeline);
8401 SCOPED_SHARE_CONTEXT_LOCK(context);
8402 bool isCallValid =
8403 (context->skipValidation() ||
8404 ValidateGetProgramPipelineivEXT(context, angle::EntryPoint::GLGetProgramPipelineivEXT,
8405 pipelinePacked, pname, params));
8406 if (isCallValid)
8407 {
8408 context->getProgramPipelineiv(pipelinePacked, pname, params);
8409 }
8410 ANGLE_CAPTURE_GL(GetProgramPipelineivEXT, isCallValid, context, pipelinePacked, pname,
8411 params);
8412 }
8413 else
8414 {
8415 GenerateContextLostErrorOnCurrentGlobalContext();
8416 }
8417 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
8418 }
8419
GL_IsProgramPipelineEXT(GLuint pipeline)8420 GLboolean GL_APIENTRY GL_IsProgramPipelineEXT(GLuint pipeline)
8421 {
8422 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
8423 Context *context = GetValidGlobalContext();
8424 EVENT(context, GLIsProgramPipelineEXT, "context = %d, pipeline = %u", CID(context), pipeline);
8425
8426 GLboolean returnValue;
8427 if (context)
8428 {
8429 ProgramPipelineID pipelinePacked = PackParam<ProgramPipelineID>(pipeline);
8430 SCOPED_SHARE_CONTEXT_LOCK(context);
8431 bool isCallValid =
8432 (context->skipValidation() ||
8433 ValidateIsProgramPipelineEXT(context, angle::EntryPoint::GLIsProgramPipelineEXT,
8434 pipelinePacked));
8435 if (isCallValid)
8436 {
8437 returnValue = context->isProgramPipeline(pipelinePacked);
8438 }
8439 else
8440 {
8441 returnValue =
8442 GetDefaultReturnValue<angle::EntryPoint::GLIsProgramPipelineEXT, GLboolean>();
8443 }
8444 ANGLE_CAPTURE_GL(IsProgramPipelineEXT, isCallValid, context, pipelinePacked, returnValue);
8445 }
8446 else
8447 {
8448 GenerateContextLostErrorOnCurrentGlobalContext();
8449 returnValue = GetDefaultReturnValue<angle::EntryPoint::GLIsProgramPipelineEXT, GLboolean>();
8450 }
8451 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
8452 return returnValue;
8453 }
8454
GL_ProgramParameteriEXT(GLuint program,GLenum pname,GLint value)8455 void GL_APIENTRY GL_ProgramParameteriEXT(GLuint program, GLenum pname, GLint value)
8456 {
8457 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
8458 Context *context = GetValidGlobalContext();
8459 EVENT(context, GLProgramParameteriEXT, "context = %d, program = %u, pname = %s, value = %d",
8460 CID(context), program, GLenumToString(GLESEnum::ProgramParameterPName, pname), value);
8461
8462 if (context)
8463 {
8464 ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);
8465 SCOPED_SHARE_CONTEXT_LOCK(context);
8466 bool isCallValid =
8467 (context->skipValidation() ||
8468 (ValidatePixelLocalStorageInactive(context->getPrivateState(),
8469 context->getMutableErrorSetForValidation(),
8470 angle::EntryPoint::GLProgramParameteriEXT) &&
8471 ValidateProgramParameteriEXT(context, angle::EntryPoint::GLProgramParameteriEXT,
8472 programPacked, pname, value)));
8473 if (isCallValid)
8474 {
8475 context->programParameteri(programPacked, pname, value);
8476 }
8477 ANGLE_CAPTURE_GL(ProgramParameteriEXT, isCallValid, context, programPacked, pname, value);
8478 }
8479 else
8480 {
8481 GenerateContextLostErrorOnCurrentGlobalContext();
8482 }
8483 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
8484 }
8485
GL_ProgramUniform1fEXT(GLuint program,GLint location,GLfloat v0)8486 void GL_APIENTRY GL_ProgramUniform1fEXT(GLuint program, GLint location, GLfloat v0)
8487 {
8488 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
8489 Context *context = GetValidGlobalContext();
8490 EVENT(context, GLProgramUniform1fEXT, "context = %d, program = %u, location = %d, v0 = %f",
8491 CID(context), program, location, v0);
8492
8493 if (context)
8494 {
8495 ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);
8496 UniformLocation locationPacked = PackParam<UniformLocation>(location);
8497 SCOPED_SHARE_CONTEXT_LOCK(context);
8498 bool isCallValid =
8499 (context->skipValidation() ||
8500 (ValidatePixelLocalStorageInactive(context->getPrivateState(),
8501 context->getMutableErrorSetForValidation(),
8502 angle::EntryPoint::GLProgramUniform1fEXT) &&
8503 ValidateProgramUniform1fEXT(context, angle::EntryPoint::GLProgramUniform1fEXT,
8504 programPacked, locationPacked, v0)));
8505 if (isCallValid)
8506 {
8507 context->programUniform1f(programPacked, locationPacked, v0);
8508 }
8509 ANGLE_CAPTURE_GL(ProgramUniform1fEXT, isCallValid, context, programPacked, locationPacked,
8510 v0);
8511 }
8512 else
8513 {
8514 GenerateContextLostErrorOnCurrentGlobalContext();
8515 }
8516 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
8517 }
8518
GL_ProgramUniform1fvEXT(GLuint program,GLint location,GLsizei count,const GLfloat * value)8519 void GL_APIENTRY GL_ProgramUniform1fvEXT(GLuint program,
8520 GLint location,
8521 GLsizei count,
8522 const GLfloat *value)
8523 {
8524 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
8525 Context *context = GetValidGlobalContext();
8526 EVENT(context, GLProgramUniform1fvEXT,
8527 "context = %d, program = %u, location = %d, count = %d, value = 0x%016" PRIxPTR "",
8528 CID(context), program, location, count, (uintptr_t)value);
8529
8530 if (context)
8531 {
8532 ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);
8533 UniformLocation locationPacked = PackParam<UniformLocation>(location);
8534 SCOPED_SHARE_CONTEXT_LOCK(context);
8535 bool isCallValid =
8536 (context->skipValidation() ||
8537 (ValidatePixelLocalStorageInactive(context->getPrivateState(),
8538 context->getMutableErrorSetForValidation(),
8539 angle::EntryPoint::GLProgramUniform1fvEXT) &&
8540 ValidateProgramUniform1fvEXT(context, angle::EntryPoint::GLProgramUniform1fvEXT,
8541 programPacked, locationPacked, count, value)));
8542 if (isCallValid)
8543 {
8544 context->programUniform1fv(programPacked, locationPacked, count, value);
8545 }
8546 ANGLE_CAPTURE_GL(ProgramUniform1fvEXT, isCallValid, context, programPacked, locationPacked,
8547 count, value);
8548 }
8549 else
8550 {
8551 GenerateContextLostErrorOnCurrentGlobalContext();
8552 }
8553 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
8554 }
8555
GL_ProgramUniform1iEXT(GLuint program,GLint location,GLint v0)8556 void GL_APIENTRY GL_ProgramUniform1iEXT(GLuint program, GLint location, GLint v0)
8557 {
8558 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
8559 Context *context = GetValidGlobalContext();
8560 EVENT(context, GLProgramUniform1iEXT, "context = %d, program = %u, location = %d, v0 = %d",
8561 CID(context), program, location, v0);
8562
8563 if (context)
8564 {
8565 ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);
8566 UniformLocation locationPacked = PackParam<UniformLocation>(location);
8567 SCOPED_SHARE_CONTEXT_LOCK(context);
8568 bool isCallValid =
8569 (context->skipValidation() ||
8570 (ValidatePixelLocalStorageInactive(context->getPrivateState(),
8571 context->getMutableErrorSetForValidation(),
8572 angle::EntryPoint::GLProgramUniform1iEXT) &&
8573 ValidateProgramUniform1iEXT(context, angle::EntryPoint::GLProgramUniform1iEXT,
8574 programPacked, locationPacked, v0)));
8575 if (isCallValid)
8576 {
8577 context->programUniform1i(programPacked, locationPacked, v0);
8578 }
8579 ANGLE_CAPTURE_GL(ProgramUniform1iEXT, isCallValid, context, programPacked, locationPacked,
8580 v0);
8581 }
8582 else
8583 {
8584 GenerateContextLostErrorOnCurrentGlobalContext();
8585 }
8586 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
8587 }
8588
GL_ProgramUniform1ivEXT(GLuint program,GLint location,GLsizei count,const GLint * value)8589 void GL_APIENTRY GL_ProgramUniform1ivEXT(GLuint program,
8590 GLint location,
8591 GLsizei count,
8592 const GLint *value)
8593 {
8594 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
8595 Context *context = GetValidGlobalContext();
8596 EVENT(context, GLProgramUniform1ivEXT,
8597 "context = %d, program = %u, location = %d, count = %d, value = 0x%016" PRIxPTR "",
8598 CID(context), program, location, count, (uintptr_t)value);
8599
8600 if (context)
8601 {
8602 ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);
8603 UniformLocation locationPacked = PackParam<UniformLocation>(location);
8604 SCOPED_SHARE_CONTEXT_LOCK(context);
8605 bool isCallValid =
8606 (context->skipValidation() ||
8607 (ValidatePixelLocalStorageInactive(context->getPrivateState(),
8608 context->getMutableErrorSetForValidation(),
8609 angle::EntryPoint::GLProgramUniform1ivEXT) &&
8610 ValidateProgramUniform1ivEXT(context, angle::EntryPoint::GLProgramUniform1ivEXT,
8611 programPacked, locationPacked, count, value)));
8612 if (isCallValid)
8613 {
8614 context->programUniform1iv(programPacked, locationPacked, count, value);
8615 }
8616 ANGLE_CAPTURE_GL(ProgramUniform1ivEXT, isCallValid, context, programPacked, locationPacked,
8617 count, value);
8618 }
8619 else
8620 {
8621 GenerateContextLostErrorOnCurrentGlobalContext();
8622 }
8623 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
8624 }
8625
GL_ProgramUniform1uiEXT(GLuint program,GLint location,GLuint v0)8626 void GL_APIENTRY GL_ProgramUniform1uiEXT(GLuint program, GLint location, GLuint v0)
8627 {
8628 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
8629 Context *context = GetValidGlobalContext();
8630 EVENT(context, GLProgramUniform1uiEXT, "context = %d, program = %u, location = %d, v0 = %u",
8631 CID(context), program, location, v0);
8632
8633 if (context)
8634 {
8635 ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);
8636 UniformLocation locationPacked = PackParam<UniformLocation>(location);
8637 SCOPED_SHARE_CONTEXT_LOCK(context);
8638 bool isCallValid =
8639 (context->skipValidation() ||
8640 (ValidatePixelLocalStorageInactive(context->getPrivateState(),
8641 context->getMutableErrorSetForValidation(),
8642 angle::EntryPoint::GLProgramUniform1uiEXT) &&
8643 ValidateProgramUniform1uiEXT(context, angle::EntryPoint::GLProgramUniform1uiEXT,
8644 programPacked, locationPacked, v0)));
8645 if (isCallValid)
8646 {
8647 context->programUniform1ui(programPacked, locationPacked, v0);
8648 }
8649 ANGLE_CAPTURE_GL(ProgramUniform1uiEXT, isCallValid, context, programPacked, locationPacked,
8650 v0);
8651 }
8652 else
8653 {
8654 GenerateContextLostErrorOnCurrentGlobalContext();
8655 }
8656 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
8657 }
8658
GL_ProgramUniform1uivEXT(GLuint program,GLint location,GLsizei count,const GLuint * value)8659 void GL_APIENTRY GL_ProgramUniform1uivEXT(GLuint program,
8660 GLint location,
8661 GLsizei count,
8662 const GLuint *value)
8663 {
8664 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
8665 Context *context = GetValidGlobalContext();
8666 EVENT(context, GLProgramUniform1uivEXT,
8667 "context = %d, program = %u, location = %d, count = %d, value = 0x%016" PRIxPTR "",
8668 CID(context), program, location, count, (uintptr_t)value);
8669
8670 if (context)
8671 {
8672 ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);
8673 UniformLocation locationPacked = PackParam<UniformLocation>(location);
8674 SCOPED_SHARE_CONTEXT_LOCK(context);
8675 bool isCallValid =
8676 (context->skipValidation() ||
8677 (ValidatePixelLocalStorageInactive(context->getPrivateState(),
8678 context->getMutableErrorSetForValidation(),
8679 angle::EntryPoint::GLProgramUniform1uivEXT) &&
8680 ValidateProgramUniform1uivEXT(context, angle::EntryPoint::GLProgramUniform1uivEXT,
8681 programPacked, locationPacked, count, value)));
8682 if (isCallValid)
8683 {
8684 context->programUniform1uiv(programPacked, locationPacked, count, value);
8685 }
8686 ANGLE_CAPTURE_GL(ProgramUniform1uivEXT, isCallValid, context, programPacked, locationPacked,
8687 count, value);
8688 }
8689 else
8690 {
8691 GenerateContextLostErrorOnCurrentGlobalContext();
8692 }
8693 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
8694 }
8695
GL_ProgramUniform2fEXT(GLuint program,GLint location,GLfloat v0,GLfloat v1)8696 void GL_APIENTRY GL_ProgramUniform2fEXT(GLuint program, GLint location, GLfloat v0, GLfloat v1)
8697 {
8698 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
8699 Context *context = GetValidGlobalContext();
8700 EVENT(context, GLProgramUniform2fEXT,
8701 "context = %d, program = %u, location = %d, v0 = %f, v1 = %f", CID(context), program,
8702 location, v0, v1);
8703
8704 if (context)
8705 {
8706 ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);
8707 UniformLocation locationPacked = PackParam<UniformLocation>(location);
8708 SCOPED_SHARE_CONTEXT_LOCK(context);
8709 bool isCallValid =
8710 (context->skipValidation() ||
8711 (ValidatePixelLocalStorageInactive(context->getPrivateState(),
8712 context->getMutableErrorSetForValidation(),
8713 angle::EntryPoint::GLProgramUniform2fEXT) &&
8714 ValidateProgramUniform2fEXT(context, angle::EntryPoint::GLProgramUniform2fEXT,
8715 programPacked, locationPacked, v0, v1)));
8716 if (isCallValid)
8717 {
8718 context->programUniform2f(programPacked, locationPacked, v0, v1);
8719 }
8720 ANGLE_CAPTURE_GL(ProgramUniform2fEXT, isCallValid, context, programPacked, locationPacked,
8721 v0, v1);
8722 }
8723 else
8724 {
8725 GenerateContextLostErrorOnCurrentGlobalContext();
8726 }
8727 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
8728 }
8729
GL_ProgramUniform2fvEXT(GLuint program,GLint location,GLsizei count,const GLfloat * value)8730 void GL_APIENTRY GL_ProgramUniform2fvEXT(GLuint program,
8731 GLint location,
8732 GLsizei count,
8733 const GLfloat *value)
8734 {
8735 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
8736 Context *context = GetValidGlobalContext();
8737 EVENT(context, GLProgramUniform2fvEXT,
8738 "context = %d, program = %u, location = %d, count = %d, value = 0x%016" PRIxPTR "",
8739 CID(context), program, location, count, (uintptr_t)value);
8740
8741 if (context)
8742 {
8743 ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);
8744 UniformLocation locationPacked = PackParam<UniformLocation>(location);
8745 SCOPED_SHARE_CONTEXT_LOCK(context);
8746 bool isCallValid =
8747 (context->skipValidation() ||
8748 (ValidatePixelLocalStorageInactive(context->getPrivateState(),
8749 context->getMutableErrorSetForValidation(),
8750 angle::EntryPoint::GLProgramUniform2fvEXT) &&
8751 ValidateProgramUniform2fvEXT(context, angle::EntryPoint::GLProgramUniform2fvEXT,
8752 programPacked, locationPacked, count, value)));
8753 if (isCallValid)
8754 {
8755 context->programUniform2fv(programPacked, locationPacked, count, value);
8756 }
8757 ANGLE_CAPTURE_GL(ProgramUniform2fvEXT, isCallValid, context, programPacked, locationPacked,
8758 count, value);
8759 }
8760 else
8761 {
8762 GenerateContextLostErrorOnCurrentGlobalContext();
8763 }
8764 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
8765 }
8766
GL_ProgramUniform2iEXT(GLuint program,GLint location,GLint v0,GLint v1)8767 void GL_APIENTRY GL_ProgramUniform2iEXT(GLuint program, GLint location, GLint v0, GLint v1)
8768 {
8769 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
8770 Context *context = GetValidGlobalContext();
8771 EVENT(context, GLProgramUniform2iEXT,
8772 "context = %d, program = %u, location = %d, v0 = %d, v1 = %d", CID(context), program,
8773 location, v0, v1);
8774
8775 if (context)
8776 {
8777 ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);
8778 UniformLocation locationPacked = PackParam<UniformLocation>(location);
8779 SCOPED_SHARE_CONTEXT_LOCK(context);
8780 bool isCallValid =
8781 (context->skipValidation() ||
8782 (ValidatePixelLocalStorageInactive(context->getPrivateState(),
8783 context->getMutableErrorSetForValidation(),
8784 angle::EntryPoint::GLProgramUniform2iEXT) &&
8785 ValidateProgramUniform2iEXT(context, angle::EntryPoint::GLProgramUniform2iEXT,
8786 programPacked, locationPacked, v0, v1)));
8787 if (isCallValid)
8788 {
8789 context->programUniform2i(programPacked, locationPacked, v0, v1);
8790 }
8791 ANGLE_CAPTURE_GL(ProgramUniform2iEXT, isCallValid, context, programPacked, locationPacked,
8792 v0, v1);
8793 }
8794 else
8795 {
8796 GenerateContextLostErrorOnCurrentGlobalContext();
8797 }
8798 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
8799 }
8800
GL_ProgramUniform2ivEXT(GLuint program,GLint location,GLsizei count,const GLint * value)8801 void GL_APIENTRY GL_ProgramUniform2ivEXT(GLuint program,
8802 GLint location,
8803 GLsizei count,
8804 const GLint *value)
8805 {
8806 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
8807 Context *context = GetValidGlobalContext();
8808 EVENT(context, GLProgramUniform2ivEXT,
8809 "context = %d, program = %u, location = %d, count = %d, value = 0x%016" PRIxPTR "",
8810 CID(context), program, location, count, (uintptr_t)value);
8811
8812 if (context)
8813 {
8814 ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);
8815 UniformLocation locationPacked = PackParam<UniformLocation>(location);
8816 SCOPED_SHARE_CONTEXT_LOCK(context);
8817 bool isCallValid =
8818 (context->skipValidation() ||
8819 (ValidatePixelLocalStorageInactive(context->getPrivateState(),
8820 context->getMutableErrorSetForValidation(),
8821 angle::EntryPoint::GLProgramUniform2ivEXT) &&
8822 ValidateProgramUniform2ivEXT(context, angle::EntryPoint::GLProgramUniform2ivEXT,
8823 programPacked, locationPacked, count, value)));
8824 if (isCallValid)
8825 {
8826 context->programUniform2iv(programPacked, locationPacked, count, value);
8827 }
8828 ANGLE_CAPTURE_GL(ProgramUniform2ivEXT, isCallValid, context, programPacked, locationPacked,
8829 count, value);
8830 }
8831 else
8832 {
8833 GenerateContextLostErrorOnCurrentGlobalContext();
8834 }
8835 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
8836 }
8837
GL_ProgramUniform2uiEXT(GLuint program,GLint location,GLuint v0,GLuint v1)8838 void GL_APIENTRY GL_ProgramUniform2uiEXT(GLuint program, GLint location, GLuint v0, GLuint v1)
8839 {
8840 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
8841 Context *context = GetValidGlobalContext();
8842 EVENT(context, GLProgramUniform2uiEXT,
8843 "context = %d, program = %u, location = %d, v0 = %u, v1 = %u", CID(context), program,
8844 location, v0, v1);
8845
8846 if (context)
8847 {
8848 ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);
8849 UniformLocation locationPacked = PackParam<UniformLocation>(location);
8850 SCOPED_SHARE_CONTEXT_LOCK(context);
8851 bool isCallValid =
8852 (context->skipValidation() ||
8853 (ValidatePixelLocalStorageInactive(context->getPrivateState(),
8854 context->getMutableErrorSetForValidation(),
8855 angle::EntryPoint::GLProgramUniform2uiEXT) &&
8856 ValidateProgramUniform2uiEXT(context, angle::EntryPoint::GLProgramUniform2uiEXT,
8857 programPacked, locationPacked, v0, v1)));
8858 if (isCallValid)
8859 {
8860 context->programUniform2ui(programPacked, locationPacked, v0, v1);
8861 }
8862 ANGLE_CAPTURE_GL(ProgramUniform2uiEXT, isCallValid, context, programPacked, locationPacked,
8863 v0, v1);
8864 }
8865 else
8866 {
8867 GenerateContextLostErrorOnCurrentGlobalContext();
8868 }
8869 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
8870 }
8871
GL_ProgramUniform2uivEXT(GLuint program,GLint location,GLsizei count,const GLuint * value)8872 void GL_APIENTRY GL_ProgramUniform2uivEXT(GLuint program,
8873 GLint location,
8874 GLsizei count,
8875 const GLuint *value)
8876 {
8877 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
8878 Context *context = GetValidGlobalContext();
8879 EVENT(context, GLProgramUniform2uivEXT,
8880 "context = %d, program = %u, location = %d, count = %d, value = 0x%016" PRIxPTR "",
8881 CID(context), program, location, count, (uintptr_t)value);
8882
8883 if (context)
8884 {
8885 ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);
8886 UniformLocation locationPacked = PackParam<UniformLocation>(location);
8887 SCOPED_SHARE_CONTEXT_LOCK(context);
8888 bool isCallValid =
8889 (context->skipValidation() ||
8890 (ValidatePixelLocalStorageInactive(context->getPrivateState(),
8891 context->getMutableErrorSetForValidation(),
8892 angle::EntryPoint::GLProgramUniform2uivEXT) &&
8893 ValidateProgramUniform2uivEXT(context, angle::EntryPoint::GLProgramUniform2uivEXT,
8894 programPacked, locationPacked, count, value)));
8895 if (isCallValid)
8896 {
8897 context->programUniform2uiv(programPacked, locationPacked, count, value);
8898 }
8899 ANGLE_CAPTURE_GL(ProgramUniform2uivEXT, isCallValid, context, programPacked, locationPacked,
8900 count, value);
8901 }
8902 else
8903 {
8904 GenerateContextLostErrorOnCurrentGlobalContext();
8905 }
8906 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
8907 }
8908
8909 void GL_APIENTRY
GL_ProgramUniform3fEXT(GLuint program,GLint location,GLfloat v0,GLfloat v1,GLfloat v2)8910 GL_ProgramUniform3fEXT(GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2)
8911 {
8912 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
8913 Context *context = GetValidGlobalContext();
8914 EVENT(context, GLProgramUniform3fEXT,
8915 "context = %d, program = %u, location = %d, v0 = %f, v1 = %f, v2 = %f", CID(context),
8916 program, location, v0, v1, v2);
8917
8918 if (context)
8919 {
8920 ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);
8921 UniformLocation locationPacked = PackParam<UniformLocation>(location);
8922 SCOPED_SHARE_CONTEXT_LOCK(context);
8923 bool isCallValid =
8924 (context->skipValidation() ||
8925 (ValidatePixelLocalStorageInactive(context->getPrivateState(),
8926 context->getMutableErrorSetForValidation(),
8927 angle::EntryPoint::GLProgramUniform3fEXT) &&
8928 ValidateProgramUniform3fEXT(context, angle::EntryPoint::GLProgramUniform3fEXT,
8929 programPacked, locationPacked, v0, v1, v2)));
8930 if (isCallValid)
8931 {
8932 context->programUniform3f(programPacked, locationPacked, v0, v1, v2);
8933 }
8934 ANGLE_CAPTURE_GL(ProgramUniform3fEXT, isCallValid, context, programPacked, locationPacked,
8935 v0, v1, v2);
8936 }
8937 else
8938 {
8939 GenerateContextLostErrorOnCurrentGlobalContext();
8940 }
8941 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
8942 }
8943
GL_ProgramUniform3fvEXT(GLuint program,GLint location,GLsizei count,const GLfloat * value)8944 void GL_APIENTRY GL_ProgramUniform3fvEXT(GLuint program,
8945 GLint location,
8946 GLsizei count,
8947 const GLfloat *value)
8948 {
8949 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
8950 Context *context = GetValidGlobalContext();
8951 EVENT(context, GLProgramUniform3fvEXT,
8952 "context = %d, program = %u, location = %d, count = %d, value = 0x%016" PRIxPTR "",
8953 CID(context), program, location, count, (uintptr_t)value);
8954
8955 if (context)
8956 {
8957 ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);
8958 UniformLocation locationPacked = PackParam<UniformLocation>(location);
8959 SCOPED_SHARE_CONTEXT_LOCK(context);
8960 bool isCallValid =
8961 (context->skipValidation() ||
8962 (ValidatePixelLocalStorageInactive(context->getPrivateState(),
8963 context->getMutableErrorSetForValidation(),
8964 angle::EntryPoint::GLProgramUniform3fvEXT) &&
8965 ValidateProgramUniform3fvEXT(context, angle::EntryPoint::GLProgramUniform3fvEXT,
8966 programPacked, locationPacked, count, value)));
8967 if (isCallValid)
8968 {
8969 context->programUniform3fv(programPacked, locationPacked, count, value);
8970 }
8971 ANGLE_CAPTURE_GL(ProgramUniform3fvEXT, isCallValid, context, programPacked, locationPacked,
8972 count, value);
8973 }
8974 else
8975 {
8976 GenerateContextLostErrorOnCurrentGlobalContext();
8977 }
8978 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
8979 }
8980
8981 void GL_APIENTRY
GL_ProgramUniform3iEXT(GLuint program,GLint location,GLint v0,GLint v1,GLint v2)8982 GL_ProgramUniform3iEXT(GLuint program, GLint location, GLint v0, GLint v1, GLint v2)
8983 {
8984 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
8985 Context *context = GetValidGlobalContext();
8986 EVENT(context, GLProgramUniform3iEXT,
8987 "context = %d, program = %u, location = %d, v0 = %d, v1 = %d, v2 = %d", CID(context),
8988 program, location, v0, v1, v2);
8989
8990 if (context)
8991 {
8992 ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);
8993 UniformLocation locationPacked = PackParam<UniformLocation>(location);
8994 SCOPED_SHARE_CONTEXT_LOCK(context);
8995 bool isCallValid =
8996 (context->skipValidation() ||
8997 (ValidatePixelLocalStorageInactive(context->getPrivateState(),
8998 context->getMutableErrorSetForValidation(),
8999 angle::EntryPoint::GLProgramUniform3iEXT) &&
9000 ValidateProgramUniform3iEXT(context, angle::EntryPoint::GLProgramUniform3iEXT,
9001 programPacked, locationPacked, v0, v1, v2)));
9002 if (isCallValid)
9003 {
9004 context->programUniform3i(programPacked, locationPacked, v0, v1, v2);
9005 }
9006 ANGLE_CAPTURE_GL(ProgramUniform3iEXT, isCallValid, context, programPacked, locationPacked,
9007 v0, v1, v2);
9008 }
9009 else
9010 {
9011 GenerateContextLostErrorOnCurrentGlobalContext();
9012 }
9013 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
9014 }
9015
GL_ProgramUniform3ivEXT(GLuint program,GLint location,GLsizei count,const GLint * value)9016 void GL_APIENTRY GL_ProgramUniform3ivEXT(GLuint program,
9017 GLint location,
9018 GLsizei count,
9019 const GLint *value)
9020 {
9021 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
9022 Context *context = GetValidGlobalContext();
9023 EVENT(context, GLProgramUniform3ivEXT,
9024 "context = %d, program = %u, location = %d, count = %d, value = 0x%016" PRIxPTR "",
9025 CID(context), program, location, count, (uintptr_t)value);
9026
9027 if (context)
9028 {
9029 ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);
9030 UniformLocation locationPacked = PackParam<UniformLocation>(location);
9031 SCOPED_SHARE_CONTEXT_LOCK(context);
9032 bool isCallValid =
9033 (context->skipValidation() ||
9034 (ValidatePixelLocalStorageInactive(context->getPrivateState(),
9035 context->getMutableErrorSetForValidation(),
9036 angle::EntryPoint::GLProgramUniform3ivEXT) &&
9037 ValidateProgramUniform3ivEXT(context, angle::EntryPoint::GLProgramUniform3ivEXT,
9038 programPacked, locationPacked, count, value)));
9039 if (isCallValid)
9040 {
9041 context->programUniform3iv(programPacked, locationPacked, count, value);
9042 }
9043 ANGLE_CAPTURE_GL(ProgramUniform3ivEXT, isCallValid, context, programPacked, locationPacked,
9044 count, value);
9045 }
9046 else
9047 {
9048 GenerateContextLostErrorOnCurrentGlobalContext();
9049 }
9050 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
9051 }
9052
9053 void GL_APIENTRY
GL_ProgramUniform3uiEXT(GLuint program,GLint location,GLuint v0,GLuint v1,GLuint v2)9054 GL_ProgramUniform3uiEXT(GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2)
9055 {
9056 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
9057 Context *context = GetValidGlobalContext();
9058 EVENT(context, GLProgramUniform3uiEXT,
9059 "context = %d, program = %u, location = %d, v0 = %u, v1 = %u, v2 = %u", CID(context),
9060 program, location, v0, v1, v2);
9061
9062 if (context)
9063 {
9064 ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);
9065 UniformLocation locationPacked = PackParam<UniformLocation>(location);
9066 SCOPED_SHARE_CONTEXT_LOCK(context);
9067 bool isCallValid =
9068 (context->skipValidation() ||
9069 (ValidatePixelLocalStorageInactive(context->getPrivateState(),
9070 context->getMutableErrorSetForValidation(),
9071 angle::EntryPoint::GLProgramUniform3uiEXT) &&
9072 ValidateProgramUniform3uiEXT(context, angle::EntryPoint::GLProgramUniform3uiEXT,
9073 programPacked, locationPacked, v0, v1, v2)));
9074 if (isCallValid)
9075 {
9076 context->programUniform3ui(programPacked, locationPacked, v0, v1, v2);
9077 }
9078 ANGLE_CAPTURE_GL(ProgramUniform3uiEXT, isCallValid, context, programPacked, locationPacked,
9079 v0, v1, v2);
9080 }
9081 else
9082 {
9083 GenerateContextLostErrorOnCurrentGlobalContext();
9084 }
9085 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
9086 }
9087
GL_ProgramUniform3uivEXT(GLuint program,GLint location,GLsizei count,const GLuint * value)9088 void GL_APIENTRY GL_ProgramUniform3uivEXT(GLuint program,
9089 GLint location,
9090 GLsizei count,
9091 const GLuint *value)
9092 {
9093 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
9094 Context *context = GetValidGlobalContext();
9095 EVENT(context, GLProgramUniform3uivEXT,
9096 "context = %d, program = %u, location = %d, count = %d, value = 0x%016" PRIxPTR "",
9097 CID(context), program, location, count, (uintptr_t)value);
9098
9099 if (context)
9100 {
9101 ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);
9102 UniformLocation locationPacked = PackParam<UniformLocation>(location);
9103 SCOPED_SHARE_CONTEXT_LOCK(context);
9104 bool isCallValid =
9105 (context->skipValidation() ||
9106 (ValidatePixelLocalStorageInactive(context->getPrivateState(),
9107 context->getMutableErrorSetForValidation(),
9108 angle::EntryPoint::GLProgramUniform3uivEXT) &&
9109 ValidateProgramUniform3uivEXT(context, angle::EntryPoint::GLProgramUniform3uivEXT,
9110 programPacked, locationPacked, count, value)));
9111 if (isCallValid)
9112 {
9113 context->programUniform3uiv(programPacked, locationPacked, count, value);
9114 }
9115 ANGLE_CAPTURE_GL(ProgramUniform3uivEXT, isCallValid, context, programPacked, locationPacked,
9116 count, value);
9117 }
9118 else
9119 {
9120 GenerateContextLostErrorOnCurrentGlobalContext();
9121 }
9122 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
9123 }
9124
GL_ProgramUniform4fEXT(GLuint program,GLint location,GLfloat v0,GLfloat v1,GLfloat v2,GLfloat v3)9125 void GL_APIENTRY GL_ProgramUniform4fEXT(GLuint program,
9126 GLint location,
9127 GLfloat v0,
9128 GLfloat v1,
9129 GLfloat v2,
9130 GLfloat v3)
9131 {
9132 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
9133 Context *context = GetValidGlobalContext();
9134 EVENT(context, GLProgramUniform4fEXT,
9135 "context = %d, program = %u, location = %d, v0 = %f, v1 = %f, v2 = %f, v3 = %f",
9136 CID(context), program, location, v0, v1, v2, v3);
9137
9138 if (context)
9139 {
9140 ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);
9141 UniformLocation locationPacked = PackParam<UniformLocation>(location);
9142 SCOPED_SHARE_CONTEXT_LOCK(context);
9143 bool isCallValid =
9144 (context->skipValidation() ||
9145 (ValidatePixelLocalStorageInactive(context->getPrivateState(),
9146 context->getMutableErrorSetForValidation(),
9147 angle::EntryPoint::GLProgramUniform4fEXT) &&
9148 ValidateProgramUniform4fEXT(context, angle::EntryPoint::GLProgramUniform4fEXT,
9149 programPacked, locationPacked, v0, v1, v2, v3)));
9150 if (isCallValid)
9151 {
9152 context->programUniform4f(programPacked, locationPacked, v0, v1, v2, v3);
9153 }
9154 ANGLE_CAPTURE_GL(ProgramUniform4fEXT, isCallValid, context, programPacked, locationPacked,
9155 v0, v1, v2, v3);
9156 }
9157 else
9158 {
9159 GenerateContextLostErrorOnCurrentGlobalContext();
9160 }
9161 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
9162 }
9163
GL_ProgramUniform4fvEXT(GLuint program,GLint location,GLsizei count,const GLfloat * value)9164 void GL_APIENTRY GL_ProgramUniform4fvEXT(GLuint program,
9165 GLint location,
9166 GLsizei count,
9167 const GLfloat *value)
9168 {
9169 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
9170 Context *context = GetValidGlobalContext();
9171 EVENT(context, GLProgramUniform4fvEXT,
9172 "context = %d, program = %u, location = %d, count = %d, value = 0x%016" PRIxPTR "",
9173 CID(context), program, location, count, (uintptr_t)value);
9174
9175 if (context)
9176 {
9177 ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);
9178 UniformLocation locationPacked = PackParam<UniformLocation>(location);
9179 SCOPED_SHARE_CONTEXT_LOCK(context);
9180 bool isCallValid =
9181 (context->skipValidation() ||
9182 (ValidatePixelLocalStorageInactive(context->getPrivateState(),
9183 context->getMutableErrorSetForValidation(),
9184 angle::EntryPoint::GLProgramUniform4fvEXT) &&
9185 ValidateProgramUniform4fvEXT(context, angle::EntryPoint::GLProgramUniform4fvEXT,
9186 programPacked, locationPacked, count, value)));
9187 if (isCallValid)
9188 {
9189 context->programUniform4fv(programPacked, locationPacked, count, value);
9190 }
9191 ANGLE_CAPTURE_GL(ProgramUniform4fvEXT, isCallValid, context, programPacked, locationPacked,
9192 count, value);
9193 }
9194 else
9195 {
9196 GenerateContextLostErrorOnCurrentGlobalContext();
9197 }
9198 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
9199 }
9200
9201 void GL_APIENTRY
GL_ProgramUniform4iEXT(GLuint program,GLint location,GLint v0,GLint v1,GLint v2,GLint v3)9202 GL_ProgramUniform4iEXT(GLuint program, GLint location, GLint v0, GLint v1, GLint v2, GLint v3)
9203 {
9204 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
9205 Context *context = GetValidGlobalContext();
9206 EVENT(context, GLProgramUniform4iEXT,
9207 "context = %d, program = %u, location = %d, v0 = %d, v1 = %d, v2 = %d, v3 = %d",
9208 CID(context), program, location, v0, v1, v2, v3);
9209
9210 if (context)
9211 {
9212 ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);
9213 UniformLocation locationPacked = PackParam<UniformLocation>(location);
9214 SCOPED_SHARE_CONTEXT_LOCK(context);
9215 bool isCallValid =
9216 (context->skipValidation() ||
9217 (ValidatePixelLocalStorageInactive(context->getPrivateState(),
9218 context->getMutableErrorSetForValidation(),
9219 angle::EntryPoint::GLProgramUniform4iEXT) &&
9220 ValidateProgramUniform4iEXT(context, angle::EntryPoint::GLProgramUniform4iEXT,
9221 programPacked, locationPacked, v0, v1, v2, v3)));
9222 if (isCallValid)
9223 {
9224 context->programUniform4i(programPacked, locationPacked, v0, v1, v2, v3);
9225 }
9226 ANGLE_CAPTURE_GL(ProgramUniform4iEXT, isCallValid, context, programPacked, locationPacked,
9227 v0, v1, v2, v3);
9228 }
9229 else
9230 {
9231 GenerateContextLostErrorOnCurrentGlobalContext();
9232 }
9233 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
9234 }
9235
GL_ProgramUniform4ivEXT(GLuint program,GLint location,GLsizei count,const GLint * value)9236 void GL_APIENTRY GL_ProgramUniform4ivEXT(GLuint program,
9237 GLint location,
9238 GLsizei count,
9239 const GLint *value)
9240 {
9241 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
9242 Context *context = GetValidGlobalContext();
9243 EVENT(context, GLProgramUniform4ivEXT,
9244 "context = %d, program = %u, location = %d, count = %d, value = 0x%016" PRIxPTR "",
9245 CID(context), program, location, count, (uintptr_t)value);
9246
9247 if (context)
9248 {
9249 ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);
9250 UniformLocation locationPacked = PackParam<UniformLocation>(location);
9251 SCOPED_SHARE_CONTEXT_LOCK(context);
9252 bool isCallValid =
9253 (context->skipValidation() ||
9254 (ValidatePixelLocalStorageInactive(context->getPrivateState(),
9255 context->getMutableErrorSetForValidation(),
9256 angle::EntryPoint::GLProgramUniform4ivEXT) &&
9257 ValidateProgramUniform4ivEXT(context, angle::EntryPoint::GLProgramUniform4ivEXT,
9258 programPacked, locationPacked, count, value)));
9259 if (isCallValid)
9260 {
9261 context->programUniform4iv(programPacked, locationPacked, count, value);
9262 }
9263 ANGLE_CAPTURE_GL(ProgramUniform4ivEXT, isCallValid, context, programPacked, locationPacked,
9264 count, value);
9265 }
9266 else
9267 {
9268 GenerateContextLostErrorOnCurrentGlobalContext();
9269 }
9270 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
9271 }
9272
9273 void GL_APIENTRY
GL_ProgramUniform4uiEXT(GLuint program,GLint location,GLuint v0,GLuint v1,GLuint v2,GLuint v3)9274 GL_ProgramUniform4uiEXT(GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3)
9275 {
9276 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
9277 Context *context = GetValidGlobalContext();
9278 EVENT(context, GLProgramUniform4uiEXT,
9279 "context = %d, program = %u, location = %d, v0 = %u, v1 = %u, v2 = %u, v3 = %u",
9280 CID(context), program, location, v0, v1, v2, v3);
9281
9282 if (context)
9283 {
9284 ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);
9285 UniformLocation locationPacked = PackParam<UniformLocation>(location);
9286 SCOPED_SHARE_CONTEXT_LOCK(context);
9287 bool isCallValid =
9288 (context->skipValidation() ||
9289 (ValidatePixelLocalStorageInactive(context->getPrivateState(),
9290 context->getMutableErrorSetForValidation(),
9291 angle::EntryPoint::GLProgramUniform4uiEXT) &&
9292 ValidateProgramUniform4uiEXT(context, angle::EntryPoint::GLProgramUniform4uiEXT,
9293 programPacked, locationPacked, v0, v1, v2, v3)));
9294 if (isCallValid)
9295 {
9296 context->programUniform4ui(programPacked, locationPacked, v0, v1, v2, v3);
9297 }
9298 ANGLE_CAPTURE_GL(ProgramUniform4uiEXT, isCallValid, context, programPacked, locationPacked,
9299 v0, v1, v2, v3);
9300 }
9301 else
9302 {
9303 GenerateContextLostErrorOnCurrentGlobalContext();
9304 }
9305 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
9306 }
9307
GL_ProgramUniform4uivEXT(GLuint program,GLint location,GLsizei count,const GLuint * value)9308 void GL_APIENTRY GL_ProgramUniform4uivEXT(GLuint program,
9309 GLint location,
9310 GLsizei count,
9311 const GLuint *value)
9312 {
9313 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
9314 Context *context = GetValidGlobalContext();
9315 EVENT(context, GLProgramUniform4uivEXT,
9316 "context = %d, program = %u, location = %d, count = %d, value = 0x%016" PRIxPTR "",
9317 CID(context), program, location, count, (uintptr_t)value);
9318
9319 if (context)
9320 {
9321 ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);
9322 UniformLocation locationPacked = PackParam<UniformLocation>(location);
9323 SCOPED_SHARE_CONTEXT_LOCK(context);
9324 bool isCallValid =
9325 (context->skipValidation() ||
9326 (ValidatePixelLocalStorageInactive(context->getPrivateState(),
9327 context->getMutableErrorSetForValidation(),
9328 angle::EntryPoint::GLProgramUniform4uivEXT) &&
9329 ValidateProgramUniform4uivEXT(context, angle::EntryPoint::GLProgramUniform4uivEXT,
9330 programPacked, locationPacked, count, value)));
9331 if (isCallValid)
9332 {
9333 context->programUniform4uiv(programPacked, locationPacked, count, value);
9334 }
9335 ANGLE_CAPTURE_GL(ProgramUniform4uivEXT, isCallValid, context, programPacked, locationPacked,
9336 count, value);
9337 }
9338 else
9339 {
9340 GenerateContextLostErrorOnCurrentGlobalContext();
9341 }
9342 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
9343 }
9344
GL_ProgramUniformMatrix2fvEXT(GLuint program,GLint location,GLsizei count,GLboolean transpose,const GLfloat * value)9345 void GL_APIENTRY GL_ProgramUniformMatrix2fvEXT(GLuint program,
9346 GLint location,
9347 GLsizei count,
9348 GLboolean transpose,
9349 const GLfloat *value)
9350 {
9351 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
9352 Context *context = GetValidGlobalContext();
9353 EVENT(context, GLProgramUniformMatrix2fvEXT,
9354 "context = %d, program = %u, location = %d, count = %d, transpose = %s, value = "
9355 "0x%016" PRIxPTR "",
9356 CID(context), program, location, count, GLbooleanToString(transpose), (uintptr_t)value);
9357
9358 if (context)
9359 {
9360 ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);
9361 UniformLocation locationPacked = PackParam<UniformLocation>(location);
9362 SCOPED_SHARE_CONTEXT_LOCK(context);
9363 bool isCallValid =
9364 (context->skipValidation() ||
9365 (ValidatePixelLocalStorageInactive(context->getPrivateState(),
9366 context->getMutableErrorSetForValidation(),
9367 angle::EntryPoint::GLProgramUniformMatrix2fvEXT) &&
9368 ValidateProgramUniformMatrix2fvEXT(
9369 context, angle::EntryPoint::GLProgramUniformMatrix2fvEXT, programPacked,
9370 locationPacked, count, transpose, value)));
9371 if (isCallValid)
9372 {
9373 context->programUniformMatrix2fv(programPacked, locationPacked, count, transpose,
9374 value);
9375 }
9376 ANGLE_CAPTURE_GL(ProgramUniformMatrix2fvEXT, isCallValid, context, programPacked,
9377 locationPacked, count, transpose, value);
9378 }
9379 else
9380 {
9381 GenerateContextLostErrorOnCurrentGlobalContext();
9382 }
9383 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
9384 }
9385
GL_ProgramUniformMatrix2x3fvEXT(GLuint program,GLint location,GLsizei count,GLboolean transpose,const GLfloat * value)9386 void GL_APIENTRY GL_ProgramUniformMatrix2x3fvEXT(GLuint program,
9387 GLint location,
9388 GLsizei count,
9389 GLboolean transpose,
9390 const GLfloat *value)
9391 {
9392 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
9393 Context *context = GetValidGlobalContext();
9394 EVENT(context, GLProgramUniformMatrix2x3fvEXT,
9395 "context = %d, program = %u, location = %d, count = %d, transpose = %s, value = "
9396 "0x%016" PRIxPTR "",
9397 CID(context), program, location, count, GLbooleanToString(transpose), (uintptr_t)value);
9398
9399 if (context)
9400 {
9401 ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);
9402 UniformLocation locationPacked = PackParam<UniformLocation>(location);
9403 SCOPED_SHARE_CONTEXT_LOCK(context);
9404 bool isCallValid =
9405 (context->skipValidation() ||
9406 (ValidatePixelLocalStorageInactive(
9407 context->getPrivateState(), context->getMutableErrorSetForValidation(),
9408 angle::EntryPoint::GLProgramUniformMatrix2x3fvEXT) &&
9409 ValidateProgramUniformMatrix2x3fvEXT(
9410 context, angle::EntryPoint::GLProgramUniformMatrix2x3fvEXT, programPacked,
9411 locationPacked, count, transpose, value)));
9412 if (isCallValid)
9413 {
9414 context->programUniformMatrix2x3fv(programPacked, locationPacked, count, transpose,
9415 value);
9416 }
9417 ANGLE_CAPTURE_GL(ProgramUniformMatrix2x3fvEXT, isCallValid, context, programPacked,
9418 locationPacked, count, transpose, value);
9419 }
9420 else
9421 {
9422 GenerateContextLostErrorOnCurrentGlobalContext();
9423 }
9424 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
9425 }
9426
GL_ProgramUniformMatrix2x4fvEXT(GLuint program,GLint location,GLsizei count,GLboolean transpose,const GLfloat * value)9427 void GL_APIENTRY GL_ProgramUniformMatrix2x4fvEXT(GLuint program,
9428 GLint location,
9429 GLsizei count,
9430 GLboolean transpose,
9431 const GLfloat *value)
9432 {
9433 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
9434 Context *context = GetValidGlobalContext();
9435 EVENT(context, GLProgramUniformMatrix2x4fvEXT,
9436 "context = %d, program = %u, location = %d, count = %d, transpose = %s, value = "
9437 "0x%016" PRIxPTR "",
9438 CID(context), program, location, count, GLbooleanToString(transpose), (uintptr_t)value);
9439
9440 if (context)
9441 {
9442 ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);
9443 UniformLocation locationPacked = PackParam<UniformLocation>(location);
9444 SCOPED_SHARE_CONTEXT_LOCK(context);
9445 bool isCallValid =
9446 (context->skipValidation() ||
9447 (ValidatePixelLocalStorageInactive(
9448 context->getPrivateState(), context->getMutableErrorSetForValidation(),
9449 angle::EntryPoint::GLProgramUniformMatrix2x4fvEXT) &&
9450 ValidateProgramUniformMatrix2x4fvEXT(
9451 context, angle::EntryPoint::GLProgramUniformMatrix2x4fvEXT, programPacked,
9452 locationPacked, count, transpose, value)));
9453 if (isCallValid)
9454 {
9455 context->programUniformMatrix2x4fv(programPacked, locationPacked, count, transpose,
9456 value);
9457 }
9458 ANGLE_CAPTURE_GL(ProgramUniformMatrix2x4fvEXT, isCallValid, context, programPacked,
9459 locationPacked, count, transpose, value);
9460 }
9461 else
9462 {
9463 GenerateContextLostErrorOnCurrentGlobalContext();
9464 }
9465 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
9466 }
9467
GL_ProgramUniformMatrix3fvEXT(GLuint program,GLint location,GLsizei count,GLboolean transpose,const GLfloat * value)9468 void GL_APIENTRY GL_ProgramUniformMatrix3fvEXT(GLuint program,
9469 GLint location,
9470 GLsizei count,
9471 GLboolean transpose,
9472 const GLfloat *value)
9473 {
9474 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
9475 Context *context = GetValidGlobalContext();
9476 EVENT(context, GLProgramUniformMatrix3fvEXT,
9477 "context = %d, program = %u, location = %d, count = %d, transpose = %s, value = "
9478 "0x%016" PRIxPTR "",
9479 CID(context), program, location, count, GLbooleanToString(transpose), (uintptr_t)value);
9480
9481 if (context)
9482 {
9483 ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);
9484 UniformLocation locationPacked = PackParam<UniformLocation>(location);
9485 SCOPED_SHARE_CONTEXT_LOCK(context);
9486 bool isCallValid =
9487 (context->skipValidation() ||
9488 (ValidatePixelLocalStorageInactive(context->getPrivateState(),
9489 context->getMutableErrorSetForValidation(),
9490 angle::EntryPoint::GLProgramUniformMatrix3fvEXT) &&
9491 ValidateProgramUniformMatrix3fvEXT(
9492 context, angle::EntryPoint::GLProgramUniformMatrix3fvEXT, programPacked,
9493 locationPacked, count, transpose, value)));
9494 if (isCallValid)
9495 {
9496 context->programUniformMatrix3fv(programPacked, locationPacked, count, transpose,
9497 value);
9498 }
9499 ANGLE_CAPTURE_GL(ProgramUniformMatrix3fvEXT, isCallValid, context, programPacked,
9500 locationPacked, count, transpose, value);
9501 }
9502 else
9503 {
9504 GenerateContextLostErrorOnCurrentGlobalContext();
9505 }
9506 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
9507 }
9508
GL_ProgramUniformMatrix3x2fvEXT(GLuint program,GLint location,GLsizei count,GLboolean transpose,const GLfloat * value)9509 void GL_APIENTRY GL_ProgramUniformMatrix3x2fvEXT(GLuint program,
9510 GLint location,
9511 GLsizei count,
9512 GLboolean transpose,
9513 const GLfloat *value)
9514 {
9515 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
9516 Context *context = GetValidGlobalContext();
9517 EVENT(context, GLProgramUniformMatrix3x2fvEXT,
9518 "context = %d, program = %u, location = %d, count = %d, transpose = %s, value = "
9519 "0x%016" PRIxPTR "",
9520 CID(context), program, location, count, GLbooleanToString(transpose), (uintptr_t)value);
9521
9522 if (context)
9523 {
9524 ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);
9525 UniformLocation locationPacked = PackParam<UniformLocation>(location);
9526 SCOPED_SHARE_CONTEXT_LOCK(context);
9527 bool isCallValid =
9528 (context->skipValidation() ||
9529 (ValidatePixelLocalStorageInactive(
9530 context->getPrivateState(), context->getMutableErrorSetForValidation(),
9531 angle::EntryPoint::GLProgramUniformMatrix3x2fvEXT) &&
9532 ValidateProgramUniformMatrix3x2fvEXT(
9533 context, angle::EntryPoint::GLProgramUniformMatrix3x2fvEXT, programPacked,
9534 locationPacked, count, transpose, value)));
9535 if (isCallValid)
9536 {
9537 context->programUniformMatrix3x2fv(programPacked, locationPacked, count, transpose,
9538 value);
9539 }
9540 ANGLE_CAPTURE_GL(ProgramUniformMatrix3x2fvEXT, isCallValid, context, programPacked,
9541 locationPacked, count, transpose, value);
9542 }
9543 else
9544 {
9545 GenerateContextLostErrorOnCurrentGlobalContext();
9546 }
9547 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
9548 }
9549
GL_ProgramUniformMatrix3x4fvEXT(GLuint program,GLint location,GLsizei count,GLboolean transpose,const GLfloat * value)9550 void GL_APIENTRY GL_ProgramUniformMatrix3x4fvEXT(GLuint program,
9551 GLint location,
9552 GLsizei count,
9553 GLboolean transpose,
9554 const GLfloat *value)
9555 {
9556 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
9557 Context *context = GetValidGlobalContext();
9558 EVENT(context, GLProgramUniformMatrix3x4fvEXT,
9559 "context = %d, program = %u, location = %d, count = %d, transpose = %s, value = "
9560 "0x%016" PRIxPTR "",
9561 CID(context), program, location, count, GLbooleanToString(transpose), (uintptr_t)value);
9562
9563 if (context)
9564 {
9565 ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);
9566 UniformLocation locationPacked = PackParam<UniformLocation>(location);
9567 SCOPED_SHARE_CONTEXT_LOCK(context);
9568 bool isCallValid =
9569 (context->skipValidation() ||
9570 (ValidatePixelLocalStorageInactive(
9571 context->getPrivateState(), context->getMutableErrorSetForValidation(),
9572 angle::EntryPoint::GLProgramUniformMatrix3x4fvEXT) &&
9573 ValidateProgramUniformMatrix3x4fvEXT(
9574 context, angle::EntryPoint::GLProgramUniformMatrix3x4fvEXT, programPacked,
9575 locationPacked, count, transpose, value)));
9576 if (isCallValid)
9577 {
9578 context->programUniformMatrix3x4fv(programPacked, locationPacked, count, transpose,
9579 value);
9580 }
9581 ANGLE_CAPTURE_GL(ProgramUniformMatrix3x4fvEXT, isCallValid, context, programPacked,
9582 locationPacked, count, transpose, value);
9583 }
9584 else
9585 {
9586 GenerateContextLostErrorOnCurrentGlobalContext();
9587 }
9588 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
9589 }
9590
GL_ProgramUniformMatrix4fvEXT(GLuint program,GLint location,GLsizei count,GLboolean transpose,const GLfloat * value)9591 void GL_APIENTRY GL_ProgramUniformMatrix4fvEXT(GLuint program,
9592 GLint location,
9593 GLsizei count,
9594 GLboolean transpose,
9595 const GLfloat *value)
9596 {
9597 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
9598 Context *context = GetValidGlobalContext();
9599 EVENT(context, GLProgramUniformMatrix4fvEXT,
9600 "context = %d, program = %u, location = %d, count = %d, transpose = %s, value = "
9601 "0x%016" PRIxPTR "",
9602 CID(context), program, location, count, GLbooleanToString(transpose), (uintptr_t)value);
9603
9604 if (context)
9605 {
9606 ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);
9607 UniformLocation locationPacked = PackParam<UniformLocation>(location);
9608 SCOPED_SHARE_CONTEXT_LOCK(context);
9609 bool isCallValid =
9610 (context->skipValidation() ||
9611 (ValidatePixelLocalStorageInactive(context->getPrivateState(),
9612 context->getMutableErrorSetForValidation(),
9613 angle::EntryPoint::GLProgramUniformMatrix4fvEXT) &&
9614 ValidateProgramUniformMatrix4fvEXT(
9615 context, angle::EntryPoint::GLProgramUniformMatrix4fvEXT, programPacked,
9616 locationPacked, count, transpose, value)));
9617 if (isCallValid)
9618 {
9619 context->programUniformMatrix4fv(programPacked, locationPacked, count, transpose,
9620 value);
9621 }
9622 ANGLE_CAPTURE_GL(ProgramUniformMatrix4fvEXT, isCallValid, context, programPacked,
9623 locationPacked, count, transpose, value);
9624 }
9625 else
9626 {
9627 GenerateContextLostErrorOnCurrentGlobalContext();
9628 }
9629 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
9630 }
9631
GL_ProgramUniformMatrix4x2fvEXT(GLuint program,GLint location,GLsizei count,GLboolean transpose,const GLfloat * value)9632 void GL_APIENTRY GL_ProgramUniformMatrix4x2fvEXT(GLuint program,
9633 GLint location,
9634 GLsizei count,
9635 GLboolean transpose,
9636 const GLfloat *value)
9637 {
9638 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
9639 Context *context = GetValidGlobalContext();
9640 EVENT(context, GLProgramUniformMatrix4x2fvEXT,
9641 "context = %d, program = %u, location = %d, count = %d, transpose = %s, value = "
9642 "0x%016" PRIxPTR "",
9643 CID(context), program, location, count, GLbooleanToString(transpose), (uintptr_t)value);
9644
9645 if (context)
9646 {
9647 ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);
9648 UniformLocation locationPacked = PackParam<UniformLocation>(location);
9649 SCOPED_SHARE_CONTEXT_LOCK(context);
9650 bool isCallValid =
9651 (context->skipValidation() ||
9652 (ValidatePixelLocalStorageInactive(
9653 context->getPrivateState(), context->getMutableErrorSetForValidation(),
9654 angle::EntryPoint::GLProgramUniformMatrix4x2fvEXT) &&
9655 ValidateProgramUniformMatrix4x2fvEXT(
9656 context, angle::EntryPoint::GLProgramUniformMatrix4x2fvEXT, programPacked,
9657 locationPacked, count, transpose, value)));
9658 if (isCallValid)
9659 {
9660 context->programUniformMatrix4x2fv(programPacked, locationPacked, count, transpose,
9661 value);
9662 }
9663 ANGLE_CAPTURE_GL(ProgramUniformMatrix4x2fvEXT, isCallValid, context, programPacked,
9664 locationPacked, count, transpose, value);
9665 }
9666 else
9667 {
9668 GenerateContextLostErrorOnCurrentGlobalContext();
9669 }
9670 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
9671 }
9672
GL_ProgramUniformMatrix4x3fvEXT(GLuint program,GLint location,GLsizei count,GLboolean transpose,const GLfloat * value)9673 void GL_APIENTRY GL_ProgramUniformMatrix4x3fvEXT(GLuint program,
9674 GLint location,
9675 GLsizei count,
9676 GLboolean transpose,
9677 const GLfloat *value)
9678 {
9679 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
9680 Context *context = GetValidGlobalContext();
9681 EVENT(context, GLProgramUniformMatrix4x3fvEXT,
9682 "context = %d, program = %u, location = %d, count = %d, transpose = %s, value = "
9683 "0x%016" PRIxPTR "",
9684 CID(context), program, location, count, GLbooleanToString(transpose), (uintptr_t)value);
9685
9686 if (context)
9687 {
9688 ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);
9689 UniformLocation locationPacked = PackParam<UniformLocation>(location);
9690 SCOPED_SHARE_CONTEXT_LOCK(context);
9691 bool isCallValid =
9692 (context->skipValidation() ||
9693 (ValidatePixelLocalStorageInactive(
9694 context->getPrivateState(), context->getMutableErrorSetForValidation(),
9695 angle::EntryPoint::GLProgramUniformMatrix4x3fvEXT) &&
9696 ValidateProgramUniformMatrix4x3fvEXT(
9697 context, angle::EntryPoint::GLProgramUniformMatrix4x3fvEXT, programPacked,
9698 locationPacked, count, transpose, value)));
9699 if (isCallValid)
9700 {
9701 context->programUniformMatrix4x3fv(programPacked, locationPacked, count, transpose,
9702 value);
9703 }
9704 ANGLE_CAPTURE_GL(ProgramUniformMatrix4x3fvEXT, isCallValid, context, programPacked,
9705 locationPacked, count, transpose, value);
9706 }
9707 else
9708 {
9709 GenerateContextLostErrorOnCurrentGlobalContext();
9710 }
9711 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
9712 }
9713
GL_UseProgramStagesEXT(GLuint pipeline,GLbitfield stages,GLuint program)9714 void GL_APIENTRY GL_UseProgramStagesEXT(GLuint pipeline, GLbitfield stages, GLuint program)
9715 {
9716 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
9717 Context *context = GetValidGlobalContext();
9718 EVENT(context, GLUseProgramStagesEXT, "context = %d, pipeline = %u, stages = %s, program = %u",
9719 CID(context), pipeline, GLbitfieldToString(GLESEnum::UseProgramStageMask, stages).c_str(),
9720 program);
9721
9722 if (context)
9723 {
9724 ProgramPipelineID pipelinePacked = PackParam<ProgramPipelineID>(pipeline);
9725 ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);
9726 SCOPED_SHARE_CONTEXT_LOCK(context);
9727 bool isCallValid =
9728 (context->skipValidation() ||
9729 (ValidatePixelLocalStorageInactive(context->getPrivateState(),
9730 context->getMutableErrorSetForValidation(),
9731 angle::EntryPoint::GLUseProgramStagesEXT) &&
9732 ValidateUseProgramStagesEXT(context, angle::EntryPoint::GLUseProgramStagesEXT,
9733 pipelinePacked, stages, programPacked)));
9734 if (isCallValid)
9735 {
9736 context->useProgramStages(pipelinePacked, stages, programPacked);
9737 }
9738 ANGLE_CAPTURE_GL(UseProgramStagesEXT, isCallValid, context, pipelinePacked, stages,
9739 programPacked);
9740 }
9741 else
9742 {
9743 GenerateContextLostErrorOnCurrentGlobalContext();
9744 }
9745 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
9746 }
9747
GL_ValidateProgramPipelineEXT(GLuint pipeline)9748 void GL_APIENTRY GL_ValidateProgramPipelineEXT(GLuint pipeline)
9749 {
9750 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
9751 Context *context = GetValidGlobalContext();
9752 EVENT(context, GLValidateProgramPipelineEXT, "context = %d, pipeline = %u", CID(context),
9753 pipeline);
9754
9755 if (context)
9756 {
9757 ProgramPipelineID pipelinePacked = PackParam<ProgramPipelineID>(pipeline);
9758 SCOPED_SHARE_CONTEXT_LOCK(context);
9759 bool isCallValid =
9760 (context->skipValidation() ||
9761 (ValidatePixelLocalStorageInactive(context->getPrivateState(),
9762 context->getMutableErrorSetForValidation(),
9763 angle::EntryPoint::GLValidateProgramPipelineEXT) &&
9764 ValidateValidateProgramPipelineEXT(
9765 context, angle::EntryPoint::GLValidateProgramPipelineEXT, pipelinePacked)));
9766 if (isCallValid)
9767 {
9768 context->validateProgramPipeline(pipelinePacked);
9769 }
9770 ANGLE_CAPTURE_GL(ValidateProgramPipelineEXT, isCallValid, context, pipelinePacked);
9771 }
9772 else
9773 {
9774 GenerateContextLostErrorOnCurrentGlobalContext();
9775 }
9776 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
9777 }
9778
9779 // GL_EXT_shader_framebuffer_fetch
9780
9781 // GL_EXT_shader_framebuffer_fetch_non_coherent
GL_FramebufferFetchBarrierEXT()9782 void GL_APIENTRY GL_FramebufferFetchBarrierEXT()
9783 {
9784 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
9785 Context *context = GetValidGlobalContext();
9786 EVENT(context, GLFramebufferFetchBarrierEXT, "context = %d", CID(context));
9787
9788 if (context)
9789 {
9790 SCOPED_SHARE_CONTEXT_LOCK(context);
9791 bool isCallValid =
9792 (context->skipValidation() ||
9793 (ValidatePixelLocalStorageInactive(context->getPrivateState(),
9794 context->getMutableErrorSetForValidation(),
9795 angle::EntryPoint::GLFramebufferFetchBarrierEXT) &&
9796 ValidateFramebufferFetchBarrierEXT(context,
9797 angle::EntryPoint::GLFramebufferFetchBarrierEXT)));
9798 if (isCallValid)
9799 {
9800 context->framebufferFetchBarrier();
9801 }
9802 ANGLE_CAPTURE_GL(FramebufferFetchBarrierEXT, isCallValid, context);
9803 }
9804 else
9805 {
9806 GenerateContextLostErrorOnCurrentGlobalContext();
9807 }
9808 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
9809 }
9810
9811 // GL_EXT_shader_io_blocks
9812
9813 // GL_EXT_shader_non_constant_global_initializers
9814
9815 // GL_EXT_shader_texture_lod
9816
9817 // GL_EXT_shadow_samplers
9818
9819 // GL_EXT_tessellation_shader
GL_PatchParameteriEXT(GLenum pname,GLint value)9820 void GL_APIENTRY GL_PatchParameteriEXT(GLenum pname, GLint value)
9821 {
9822 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
9823 Context *context = GetValidGlobalContext();
9824 EVENT(context, GLPatchParameteriEXT, "context = %d, pname = %s, value = %d", CID(context),
9825 GLenumToString(GLESEnum::PatchParameterName, pname), value);
9826
9827 if (context)
9828 {
9829 bool isCallValid =
9830 (context->skipValidation() ||
9831 (ValidatePixelLocalStorageInactive(context->getPrivateState(),
9832 context->getMutableErrorSetForValidation(),
9833 angle::EntryPoint::GLPatchParameteriEXT) &&
9834 ValidatePatchParameteriEXT(context->getPrivateState(),
9835 context->getMutableErrorSetForValidation(),
9836 angle::EntryPoint::GLPatchParameteriEXT, pname, value)));
9837 if (isCallValid)
9838 {
9839 ContextPrivatePatchParameteri(context->getMutablePrivateState(),
9840 context->getMutablePrivateStateCache(), pname, value);
9841 }
9842 ANGLE_CAPTURE_GL(PatchParameteriEXT, isCallValid, context, pname, value);
9843 }
9844 else
9845 {
9846 GenerateContextLostErrorOnCurrentGlobalContext();
9847 }
9848 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
9849 }
9850
9851 // GL_EXT_texture_border_clamp
GL_GetSamplerParameterIivEXT(GLuint sampler,GLenum pname,GLint * params)9852 void GL_APIENTRY GL_GetSamplerParameterIivEXT(GLuint sampler, GLenum pname, GLint *params)
9853 {
9854 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
9855 Context *context = GetValidGlobalContext();
9856 EVENT(context, GLGetSamplerParameterIivEXT,
9857 "context = %d, sampler = %u, pname = %s, params = 0x%016" PRIxPTR "", CID(context),
9858 sampler, GLenumToString(GLESEnum::SamplerParameterI, pname), (uintptr_t)params);
9859
9860 if (context)
9861 {
9862 SamplerID samplerPacked = PackParam<SamplerID>(sampler);
9863 SCOPED_SHARE_CONTEXT_LOCK(context);
9864 bool isCallValid = (context->skipValidation() ||
9865 ValidateGetSamplerParameterIivEXT(
9866 context, angle::EntryPoint::GLGetSamplerParameterIivEXT,
9867 samplerPacked, pname, params));
9868 if (isCallValid)
9869 {
9870 context->getSamplerParameterIiv(samplerPacked, pname, params);
9871 }
9872 ANGLE_CAPTURE_GL(GetSamplerParameterIivEXT, isCallValid, context, samplerPacked, pname,
9873 params);
9874 }
9875 else
9876 {
9877 GenerateContextLostErrorOnCurrentGlobalContext();
9878 }
9879 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
9880 }
9881
GL_GetSamplerParameterIuivEXT(GLuint sampler,GLenum pname,GLuint * params)9882 void GL_APIENTRY GL_GetSamplerParameterIuivEXT(GLuint sampler, GLenum pname, GLuint *params)
9883 {
9884 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
9885 Context *context = GetValidGlobalContext();
9886 EVENT(context, GLGetSamplerParameterIuivEXT,
9887 "context = %d, sampler = %u, pname = %s, params = 0x%016" PRIxPTR "", CID(context),
9888 sampler, GLenumToString(GLESEnum::SamplerParameterI, pname), (uintptr_t)params);
9889
9890 if (context)
9891 {
9892 SamplerID samplerPacked = PackParam<SamplerID>(sampler);
9893 SCOPED_SHARE_CONTEXT_LOCK(context);
9894 bool isCallValid = (context->skipValidation() ||
9895 ValidateGetSamplerParameterIuivEXT(
9896 context, angle::EntryPoint::GLGetSamplerParameterIuivEXT,
9897 samplerPacked, pname, params));
9898 if (isCallValid)
9899 {
9900 context->getSamplerParameterIuiv(samplerPacked, pname, params);
9901 }
9902 ANGLE_CAPTURE_GL(GetSamplerParameterIuivEXT, isCallValid, context, samplerPacked, pname,
9903 params);
9904 }
9905 else
9906 {
9907 GenerateContextLostErrorOnCurrentGlobalContext();
9908 }
9909 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
9910 }
9911
GL_GetTexParameterIivEXT(GLenum target,GLenum pname,GLint * params)9912 void GL_APIENTRY GL_GetTexParameterIivEXT(GLenum target, GLenum pname, GLint *params)
9913 {
9914 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
9915 Context *context = GetValidGlobalContext();
9916 EVENT(context, GLGetTexParameterIivEXT,
9917 "context = %d, target = %s, pname = %s, params = 0x%016" PRIxPTR "", CID(context),
9918 GLenumToString(GLESEnum::TextureTarget, target),
9919 GLenumToString(GLESEnum::GetTextureParameter, pname), (uintptr_t)params);
9920
9921 if (context)
9922 {
9923 TextureType targetPacked = PackParam<TextureType>(target);
9924 SCOPED_SHARE_CONTEXT_LOCK(context);
9925 bool isCallValid =
9926 (context->skipValidation() ||
9927 ValidateGetTexParameterIivEXT(context, angle::EntryPoint::GLGetTexParameterIivEXT,
9928 targetPacked, pname, params));
9929 if (isCallValid)
9930 {
9931 context->getTexParameterIiv(targetPacked, pname, params);
9932 }
9933 ANGLE_CAPTURE_GL(GetTexParameterIivEXT, isCallValid, context, targetPacked, pname, params);
9934 }
9935 else
9936 {
9937 GenerateContextLostErrorOnCurrentGlobalContext();
9938 }
9939 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
9940 }
9941
GL_GetTexParameterIuivEXT(GLenum target,GLenum pname,GLuint * params)9942 void GL_APIENTRY GL_GetTexParameterIuivEXT(GLenum target, GLenum pname, GLuint *params)
9943 {
9944 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
9945 Context *context = GetValidGlobalContext();
9946 EVENT(context, GLGetTexParameterIuivEXT,
9947 "context = %d, target = %s, pname = %s, params = 0x%016" PRIxPTR "", CID(context),
9948 GLenumToString(GLESEnum::TextureTarget, target),
9949 GLenumToString(GLESEnum::GetTextureParameter, pname), (uintptr_t)params);
9950
9951 if (context)
9952 {
9953 TextureType targetPacked = PackParam<TextureType>(target);
9954 SCOPED_SHARE_CONTEXT_LOCK(context);
9955 bool isCallValid =
9956 (context->skipValidation() ||
9957 ValidateGetTexParameterIuivEXT(context, angle::EntryPoint::GLGetTexParameterIuivEXT,
9958 targetPacked, pname, params));
9959 if (isCallValid)
9960 {
9961 context->getTexParameterIuiv(targetPacked, pname, params);
9962 }
9963 ANGLE_CAPTURE_GL(GetTexParameterIuivEXT, isCallValid, context, targetPacked, pname, params);
9964 }
9965 else
9966 {
9967 GenerateContextLostErrorOnCurrentGlobalContext();
9968 }
9969 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
9970 }
9971
GL_SamplerParameterIivEXT(GLuint sampler,GLenum pname,const GLint * param)9972 void GL_APIENTRY GL_SamplerParameterIivEXT(GLuint sampler, GLenum pname, const GLint *param)
9973 {
9974 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
9975 Context *context = GetValidGlobalContext();
9976 EVENT(context, GLSamplerParameterIivEXT,
9977 "context = %d, sampler = %u, pname = %s, param = 0x%016" PRIxPTR "", CID(context),
9978 sampler, GLenumToString(GLESEnum::SamplerParameterI, pname), (uintptr_t)param);
9979
9980 if (context)
9981 {
9982 SamplerID samplerPacked = PackParam<SamplerID>(sampler);
9983 SCOPED_SHARE_CONTEXT_LOCK(context);
9984 bool isCallValid =
9985 (context->skipValidation() ||
9986 ValidateSamplerParameterIivEXT(context, angle::EntryPoint::GLSamplerParameterIivEXT,
9987 samplerPacked, pname, param));
9988 if (isCallValid)
9989 {
9990 context->samplerParameterIiv(samplerPacked, pname, param);
9991 }
9992 ANGLE_CAPTURE_GL(SamplerParameterIivEXT, isCallValid, context, samplerPacked, pname, param);
9993 }
9994 else
9995 {
9996 GenerateContextLostErrorOnCurrentGlobalContext();
9997 }
9998 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
9999 }
10000
GL_SamplerParameterIuivEXT(GLuint sampler,GLenum pname,const GLuint * param)10001 void GL_APIENTRY GL_SamplerParameterIuivEXT(GLuint sampler, GLenum pname, const GLuint *param)
10002 {
10003 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
10004 Context *context = GetValidGlobalContext();
10005 EVENT(context, GLSamplerParameterIuivEXT,
10006 "context = %d, sampler = %u, pname = %s, param = 0x%016" PRIxPTR "", CID(context),
10007 sampler, GLenumToString(GLESEnum::SamplerParameterI, pname), (uintptr_t)param);
10008
10009 if (context)
10010 {
10011 SamplerID samplerPacked = PackParam<SamplerID>(sampler);
10012 SCOPED_SHARE_CONTEXT_LOCK(context);
10013 bool isCallValid =
10014 (context->skipValidation() ||
10015 ValidateSamplerParameterIuivEXT(context, angle::EntryPoint::GLSamplerParameterIuivEXT,
10016 samplerPacked, pname, param));
10017 if (isCallValid)
10018 {
10019 context->samplerParameterIuiv(samplerPacked, pname, param);
10020 }
10021 ANGLE_CAPTURE_GL(SamplerParameterIuivEXT, isCallValid, context, samplerPacked, pname,
10022 param);
10023 }
10024 else
10025 {
10026 GenerateContextLostErrorOnCurrentGlobalContext();
10027 }
10028 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
10029 }
10030
GL_TexParameterIivEXT(GLenum target,GLenum pname,const GLint * params)10031 void GL_APIENTRY GL_TexParameterIivEXT(GLenum target, GLenum pname, const GLint *params)
10032 {
10033 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
10034 Context *context = GetValidGlobalContext();
10035 EVENT(context, GLTexParameterIivEXT,
10036 "context = %d, target = %s, pname = %s, params = 0x%016" PRIxPTR "", CID(context),
10037 GLenumToString(GLESEnum::TextureTarget, target),
10038 GLenumToString(GLESEnum::TextureParameterName, pname), (uintptr_t)params);
10039
10040 if (context)
10041 {
10042 TextureType targetPacked = PackParam<TextureType>(target);
10043 SCOPED_SHARE_CONTEXT_LOCK(context);
10044 bool isCallValid =
10045 (context->skipValidation() ||
10046 ValidateTexParameterIivEXT(context, angle::EntryPoint::GLTexParameterIivEXT,
10047 targetPacked, pname, params));
10048 if (isCallValid)
10049 {
10050 context->texParameterIiv(targetPacked, pname, params);
10051 }
10052 ANGLE_CAPTURE_GL(TexParameterIivEXT, isCallValid, context, targetPacked, pname, params);
10053 }
10054 else
10055 {
10056 GenerateContextLostErrorOnCurrentGlobalContext();
10057 }
10058 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
10059 }
10060
GL_TexParameterIuivEXT(GLenum target,GLenum pname,const GLuint * params)10061 void GL_APIENTRY GL_TexParameterIuivEXT(GLenum target, GLenum pname, const GLuint *params)
10062 {
10063 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
10064 Context *context = GetValidGlobalContext();
10065 EVENT(context, GLTexParameterIuivEXT,
10066 "context = %d, target = %s, pname = %s, params = 0x%016" PRIxPTR "", CID(context),
10067 GLenumToString(GLESEnum::TextureTarget, target),
10068 GLenumToString(GLESEnum::TextureParameterName, pname), (uintptr_t)params);
10069
10070 if (context)
10071 {
10072 TextureType targetPacked = PackParam<TextureType>(target);
10073 SCOPED_SHARE_CONTEXT_LOCK(context);
10074 bool isCallValid =
10075 (context->skipValidation() ||
10076 ValidateTexParameterIuivEXT(context, angle::EntryPoint::GLTexParameterIuivEXT,
10077 targetPacked, pname, params));
10078 if (isCallValid)
10079 {
10080 context->texParameterIuiv(targetPacked, pname, params);
10081 }
10082 ANGLE_CAPTURE_GL(TexParameterIuivEXT, isCallValid, context, targetPacked, pname, params);
10083 }
10084 else
10085 {
10086 GenerateContextLostErrorOnCurrentGlobalContext();
10087 }
10088 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
10089 }
10090
10091 // GL_EXT_texture_buffer
GL_TexBufferEXT(GLenum target,GLenum internalformat,GLuint buffer)10092 void GL_APIENTRY GL_TexBufferEXT(GLenum target, GLenum internalformat, GLuint buffer)
10093 {
10094 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
10095 Context *context = GetValidGlobalContext();
10096 EVENT(context, GLTexBufferEXT, "context = %d, target = %s, internalformat = %s, buffer = %u",
10097 CID(context), GLenumToString(GLESEnum::TextureTarget, target),
10098 GLenumToString(GLESEnum::SizedInternalFormat, internalformat), buffer);
10099
10100 if (context)
10101 {
10102 TextureType targetPacked = PackParam<TextureType>(target);
10103 BufferID bufferPacked = PackParam<BufferID>(buffer);
10104 SCOPED_SHARE_CONTEXT_LOCK(context);
10105 bool isCallValid =
10106 (context->skipValidation() ||
10107 (ValidatePixelLocalStorageInactive(context->getPrivateState(),
10108 context->getMutableErrorSetForValidation(),
10109 angle::EntryPoint::GLTexBufferEXT) &&
10110 ValidateTexBufferEXT(context, angle::EntryPoint::GLTexBufferEXT, targetPacked,
10111 internalformat, bufferPacked)));
10112 if (isCallValid)
10113 {
10114 context->texBuffer(targetPacked, internalformat, bufferPacked);
10115 }
10116 ANGLE_CAPTURE_GL(TexBufferEXT, isCallValid, context, targetPacked, internalformat,
10117 bufferPacked);
10118 }
10119 else
10120 {
10121 GenerateContextLostErrorOnCurrentGlobalContext();
10122 }
10123 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
10124 }
10125
GL_TexBufferRangeEXT(GLenum target,GLenum internalformat,GLuint buffer,GLintptr offset,GLsizeiptr size)10126 void GL_APIENTRY GL_TexBufferRangeEXT(GLenum target,
10127 GLenum internalformat,
10128 GLuint buffer,
10129 GLintptr offset,
10130 GLsizeiptr size)
10131 {
10132 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
10133 Context *context = GetValidGlobalContext();
10134 EVENT(context, GLTexBufferRangeEXT,
10135 "context = %d, target = %s, internalformat = %s, buffer = %u, offset = %llu, size = %llu",
10136 CID(context), GLenumToString(GLESEnum::TextureTarget, target),
10137 GLenumToString(GLESEnum::SizedInternalFormat, internalformat), buffer,
10138 static_cast<unsigned long long>(offset), static_cast<unsigned long long>(size));
10139
10140 if (context)
10141 {
10142 TextureType targetPacked = PackParam<TextureType>(target);
10143 BufferID bufferPacked = PackParam<BufferID>(buffer);
10144 SCOPED_SHARE_CONTEXT_LOCK(context);
10145 bool isCallValid =
10146 (context->skipValidation() ||
10147 (ValidatePixelLocalStorageInactive(context->getPrivateState(),
10148 context->getMutableErrorSetForValidation(),
10149 angle::EntryPoint::GLTexBufferRangeEXT) &&
10150 ValidateTexBufferRangeEXT(context, angle::EntryPoint::GLTexBufferRangeEXT,
10151 targetPacked, internalformat, bufferPacked, offset, size)));
10152 if (isCallValid)
10153 {
10154 context->texBufferRange(targetPacked, internalformat, bufferPacked, offset, size);
10155 }
10156 ANGLE_CAPTURE_GL(TexBufferRangeEXT, isCallValid, context, targetPacked, internalformat,
10157 bufferPacked, offset, size);
10158 }
10159 else
10160 {
10161 GenerateContextLostErrorOnCurrentGlobalContext();
10162 }
10163 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
10164 }
10165
10166 // GL_EXT_texture_compression_astc_decode_mode
10167
10168 // GL_EXT_texture_compression_bptc
10169
10170 // GL_EXT_texture_compression_dxt1
10171
10172 // GL_EXT_texture_compression_rgtc
10173
10174 // GL_EXT_texture_compression_s3tc
10175
10176 // GL_EXT_texture_compression_s3tc_srgb
10177
10178 // GL_EXT_texture_cube_map_array
10179
10180 // GL_EXT_texture_filter_anisotropic
10181
10182 // GL_EXT_texture_filter_minmax
10183
10184 // GL_EXT_texture_format_BGRA8888
10185
10186 // GL_EXT_texture_format_sRGB_override
10187
10188 // GL_EXT_texture_mirror_clamp_to_edge
10189
10190 // GL_EXT_texture_norm16
10191
10192 // GL_EXT_texture_query_lod
10193
10194 // GL_EXT_texture_rg
10195
10196 // GL_EXT_texture_sRGB_R8
10197
10198 // GL_EXT_texture_sRGB_RG8
10199
10200 // GL_EXT_texture_sRGB_decode
10201
10202 // GL_EXT_texture_shadow_lod
10203
10204 // GL_EXT_texture_storage
GL_TexStorage1DEXT(GLenum target,GLsizei levels,GLenum internalformat,GLsizei width)10205 void GL_APIENTRY GL_TexStorage1DEXT(GLenum target,
10206 GLsizei levels,
10207 GLenum internalformat,
10208 GLsizei width)
10209 {
10210 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
10211 Context *context = GetValidGlobalContext();
10212 EVENT(context, GLTexStorage1DEXT,
10213 "context = %d, target = %s, levels = %d, internalformat = %s, width = %d", CID(context),
10214 GLenumToString(GLESEnum::TextureTarget, target), levels,
10215 GLenumToString(GLESEnum::SizedInternalFormat, internalformat), width);
10216
10217 if (context)
10218 {
10219 SCOPED_SHARE_CONTEXT_LOCK(context);
10220 bool isCallValid =
10221 (context->skipValidation() ||
10222 (ValidatePixelLocalStorageInactive(context->getPrivateState(),
10223 context->getMutableErrorSetForValidation(),
10224 angle::EntryPoint::GLTexStorage1DEXT) &&
10225 ValidateTexStorage1DEXT(context, angle::EntryPoint::GLTexStorage1DEXT, target, levels,
10226 internalformat, width)));
10227 if (isCallValid)
10228 {
10229 context->texStorage1D(target, levels, internalformat, width);
10230 }
10231 ANGLE_CAPTURE_GL(TexStorage1DEXT, isCallValid, context, target, levels, internalformat,
10232 width);
10233 }
10234 else
10235 {
10236 GenerateContextLostErrorOnCurrentGlobalContext();
10237 }
10238 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
10239 }
10240
GL_TexStorage2DEXT(GLenum target,GLsizei levels,GLenum internalformat,GLsizei width,GLsizei height)10241 void GL_APIENTRY GL_TexStorage2DEXT(GLenum target,
10242 GLsizei levels,
10243 GLenum internalformat,
10244 GLsizei width,
10245 GLsizei height)
10246 {
10247 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
10248 Context *context = GetValidGlobalContext();
10249 EVENT(context, GLTexStorage2DEXT,
10250 "context = %d, target = %s, levels = %d, internalformat = %s, width = %d, height = %d",
10251 CID(context), GLenumToString(GLESEnum::TextureTarget, target), levels,
10252 GLenumToString(GLESEnum::SizedInternalFormat, internalformat), width, height);
10253
10254 if (context)
10255 {
10256 TextureType targetPacked = PackParam<TextureType>(target);
10257 SCOPED_SHARE_CONTEXT_LOCK(context);
10258 bool isCallValid =
10259 (context->skipValidation() ||
10260 (ValidatePixelLocalStorageInactive(context->getPrivateState(),
10261 context->getMutableErrorSetForValidation(),
10262 angle::EntryPoint::GLTexStorage2DEXT) &&
10263 ValidateTexStorage2DEXT(context, angle::EntryPoint::GLTexStorage2DEXT, targetPacked,
10264 levels, internalformat, width, height)));
10265 if (isCallValid)
10266 {
10267 context->texStorage2D(targetPacked, levels, internalformat, width, height);
10268 }
10269 ANGLE_CAPTURE_GL(TexStorage2DEXT, isCallValid, context, targetPacked, levels,
10270 internalformat, width, height);
10271 }
10272 else
10273 {
10274 GenerateContextLostErrorOnCurrentGlobalContext();
10275 }
10276 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
10277 }
10278
GL_TexStorage3DEXT(GLenum target,GLsizei levels,GLenum internalformat,GLsizei width,GLsizei height,GLsizei depth)10279 void GL_APIENTRY GL_TexStorage3DEXT(GLenum target,
10280 GLsizei levels,
10281 GLenum internalformat,
10282 GLsizei width,
10283 GLsizei height,
10284 GLsizei depth)
10285 {
10286 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
10287 Context *context = GetValidGlobalContext();
10288 EVENT(context, GLTexStorage3DEXT,
10289 "context = %d, target = %s, levels = %d, internalformat = %s, width = %d, height = %d, "
10290 "depth = %d",
10291 CID(context), GLenumToString(GLESEnum::TextureTarget, target), levels,
10292 GLenumToString(GLESEnum::SizedInternalFormat, internalformat), width, height, depth);
10293
10294 if (context)
10295 {
10296 TextureType targetPacked = PackParam<TextureType>(target);
10297 SCOPED_SHARE_CONTEXT_LOCK(context);
10298 bool isCallValid =
10299 (context->skipValidation() ||
10300 (ValidatePixelLocalStorageInactive(context->getPrivateState(),
10301 context->getMutableErrorSetForValidation(),
10302 angle::EntryPoint::GLTexStorage3DEXT) &&
10303 ValidateTexStorage3DEXT(context, angle::EntryPoint::GLTexStorage3DEXT, targetPacked,
10304 levels, internalformat, width, height, depth)));
10305 if (isCallValid)
10306 {
10307 context->texStorage3D(targetPacked, levels, internalformat, width, height, depth);
10308 }
10309 ANGLE_CAPTURE_GL(TexStorage3DEXT, isCallValid, context, targetPacked, levels,
10310 internalformat, width, height, depth);
10311 }
10312 else
10313 {
10314 GenerateContextLostErrorOnCurrentGlobalContext();
10315 }
10316 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
10317 }
10318
10319 // GL_EXT_texture_storage_compression
GL_TexStorageAttribs2DEXT(GLenum target,GLsizei levels,GLenum internalformat,GLsizei width,GLsizei height,const GLint * attrib_list)10320 void GL_APIENTRY GL_TexStorageAttribs2DEXT(GLenum target,
10321 GLsizei levels,
10322 GLenum internalformat,
10323 GLsizei width,
10324 GLsizei height,
10325 const GLint *attrib_list)
10326 {
10327 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
10328 Context *context = GetValidGlobalContext();
10329 EVENT(context, GLTexStorageAttribs2DEXT,
10330 "context = %d, target = %s, levels = %d, internalformat = %s, width = %d, height = %d, "
10331 "attrib_list = 0x%016" PRIxPTR "",
10332 CID(context), GLenumToString(GLESEnum::TextureTarget, target), levels,
10333 GLenumToString(GLESEnum::SizedInternalFormat, internalformat), width, height,
10334 (uintptr_t)attrib_list);
10335
10336 if (context)
10337 {
10338 SCOPED_SHARE_CONTEXT_LOCK(context);
10339 bool isCallValid =
10340 (context->skipValidation() ||
10341 (ValidatePixelLocalStorageInactive(context->getPrivateState(),
10342 context->getMutableErrorSetForValidation(),
10343 angle::EntryPoint::GLTexStorageAttribs2DEXT) &&
10344 ValidateTexStorageAttribs2DEXT(context, angle::EntryPoint::GLTexStorageAttribs2DEXT,
10345 target, levels, internalformat, width, height,
10346 attrib_list)));
10347 if (isCallValid)
10348 {
10349 context->texStorageAttribs2D(target, levels, internalformat, width, height,
10350 attrib_list);
10351 }
10352 ANGLE_CAPTURE_GL(TexStorageAttribs2DEXT, isCallValid, context, target, levels,
10353 internalformat, width, height, attrib_list);
10354 }
10355 else
10356 {
10357 GenerateContextLostErrorOnCurrentGlobalContext();
10358 }
10359 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
10360 }
10361
GL_TexStorageAttribs3DEXT(GLenum target,GLsizei levels,GLenum internalformat,GLsizei width,GLsizei height,GLsizei depth,const GLint * attrib_list)10362 void GL_APIENTRY GL_TexStorageAttribs3DEXT(GLenum target,
10363 GLsizei levels,
10364 GLenum internalformat,
10365 GLsizei width,
10366 GLsizei height,
10367 GLsizei depth,
10368 const GLint *attrib_list)
10369 {
10370 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
10371 Context *context = GetValidGlobalContext();
10372 EVENT(context, GLTexStorageAttribs3DEXT,
10373 "context = %d, target = %s, levels = %d, internalformat = %s, width = %d, height = %d, "
10374 "depth = %d, attrib_list = 0x%016" PRIxPTR "",
10375 CID(context), GLenumToString(GLESEnum::TextureTarget, target), levels,
10376 GLenumToString(GLESEnum::SizedInternalFormat, internalformat), width, height, depth,
10377 (uintptr_t)attrib_list);
10378
10379 if (context)
10380 {
10381 SCOPED_SHARE_CONTEXT_LOCK(context);
10382 bool isCallValid =
10383 (context->skipValidation() ||
10384 (ValidatePixelLocalStorageInactive(context->getPrivateState(),
10385 context->getMutableErrorSetForValidation(),
10386 angle::EntryPoint::GLTexStorageAttribs3DEXT) &&
10387 ValidateTexStorageAttribs3DEXT(context, angle::EntryPoint::GLTexStorageAttribs3DEXT,
10388 target, levels, internalformat, width, height, depth,
10389 attrib_list)));
10390 if (isCallValid)
10391 {
10392 context->texStorageAttribs3D(target, levels, internalformat, width, height, depth,
10393 attrib_list);
10394 }
10395 ANGLE_CAPTURE_GL(TexStorageAttribs3DEXT, isCallValid, context, target, levels,
10396 internalformat, width, height, depth, attrib_list);
10397 }
10398 else
10399 {
10400 GenerateContextLostErrorOnCurrentGlobalContext();
10401 }
10402 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
10403 }
10404
10405 // GL_EXT_texture_type_2_10_10_10_REV
10406
10407 // GL_EXT_unpack_subimage
10408
10409 // GL_IMG_texture_compression_pvrtc
10410
10411 // GL_IMG_texture_compression_pvrtc2
10412
10413 // GL_KHR_blend_equation_advanced
GL_BlendBarrierKHR()10414 void GL_APIENTRY GL_BlendBarrierKHR()
10415 {
10416 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
10417 Context *context = GetValidGlobalContext();
10418 EVENT(context, GLBlendBarrierKHR, "context = %d", CID(context));
10419
10420 if (context)
10421 {
10422 SCOPED_SHARE_CONTEXT_LOCK(context);
10423 bool isCallValid =
10424 (context->skipValidation() ||
10425 (ValidatePixelLocalStorageInactive(context->getPrivateState(),
10426 context->getMutableErrorSetForValidation(),
10427 angle::EntryPoint::GLBlendBarrierKHR) &&
10428 ValidateBlendBarrierKHR(context, angle::EntryPoint::GLBlendBarrierKHR)));
10429 if (isCallValid)
10430 {
10431 context->blendBarrier();
10432 }
10433 ANGLE_CAPTURE_GL(BlendBarrierKHR, isCallValid, context);
10434 }
10435 else
10436 {
10437 GenerateContextLostErrorOnCurrentGlobalContext();
10438 }
10439 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
10440 }
10441
10442 // GL_KHR_blend_equation_advanced_coherent
10443
10444 // GL_KHR_debug
GL_DebugMessageCallbackKHR(GLDEBUGPROCKHR callback,const void * userParam)10445 void GL_APIENTRY GL_DebugMessageCallbackKHR(GLDEBUGPROCKHR callback, const void *userParam)
10446 {
10447 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
10448 Context *context = GetValidGlobalContext();
10449 EVENT(context, GLDebugMessageCallbackKHR,
10450 "context = %d, callback = 0x%016" PRIxPTR ", userParam = 0x%016" PRIxPTR "", CID(context),
10451 (uintptr_t)callback, (uintptr_t)userParam);
10452
10453 if (context)
10454 {
10455 SCOPED_SHARE_CONTEXT_LOCK(context);
10456 bool isCallValid =
10457 (context->skipValidation() ||
10458 ValidateDebugMessageCallbackKHR(context, angle::EntryPoint::GLDebugMessageCallbackKHR,
10459 callback, userParam));
10460 if (isCallValid)
10461 {
10462 context->debugMessageCallback(callback, userParam);
10463 }
10464 ANGLE_CAPTURE_GL(DebugMessageCallbackKHR, isCallValid, context, callback, userParam);
10465 }
10466 else
10467 {
10468 GenerateContextLostErrorOnCurrentGlobalContext();
10469 }
10470 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
10471 }
10472
GL_DebugMessageControlKHR(GLenum source,GLenum type,GLenum severity,GLsizei count,const GLuint * ids,GLboolean enabled)10473 void GL_APIENTRY GL_DebugMessageControlKHR(GLenum source,
10474 GLenum type,
10475 GLenum severity,
10476 GLsizei count,
10477 const GLuint *ids,
10478 GLboolean enabled)
10479 {
10480 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
10481 Context *context = GetValidGlobalContext();
10482 EVENT(context, GLDebugMessageControlKHR,
10483 "context = %d, source = %s, type = %s, severity = %s, count = %d, ids = 0x%016" PRIxPTR
10484 ", enabled = %s",
10485 CID(context), GLenumToString(GLESEnum::DebugSource, source),
10486 GLenumToString(GLESEnum::DebugType, type),
10487 GLenumToString(GLESEnum::DebugSeverity, severity), count, (uintptr_t)ids,
10488 GLbooleanToString(enabled));
10489
10490 if (context)
10491 {
10492 SCOPED_SHARE_CONTEXT_LOCK(context);
10493 bool isCallValid =
10494 (context->skipValidation() ||
10495 ValidateDebugMessageControlKHR(context, angle::EntryPoint::GLDebugMessageControlKHR,
10496 source, type, severity, count, ids, enabled));
10497 if (isCallValid)
10498 {
10499 context->debugMessageControl(source, type, severity, count, ids, enabled);
10500 }
10501 ANGLE_CAPTURE_GL(DebugMessageControlKHR, isCallValid, context, source, type, severity,
10502 count, ids, enabled);
10503 }
10504 else
10505 {
10506 GenerateContextLostErrorOnCurrentGlobalContext();
10507 }
10508 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
10509 }
10510
GL_DebugMessageInsertKHR(GLenum source,GLenum type,GLuint id,GLenum severity,GLsizei length,const GLchar * buf)10511 void GL_APIENTRY GL_DebugMessageInsertKHR(GLenum source,
10512 GLenum type,
10513 GLuint id,
10514 GLenum severity,
10515 GLsizei length,
10516 const GLchar *buf)
10517 {
10518 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
10519 Context *context = GetValidGlobalContext();
10520 EVENT(context, GLDebugMessageInsertKHR,
10521 "context = %d, source = %s, type = %s, id = %u, severity = %s, length = %d, buf = "
10522 "0x%016" PRIxPTR "",
10523 CID(context), GLenumToString(GLESEnum::DebugSource, source),
10524 GLenumToString(GLESEnum::DebugType, type), id,
10525 GLenumToString(GLESEnum::DebugSeverity, severity), length, (uintptr_t)buf);
10526
10527 if (context)
10528 {
10529 SCOPED_SHARE_CONTEXT_LOCK(context);
10530 bool isCallValid =
10531 (context->skipValidation() ||
10532 ValidateDebugMessageInsertKHR(context, angle::EntryPoint::GLDebugMessageInsertKHR,
10533 source, type, id, severity, length, buf));
10534 if (isCallValid)
10535 {
10536 context->debugMessageInsert(source, type, id, severity, length, buf);
10537 }
10538 ANGLE_CAPTURE_GL(DebugMessageInsertKHR, isCallValid, context, source, type, id, severity,
10539 length, buf);
10540 }
10541 else
10542 {
10543 GenerateContextLostErrorOnCurrentGlobalContext();
10544 }
10545 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
10546 }
10547
GL_GetDebugMessageLogKHR(GLuint count,GLsizei bufSize,GLenum * sources,GLenum * types,GLuint * ids,GLenum * severities,GLsizei * lengths,GLchar * messageLog)10548 GLuint GL_APIENTRY GL_GetDebugMessageLogKHR(GLuint count,
10549 GLsizei bufSize,
10550 GLenum *sources,
10551 GLenum *types,
10552 GLuint *ids,
10553 GLenum *severities,
10554 GLsizei *lengths,
10555 GLchar *messageLog)
10556 {
10557 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
10558 Context *context = GetValidGlobalContext();
10559 EVENT(context, GLGetDebugMessageLogKHR,
10560 "context = %d, count = %u, bufSize = %d, sources = 0x%016" PRIxPTR
10561 ", types = 0x%016" PRIxPTR ", ids = 0x%016" PRIxPTR ", severities = 0x%016" PRIxPTR
10562 ", lengths = 0x%016" PRIxPTR ", messageLog = 0x%016" PRIxPTR "",
10563 CID(context), count, bufSize, (uintptr_t)sources, (uintptr_t)types, (uintptr_t)ids,
10564 (uintptr_t)severities, (uintptr_t)lengths, (uintptr_t)messageLog);
10565
10566 GLuint returnValue;
10567 if (context)
10568 {
10569 SCOPED_SHARE_CONTEXT_LOCK(context);
10570 bool isCallValid = (context->skipValidation() ||
10571 ValidateGetDebugMessageLogKHR(
10572 context, angle::EntryPoint::GLGetDebugMessageLogKHR, count, bufSize,
10573 sources, types, ids, severities, lengths, messageLog));
10574 if (isCallValid)
10575 {
10576 returnValue = context->getDebugMessageLog(count, bufSize, sources, types, ids,
10577 severities, lengths, messageLog);
10578 }
10579 else
10580 {
10581 returnValue =
10582 GetDefaultReturnValue<angle::EntryPoint::GLGetDebugMessageLogKHR, GLuint>();
10583 }
10584 ANGLE_CAPTURE_GL(GetDebugMessageLogKHR, isCallValid, context, count, bufSize, sources,
10585 types, ids, severities, lengths, messageLog, returnValue);
10586 }
10587 else
10588 {
10589 GenerateContextLostErrorOnCurrentGlobalContext();
10590 returnValue = GetDefaultReturnValue<angle::EntryPoint::GLGetDebugMessageLogKHR, GLuint>();
10591 }
10592 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
10593 return returnValue;
10594 }
10595
GL_GetObjectLabelKHR(GLenum identifier,GLuint name,GLsizei bufSize,GLsizei * length,GLchar * label)10596 void GL_APIENTRY GL_GetObjectLabelKHR(GLenum identifier,
10597 GLuint name,
10598 GLsizei bufSize,
10599 GLsizei *length,
10600 GLchar *label)
10601 {
10602 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
10603 Context *context = GetValidGlobalContext();
10604 EVENT(context, GLGetObjectLabelKHR,
10605 "context = %d, identifier = %s, name = %u, bufSize = %d, length = 0x%016" PRIxPTR
10606 ", label = 0x%016" PRIxPTR "",
10607 CID(context), GLenumToString(GLESEnum::AllEnums, identifier), name, bufSize,
10608 (uintptr_t)length, (uintptr_t)label);
10609
10610 if (context)
10611 {
10612 SCOPED_SHARE_CONTEXT_LOCK(context);
10613 bool isCallValid =
10614 (context->skipValidation() ||
10615 ValidateGetObjectLabelKHR(context, angle::EntryPoint::GLGetObjectLabelKHR, identifier,
10616 name, bufSize, length, label));
10617 if (isCallValid)
10618 {
10619 context->getObjectLabel(identifier, name, bufSize, length, label);
10620 }
10621 ANGLE_CAPTURE_GL(GetObjectLabelKHR, isCallValid, context, identifier, name, bufSize, length,
10622 label);
10623 }
10624 else
10625 {
10626 GenerateContextLostErrorOnCurrentGlobalContext();
10627 }
10628 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
10629 }
10630
GL_GetObjectPtrLabelKHR(const void * ptr,GLsizei bufSize,GLsizei * length,GLchar * label)10631 void GL_APIENTRY GL_GetObjectPtrLabelKHR(const void *ptr,
10632 GLsizei bufSize,
10633 GLsizei *length,
10634 GLchar *label)
10635 {
10636 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
10637 Context *context = GetValidGlobalContext();
10638 EVENT(context, GLGetObjectPtrLabelKHR,
10639 "context = %d, ptr = 0x%016" PRIxPTR ", bufSize = %d, length = 0x%016" PRIxPTR
10640 ", label = 0x%016" PRIxPTR "",
10641 CID(context), (uintptr_t)ptr, bufSize, (uintptr_t)length, (uintptr_t)label);
10642
10643 if (context)
10644 {
10645 SCOPED_SHARE_CONTEXT_LOCK(context);
10646 bool isCallValid =
10647 (context->skipValidation() ||
10648 ValidateGetObjectPtrLabelKHR(context, angle::EntryPoint::GLGetObjectPtrLabelKHR, ptr,
10649 bufSize, length, label));
10650 if (isCallValid)
10651 {
10652 context->getObjectPtrLabel(ptr, bufSize, length, label);
10653 }
10654 ANGLE_CAPTURE_GL(GetObjectPtrLabelKHR, isCallValid, context, ptr, bufSize, length, label);
10655 }
10656 else
10657 {
10658 GenerateContextLostErrorOnCurrentGlobalContext();
10659 }
10660 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
10661 }
10662
GL_GetPointervKHR(GLenum pname,void ** params)10663 void GL_APIENTRY GL_GetPointervKHR(GLenum pname, void **params)
10664 {
10665 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
10666 Context *context = GetValidGlobalContext();
10667 EVENT(context, GLGetPointervKHR, "context = %d, pname = %s, params = 0x%016" PRIxPTR "",
10668 CID(context), GLenumToString(GLESEnum::AllEnums, pname), (uintptr_t)params);
10669
10670 if (context)
10671 {
10672 SCOPED_SHARE_CONTEXT_LOCK(context);
10673 bool isCallValid =
10674 (context->skipValidation() ||
10675 ValidateGetPointervKHR(context, angle::EntryPoint::GLGetPointervKHR, pname, params));
10676 if (isCallValid)
10677 {
10678 context->getPointerv(pname, params);
10679 }
10680 ANGLE_CAPTURE_GL(GetPointervKHR, isCallValid, context, pname, params);
10681 }
10682 else
10683 {
10684 GenerateContextLostErrorOnCurrentGlobalContext();
10685 }
10686 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
10687 }
10688
GL_ObjectLabelKHR(GLenum identifier,GLuint name,GLsizei length,const GLchar * label)10689 void GL_APIENTRY GL_ObjectLabelKHR(GLenum identifier,
10690 GLuint name,
10691 GLsizei length,
10692 const GLchar *label)
10693 {
10694 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
10695 Context *context = GetValidGlobalContext();
10696 EVENT(context, GLObjectLabelKHR,
10697 "context = %d, identifier = %s, name = %u, length = %d, label = 0x%016" PRIxPTR "",
10698 CID(context), GLenumToString(GLESEnum::ObjectIdentifier, identifier), name, length,
10699 (uintptr_t)label);
10700
10701 if (context)
10702 {
10703 SCOPED_SHARE_CONTEXT_LOCK(context);
10704 bool isCallValid = (context->skipValidation() ||
10705 ValidateObjectLabelKHR(context, angle::EntryPoint::GLObjectLabelKHR,
10706 identifier, name, length, label));
10707 if (isCallValid)
10708 {
10709 context->objectLabel(identifier, name, length, label);
10710 }
10711 ANGLE_CAPTURE_GL(ObjectLabelKHR, isCallValid, context, identifier, name, length, label);
10712 }
10713 else
10714 {
10715 GenerateContextLostErrorOnCurrentGlobalContext();
10716 }
10717 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
10718 }
10719
GL_ObjectPtrLabelKHR(const void * ptr,GLsizei length,const GLchar * label)10720 void GL_APIENTRY GL_ObjectPtrLabelKHR(const void *ptr, GLsizei length, const GLchar *label)
10721 {
10722 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
10723 Context *context = GetValidGlobalContext();
10724 EVENT(context, GLObjectPtrLabelKHR,
10725 "context = %d, ptr = 0x%016" PRIxPTR ", length = %d, label = 0x%016" PRIxPTR "",
10726 CID(context), (uintptr_t)ptr, length, (uintptr_t)label);
10727
10728 if (context)
10729 {
10730 SCOPED_SHARE_CONTEXT_LOCK(context);
10731 bool isCallValid =
10732 (context->skipValidation() ||
10733 ValidateObjectPtrLabelKHR(context, angle::EntryPoint::GLObjectPtrLabelKHR, ptr, length,
10734 label));
10735 if (isCallValid)
10736 {
10737 context->objectPtrLabel(ptr, length, label);
10738 }
10739 ANGLE_CAPTURE_GL(ObjectPtrLabelKHR, isCallValid, context, ptr, length, label);
10740 }
10741 else
10742 {
10743 GenerateContextLostErrorOnCurrentGlobalContext();
10744 }
10745 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
10746 }
10747
GL_PopDebugGroupKHR()10748 void GL_APIENTRY GL_PopDebugGroupKHR()
10749 {
10750 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
10751 Context *context = GetValidGlobalContext();
10752 EVENT(context, GLPopDebugGroupKHR, "context = %d", CID(context));
10753
10754 if (context)
10755 {
10756 SCOPED_SHARE_CONTEXT_LOCK(context);
10757 bool isCallValid =
10758 (context->skipValidation() ||
10759 ValidatePopDebugGroupKHR(context, angle::EntryPoint::GLPopDebugGroupKHR));
10760 if (isCallValid)
10761 {
10762 context->popDebugGroup();
10763 }
10764 ANGLE_CAPTURE_GL(PopDebugGroupKHR, isCallValid, context);
10765 }
10766 else
10767 {
10768 GenerateContextLostErrorOnCurrentGlobalContext();
10769 }
10770 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
10771 }
10772
GL_PushDebugGroupKHR(GLenum source,GLuint id,GLsizei length,const GLchar * message)10773 void GL_APIENTRY GL_PushDebugGroupKHR(GLenum source,
10774 GLuint id,
10775 GLsizei length,
10776 const GLchar *message)
10777 {
10778 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
10779 Context *context = GetValidGlobalContext();
10780 EVENT(context, GLPushDebugGroupKHR,
10781 "context = %d, source = %s, id = %u, length = %d, message = 0x%016" PRIxPTR "",
10782 CID(context), GLenumToString(GLESEnum::DebugSource, source), id, length,
10783 (uintptr_t)message);
10784
10785 if (context)
10786 {
10787 SCOPED_SHARE_CONTEXT_LOCK(context);
10788 bool isCallValid =
10789 (context->skipValidation() ||
10790 ValidatePushDebugGroupKHR(context, angle::EntryPoint::GLPushDebugGroupKHR, source, id,
10791 length, message));
10792 if (isCallValid)
10793 {
10794 context->pushDebugGroup(source, id, length, message);
10795 }
10796 ANGLE_CAPTURE_GL(PushDebugGroupKHR, isCallValid, context, source, id, length, message);
10797 }
10798 else
10799 {
10800 GenerateContextLostErrorOnCurrentGlobalContext();
10801 }
10802 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
10803 }
10804
10805 // GL_KHR_no_error
10806
10807 // GL_KHR_parallel_shader_compile
GL_MaxShaderCompilerThreadsKHR(GLuint count)10808 void GL_APIENTRY GL_MaxShaderCompilerThreadsKHR(GLuint count)
10809 {
10810 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
10811 Context *context = GetValidGlobalContext();
10812 EVENT(context, GLMaxShaderCompilerThreadsKHR, "context = %d, count = %u", CID(context), count);
10813
10814 if (context)
10815 {
10816 SCOPED_SHARE_CONTEXT_LOCK(context);
10817 bool isCallValid =
10818 (context->skipValidation() ||
10819 (ValidatePixelLocalStorageInactive(context->getPrivateState(),
10820 context->getMutableErrorSetForValidation(),
10821 angle::EntryPoint::GLMaxShaderCompilerThreadsKHR) &&
10822 ValidateMaxShaderCompilerThreadsKHR(
10823 context, angle::EntryPoint::GLMaxShaderCompilerThreadsKHR, count)));
10824 if (isCallValid)
10825 {
10826 context->maxShaderCompilerThreads(count);
10827 }
10828 ANGLE_CAPTURE_GL(MaxShaderCompilerThreadsKHR, isCallValid, context, count);
10829 }
10830 else
10831 {
10832 GenerateContextLostErrorOnCurrentGlobalContext();
10833 }
10834 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
10835 }
10836
10837 // GL_KHR_robust_buffer_access_behavior
10838
10839 // GL_KHR_robustness
GL_GetGraphicsResetStatusKHR()10840 GLenum GL_APIENTRY GL_GetGraphicsResetStatusKHR()
10841 {
10842 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
10843 Context *context = GetGlobalContext();
10844 EVENT(context, GLGetGraphicsResetStatusKHR, "context = %d", CID(context));
10845
10846 GLenum returnValue;
10847 if (context)
10848 {
10849 SCOPED_SHARE_CONTEXT_LOCK(context);
10850 bool isCallValid = (context->skipValidation() ||
10851 ValidateGetGraphicsResetStatusKHR(
10852 context, angle::EntryPoint::GLGetGraphicsResetStatusKHR));
10853 if (isCallValid)
10854 {
10855 returnValue = context->getGraphicsResetStatus();
10856 }
10857 else
10858 {
10859 returnValue =
10860 GetDefaultReturnValue<angle::EntryPoint::GLGetGraphicsResetStatusKHR, GLenum>();
10861 }
10862 ANGLE_CAPTURE_GL(GetGraphicsResetStatusKHR, isCallValid, context, returnValue);
10863 }
10864 else
10865 {
10866
10867 returnValue =
10868 GetDefaultReturnValue<angle::EntryPoint::GLGetGraphicsResetStatusKHR, GLenum>();
10869 }
10870 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
10871 return returnValue;
10872 }
10873
GL_GetnUniformfvKHR(GLuint program,GLint location,GLsizei bufSize,GLfloat * params)10874 void GL_APIENTRY GL_GetnUniformfvKHR(GLuint program,
10875 GLint location,
10876 GLsizei bufSize,
10877 GLfloat *params)
10878 {
10879 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
10880 Context *context = GetValidGlobalContext();
10881 EVENT(context, GLGetnUniformfvKHR,
10882 "context = %d, program = %u, location = %d, bufSize = %d, params = 0x%016" PRIxPTR "",
10883 CID(context), program, location, bufSize, (uintptr_t)params);
10884
10885 if (context)
10886 {
10887 ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);
10888 UniformLocation locationPacked = PackParam<UniformLocation>(location);
10889 SCOPED_SHARE_CONTEXT_LOCK(context);
10890 bool isCallValid =
10891 (context->skipValidation() ||
10892 ValidateGetnUniformfvKHR(context, angle::EntryPoint::GLGetnUniformfvKHR, programPacked,
10893 locationPacked, bufSize, params));
10894 if (isCallValid)
10895 {
10896 context->getnUniformfv(programPacked, locationPacked, bufSize, params);
10897 }
10898 ANGLE_CAPTURE_GL(GetnUniformfvKHR, isCallValid, context, programPacked, locationPacked,
10899 bufSize, params);
10900 }
10901 else
10902 {
10903 GenerateContextLostErrorOnCurrentGlobalContext();
10904 }
10905 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
10906 }
10907
GL_GetnUniformivKHR(GLuint program,GLint location,GLsizei bufSize,GLint * params)10908 void GL_APIENTRY GL_GetnUniformivKHR(GLuint program, GLint location, GLsizei bufSize, GLint *params)
10909 {
10910 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
10911 Context *context = GetValidGlobalContext();
10912 EVENT(context, GLGetnUniformivKHR,
10913 "context = %d, program = %u, location = %d, bufSize = %d, params = 0x%016" PRIxPTR "",
10914 CID(context), program, location, bufSize, (uintptr_t)params);
10915
10916 if (context)
10917 {
10918 ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);
10919 UniformLocation locationPacked = PackParam<UniformLocation>(location);
10920 SCOPED_SHARE_CONTEXT_LOCK(context);
10921 bool isCallValid =
10922 (context->skipValidation() ||
10923 ValidateGetnUniformivKHR(context, angle::EntryPoint::GLGetnUniformivKHR, programPacked,
10924 locationPacked, bufSize, params));
10925 if (isCallValid)
10926 {
10927 context->getnUniformiv(programPacked, locationPacked, bufSize, params);
10928 }
10929 ANGLE_CAPTURE_GL(GetnUniformivKHR, isCallValid, context, programPacked, locationPacked,
10930 bufSize, params);
10931 }
10932 else
10933 {
10934 GenerateContextLostErrorOnCurrentGlobalContext();
10935 }
10936 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
10937 }
10938
GL_GetnUniformuivKHR(GLuint program,GLint location,GLsizei bufSize,GLuint * params)10939 void GL_APIENTRY GL_GetnUniformuivKHR(GLuint program,
10940 GLint location,
10941 GLsizei bufSize,
10942 GLuint *params)
10943 {
10944 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
10945 Context *context = GetValidGlobalContext();
10946 EVENT(context, GLGetnUniformuivKHR,
10947 "context = %d, program = %u, location = %d, bufSize = %d, params = 0x%016" PRIxPTR "",
10948 CID(context), program, location, bufSize, (uintptr_t)params);
10949
10950 if (context)
10951 {
10952 ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);
10953 UniformLocation locationPacked = PackParam<UniformLocation>(location);
10954 SCOPED_SHARE_CONTEXT_LOCK(context);
10955 bool isCallValid =
10956 (context->skipValidation() ||
10957 ValidateGetnUniformuivKHR(context, angle::EntryPoint::GLGetnUniformuivKHR,
10958 programPacked, locationPacked, bufSize, params));
10959 if (isCallValid)
10960 {
10961 context->getnUniformuiv(programPacked, locationPacked, bufSize, params);
10962 }
10963 ANGLE_CAPTURE_GL(GetnUniformuivKHR, isCallValid, context, programPacked, locationPacked,
10964 bufSize, params);
10965 }
10966 else
10967 {
10968 GenerateContextLostErrorOnCurrentGlobalContext();
10969 }
10970 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
10971 }
10972
GL_ReadnPixelsKHR(GLint x,GLint y,GLsizei width,GLsizei height,GLenum format,GLenum type,GLsizei bufSize,void * data)10973 void GL_APIENTRY GL_ReadnPixelsKHR(GLint x,
10974 GLint y,
10975 GLsizei width,
10976 GLsizei height,
10977 GLenum format,
10978 GLenum type,
10979 GLsizei bufSize,
10980 void *data)
10981 {
10982 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
10983 Context *context = GetValidGlobalContext();
10984 EVENT(context, GLReadnPixelsKHR,
10985 "context = %d, x = %d, y = %d, width = %d, height = %d, format = %s, type = %s, bufSize "
10986 "= %d, data = 0x%016" PRIxPTR "",
10987 CID(context), x, y, width, height, GLenumToString(GLESEnum::PixelFormat, format),
10988 GLenumToString(GLESEnum::PixelType, type), bufSize, (uintptr_t)data);
10989
10990 if (context)
10991 {
10992 SCOPED_SHARE_CONTEXT_LOCK(context);
10993 bool isCallValid =
10994 (context->skipValidation() ||
10995 (ValidatePixelLocalStorageInactive(context->getPrivateState(),
10996 context->getMutableErrorSetForValidation(),
10997 angle::EntryPoint::GLReadnPixelsKHR) &&
10998 ValidateReadnPixelsKHR(context, angle::EntryPoint::GLReadnPixelsKHR, x, y, width,
10999 height, format, type, bufSize, data)));
11000 if (isCallValid)
11001 {
11002 context->readnPixels(x, y, width, height, format, type, bufSize, data);
11003 }
11004 ANGLE_CAPTURE_GL(ReadnPixelsKHR, isCallValid, context, x, y, width, height, format, type,
11005 bufSize, data);
11006 }
11007 else
11008 {
11009 GenerateContextLostErrorOnCurrentGlobalContext();
11010 }
11011 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
11012 }
11013
11014 // GL_KHR_texture_compression_astc_hdr
11015
11016 // GL_KHR_texture_compression_astc_ldr
11017
11018 // GL_KHR_texture_compression_astc_sliced_3d
11019
11020 // GL_MESA_framebuffer_flip_y
GL_FramebufferParameteriMESA(GLenum target,GLenum pname,GLint param)11021 void GL_APIENTRY GL_FramebufferParameteriMESA(GLenum target, GLenum pname, GLint param)
11022 {
11023 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
11024 Context *context = GetValidGlobalContext();
11025 EVENT(context, GLFramebufferParameteriMESA, "context = %d, target = %s, pname = %s, param = %d",
11026 CID(context), GLenumToString(GLESEnum::FramebufferTarget, target),
11027 GLenumToString(GLESEnum::FramebufferParameterName, pname), param);
11028
11029 if (context)
11030 {
11031 SCOPED_SHARE_CONTEXT_LOCK(context);
11032 bool isCallValid =
11033 (context->skipValidation() ||
11034 ValidateFramebufferParameteriMESA(
11035 context, angle::EntryPoint::GLFramebufferParameteriMESA, target, pname, param));
11036 if (isCallValid)
11037 {
11038 context->framebufferParameteriMESA(target, pname, param);
11039 }
11040 ANGLE_CAPTURE_GL(FramebufferParameteriMESA, isCallValid, context, target, pname, param);
11041 }
11042 else
11043 {
11044 GenerateContextLostErrorOnCurrentGlobalContext();
11045 }
11046 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
11047 }
11048
GL_GetFramebufferParameterivMESA(GLenum target,GLenum pname,GLint * params)11049 void GL_APIENTRY GL_GetFramebufferParameterivMESA(GLenum target, GLenum pname, GLint *params)
11050 {
11051 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
11052 Context *context = GetValidGlobalContext();
11053 EVENT(context, GLGetFramebufferParameterivMESA,
11054 "context = %d, target = %s, pname = %s, params = 0x%016" PRIxPTR "", CID(context),
11055 GLenumToString(GLESEnum::FramebufferTarget, target),
11056 GLenumToString(GLESEnum::FramebufferAttachmentParameterName, pname), (uintptr_t)params);
11057
11058 if (context)
11059 {
11060 SCOPED_SHARE_CONTEXT_LOCK(context);
11061 bool isCallValid = (context->skipValidation() ||
11062 ValidateGetFramebufferParameterivMESA(
11063 context, angle::EntryPoint::GLGetFramebufferParameterivMESA, target,
11064 pname, params));
11065 if (isCallValid)
11066 {
11067 context->getFramebufferParameterivMESA(target, pname, params);
11068 }
11069 ANGLE_CAPTURE_GL(GetFramebufferParameterivMESA, isCallValid, context, target, pname,
11070 params);
11071 }
11072 else
11073 {
11074 GenerateContextLostErrorOnCurrentGlobalContext();
11075 }
11076 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
11077 }
11078
11079 // GL_NV_fence
GL_DeleteFencesNV(GLsizei n,const GLuint * fences)11080 void GL_APIENTRY GL_DeleteFencesNV(GLsizei n, const GLuint *fences)
11081 {
11082 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
11083 Context *context = GetValidGlobalContext();
11084 EVENT(context, GLDeleteFencesNV, "context = %d, n = %d, fences = 0x%016" PRIxPTR "",
11085 CID(context), n, (uintptr_t)fences);
11086
11087 if (context)
11088 {
11089 const FenceNVID *fencesPacked = PackParam<const FenceNVID *>(fences);
11090 SCOPED_SHARE_CONTEXT_LOCK(context);
11091 bool isCallValid =
11092 (context->skipValidation() ||
11093 ValidateDeleteFencesNV(context, angle::EntryPoint::GLDeleteFencesNV, n, fencesPacked));
11094 if (isCallValid)
11095 {
11096 context->deleteFencesNV(n, fencesPacked);
11097 }
11098 ANGLE_CAPTURE_GL(DeleteFencesNV, isCallValid, context, n, fencesPacked);
11099 }
11100 else
11101 {
11102 GenerateContextLostErrorOnCurrentGlobalContext();
11103 }
11104 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
11105 }
11106
GL_FinishFenceNV(GLuint fence)11107 void GL_APIENTRY GL_FinishFenceNV(GLuint fence)
11108 {
11109 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
11110 Context *context = GetValidGlobalContext();
11111 EVENT(context, GLFinishFenceNV, "context = %d, fence = %u", CID(context), fence);
11112
11113 if (context)
11114 {
11115 FenceNVID fencePacked = PackParam<FenceNVID>(fence);
11116 SCOPED_SHARE_CONTEXT_LOCK(context);
11117 bool isCallValid =
11118 (context->skipValidation() ||
11119 (ValidatePixelLocalStorageInactive(context->getPrivateState(),
11120 context->getMutableErrorSetForValidation(),
11121 angle::EntryPoint::GLFinishFenceNV) &&
11122 ValidateFinishFenceNV(context, angle::EntryPoint::GLFinishFenceNV, fencePacked)));
11123 if (isCallValid)
11124 {
11125 context->finishFenceNV(fencePacked);
11126 }
11127 ANGLE_CAPTURE_GL(FinishFenceNV, isCallValid, context, fencePacked);
11128 }
11129 else
11130 {
11131 GenerateContextLostErrorOnCurrentGlobalContext();
11132 }
11133 egl::Display::GetCurrentThreadUnlockedTailCall()->run(nullptr);
11134 }
11135
GL_GenFencesNV(GLsizei n,GLuint * fences)11136 void GL_APIENTRY GL_GenFencesNV(GLsizei n, GLuint *fences)
11137 {
11138 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
11139 Context *context = GetValidGlobalContext();
11140 EVENT(context, GLGenFencesNV, "context = %d, n = %d, fences = 0x%016" PRIxPTR "", CID(context),
11141 n, (uintptr_t)fences);
11142
11143 if (context)
11144 {
11145 FenceNVID *fencesPacked = PackParam<FenceNVID *>(fences);
11146 SCOPED_SHARE_CONTEXT_LOCK(context);
11147 bool isCallValid =
11148 (context->skipValidation() ||
11149 ValidateGenFencesNV(context, angle::EntryPoint::GLGenFencesNV, n, fencesPacked));
11150 if (isCallValid)
11151 {
11152 context->genFencesNV(n, fencesPacked);
11153 }
11154 ANGLE_CAPTURE_GL(GenFencesNV, isCallValid, context, n, fencesPacked);
11155 }
11156 else
11157 {
11158 GenerateContextLostErrorOnCurrentGlobalContext();
11159 }
11160 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
11161 }
11162
GL_GetFenceivNV(GLuint fence,GLenum pname,GLint * params)11163 void GL_APIENTRY GL_GetFenceivNV(GLuint fence, GLenum pname, GLint *params)
11164 {
11165 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
11166 Context *context = GetValidGlobalContext();
11167 EVENT(context, GLGetFenceivNV,
11168 "context = %d, fence = %u, pname = %s, params = 0x%016" PRIxPTR "", CID(context), fence,
11169 GLenumToString(GLESEnum::AllEnums, pname), (uintptr_t)params);
11170
11171 if (context)
11172 {
11173 FenceNVID fencePacked = PackParam<FenceNVID>(fence);
11174 SCOPED_SHARE_CONTEXT_LOCK(context);
11175 bool isCallValid = (context->skipValidation() ||
11176 ValidateGetFenceivNV(context, angle::EntryPoint::GLGetFenceivNV,
11177 fencePacked, pname, params));
11178 if (isCallValid)
11179 {
11180 context->getFenceivNV(fencePacked, pname, params);
11181 }
11182 ANGLE_CAPTURE_GL(GetFenceivNV, isCallValid, context, fencePacked, pname, params);
11183 }
11184 else
11185 {
11186 GenerateContextLostErrorOnCurrentGlobalContext();
11187 }
11188 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
11189 }
11190
GL_IsFenceNV(GLuint fence)11191 GLboolean GL_APIENTRY GL_IsFenceNV(GLuint fence)
11192 {
11193 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
11194 Context *context = GetValidGlobalContext();
11195 EVENT(context, GLIsFenceNV, "context = %d, fence = %u", CID(context), fence);
11196
11197 GLboolean returnValue;
11198 if (context)
11199 {
11200 FenceNVID fencePacked = PackParam<FenceNVID>(fence);
11201 SCOPED_SHARE_CONTEXT_LOCK(context);
11202 bool isCallValid =
11203 (context->skipValidation() ||
11204 ValidateIsFenceNV(context, angle::EntryPoint::GLIsFenceNV, fencePacked));
11205 if (isCallValid)
11206 {
11207 returnValue = context->isFenceNV(fencePacked);
11208 }
11209 else
11210 {
11211 returnValue = GetDefaultReturnValue<angle::EntryPoint::GLIsFenceNV, GLboolean>();
11212 }
11213 ANGLE_CAPTURE_GL(IsFenceNV, isCallValid, context, fencePacked, returnValue);
11214 }
11215 else
11216 {
11217 GenerateContextLostErrorOnCurrentGlobalContext();
11218 returnValue = GetDefaultReturnValue<angle::EntryPoint::GLIsFenceNV, GLboolean>();
11219 }
11220 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
11221 return returnValue;
11222 }
11223
GL_SetFenceNV(GLuint fence,GLenum condition)11224 void GL_APIENTRY GL_SetFenceNV(GLuint fence, GLenum condition)
11225 {
11226 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
11227 Context *context = GetValidGlobalContext();
11228 EVENT(context, GLSetFenceNV, "context = %d, fence = %u, condition = %s", CID(context), fence,
11229 GLenumToString(GLESEnum::AllEnums, condition));
11230
11231 if (context)
11232 {
11233 FenceNVID fencePacked = PackParam<FenceNVID>(fence);
11234 SCOPED_SHARE_CONTEXT_LOCK(context);
11235 bool isCallValid =
11236 (context->skipValidation() ||
11237 (ValidatePixelLocalStorageInactive(context->getPrivateState(),
11238 context->getMutableErrorSetForValidation(),
11239 angle::EntryPoint::GLSetFenceNV) &&
11240 ValidateSetFenceNV(context, angle::EntryPoint::GLSetFenceNV, fencePacked,
11241 condition)));
11242 if (isCallValid)
11243 {
11244 context->setFenceNV(fencePacked, condition);
11245 }
11246 ANGLE_CAPTURE_GL(SetFenceNV, isCallValid, context, fencePacked, condition);
11247 }
11248 else
11249 {
11250 GenerateContextLostErrorOnCurrentGlobalContext();
11251 }
11252 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
11253 }
11254
GL_TestFenceNV(GLuint fence)11255 GLboolean GL_APIENTRY GL_TestFenceNV(GLuint fence)
11256 {
11257 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
11258 Context *context = GetValidGlobalContext();
11259 EVENT(context, GLTestFenceNV, "context = %d, fence = %u", CID(context), fence);
11260
11261 GLboolean returnValue;
11262 if (context)
11263 {
11264 FenceNVID fencePacked = PackParam<FenceNVID>(fence);
11265 SCOPED_SHARE_CONTEXT_LOCK(context);
11266 bool isCallValid =
11267 (context->skipValidation() ||
11268 (ValidatePixelLocalStorageInactive(context->getPrivateState(),
11269 context->getMutableErrorSetForValidation(),
11270 angle::EntryPoint::GLTestFenceNV) &&
11271 ValidateTestFenceNV(context, angle::EntryPoint::GLTestFenceNV, fencePacked)));
11272 if (isCallValid)
11273 {
11274 returnValue = context->testFenceNV(fencePacked);
11275 }
11276 else
11277 {
11278 returnValue = GetDefaultReturnValue<angle::EntryPoint::GLTestFenceNV, GLboolean>();
11279 }
11280 ANGLE_CAPTURE_GL(TestFenceNV, isCallValid, context, fencePacked, returnValue);
11281 }
11282 else
11283 {
11284 GenerateContextLostErrorOnCurrentGlobalContext();
11285 returnValue = GetDefaultReturnValue<angle::EntryPoint::GLTestFenceNV, GLboolean>();
11286 }
11287 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
11288 return returnValue;
11289 }
11290
11291 // GL_NV_framebuffer_blit
GL_BlitFramebufferNV(GLint srcX0,GLint srcY0,GLint srcX1,GLint srcY1,GLint dstX0,GLint dstY0,GLint dstX1,GLint dstY1,GLbitfield mask,GLenum filter)11292 void GL_APIENTRY GL_BlitFramebufferNV(GLint srcX0,
11293 GLint srcY0,
11294 GLint srcX1,
11295 GLint srcY1,
11296 GLint dstX0,
11297 GLint dstY0,
11298 GLint dstX1,
11299 GLint dstY1,
11300 GLbitfield mask,
11301 GLenum filter)
11302 {
11303 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
11304 Context *context = GetValidGlobalContext();
11305 EVENT(context, GLBlitFramebufferNV,
11306 "context = %d, srcX0 = %d, srcY0 = %d, srcX1 = %d, srcY1 = %d, dstX0 = %d, dstY0 = %d, "
11307 "dstX1 = %d, dstY1 = %d, mask = %s, filter = %s",
11308 CID(context), srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1,
11309 GLbitfieldToString(GLESEnum::ClearBufferMask, mask).c_str(),
11310 GLenumToString(GLESEnum::BlitFramebufferFilter, filter));
11311
11312 if (context)
11313 {
11314 SCOPED_SHARE_CONTEXT_LOCK(context);
11315 bool isCallValid =
11316 (context->skipValidation() ||
11317 (ValidatePixelLocalStorageInactive(context->getPrivateState(),
11318 context->getMutableErrorSetForValidation(),
11319 angle::EntryPoint::GLBlitFramebufferNV) &&
11320 ValidateBlitFramebufferNV(context, angle::EntryPoint::GLBlitFramebufferNV, srcX0,
11321 srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask,
11322 filter)));
11323 if (isCallValid)
11324 {
11325 context->blitFramebufferNV(srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask,
11326 filter);
11327 }
11328 ANGLE_CAPTURE_GL(BlitFramebufferNV, isCallValid, context, srcX0, srcY0, srcX1, srcY1, dstX0,
11329 dstY0, dstX1, dstY1, mask, filter);
11330 }
11331 else
11332 {
11333 GenerateContextLostErrorOnCurrentGlobalContext();
11334 }
11335 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
11336 }
11337
11338 // GL_NV_pixel_buffer_object
11339
11340 // GL_NV_polygon_mode
GL_PolygonModeNV(GLenum face,GLenum mode)11341 void GL_APIENTRY GL_PolygonModeNV(GLenum face, GLenum mode)
11342 {
11343 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
11344 Context *context = GetValidGlobalContext();
11345 EVENT(context, GLPolygonModeNV, "context = %d, face = %s, mode = %s", CID(context),
11346 GLenumToString(GLESEnum::TriangleFace, face),
11347 GLenumToString(GLESEnum::PolygonMode, mode));
11348
11349 if (context)
11350 {
11351 PolygonMode modePacked = PackParam<PolygonMode>(mode);
11352 bool isCallValid =
11353 (context->skipValidation() ||
11354 ValidatePolygonModeNV(context->getPrivateState(),
11355 context->getMutableErrorSetForValidation(),
11356 angle::EntryPoint::GLPolygonModeNV, face, modePacked));
11357 if (isCallValid)
11358 {
11359 ContextPrivatePolygonModeNV(context->getMutablePrivateState(),
11360 context->getMutablePrivateStateCache(), face, modePacked);
11361 }
11362 ANGLE_CAPTURE_GL(PolygonModeNV, isCallValid, context, face, modePacked);
11363 }
11364 else
11365 {
11366 GenerateContextLostErrorOnCurrentGlobalContext();
11367 }
11368 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
11369 }
11370
11371 // GL_NV_read_depth
11372
11373 // GL_NV_read_depth_stencil
11374
11375 // GL_NV_read_stencil
11376
11377 // GL_NV_robustness_video_memory_purge
11378
11379 // GL_NV_shader_noperspective_interpolation
11380
11381 // GL_OES_EGL_image
GL_EGLImageTargetRenderbufferStorageOES(GLenum target,GLeglImageOES image)11382 void GL_APIENTRY GL_EGLImageTargetRenderbufferStorageOES(GLenum target, GLeglImageOES image)
11383 {
11384 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
11385 Context *context = GetValidGlobalContext();
11386 EVENT(context, GLEGLImageTargetRenderbufferStorageOES,
11387 "context = %d, target = %s, image = 0x%016" PRIxPTR "", CID(context),
11388 GLenumToString(GLESEnum::AllEnums, target), (uintptr_t)image);
11389
11390 if (context)
11391 {
11392 egl::ImageID imagePacked = PackParam<egl::ImageID>(image);
11393 SCOPED_EGL_IMAGE_SHARE_CONTEXT_LOCK(context, imagePacked);
11394 bool isCallValid =
11395 (context->skipValidation() ||
11396 (ValidatePixelLocalStorageInactive(
11397 context->getPrivateState(), context->getMutableErrorSetForValidation(),
11398 angle::EntryPoint::GLEGLImageTargetRenderbufferStorageOES) &&
11399 ValidateEGLImageTargetRenderbufferStorageOES(
11400 context, angle::EntryPoint::GLEGLImageTargetRenderbufferStorageOES, target,
11401 imagePacked)));
11402 if (isCallValid)
11403 {
11404 context->eGLImageTargetRenderbufferStorage(target, imagePacked);
11405 }
11406 ANGLE_CAPTURE_GL(EGLImageTargetRenderbufferStorageOES, isCallValid, context, target,
11407 imagePacked);
11408 }
11409 else
11410 {
11411 GenerateContextLostErrorOnCurrentGlobalContext();
11412 }
11413 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
11414 }
11415
GL_EGLImageTargetTexture2DOES(GLenum target,GLeglImageOES image)11416 void GL_APIENTRY GL_EGLImageTargetTexture2DOES(GLenum target, GLeglImageOES image)
11417 {
11418 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
11419 Context *context = GetValidGlobalContext();
11420 EVENT(context, GLEGLImageTargetTexture2DOES,
11421 "context = %d, target = %s, image = 0x%016" PRIxPTR "", CID(context),
11422 GLenumToString(GLESEnum::AllEnums, target), (uintptr_t)image);
11423
11424 if (context)
11425 {
11426 TextureType targetPacked = PackParam<TextureType>(target);
11427 egl::ImageID imagePacked = PackParam<egl::ImageID>(image);
11428 SCOPED_EGL_IMAGE_SHARE_CONTEXT_LOCK(context, imagePacked);
11429 bool isCallValid =
11430 (context->skipValidation() ||
11431 (ValidatePixelLocalStorageInactive(context->getPrivateState(),
11432 context->getMutableErrorSetForValidation(),
11433 angle::EntryPoint::GLEGLImageTargetTexture2DOES) &&
11434 ValidateEGLImageTargetTexture2DOES(context,
11435 angle::EntryPoint::GLEGLImageTargetTexture2DOES,
11436 targetPacked, imagePacked)));
11437 if (isCallValid)
11438 {
11439 context->eGLImageTargetTexture2D(targetPacked, imagePacked);
11440 }
11441 ANGLE_CAPTURE_GL(EGLImageTargetTexture2DOES, isCallValid, context, targetPacked,
11442 imagePacked);
11443 }
11444 else
11445 {
11446 GenerateContextLostErrorOnCurrentGlobalContext();
11447 }
11448 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
11449 }
11450
11451 // GL_OES_EGL_image_external
11452
11453 // GL_OES_EGL_image_external_essl3
11454
11455 // GL_OES_blend_subtract
GL_BlendEquationOES(GLenum mode)11456 void GL_APIENTRY GL_BlendEquationOES(GLenum mode)
11457 {
11458 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
11459 Context *context = GetValidGlobalContext();
11460 EVENT(context, GLBlendEquationOES, "context = %d, mode = %s", CID(context),
11461 GLenumToString(GLESEnum::BlendEquationModeEXT, mode));
11462
11463 if (context)
11464 {
11465 bool isCallValid = (context->skipValidation() ||
11466 ValidateBlendEquationOES(context->getPrivateState(),
11467 context->getMutableErrorSetForValidation(),
11468 angle::EntryPoint::GLBlendEquationOES, mode));
11469 if (isCallValid)
11470 {
11471 ContextPrivateBlendEquation(context->getMutablePrivateState(),
11472 context->getMutablePrivateStateCache(), mode);
11473 }
11474 ANGLE_CAPTURE_GL(BlendEquationOES, isCallValid, context, mode);
11475 }
11476 else
11477 {
11478 GenerateContextLostErrorOnCurrentGlobalContext();
11479 }
11480 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
11481 }
11482
11483 // GL_OES_compressed_ETC1_RGB8_texture
11484
11485 // GL_OES_compressed_paletted_texture
11486
11487 // GL_OES_copy_image
GL_CopyImageSubDataOES(GLuint srcName,GLenum srcTarget,GLint srcLevel,GLint srcX,GLint srcY,GLint srcZ,GLuint dstName,GLenum dstTarget,GLint dstLevel,GLint dstX,GLint dstY,GLint dstZ,GLsizei srcWidth,GLsizei srcHeight,GLsizei srcDepth)11488 void GL_APIENTRY GL_CopyImageSubDataOES(GLuint srcName,
11489 GLenum srcTarget,
11490 GLint srcLevel,
11491 GLint srcX,
11492 GLint srcY,
11493 GLint srcZ,
11494 GLuint dstName,
11495 GLenum dstTarget,
11496 GLint dstLevel,
11497 GLint dstX,
11498 GLint dstY,
11499 GLint dstZ,
11500 GLsizei srcWidth,
11501 GLsizei srcHeight,
11502 GLsizei srcDepth)
11503 {
11504 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
11505 Context *context = GetValidGlobalContext();
11506 EVENT(context, GLCopyImageSubDataOES,
11507 "context = %d, srcName = %u, srcTarget = %s, srcLevel = %d, srcX = %d, srcY = %d, srcZ = "
11508 "%d, dstName = %u, dstTarget = %s, dstLevel = %d, dstX = %d, dstY = %d, dstZ = %d, "
11509 "srcWidth = %d, srcHeight = %d, srcDepth = %d",
11510 CID(context), srcName, GLenumToString(GLESEnum::CopyBufferSubDataTarget, srcTarget),
11511 srcLevel, srcX, srcY, srcZ, dstName,
11512 GLenumToString(GLESEnum::CopyBufferSubDataTarget, dstTarget), dstLevel, dstX, dstY, dstZ,
11513 srcWidth, srcHeight, srcDepth);
11514
11515 if (context)
11516 {
11517 SCOPED_SHARE_CONTEXT_LOCK(context);
11518 bool isCallValid =
11519 (context->skipValidation() ||
11520 (ValidatePixelLocalStorageInactive(context->getPrivateState(),
11521 context->getMutableErrorSetForValidation(),
11522 angle::EntryPoint::GLCopyImageSubDataOES) &&
11523 ValidateCopyImageSubDataOES(context, angle::EntryPoint::GLCopyImageSubDataOES,
11524 srcName, srcTarget, srcLevel, srcX, srcY, srcZ, dstName,
11525 dstTarget, dstLevel, dstX, dstY, dstZ, srcWidth,
11526 srcHeight, srcDepth)));
11527 if (isCallValid)
11528 {
11529 context->copyImageSubData(srcName, srcTarget, srcLevel, srcX, srcY, srcZ, dstName,
11530 dstTarget, dstLevel, dstX, dstY, dstZ, srcWidth, srcHeight,
11531 srcDepth);
11532 }
11533 ANGLE_CAPTURE_GL(CopyImageSubDataOES, isCallValid, context, srcName, srcTarget, srcLevel,
11534 srcX, srcY, srcZ, dstName, dstTarget, dstLevel, dstX, dstY, dstZ, srcWidth,
11535 srcHeight, srcDepth);
11536 }
11537 else
11538 {
11539 GenerateContextLostErrorOnCurrentGlobalContext();
11540 }
11541 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
11542 }
11543
11544 // GL_OES_depth24
11545
11546 // GL_OES_depth32
11547
11548 // GL_OES_depth_texture
11549
11550 // GL_OES_draw_buffers_indexed
GL_BlendEquationSeparateiOES(GLuint buf,GLenum modeRGB,GLenum modeAlpha)11551 void GL_APIENTRY GL_BlendEquationSeparateiOES(GLuint buf, GLenum modeRGB, GLenum modeAlpha)
11552 {
11553 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
11554 Context *context = GetValidGlobalContext();
11555 EVENT(context, GLBlendEquationSeparateiOES,
11556 "context = %d, buf = %u, modeRGB = %s, modeAlpha = %s", CID(context), buf,
11557 GLenumToString(GLESEnum::BlendEquationModeEXT, modeRGB),
11558 GLenumToString(GLESEnum::BlendEquationModeEXT, modeAlpha));
11559
11560 if (context)
11561 {
11562 bool isCallValid =
11563 (context->skipValidation() ||
11564 ValidateBlendEquationSeparateiOES(
11565 context->getPrivateState(), context->getMutableErrorSetForValidation(),
11566 angle::EntryPoint::GLBlendEquationSeparateiOES, buf, modeRGB, modeAlpha));
11567 if (isCallValid)
11568 {
11569 ContextPrivateBlendEquationSeparatei(context->getMutablePrivateState(),
11570 context->getMutablePrivateStateCache(), buf,
11571 modeRGB, modeAlpha);
11572 }
11573 ANGLE_CAPTURE_GL(BlendEquationSeparateiOES, isCallValid, context, buf, modeRGB, modeAlpha);
11574 }
11575 else
11576 {
11577 GenerateContextLostErrorOnCurrentGlobalContext();
11578 }
11579 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
11580 }
11581
GL_BlendEquationiOES(GLuint buf,GLenum mode)11582 void GL_APIENTRY GL_BlendEquationiOES(GLuint buf, GLenum mode)
11583 {
11584 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
11585 Context *context = GetValidGlobalContext();
11586 EVENT(context, GLBlendEquationiOES, "context = %d, buf = %u, mode = %s", CID(context), buf,
11587 GLenumToString(GLESEnum::BlendEquationModeEXT, mode));
11588
11589 if (context)
11590 {
11591 bool isCallValid =
11592 (context->skipValidation() ||
11593 ValidateBlendEquationiOES(context->getPrivateState(),
11594 context->getMutableErrorSetForValidation(),
11595 angle::EntryPoint::GLBlendEquationiOES, buf, mode));
11596 if (isCallValid)
11597 {
11598 ContextPrivateBlendEquationi(context->getMutablePrivateState(),
11599 context->getMutablePrivateStateCache(), buf, mode);
11600 }
11601 ANGLE_CAPTURE_GL(BlendEquationiOES, isCallValid, context, buf, mode);
11602 }
11603 else
11604 {
11605 GenerateContextLostErrorOnCurrentGlobalContext();
11606 }
11607 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
11608 }
11609
11610 void GL_APIENTRY
GL_BlendFuncSeparateiOES(GLuint buf,GLenum srcRGB,GLenum dstRGB,GLenum srcAlpha,GLenum dstAlpha)11611 GL_BlendFuncSeparateiOES(GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha)
11612 {
11613 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
11614 Context *context = GetValidGlobalContext();
11615 EVENT(context, GLBlendFuncSeparateiOES,
11616 "context = %d, buf = %u, srcRGB = %s, dstRGB = %s, srcAlpha = %s, dstAlpha = %s",
11617 CID(context), buf, GLenumToString(GLESEnum::BlendingFactor, srcRGB),
11618 GLenumToString(GLESEnum::BlendingFactor, dstRGB),
11619 GLenumToString(GLESEnum::BlendingFactor, srcAlpha),
11620 GLenumToString(GLESEnum::BlendingFactor, dstAlpha));
11621
11622 if (context)
11623 {
11624 bool isCallValid =
11625 (context->skipValidation() ||
11626 ValidateBlendFuncSeparateiOES(context->getPrivateState(),
11627 context->getMutableErrorSetForValidation(),
11628 angle::EntryPoint::GLBlendFuncSeparateiOES, buf, srcRGB,
11629 dstRGB, srcAlpha, dstAlpha));
11630 if (isCallValid)
11631 {
11632 ContextPrivateBlendFuncSeparatei(context->getMutablePrivateState(),
11633 context->getMutablePrivateStateCache(), buf, srcRGB,
11634 dstRGB, srcAlpha, dstAlpha);
11635 }
11636 ANGLE_CAPTURE_GL(BlendFuncSeparateiOES, isCallValid, context, buf, srcRGB, dstRGB, srcAlpha,
11637 dstAlpha);
11638 }
11639 else
11640 {
11641 GenerateContextLostErrorOnCurrentGlobalContext();
11642 }
11643 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
11644 }
11645
GL_BlendFunciOES(GLuint buf,GLenum src,GLenum dst)11646 void GL_APIENTRY GL_BlendFunciOES(GLuint buf, GLenum src, GLenum dst)
11647 {
11648 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
11649 Context *context = GetValidGlobalContext();
11650 EVENT(context, GLBlendFunciOES, "context = %d, buf = %u, src = %s, dst = %s", CID(context), buf,
11651 GLenumToString(GLESEnum::BlendingFactor, src),
11652 GLenumToString(GLESEnum::BlendingFactor, dst));
11653
11654 if (context)
11655 {
11656 bool isCallValid =
11657 (context->skipValidation() ||
11658 ValidateBlendFunciOES(context->getPrivateState(),
11659 context->getMutableErrorSetForValidation(),
11660 angle::EntryPoint::GLBlendFunciOES, buf, src, dst));
11661 if (isCallValid)
11662 {
11663 ContextPrivateBlendFunci(context->getMutablePrivateState(),
11664 context->getMutablePrivateStateCache(), buf, src, dst);
11665 }
11666 ANGLE_CAPTURE_GL(BlendFunciOES, isCallValid, context, buf, src, dst);
11667 }
11668 else
11669 {
11670 GenerateContextLostErrorOnCurrentGlobalContext();
11671 }
11672 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
11673 }
11674
GL_ColorMaskiOES(GLuint index,GLboolean r,GLboolean g,GLboolean b,GLboolean a)11675 void GL_APIENTRY GL_ColorMaskiOES(GLuint index, GLboolean r, GLboolean g, GLboolean b, GLboolean a)
11676 {
11677 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
11678 Context *context = GetValidGlobalContext();
11679 EVENT(context, GLColorMaskiOES, "context = %d, index = %u, r = %s, g = %s, b = %s, a = %s",
11680 CID(context), index, GLbooleanToString(r), GLbooleanToString(g), GLbooleanToString(b),
11681 GLbooleanToString(a));
11682
11683 if (context)
11684 {
11685 bool isCallValid =
11686 (context->skipValidation() ||
11687 ValidateColorMaskiOES(context->getPrivateState(),
11688 context->getMutableErrorSetForValidation(),
11689 angle::EntryPoint::GLColorMaskiOES, index, r, g, b, a));
11690 if (isCallValid)
11691 {
11692 ContextPrivateColorMaski(context->getMutablePrivateState(),
11693 context->getMutablePrivateStateCache(), index, r, g, b, a);
11694 }
11695 ANGLE_CAPTURE_GL(ColorMaskiOES, isCallValid, context, index, r, g, b, a);
11696 }
11697 else
11698 {
11699 GenerateContextLostErrorOnCurrentGlobalContext();
11700 }
11701 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
11702 }
11703
GL_DisableiOES(GLenum target,GLuint index)11704 void GL_APIENTRY GL_DisableiOES(GLenum target, GLuint index)
11705 {
11706 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
11707 Context *context = GetValidGlobalContext();
11708 EVENT(context, GLDisableiOES, "context = %d, target = %s, index = %u", CID(context),
11709 GLenumToString(GLESEnum::EnableCap, target), index);
11710
11711 if (context)
11712 {
11713 bool isCallValid = (context->skipValidation() ||
11714 ValidateDisableiOES(context->getPrivateState(),
11715 context->getMutableErrorSetForValidation(),
11716 angle::EntryPoint::GLDisableiOES, target, index));
11717 if (isCallValid)
11718 {
11719 ContextPrivateDisablei(context->getMutablePrivateState(),
11720 context->getMutablePrivateStateCache(), target, index);
11721 }
11722 ANGLE_CAPTURE_GL(DisableiOES, isCallValid, context, target, index);
11723 }
11724 else
11725 {
11726 GenerateContextLostErrorOnCurrentGlobalContext();
11727 }
11728 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
11729 }
11730
GL_EnableiOES(GLenum target,GLuint index)11731 void GL_APIENTRY GL_EnableiOES(GLenum target, GLuint index)
11732 {
11733 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
11734 Context *context = GetValidGlobalContext();
11735 EVENT(context, GLEnableiOES, "context = %d, target = %s, index = %u", CID(context),
11736 GLenumToString(GLESEnum::EnableCap, target), index);
11737
11738 if (context)
11739 {
11740 bool isCallValid = (context->skipValidation() ||
11741 ValidateEnableiOES(context->getPrivateState(),
11742 context->getMutableErrorSetForValidation(),
11743 angle::EntryPoint::GLEnableiOES, target, index));
11744 if (isCallValid)
11745 {
11746 ContextPrivateEnablei(context->getMutablePrivateState(),
11747 context->getMutablePrivateStateCache(), target, index);
11748 }
11749 ANGLE_CAPTURE_GL(EnableiOES, isCallValid, context, target, index);
11750 }
11751 else
11752 {
11753 GenerateContextLostErrorOnCurrentGlobalContext();
11754 }
11755 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
11756 }
11757
GL_IsEnablediOES(GLenum target,GLuint index)11758 GLboolean GL_APIENTRY GL_IsEnablediOES(GLenum target, GLuint index)
11759 {
11760 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
11761 Context *context = GetValidGlobalContext();
11762 EVENT(context, GLIsEnablediOES, "context = %d, target = %s, index = %u", CID(context),
11763 GLenumToString(GLESEnum::EnableCap, target), index);
11764
11765 GLboolean returnValue;
11766 if (context)
11767 {
11768 bool isCallValid =
11769 (context->skipValidation() ||
11770 ValidateIsEnablediOES(context->getPrivateState(),
11771 context->getMutableErrorSetForValidation(),
11772 angle::EntryPoint::GLIsEnablediOES, target, index));
11773 if (isCallValid)
11774 {
11775 returnValue =
11776 ContextPrivateIsEnabledi(context->getMutablePrivateState(),
11777 context->getMutablePrivateStateCache(), target, index);
11778 }
11779 else
11780 {
11781 returnValue = GetDefaultReturnValue<angle::EntryPoint::GLIsEnablediOES, GLboolean>();
11782 }
11783 ANGLE_CAPTURE_GL(IsEnablediOES, isCallValid, context, target, index, returnValue);
11784 }
11785 else
11786 {
11787 GenerateContextLostErrorOnCurrentGlobalContext();
11788 returnValue = GetDefaultReturnValue<angle::EntryPoint::GLIsEnablediOES, GLboolean>();
11789 }
11790 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
11791 return returnValue;
11792 }
11793
11794 // GL_OES_draw_elements_base_vertex
GL_DrawElementsBaseVertexOES(GLenum mode,GLsizei count,GLenum type,const void * indices,GLint basevertex)11795 void GL_APIENTRY GL_DrawElementsBaseVertexOES(GLenum mode,
11796 GLsizei count,
11797 GLenum type,
11798 const void *indices,
11799 GLint basevertex)
11800 {
11801 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
11802 Context *context = GetValidGlobalContext();
11803 EVENT(context, GLDrawElementsBaseVertexOES,
11804 "context = %d, mode = %s, count = %d, type = %s, indices = 0x%016" PRIxPTR
11805 ", basevertex = %d",
11806 CID(context), GLenumToString(GLESEnum::PrimitiveType, mode), count,
11807 GLenumToString(GLESEnum::DrawElementsType, type), (uintptr_t)indices, basevertex);
11808
11809 if (context)
11810 {
11811 PrimitiveMode modePacked = PackParam<PrimitiveMode>(mode);
11812 DrawElementsType typePacked = PackParam<DrawElementsType>(type);
11813 SCOPED_SHARE_CONTEXT_LOCK(context);
11814 bool isCallValid = (context->skipValidation() ||
11815 ValidateDrawElementsBaseVertexOES(
11816 context, angle::EntryPoint::GLDrawElementsBaseVertexOES, modePacked,
11817 count, typePacked, indices, basevertex));
11818 if (isCallValid)
11819 {
11820 context->drawElementsBaseVertex(modePacked, count, typePacked, indices, basevertex);
11821 }
11822 ANGLE_CAPTURE_GL(DrawElementsBaseVertexOES, isCallValid, context, modePacked, count,
11823 typePacked, indices, basevertex);
11824 }
11825 else
11826 {
11827 GenerateContextLostErrorOnCurrentGlobalContext();
11828 }
11829 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
11830 }
11831
GL_DrawElementsInstancedBaseVertexOES(GLenum mode,GLsizei count,GLenum type,const void * indices,GLsizei instancecount,GLint basevertex)11832 void GL_APIENTRY GL_DrawElementsInstancedBaseVertexOES(GLenum mode,
11833 GLsizei count,
11834 GLenum type,
11835 const void *indices,
11836 GLsizei instancecount,
11837 GLint basevertex)
11838 {
11839 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
11840 Context *context = GetValidGlobalContext();
11841 EVENT(context, GLDrawElementsInstancedBaseVertexOES,
11842 "context = %d, mode = %s, count = %d, type = %s, indices = 0x%016" PRIxPTR
11843 ", instancecount = %d, basevertex = %d",
11844 CID(context), GLenumToString(GLESEnum::PrimitiveType, mode), count,
11845 GLenumToString(GLESEnum::DrawElementsType, type), (uintptr_t)indices, instancecount,
11846 basevertex);
11847
11848 if (context)
11849 {
11850 PrimitiveMode modePacked = PackParam<PrimitiveMode>(mode);
11851 DrawElementsType typePacked = PackParam<DrawElementsType>(type);
11852 SCOPED_SHARE_CONTEXT_LOCK(context);
11853 bool isCallValid = (context->skipValidation() ||
11854 ValidateDrawElementsInstancedBaseVertexOES(
11855 context, angle::EntryPoint::GLDrawElementsInstancedBaseVertexOES,
11856 modePacked, count, typePacked, indices, instancecount, basevertex));
11857 if (isCallValid)
11858 {
11859 context->drawElementsInstancedBaseVertex(modePacked, count, typePacked, indices,
11860 instancecount, basevertex);
11861 }
11862 ANGLE_CAPTURE_GL(DrawElementsInstancedBaseVertexOES, isCallValid, context, modePacked,
11863 count, typePacked, indices, instancecount, basevertex);
11864 }
11865 else
11866 {
11867 GenerateContextLostErrorOnCurrentGlobalContext();
11868 }
11869 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
11870 }
11871
GL_DrawRangeElementsBaseVertexOES(GLenum mode,GLuint start,GLuint end,GLsizei count,GLenum type,const void * indices,GLint basevertex)11872 void GL_APIENTRY GL_DrawRangeElementsBaseVertexOES(GLenum mode,
11873 GLuint start,
11874 GLuint end,
11875 GLsizei count,
11876 GLenum type,
11877 const void *indices,
11878 GLint basevertex)
11879 {
11880 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
11881 Context *context = GetValidGlobalContext();
11882 EVENT(context, GLDrawRangeElementsBaseVertexOES,
11883 "context = %d, mode = %s, start = %u, end = %u, count = %d, type = %s, indices = "
11884 "0x%016" PRIxPTR ", basevertex = %d",
11885 CID(context), GLenumToString(GLESEnum::PrimitiveType, mode), start, end, count,
11886 GLenumToString(GLESEnum::DrawElementsType, type), (uintptr_t)indices, basevertex);
11887
11888 if (context)
11889 {
11890 PrimitiveMode modePacked = PackParam<PrimitiveMode>(mode);
11891 DrawElementsType typePacked = PackParam<DrawElementsType>(type);
11892 SCOPED_SHARE_CONTEXT_LOCK(context);
11893 bool isCallValid = (context->skipValidation() ||
11894 ValidateDrawRangeElementsBaseVertexOES(
11895 context, angle::EntryPoint::GLDrawRangeElementsBaseVertexOES,
11896 modePacked, start, end, count, typePacked, indices, basevertex));
11897 if (isCallValid)
11898 {
11899 context->drawRangeElementsBaseVertex(modePacked, start, end, count, typePacked, indices,
11900 basevertex);
11901 }
11902 ANGLE_CAPTURE_GL(DrawRangeElementsBaseVertexOES, isCallValid, context, modePacked, start,
11903 end, count, typePacked, indices, basevertex);
11904 }
11905 else
11906 {
11907 GenerateContextLostErrorOnCurrentGlobalContext();
11908 }
11909 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
11910 }
11911
11912 // MultiDrawElementsBaseVertexEXT is already defined.
11913
11914 // GL_OES_draw_texture
GL_DrawTexfOES(GLfloat x,GLfloat y,GLfloat z,GLfloat width,GLfloat height)11915 void GL_APIENTRY GL_DrawTexfOES(GLfloat x, GLfloat y, GLfloat z, GLfloat width, GLfloat height)
11916 {
11917 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
11918 Context *context = GetValidGlobalContext();
11919 EVENT(context, GLDrawTexfOES, "context = %d, x = %f, y = %f, z = %f, width = %f, height = %f",
11920 CID(context), x, y, z, width, height);
11921
11922 if (context)
11923 {
11924 SCOPED_SHARE_CONTEXT_LOCK(context);
11925 bool isCallValid = (context->skipValidation() ||
11926 ValidateDrawTexfOES(context, angle::EntryPoint::GLDrawTexfOES, x, y, z,
11927 width, height));
11928 if (isCallValid)
11929 {
11930 context->drawTexf(x, y, z, width, height);
11931 }
11932 ANGLE_CAPTURE_GL(DrawTexfOES, isCallValid, context, x, y, z, width, height);
11933 }
11934 else
11935 {
11936 GenerateContextLostErrorOnCurrentGlobalContext();
11937 }
11938 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
11939 }
11940
GL_DrawTexfvOES(const GLfloat * coords)11941 void GL_APIENTRY GL_DrawTexfvOES(const GLfloat *coords)
11942 {
11943 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
11944 Context *context = GetValidGlobalContext();
11945 EVENT(context, GLDrawTexfvOES, "context = %d, coords = 0x%016" PRIxPTR "", CID(context),
11946 (uintptr_t)coords);
11947
11948 if (context)
11949 {
11950 SCOPED_SHARE_CONTEXT_LOCK(context);
11951 bool isCallValid =
11952 (context->skipValidation() ||
11953 ValidateDrawTexfvOES(context, angle::EntryPoint::GLDrawTexfvOES, coords));
11954 if (isCallValid)
11955 {
11956 context->drawTexfv(coords);
11957 }
11958 ANGLE_CAPTURE_GL(DrawTexfvOES, isCallValid, context, coords);
11959 }
11960 else
11961 {
11962 GenerateContextLostErrorOnCurrentGlobalContext();
11963 }
11964 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
11965 }
11966
GL_DrawTexiOES(GLint x,GLint y,GLint z,GLint width,GLint height)11967 void GL_APIENTRY GL_DrawTexiOES(GLint x, GLint y, GLint z, GLint width, GLint height)
11968 {
11969 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
11970 Context *context = GetValidGlobalContext();
11971 EVENT(context, GLDrawTexiOES, "context = %d, x = %d, y = %d, z = %d, width = %d, height = %d",
11972 CID(context), x, y, z, width, height);
11973
11974 if (context)
11975 {
11976 SCOPED_SHARE_CONTEXT_LOCK(context);
11977 bool isCallValid = (context->skipValidation() ||
11978 ValidateDrawTexiOES(context, angle::EntryPoint::GLDrawTexiOES, x, y, z,
11979 width, height));
11980 if (isCallValid)
11981 {
11982 context->drawTexi(x, y, z, width, height);
11983 }
11984 ANGLE_CAPTURE_GL(DrawTexiOES, isCallValid, context, x, y, z, width, height);
11985 }
11986 else
11987 {
11988 GenerateContextLostErrorOnCurrentGlobalContext();
11989 }
11990 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
11991 }
11992
GL_DrawTexivOES(const GLint * coords)11993 void GL_APIENTRY GL_DrawTexivOES(const GLint *coords)
11994 {
11995 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
11996 Context *context = GetValidGlobalContext();
11997 EVENT(context, GLDrawTexivOES, "context = %d, coords = 0x%016" PRIxPTR "", CID(context),
11998 (uintptr_t)coords);
11999
12000 if (context)
12001 {
12002 SCOPED_SHARE_CONTEXT_LOCK(context);
12003 bool isCallValid =
12004 (context->skipValidation() ||
12005 ValidateDrawTexivOES(context, angle::EntryPoint::GLDrawTexivOES, coords));
12006 if (isCallValid)
12007 {
12008 context->drawTexiv(coords);
12009 }
12010 ANGLE_CAPTURE_GL(DrawTexivOES, isCallValid, context, coords);
12011 }
12012 else
12013 {
12014 GenerateContextLostErrorOnCurrentGlobalContext();
12015 }
12016 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
12017 }
12018
GL_DrawTexsOES(GLshort x,GLshort y,GLshort z,GLshort width,GLshort height)12019 void GL_APIENTRY GL_DrawTexsOES(GLshort x, GLshort y, GLshort z, GLshort width, GLshort height)
12020 {
12021 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
12022 Context *context = GetValidGlobalContext();
12023 EVENT(context, GLDrawTexsOES, "context = %d, x = %d, y = %d, z = %d, width = %d, height = %d",
12024 CID(context), x, y, z, width, height);
12025
12026 if (context)
12027 {
12028 SCOPED_SHARE_CONTEXT_LOCK(context);
12029 bool isCallValid = (context->skipValidation() ||
12030 ValidateDrawTexsOES(context, angle::EntryPoint::GLDrawTexsOES, x, y, z,
12031 width, height));
12032 if (isCallValid)
12033 {
12034 context->drawTexs(x, y, z, width, height);
12035 }
12036 ANGLE_CAPTURE_GL(DrawTexsOES, isCallValid, context, x, y, z, width, height);
12037 }
12038 else
12039 {
12040 GenerateContextLostErrorOnCurrentGlobalContext();
12041 }
12042 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
12043 }
12044
GL_DrawTexsvOES(const GLshort * coords)12045 void GL_APIENTRY GL_DrawTexsvOES(const GLshort *coords)
12046 {
12047 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
12048 Context *context = GetValidGlobalContext();
12049 EVENT(context, GLDrawTexsvOES, "context = %d, coords = 0x%016" PRIxPTR "", CID(context),
12050 (uintptr_t)coords);
12051
12052 if (context)
12053 {
12054 SCOPED_SHARE_CONTEXT_LOCK(context);
12055 bool isCallValid =
12056 (context->skipValidation() ||
12057 ValidateDrawTexsvOES(context, angle::EntryPoint::GLDrawTexsvOES, coords));
12058 if (isCallValid)
12059 {
12060 context->drawTexsv(coords);
12061 }
12062 ANGLE_CAPTURE_GL(DrawTexsvOES, isCallValid, context, coords);
12063 }
12064 else
12065 {
12066 GenerateContextLostErrorOnCurrentGlobalContext();
12067 }
12068 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
12069 }
12070
GL_DrawTexxOES(GLfixed x,GLfixed y,GLfixed z,GLfixed width,GLfixed height)12071 void GL_APIENTRY GL_DrawTexxOES(GLfixed x, GLfixed y, GLfixed z, GLfixed width, GLfixed height)
12072 {
12073 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
12074 Context *context = GetValidGlobalContext();
12075 EVENT(context, GLDrawTexxOES,
12076 "context = %d, x = 0x%X, y = 0x%X, z = 0x%X, width = 0x%X, height = 0x%X", CID(context),
12077 x, y, z, width, height);
12078
12079 if (context)
12080 {
12081 SCOPED_SHARE_CONTEXT_LOCK(context);
12082 bool isCallValid = (context->skipValidation() ||
12083 ValidateDrawTexxOES(context, angle::EntryPoint::GLDrawTexxOES, x, y, z,
12084 width, height));
12085 if (isCallValid)
12086 {
12087 context->drawTexx(x, y, z, width, height);
12088 }
12089 ANGLE_CAPTURE_GL(DrawTexxOES, isCallValid, context, x, y, z, width, height);
12090 }
12091 else
12092 {
12093 GenerateContextLostErrorOnCurrentGlobalContext();
12094 }
12095 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
12096 }
12097
GL_DrawTexxvOES(const GLfixed * coords)12098 void GL_APIENTRY GL_DrawTexxvOES(const GLfixed *coords)
12099 {
12100 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
12101 Context *context = GetValidGlobalContext();
12102 EVENT(context, GLDrawTexxvOES, "context = %d, coords = 0x%016" PRIxPTR "", CID(context),
12103 (uintptr_t)coords);
12104
12105 if (context)
12106 {
12107 SCOPED_SHARE_CONTEXT_LOCK(context);
12108 bool isCallValid =
12109 (context->skipValidation() ||
12110 ValidateDrawTexxvOES(context, angle::EntryPoint::GLDrawTexxvOES, coords));
12111 if (isCallValid)
12112 {
12113 context->drawTexxv(coords);
12114 }
12115 ANGLE_CAPTURE_GL(DrawTexxvOES, isCallValid, context, coords);
12116 }
12117 else
12118 {
12119 GenerateContextLostErrorOnCurrentGlobalContext();
12120 }
12121 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
12122 }
12123
12124 // GL_OES_element_index_uint
12125
12126 // GL_OES_fbo_render_mipmap
12127
12128 // GL_OES_framebuffer_object
GL_BindFramebufferOES(GLenum target,GLuint framebuffer)12129 void GL_APIENTRY GL_BindFramebufferOES(GLenum target, GLuint framebuffer)
12130 {
12131 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
12132 Context *context = GetValidGlobalContext();
12133 EVENT(context, GLBindFramebufferOES, "context = %d, target = %s, framebuffer = %u",
12134 CID(context), GLenumToString(GLESEnum::FramebufferTarget, target), framebuffer);
12135
12136 if (context)
12137 {
12138 FramebufferID framebufferPacked = PackParam<FramebufferID>(framebuffer);
12139 SCOPED_SHARE_CONTEXT_LOCK(context);
12140 bool isCallValid =
12141 (context->skipValidation() ||
12142 ValidateBindFramebufferOES(context, angle::EntryPoint::GLBindFramebufferOES, target,
12143 framebufferPacked));
12144 if (isCallValid)
12145 {
12146 context->bindFramebuffer(target, framebufferPacked);
12147 }
12148 ANGLE_CAPTURE_GL(BindFramebufferOES, isCallValid, context, target, framebufferPacked);
12149 }
12150 else
12151 {
12152 GenerateContextLostErrorOnCurrentGlobalContext();
12153 }
12154 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
12155 }
12156
GL_BindRenderbufferOES(GLenum target,GLuint renderbuffer)12157 void GL_APIENTRY GL_BindRenderbufferOES(GLenum target, GLuint renderbuffer)
12158 {
12159 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
12160 Context *context = GetValidGlobalContext();
12161 EVENT(context, GLBindRenderbufferOES, "context = %d, target = %s, renderbuffer = %u",
12162 CID(context), GLenumToString(GLESEnum::RenderbufferTarget, target), renderbuffer);
12163
12164 if (context)
12165 {
12166 RenderbufferID renderbufferPacked = PackParam<RenderbufferID>(renderbuffer);
12167 SCOPED_SHARE_CONTEXT_LOCK(context);
12168 bool isCallValid =
12169 (context->skipValidation() ||
12170 ValidateBindRenderbufferOES(context, angle::EntryPoint::GLBindRenderbufferOES, target,
12171 renderbufferPacked));
12172 if (isCallValid)
12173 {
12174 context->bindRenderbuffer(target, renderbufferPacked);
12175 }
12176 ANGLE_CAPTURE_GL(BindRenderbufferOES, isCallValid, context, target, renderbufferPacked);
12177 }
12178 else
12179 {
12180 GenerateContextLostErrorOnCurrentGlobalContext();
12181 }
12182 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
12183 }
12184
GL_CheckFramebufferStatusOES(GLenum target)12185 GLenum GL_APIENTRY GL_CheckFramebufferStatusOES(GLenum target)
12186 {
12187 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
12188 Context *context = GetValidGlobalContext();
12189 EVENT(context, GLCheckFramebufferStatusOES, "context = %d, target = %s", CID(context),
12190 GLenumToString(GLESEnum::FramebufferTarget, target));
12191
12192 GLenum returnValue;
12193 if (context)
12194 {
12195 SCOPED_SHARE_CONTEXT_LOCK(context);
12196 bool isCallValid = (context->skipValidation() ||
12197 ValidateCheckFramebufferStatusOES(
12198 context, angle::EntryPoint::GLCheckFramebufferStatusOES, target));
12199 if (isCallValid)
12200 {
12201 returnValue = context->checkFramebufferStatus(target);
12202 }
12203 else
12204 {
12205 returnValue =
12206 GetDefaultReturnValue<angle::EntryPoint::GLCheckFramebufferStatusOES, GLenum>();
12207 }
12208 ANGLE_CAPTURE_GL(CheckFramebufferStatusOES, isCallValid, context, target, returnValue);
12209 }
12210 else
12211 {
12212 GenerateContextLostErrorOnCurrentGlobalContext();
12213 returnValue =
12214 GetDefaultReturnValue<angle::EntryPoint::GLCheckFramebufferStatusOES, GLenum>();
12215 }
12216 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
12217 return returnValue;
12218 }
12219
GL_DeleteFramebuffersOES(GLsizei n,const GLuint * framebuffers)12220 void GL_APIENTRY GL_DeleteFramebuffersOES(GLsizei n, const GLuint *framebuffers)
12221 {
12222 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
12223 Context *context = GetValidGlobalContext();
12224 EVENT(context, GLDeleteFramebuffersOES,
12225 "context = %d, n = %d, framebuffers = 0x%016" PRIxPTR "", CID(context), n,
12226 (uintptr_t)framebuffers);
12227
12228 if (context)
12229 {
12230 const FramebufferID *framebuffersPacked = PackParam<const FramebufferID *>(framebuffers);
12231 SCOPED_SHARE_CONTEXT_LOCK(context);
12232 bool isCallValid =
12233 (context->skipValidation() ||
12234 ValidateDeleteFramebuffersOES(context, angle::EntryPoint::GLDeleteFramebuffersOES, n,
12235 framebuffersPacked));
12236 if (isCallValid)
12237 {
12238 context->deleteFramebuffers(n, framebuffersPacked);
12239 }
12240 ANGLE_CAPTURE_GL(DeleteFramebuffersOES, isCallValid, context, n, framebuffersPacked);
12241 }
12242 else
12243 {
12244 GenerateContextLostErrorOnCurrentGlobalContext();
12245 }
12246 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
12247 }
12248
GL_DeleteRenderbuffersOES(GLsizei n,const GLuint * renderbuffers)12249 void GL_APIENTRY GL_DeleteRenderbuffersOES(GLsizei n, const GLuint *renderbuffers)
12250 {
12251 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
12252 Context *context = GetValidGlobalContext();
12253 EVENT(context, GLDeleteRenderbuffersOES,
12254 "context = %d, n = %d, renderbuffers = 0x%016" PRIxPTR "", CID(context), n,
12255 (uintptr_t)renderbuffers);
12256
12257 if (context)
12258 {
12259 const RenderbufferID *renderbuffersPacked =
12260 PackParam<const RenderbufferID *>(renderbuffers);
12261 SCOPED_SHARE_CONTEXT_LOCK(context);
12262 bool isCallValid =
12263 (context->skipValidation() ||
12264 ValidateDeleteRenderbuffersOES(context, angle::EntryPoint::GLDeleteRenderbuffersOES, n,
12265 renderbuffersPacked));
12266 if (isCallValid)
12267 {
12268 context->deleteRenderbuffers(n, renderbuffersPacked);
12269 }
12270 ANGLE_CAPTURE_GL(DeleteRenderbuffersOES, isCallValid, context, n, renderbuffersPacked);
12271 }
12272 else
12273 {
12274 GenerateContextLostErrorOnCurrentGlobalContext();
12275 }
12276 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
12277 }
12278
GL_FramebufferRenderbufferOES(GLenum target,GLenum attachment,GLenum renderbuffertarget,GLuint renderbuffer)12279 void GL_APIENTRY GL_FramebufferRenderbufferOES(GLenum target,
12280 GLenum attachment,
12281 GLenum renderbuffertarget,
12282 GLuint renderbuffer)
12283 {
12284 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
12285 Context *context = GetValidGlobalContext();
12286 EVENT(context, GLFramebufferRenderbufferOES,
12287 "context = %d, target = %s, attachment = %s, renderbuffertarget = %s, renderbuffer = %u",
12288 CID(context), GLenumToString(GLESEnum::FramebufferTarget, target),
12289 GLenumToString(GLESEnum::FramebufferAttachment, attachment),
12290 GLenumToString(GLESEnum::RenderbufferTarget, renderbuffertarget), renderbuffer);
12291
12292 if (context)
12293 {
12294 RenderbufferID renderbufferPacked = PackParam<RenderbufferID>(renderbuffer);
12295 SCOPED_SHARE_CONTEXT_LOCK(context);
12296 bool isCallValid = (context->skipValidation() ||
12297 ValidateFramebufferRenderbufferOES(
12298 context, angle::EntryPoint::GLFramebufferRenderbufferOES, target,
12299 attachment, renderbuffertarget, renderbufferPacked));
12300 if (isCallValid)
12301 {
12302 context->framebufferRenderbuffer(target, attachment, renderbuffertarget,
12303 renderbufferPacked);
12304 }
12305 ANGLE_CAPTURE_GL(FramebufferRenderbufferOES, isCallValid, context, target, attachment,
12306 renderbuffertarget, renderbufferPacked);
12307 }
12308 else
12309 {
12310 GenerateContextLostErrorOnCurrentGlobalContext();
12311 }
12312 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
12313 }
12314
GL_FramebufferTexture2DOES(GLenum target,GLenum attachment,GLenum textarget,GLuint texture,GLint level)12315 void GL_APIENTRY GL_FramebufferTexture2DOES(GLenum target,
12316 GLenum attachment,
12317 GLenum textarget,
12318 GLuint texture,
12319 GLint level)
12320 {
12321 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
12322 Context *context = GetValidGlobalContext();
12323 EVENT(context, GLFramebufferTexture2DOES,
12324 "context = %d, target = %s, attachment = %s, textarget = %s, texture = %u, level = %d",
12325 CID(context), GLenumToString(GLESEnum::FramebufferTarget, target),
12326 GLenumToString(GLESEnum::FramebufferAttachment, attachment),
12327 GLenumToString(GLESEnum::TextureTarget, textarget), texture, level);
12328
12329 if (context)
12330 {
12331 TextureTarget textargetPacked = PackParam<TextureTarget>(textarget);
12332 TextureID texturePacked = PackParam<TextureID>(texture);
12333 SCOPED_SHARE_CONTEXT_LOCK(context);
12334 bool isCallValid = (context->skipValidation() ||
12335 ValidateFramebufferTexture2DOES(
12336 context, angle::EntryPoint::GLFramebufferTexture2DOES, target,
12337 attachment, textargetPacked, texturePacked, level));
12338 if (isCallValid)
12339 {
12340 context->framebufferTexture2D(target, attachment, textargetPacked, texturePacked,
12341 level);
12342 }
12343 ANGLE_CAPTURE_GL(FramebufferTexture2DOES, isCallValid, context, target, attachment,
12344 textargetPacked, texturePacked, level);
12345 }
12346 else
12347 {
12348 GenerateContextLostErrorOnCurrentGlobalContext();
12349 }
12350 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
12351 }
12352
GL_GenFramebuffersOES(GLsizei n,GLuint * framebuffers)12353 void GL_APIENTRY GL_GenFramebuffersOES(GLsizei n, GLuint *framebuffers)
12354 {
12355 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
12356 Context *context = GetValidGlobalContext();
12357 EVENT(context, GLGenFramebuffersOES, "context = %d, n = %d, framebuffers = 0x%016" PRIxPTR "",
12358 CID(context), n, (uintptr_t)framebuffers);
12359
12360 if (context)
12361 {
12362 FramebufferID *framebuffersPacked = PackParam<FramebufferID *>(framebuffers);
12363 SCOPED_SHARE_CONTEXT_LOCK(context);
12364 bool isCallValid =
12365 (context->skipValidation() ||
12366 ValidateGenFramebuffersOES(context, angle::EntryPoint::GLGenFramebuffersOES, n,
12367 framebuffersPacked));
12368 if (isCallValid)
12369 {
12370 context->genFramebuffers(n, framebuffersPacked);
12371 }
12372 ANGLE_CAPTURE_GL(GenFramebuffersOES, isCallValid, context, n, framebuffersPacked);
12373 }
12374 else
12375 {
12376 GenerateContextLostErrorOnCurrentGlobalContext();
12377 }
12378 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
12379 }
12380
GL_GenRenderbuffersOES(GLsizei n,GLuint * renderbuffers)12381 void GL_APIENTRY GL_GenRenderbuffersOES(GLsizei n, GLuint *renderbuffers)
12382 {
12383 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
12384 Context *context = GetValidGlobalContext();
12385 EVENT(context, GLGenRenderbuffersOES, "context = %d, n = %d, renderbuffers = 0x%016" PRIxPTR "",
12386 CID(context), n, (uintptr_t)renderbuffers);
12387
12388 if (context)
12389 {
12390 RenderbufferID *renderbuffersPacked = PackParam<RenderbufferID *>(renderbuffers);
12391 SCOPED_SHARE_CONTEXT_LOCK(context);
12392 bool isCallValid =
12393 (context->skipValidation() ||
12394 ValidateGenRenderbuffersOES(context, angle::EntryPoint::GLGenRenderbuffersOES, n,
12395 renderbuffersPacked));
12396 if (isCallValid)
12397 {
12398 context->genRenderbuffers(n, renderbuffersPacked);
12399 }
12400 ANGLE_CAPTURE_GL(GenRenderbuffersOES, isCallValid, context, n, renderbuffersPacked);
12401 }
12402 else
12403 {
12404 GenerateContextLostErrorOnCurrentGlobalContext();
12405 }
12406 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
12407 }
12408
GL_GenerateMipmapOES(GLenum target)12409 void GL_APIENTRY GL_GenerateMipmapOES(GLenum target)
12410 {
12411 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
12412 Context *context = GetValidGlobalContext();
12413 EVENT(context, GLGenerateMipmapOES, "context = %d, target = %s", CID(context),
12414 GLenumToString(GLESEnum::TextureTarget, target));
12415
12416 if (context)
12417 {
12418 TextureType targetPacked = PackParam<TextureType>(target);
12419 SCOPED_SHARE_CONTEXT_LOCK(context);
12420 bool isCallValid = (context->skipValidation() ||
12421 ValidateGenerateMipmapOES(
12422 context, angle::EntryPoint::GLGenerateMipmapOES, targetPacked));
12423 if (isCallValid)
12424 {
12425 context->generateMipmap(targetPacked);
12426 }
12427 ANGLE_CAPTURE_GL(GenerateMipmapOES, isCallValid, context, targetPacked);
12428 }
12429 else
12430 {
12431 GenerateContextLostErrorOnCurrentGlobalContext();
12432 }
12433 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
12434 }
12435
GL_GetFramebufferAttachmentParameterivOES(GLenum target,GLenum attachment,GLenum pname,GLint * params)12436 void GL_APIENTRY GL_GetFramebufferAttachmentParameterivOES(GLenum target,
12437 GLenum attachment,
12438 GLenum pname,
12439 GLint *params)
12440 {
12441 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
12442 Context *context = GetValidGlobalContext();
12443 EVENT(context, GLGetFramebufferAttachmentParameterivOES,
12444 "context = %d, target = %s, attachment = %s, pname = %s, params = 0x%016" PRIxPTR "",
12445 CID(context), GLenumToString(GLESEnum::FramebufferTarget, target),
12446 GLenumToString(GLESEnum::FramebufferAttachment, attachment),
12447 GLenumToString(GLESEnum::FramebufferAttachmentParameterName, pname), (uintptr_t)params);
12448
12449 if (context)
12450 {
12451 SCOPED_SHARE_CONTEXT_LOCK(context);
12452 bool isCallValid =
12453 (context->skipValidation() ||
12454 ValidateGetFramebufferAttachmentParameterivOES(
12455 context, angle::EntryPoint::GLGetFramebufferAttachmentParameterivOES, target,
12456 attachment, pname, params));
12457 if (isCallValid)
12458 {
12459 context->getFramebufferAttachmentParameteriv(target, attachment, pname, params);
12460 }
12461 ANGLE_CAPTURE_GL(GetFramebufferAttachmentParameterivOES, isCallValid, context, target,
12462 attachment, pname, params);
12463 }
12464 else
12465 {
12466 GenerateContextLostErrorOnCurrentGlobalContext();
12467 }
12468 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
12469 }
12470
GL_GetRenderbufferParameterivOES(GLenum target,GLenum pname,GLint * params)12471 void GL_APIENTRY GL_GetRenderbufferParameterivOES(GLenum target, GLenum pname, GLint *params)
12472 {
12473 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
12474 Context *context = GetValidGlobalContext();
12475 EVENT(context, GLGetRenderbufferParameterivOES,
12476 "context = %d, target = %s, pname = %s, params = 0x%016" PRIxPTR "", CID(context),
12477 GLenumToString(GLESEnum::RenderbufferTarget, target),
12478 GLenumToString(GLESEnum::RenderbufferParameterName, pname), (uintptr_t)params);
12479
12480 if (context)
12481 {
12482 SCOPED_SHARE_CONTEXT_LOCK(context);
12483 bool isCallValid = (context->skipValidation() ||
12484 ValidateGetRenderbufferParameterivOES(
12485 context, angle::EntryPoint::GLGetRenderbufferParameterivOES, target,
12486 pname, params));
12487 if (isCallValid)
12488 {
12489 context->getRenderbufferParameteriv(target, pname, params);
12490 }
12491 ANGLE_CAPTURE_GL(GetRenderbufferParameterivOES, isCallValid, context, target, pname,
12492 params);
12493 }
12494 else
12495 {
12496 GenerateContextLostErrorOnCurrentGlobalContext();
12497 }
12498 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
12499 }
12500
GL_IsFramebufferOES(GLuint framebuffer)12501 GLboolean GL_APIENTRY GL_IsFramebufferOES(GLuint framebuffer)
12502 {
12503 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
12504 Context *context = GetValidGlobalContext();
12505 EVENT(context, GLIsFramebufferOES, "context = %d, framebuffer = %u", CID(context), framebuffer);
12506
12507 GLboolean returnValue;
12508 if (context)
12509 {
12510 FramebufferID framebufferPacked = PackParam<FramebufferID>(framebuffer);
12511 SCOPED_SHARE_CONTEXT_LOCK(context);
12512 bool isCallValid = (context->skipValidation() ||
12513 ValidateIsFramebufferOES(context, angle::EntryPoint::GLIsFramebufferOES,
12514 framebufferPacked));
12515 if (isCallValid)
12516 {
12517 returnValue = context->isFramebuffer(framebufferPacked);
12518 }
12519 else
12520 {
12521 returnValue = GetDefaultReturnValue<angle::EntryPoint::GLIsFramebufferOES, GLboolean>();
12522 }
12523 ANGLE_CAPTURE_GL(IsFramebufferOES, isCallValid, context, framebufferPacked, returnValue);
12524 }
12525 else
12526 {
12527 GenerateContextLostErrorOnCurrentGlobalContext();
12528 returnValue = GetDefaultReturnValue<angle::EntryPoint::GLIsFramebufferOES, GLboolean>();
12529 }
12530 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
12531 return returnValue;
12532 }
12533
GL_IsRenderbufferOES(GLuint renderbuffer)12534 GLboolean GL_APIENTRY GL_IsRenderbufferOES(GLuint renderbuffer)
12535 {
12536 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
12537 Context *context = GetValidGlobalContext();
12538 EVENT(context, GLIsRenderbufferOES, "context = %d, renderbuffer = %u", CID(context),
12539 renderbuffer);
12540
12541 GLboolean returnValue;
12542 if (context)
12543 {
12544 RenderbufferID renderbufferPacked = PackParam<RenderbufferID>(renderbuffer);
12545 SCOPED_SHARE_CONTEXT_LOCK(context);
12546 bool isCallValid =
12547 (context->skipValidation() ||
12548 ValidateIsRenderbufferOES(context, angle::EntryPoint::GLIsRenderbufferOES,
12549 renderbufferPacked));
12550 if (isCallValid)
12551 {
12552 returnValue = context->isRenderbuffer(renderbufferPacked);
12553 }
12554 else
12555 {
12556 returnValue =
12557 GetDefaultReturnValue<angle::EntryPoint::GLIsRenderbufferOES, GLboolean>();
12558 }
12559 ANGLE_CAPTURE_GL(IsRenderbufferOES, isCallValid, context, renderbufferPacked, returnValue);
12560 }
12561 else
12562 {
12563 GenerateContextLostErrorOnCurrentGlobalContext();
12564 returnValue = GetDefaultReturnValue<angle::EntryPoint::GLIsRenderbufferOES, GLboolean>();
12565 }
12566 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
12567 return returnValue;
12568 }
12569
GL_RenderbufferStorageOES(GLenum target,GLenum internalformat,GLsizei width,GLsizei height)12570 void GL_APIENTRY GL_RenderbufferStorageOES(GLenum target,
12571 GLenum internalformat,
12572 GLsizei width,
12573 GLsizei height)
12574 {
12575 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
12576 Context *context = GetValidGlobalContext();
12577 EVENT(context, GLRenderbufferStorageOES,
12578 "context = %d, target = %s, internalformat = %s, width = %d, height = %d", CID(context),
12579 GLenumToString(GLESEnum::RenderbufferTarget, target),
12580 GLenumToString(GLESEnum::InternalFormat, internalformat), width, height);
12581
12582 if (context)
12583 {
12584 SCOPED_SHARE_CONTEXT_LOCK(context);
12585 bool isCallValid =
12586 (context->skipValidation() ||
12587 ValidateRenderbufferStorageOES(context, angle::EntryPoint::GLRenderbufferStorageOES,
12588 target, internalformat, width, height));
12589 if (isCallValid)
12590 {
12591 context->renderbufferStorage(target, internalformat, width, height);
12592 }
12593 ANGLE_CAPTURE_GL(RenderbufferStorageOES, isCallValid, context, target, internalformat,
12594 width, height);
12595 }
12596 else
12597 {
12598 GenerateContextLostErrorOnCurrentGlobalContext();
12599 }
12600 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
12601 }
12602
12603 // GL_OES_geometry_shader
GL_FramebufferTextureOES(GLenum target,GLenum attachment,GLuint texture,GLint level)12604 void GL_APIENTRY GL_FramebufferTextureOES(GLenum target,
12605 GLenum attachment,
12606 GLuint texture,
12607 GLint level)
12608 {
12609 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
12610 Context *context = GetValidGlobalContext();
12611 EVENT(context, GLFramebufferTextureOES,
12612 "context = %d, target = %s, attachment = %s, texture = %u, level = %d", CID(context),
12613 GLenumToString(GLESEnum::FramebufferTarget, target),
12614 GLenumToString(GLESEnum::FramebufferAttachment, attachment), texture, level);
12615
12616 if (context)
12617 {
12618 TextureID texturePacked = PackParam<TextureID>(texture);
12619 SCOPED_SHARE_CONTEXT_LOCK(context);
12620 bool isCallValid =
12621 (context->skipValidation() ||
12622 ValidateFramebufferTextureOES(context, angle::EntryPoint::GLFramebufferTextureOES,
12623 target, attachment, texturePacked, level));
12624 if (isCallValid)
12625 {
12626 context->framebufferTexture(target, attachment, texturePacked, level);
12627 }
12628 ANGLE_CAPTURE_GL(FramebufferTextureOES, isCallValid, context, target, attachment,
12629 texturePacked, level);
12630 }
12631 else
12632 {
12633 GenerateContextLostErrorOnCurrentGlobalContext();
12634 }
12635 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
12636 }
12637
12638 // GL_OES_get_program_binary
GL_GetProgramBinaryOES(GLuint program,GLsizei bufSize,GLsizei * length,GLenum * binaryFormat,void * binary)12639 void GL_APIENTRY GL_GetProgramBinaryOES(GLuint program,
12640 GLsizei bufSize,
12641 GLsizei *length,
12642 GLenum *binaryFormat,
12643 void *binary)
12644 {
12645 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
12646 Context *context = GetValidGlobalContext();
12647 EVENT(context, GLGetProgramBinaryOES,
12648 "context = %d, program = %u, bufSize = %d, length = 0x%016" PRIxPTR
12649 ", binaryFormat = 0x%016" PRIxPTR ", binary = 0x%016" PRIxPTR "",
12650 CID(context), program, bufSize, (uintptr_t)length, (uintptr_t)binaryFormat,
12651 (uintptr_t)binary);
12652
12653 if (context)
12654 {
12655 ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);
12656 SCOPED_SHARE_CONTEXT_LOCK(context);
12657 bool isCallValid =
12658 (context->skipValidation() ||
12659 ValidateGetProgramBinaryOES(context, angle::EntryPoint::GLGetProgramBinaryOES,
12660 programPacked, bufSize, length, binaryFormat, binary));
12661 if (isCallValid)
12662 {
12663 context->getProgramBinary(programPacked, bufSize, length, binaryFormat, binary);
12664 }
12665 ANGLE_CAPTURE_GL(GetProgramBinaryOES, isCallValid, context, programPacked, bufSize, length,
12666 binaryFormat, binary);
12667 }
12668 else
12669 {
12670 GenerateContextLostErrorOnCurrentGlobalContext();
12671 }
12672 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
12673 }
12674
GL_ProgramBinaryOES(GLuint program,GLenum binaryFormat,const void * binary,GLint length)12675 void GL_APIENTRY GL_ProgramBinaryOES(GLuint program,
12676 GLenum binaryFormat,
12677 const void *binary,
12678 GLint length)
12679 {
12680 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
12681 Context *context = GetValidGlobalContext();
12682 EVENT(context, GLProgramBinaryOES,
12683 "context = %d, program = %u, binaryFormat = %s, binary = 0x%016" PRIxPTR ", length = %d",
12684 CID(context), program, GLenumToString(GLESEnum::AllEnums, binaryFormat),
12685 (uintptr_t)binary, length);
12686
12687 if (context)
12688 {
12689 ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);
12690 SCOPED_SHARE_CONTEXT_LOCK(context);
12691 bool isCallValid =
12692 (context->skipValidation() ||
12693 (ValidatePixelLocalStorageInactive(context->getPrivateState(),
12694 context->getMutableErrorSetForValidation(),
12695 angle::EntryPoint::GLProgramBinaryOES) &&
12696 ValidateProgramBinaryOES(context, angle::EntryPoint::GLProgramBinaryOES,
12697 programPacked, binaryFormat, binary, length)));
12698 if (isCallValid)
12699 {
12700 context->programBinary(programPacked, binaryFormat, binary, length);
12701 }
12702 ANGLE_CAPTURE_GL(ProgramBinaryOES, isCallValid, context, programPacked, binaryFormat,
12703 binary, length);
12704 }
12705 else
12706 {
12707 GenerateContextLostErrorOnCurrentGlobalContext();
12708 }
12709 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
12710 }
12711
12712 // GL_OES_gpu_shader5
12713
12714 // GL_OES_mapbuffer
GL_GetBufferPointervOES(GLenum target,GLenum pname,void ** params)12715 void GL_APIENTRY GL_GetBufferPointervOES(GLenum target, GLenum pname, void **params)
12716 {
12717 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
12718 Context *context = GetValidGlobalContext();
12719 EVENT(context, GLGetBufferPointervOES,
12720 "context = %d, target = %s, pname = %s, params = 0x%016" PRIxPTR "", CID(context),
12721 GLenumToString(GLESEnum::BufferTargetARB, target),
12722 GLenumToString(GLESEnum::AllEnums, pname), (uintptr_t)params);
12723
12724 if (context)
12725 {
12726 BufferBinding targetPacked = PackParam<BufferBinding>(target);
12727 SCOPED_SHARE_CONTEXT_LOCK(context);
12728 bool isCallValid =
12729 (context->skipValidation() ||
12730 ValidateGetBufferPointervOES(context, angle::EntryPoint::GLGetBufferPointervOES,
12731 targetPacked, pname, params));
12732 if (isCallValid)
12733 {
12734 context->getBufferPointerv(targetPacked, pname, params);
12735 }
12736 ANGLE_CAPTURE_GL(GetBufferPointervOES, isCallValid, context, targetPacked, pname, params);
12737 }
12738 else
12739 {
12740 GenerateContextLostErrorOnCurrentGlobalContext();
12741 }
12742 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
12743 }
12744
GL_MapBufferOES(GLenum target,GLenum access)12745 void *GL_APIENTRY GL_MapBufferOES(GLenum target, GLenum access)
12746 {
12747 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
12748 Context *context = GetValidGlobalContext();
12749 EVENT(context, GLMapBufferOES, "context = %d, target = %s, access = %s", CID(context),
12750 GLenumToString(GLESEnum::BufferTargetARB, target),
12751 GLenumToString(GLESEnum::BufferAccessARB, access));
12752
12753 void *returnValue;
12754 if (context)
12755 {
12756 BufferBinding targetPacked = PackParam<BufferBinding>(target);
12757 SCOPED_SHARE_CONTEXT_LOCK(context);
12758 bool isCallValid =
12759 (context->skipValidation() ||
12760 (ValidatePixelLocalStorageInactive(context->getPrivateState(),
12761 context->getMutableErrorSetForValidation(),
12762 angle::EntryPoint::GLMapBufferOES) &&
12763 ValidateMapBufferOES(context, angle::EntryPoint::GLMapBufferOES, targetPacked,
12764 access)));
12765 if (isCallValid)
12766 {
12767 returnValue = context->mapBuffer(targetPacked, access);
12768 }
12769 else
12770 {
12771 returnValue = GetDefaultReturnValue<angle::EntryPoint::GLMapBufferOES, void *>();
12772 }
12773 ANGLE_CAPTURE_GL(MapBufferOES, isCallValid, context, targetPacked, access, returnValue);
12774 }
12775 else
12776 {
12777 GenerateContextLostErrorOnCurrentGlobalContext();
12778 returnValue = GetDefaultReturnValue<angle::EntryPoint::GLMapBufferOES, void *>();
12779 }
12780 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
12781 return returnValue;
12782 }
12783
GL_UnmapBufferOES(GLenum target)12784 GLboolean GL_APIENTRY GL_UnmapBufferOES(GLenum target)
12785 {
12786 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
12787 Context *context = GetValidGlobalContext();
12788 EVENT(context, GLUnmapBufferOES, "context = %d, target = %s", CID(context),
12789 GLenumToString(GLESEnum::AllEnums, target));
12790
12791 GLboolean returnValue;
12792 if (context)
12793 {
12794 BufferBinding targetPacked = PackParam<BufferBinding>(target);
12795 SCOPED_SHARE_CONTEXT_LOCK(context);
12796 bool isCallValid =
12797 (context->skipValidation() ||
12798 (ValidatePixelLocalStorageInactive(context->getPrivateState(),
12799 context->getMutableErrorSetForValidation(),
12800 angle::EntryPoint::GLUnmapBufferOES) &&
12801 ValidateUnmapBufferOES(context, angle::EntryPoint::GLUnmapBufferOES, targetPacked)));
12802 if (isCallValid)
12803 {
12804 returnValue = context->unmapBuffer(targetPacked);
12805 }
12806 else
12807 {
12808 returnValue = GetDefaultReturnValue<angle::EntryPoint::GLUnmapBufferOES, GLboolean>();
12809 }
12810 ANGLE_CAPTURE_GL(UnmapBufferOES, isCallValid, context, targetPacked, returnValue);
12811 }
12812 else
12813 {
12814 GenerateContextLostErrorOnCurrentGlobalContext();
12815 returnValue = GetDefaultReturnValue<angle::EntryPoint::GLUnmapBufferOES, GLboolean>();
12816 }
12817 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
12818 return returnValue;
12819 }
12820
12821 // GL_OES_matrix_palette
GL_CurrentPaletteMatrixOES(GLuint matrixpaletteindex)12822 void GL_APIENTRY GL_CurrentPaletteMatrixOES(GLuint matrixpaletteindex)
12823 {
12824 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
12825 Context *context = GetValidGlobalContext();
12826 EVENT(context, GLCurrentPaletteMatrixOES, "context = %d, matrixpaletteindex = %u", CID(context),
12827 matrixpaletteindex);
12828
12829 if (context)
12830 {
12831 SCOPED_SHARE_CONTEXT_LOCK(context);
12832 bool isCallValid =
12833 (context->skipValidation() ||
12834 ValidateCurrentPaletteMatrixOES(context, angle::EntryPoint::GLCurrentPaletteMatrixOES,
12835 matrixpaletteindex));
12836 if (isCallValid)
12837 {
12838 context->currentPaletteMatrix(matrixpaletteindex);
12839 }
12840 ANGLE_CAPTURE_GL(CurrentPaletteMatrixOES, isCallValid, context, matrixpaletteindex);
12841 }
12842 else
12843 {
12844 GenerateContextLostErrorOnCurrentGlobalContext();
12845 }
12846 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
12847 }
12848
GL_LoadPaletteFromModelViewMatrixOES()12849 void GL_APIENTRY GL_LoadPaletteFromModelViewMatrixOES()
12850 {
12851 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
12852 Context *context = GetValidGlobalContext();
12853 EVENT(context, GLLoadPaletteFromModelViewMatrixOES, "context = %d", CID(context));
12854
12855 if (context)
12856 {
12857 SCOPED_SHARE_CONTEXT_LOCK(context);
12858 bool isCallValid = (context->skipValidation() ||
12859 ValidateLoadPaletteFromModelViewMatrixOES(
12860 context, angle::EntryPoint::GLLoadPaletteFromModelViewMatrixOES));
12861 if (isCallValid)
12862 {
12863 context->loadPaletteFromModelViewMatrix();
12864 }
12865 ANGLE_CAPTURE_GL(LoadPaletteFromModelViewMatrixOES, isCallValid, context);
12866 }
12867 else
12868 {
12869 GenerateContextLostErrorOnCurrentGlobalContext();
12870 }
12871 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
12872 }
12873
GL_MatrixIndexPointerOES(GLint size,GLenum type,GLsizei stride,const void * pointer)12874 void GL_APIENTRY GL_MatrixIndexPointerOES(GLint size,
12875 GLenum type,
12876 GLsizei stride,
12877 const void *pointer)
12878 {
12879 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
12880 Context *context = GetValidGlobalContext();
12881 EVENT(context, GLMatrixIndexPointerOES,
12882 "context = %d, size = %d, type = %s, stride = %d, pointer = 0x%016" PRIxPTR "",
12883 CID(context), size, GLenumToString(GLESEnum::AllEnums, type), stride, (uintptr_t)pointer);
12884
12885 if (context)
12886 {
12887 SCOPED_SHARE_CONTEXT_LOCK(context);
12888 bool isCallValid =
12889 (context->skipValidation() ||
12890 ValidateMatrixIndexPointerOES(context, angle::EntryPoint::GLMatrixIndexPointerOES,
12891 size, type, stride, pointer));
12892 if (isCallValid)
12893 {
12894 context->matrixIndexPointer(size, type, stride, pointer);
12895 }
12896 ANGLE_CAPTURE_GL(MatrixIndexPointerOES, isCallValid, context, size, type, stride, pointer);
12897 }
12898 else
12899 {
12900 GenerateContextLostErrorOnCurrentGlobalContext();
12901 }
12902 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
12903 }
12904
GL_WeightPointerOES(GLint size,GLenum type,GLsizei stride,const void * pointer)12905 void GL_APIENTRY GL_WeightPointerOES(GLint size, GLenum type, GLsizei stride, const void *pointer)
12906 {
12907 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
12908 Context *context = GetValidGlobalContext();
12909 EVENT(context, GLWeightPointerOES,
12910 "context = %d, size = %d, type = %s, stride = %d, pointer = 0x%016" PRIxPTR "",
12911 CID(context), size, GLenumToString(GLESEnum::AllEnums, type), stride, (uintptr_t)pointer);
12912
12913 if (context)
12914 {
12915 SCOPED_SHARE_CONTEXT_LOCK(context);
12916 bool isCallValid = (context->skipValidation() ||
12917 ValidateWeightPointerOES(context, angle::EntryPoint::GLWeightPointerOES,
12918 size, type, stride, pointer));
12919 if (isCallValid)
12920 {
12921 context->weightPointer(size, type, stride, pointer);
12922 }
12923 ANGLE_CAPTURE_GL(WeightPointerOES, isCallValid, context, size, type, stride, pointer);
12924 }
12925 else
12926 {
12927 GenerateContextLostErrorOnCurrentGlobalContext();
12928 }
12929 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
12930 }
12931
12932 // GL_OES_packed_depth_stencil
12933
12934 // GL_OES_point_size_array
GL_PointSizePointerOES(GLenum type,GLsizei stride,const void * pointer)12935 void GL_APIENTRY GL_PointSizePointerOES(GLenum type, GLsizei stride, const void *pointer)
12936 {
12937 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
12938 Context *context = GetValidGlobalContext();
12939 EVENT(context, GLPointSizePointerOES,
12940 "context = %d, type = %s, stride = %d, pointer = 0x%016" PRIxPTR "", CID(context),
12941 GLenumToString(GLESEnum::AllEnums, type), stride, (uintptr_t)pointer);
12942
12943 if (context)
12944 {
12945 VertexAttribType typePacked = PackParam<VertexAttribType>(type);
12946 SCOPED_SHARE_CONTEXT_LOCK(context);
12947 bool isCallValid =
12948 (context->skipValidation() ||
12949 ValidatePointSizePointerOES(context, angle::EntryPoint::GLPointSizePointerOES,
12950 typePacked, stride, pointer));
12951 if (isCallValid)
12952 {
12953 context->pointSizePointer(typePacked, stride, pointer);
12954 }
12955 ANGLE_CAPTURE_GL(PointSizePointerOES, isCallValid, context, typePacked, stride, pointer);
12956 }
12957 else
12958 {
12959 GenerateContextLostErrorOnCurrentGlobalContext();
12960 }
12961 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
12962 }
12963
12964 // GL_OES_point_sprite
12965
12966 // GL_OES_primitive_bounding_box
GL_PrimitiveBoundingBoxOES(GLfloat minX,GLfloat minY,GLfloat minZ,GLfloat minW,GLfloat maxX,GLfloat maxY,GLfloat maxZ,GLfloat maxW)12967 void GL_APIENTRY GL_PrimitiveBoundingBoxOES(GLfloat minX,
12968 GLfloat minY,
12969 GLfloat minZ,
12970 GLfloat minW,
12971 GLfloat maxX,
12972 GLfloat maxY,
12973 GLfloat maxZ,
12974 GLfloat maxW)
12975 {
12976 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
12977 Context *context = GetValidGlobalContext();
12978 EVENT(context, GLPrimitiveBoundingBoxOES,
12979 "context = %d, minX = %f, minY = %f, minZ = %f, minW = %f, maxX = %f, maxY = %f, maxZ = "
12980 "%f, maxW = %f",
12981 CID(context), minX, minY, minZ, minW, maxX, maxY, maxZ, maxW);
12982
12983 if (context)
12984 {
12985 bool isCallValid =
12986 (context->skipValidation() ||
12987 (ValidatePixelLocalStorageInactive(context->getPrivateState(),
12988 context->getMutableErrorSetForValidation(),
12989 angle::EntryPoint::GLPrimitiveBoundingBoxOES) &&
12990 ValidatePrimitiveBoundingBoxOES(context->getPrivateState(),
12991 context->getMutableErrorSetForValidation(),
12992 angle::EntryPoint::GLPrimitiveBoundingBoxOES, minX,
12993 minY, minZ, minW, maxX, maxY, maxZ, maxW)));
12994 if (isCallValid)
12995 {
12996 ContextPrivatePrimitiveBoundingBox(context->getMutablePrivateState(),
12997 context->getMutablePrivateStateCache(), minX, minY,
12998 minZ, minW, maxX, maxY, maxZ, maxW);
12999 }
13000 ANGLE_CAPTURE_GL(PrimitiveBoundingBoxOES, isCallValid, context, minX, minY, minZ, minW,
13001 maxX, maxY, maxZ, maxW);
13002 }
13003 else
13004 {
13005 GenerateContextLostErrorOnCurrentGlobalContext();
13006 }
13007 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
13008 }
13009
13010 // GL_OES_query_matrix
GL_QueryMatrixxOES(GLfixed * mantissa,GLint * exponent)13011 GLbitfield GL_APIENTRY GL_QueryMatrixxOES(GLfixed *mantissa, GLint *exponent)
13012 {
13013 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
13014 Context *context = GetValidGlobalContext();
13015 EVENT(context, GLQueryMatrixxOES,
13016 "context = %d, mantissa = 0x%016" PRIxPTR ", exponent = 0x%016" PRIxPTR "", CID(context),
13017 (uintptr_t)mantissa, (uintptr_t)exponent);
13018
13019 GLbitfield returnValue;
13020 if (context)
13021 {
13022 SCOPED_SHARE_CONTEXT_LOCK(context);
13023 bool isCallValid = (context->skipValidation() ||
13024 ValidateQueryMatrixxOES(context, angle::EntryPoint::GLQueryMatrixxOES,
13025 mantissa, exponent));
13026 if (isCallValid)
13027 {
13028 returnValue = context->queryMatrixx(mantissa, exponent);
13029 }
13030 else
13031 {
13032 returnValue = GetDefaultReturnValue<angle::EntryPoint::GLQueryMatrixxOES, GLbitfield>();
13033 }
13034 ANGLE_CAPTURE_GL(QueryMatrixxOES, isCallValid, context, mantissa, exponent, returnValue);
13035 }
13036 else
13037 {
13038 GenerateContextLostErrorOnCurrentGlobalContext();
13039 returnValue = GetDefaultReturnValue<angle::EntryPoint::GLQueryMatrixxOES, GLbitfield>();
13040 }
13041 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
13042 return returnValue;
13043 }
13044
13045 // GL_OES_required_internalformat
13046
13047 // GL_OES_rgb8_rgba8
13048
13049 // GL_OES_sample_shading
GL_MinSampleShadingOES(GLfloat value)13050 void GL_APIENTRY GL_MinSampleShadingOES(GLfloat value)
13051 {
13052 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
13053 Context *context = GetValidGlobalContext();
13054 EVENT(context, GLMinSampleShadingOES, "context = %d, value = %f", CID(context), value);
13055
13056 if (context)
13057 {
13058 bool isCallValid =
13059 (context->skipValidation() ||
13060 (ValidatePixelLocalStorageInactive(context->getPrivateState(),
13061 context->getMutableErrorSetForValidation(),
13062 angle::EntryPoint::GLMinSampleShadingOES) &&
13063 ValidateMinSampleShadingOES(context->getPrivateState(),
13064 context->getMutableErrorSetForValidation(),
13065 angle::EntryPoint::GLMinSampleShadingOES, value)));
13066 if (isCallValid)
13067 {
13068 ContextPrivateMinSampleShading(context->getMutablePrivateState(),
13069 context->getMutablePrivateStateCache(), value);
13070 }
13071 ANGLE_CAPTURE_GL(MinSampleShadingOES, isCallValid, context, value);
13072 }
13073 else
13074 {
13075 GenerateContextLostErrorOnCurrentGlobalContext();
13076 }
13077 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
13078 }
13079
13080 // GL_OES_sample_variables
13081
13082 // GL_OES_shader_image_atomic
13083
13084 // GL_OES_shader_io_blocks
13085
13086 // GL_OES_shader_multisample_interpolation
13087
13088 // GL_OES_standard_derivatives
13089
13090 // GL_OES_surfaceless_context
13091
13092 // GL_OES_tessellation_shader
GL_PatchParameteriOES(GLenum pname,GLint value)13093 void GL_APIENTRY GL_PatchParameteriOES(GLenum pname, GLint value)
13094 {
13095 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
13096 Context *context = GetValidGlobalContext();
13097 EVENT(context, GLPatchParameteriOES, "context = %d, pname = %s, value = %d", CID(context),
13098 GLenumToString(GLESEnum::PatchParameterName, pname), value);
13099
13100 if (context)
13101 {
13102 bool isCallValid =
13103 (context->skipValidation() ||
13104 (ValidatePixelLocalStorageInactive(context->getPrivateState(),
13105 context->getMutableErrorSetForValidation(),
13106 angle::EntryPoint::GLPatchParameteriOES) &&
13107 ValidatePatchParameteriOES(context->getPrivateState(),
13108 context->getMutableErrorSetForValidation(),
13109 angle::EntryPoint::GLPatchParameteriOES, pname, value)));
13110 if (isCallValid)
13111 {
13112 ContextPrivatePatchParameteri(context->getMutablePrivateState(),
13113 context->getMutablePrivateStateCache(), pname, value);
13114 }
13115 ANGLE_CAPTURE_GL(PatchParameteriOES, isCallValid, context, pname, value);
13116 }
13117 else
13118 {
13119 GenerateContextLostErrorOnCurrentGlobalContext();
13120 }
13121 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
13122 }
13123
13124 // GL_OES_texture_3D
GL_CompressedTexImage3DOES(GLenum target,GLint level,GLenum internalformat,GLsizei width,GLsizei height,GLsizei depth,GLint border,GLsizei imageSize,const void * data)13125 void GL_APIENTRY GL_CompressedTexImage3DOES(GLenum target,
13126 GLint level,
13127 GLenum internalformat,
13128 GLsizei width,
13129 GLsizei height,
13130 GLsizei depth,
13131 GLint border,
13132 GLsizei imageSize,
13133 const void *data)
13134 {
13135 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
13136 Context *context = GetValidGlobalContext();
13137 EVENT(context, GLCompressedTexImage3DOES,
13138 "context = %d, target = %s, level = %d, internalformat = %s, width = %d, height = %d, "
13139 "depth = %d, border = %d, imageSize = %d, data = 0x%016" PRIxPTR "",
13140 CID(context), GLenumToString(GLESEnum::TextureTarget, target), level,
13141 GLenumToString(GLESEnum::InternalFormat, internalformat), width, height, depth, border,
13142 imageSize, (uintptr_t)data);
13143
13144 if (context)
13145 {
13146 TextureTarget targetPacked = PackParam<TextureTarget>(target);
13147 SCOPED_SHARE_CONTEXT_LOCK(context);
13148 bool isCallValid =
13149 (context->skipValidation() ||
13150 (ValidatePixelLocalStorageInactive(context->getPrivateState(),
13151 context->getMutableErrorSetForValidation(),
13152 angle::EntryPoint::GLCompressedTexImage3DOES) &&
13153 ValidateCompressedTexImage3DOES(context, angle::EntryPoint::GLCompressedTexImage3DOES,
13154 targetPacked, level, internalformat, width, height,
13155 depth, border, imageSize, data)));
13156 if (isCallValid)
13157 {
13158 context->compressedTexImage3D(targetPacked, level, internalformat, width, height, depth,
13159 border, imageSize, data);
13160 }
13161 ANGLE_CAPTURE_GL(CompressedTexImage3DOES, isCallValid, context, targetPacked, level,
13162 internalformat, width, height, depth, border, imageSize, data);
13163 }
13164 else
13165 {
13166 GenerateContextLostErrorOnCurrentGlobalContext();
13167 }
13168 egl::Display::GetCurrentThreadUnlockedTailCall()->run(nullptr);
13169 }
13170
GL_CompressedTexSubImage3DOES(GLenum target,GLint level,GLint xoffset,GLint yoffset,GLint zoffset,GLsizei width,GLsizei height,GLsizei depth,GLenum format,GLsizei imageSize,const void * data)13171 void GL_APIENTRY GL_CompressedTexSubImage3DOES(GLenum target,
13172 GLint level,
13173 GLint xoffset,
13174 GLint yoffset,
13175 GLint zoffset,
13176 GLsizei width,
13177 GLsizei height,
13178 GLsizei depth,
13179 GLenum format,
13180 GLsizei imageSize,
13181 const void *data)
13182 {
13183 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
13184 Context *context = GetValidGlobalContext();
13185 EVENT(context, GLCompressedTexSubImage3DOES,
13186 "context = %d, target = %s, level = %d, xoffset = %d, yoffset = %d, zoffset = %d, width "
13187 "= %d, height = %d, depth = %d, format = %s, imageSize = %d, data = 0x%016" PRIxPTR "",
13188 CID(context), GLenumToString(GLESEnum::TextureTarget, target), level, xoffset, yoffset,
13189 zoffset, width, height, depth, GLenumToString(GLESEnum::InternalFormat, format),
13190 imageSize, (uintptr_t)data);
13191
13192 if (context)
13193 {
13194 TextureTarget targetPacked = PackParam<TextureTarget>(target);
13195 SCOPED_SHARE_CONTEXT_LOCK(context);
13196 bool isCallValid =
13197 (context->skipValidation() ||
13198 (ValidatePixelLocalStorageInactive(context->getPrivateState(),
13199 context->getMutableErrorSetForValidation(),
13200 angle::EntryPoint::GLCompressedTexSubImage3DOES) &&
13201 ValidateCompressedTexSubImage3DOES(
13202 context, angle::EntryPoint::GLCompressedTexSubImage3DOES, targetPacked, level,
13203 xoffset, yoffset, zoffset, width, height, depth, format, imageSize, data)));
13204 if (isCallValid)
13205 {
13206 context->compressedTexSubImage3D(targetPacked, level, xoffset, yoffset, zoffset, width,
13207 height, depth, format, imageSize, data);
13208 }
13209 ANGLE_CAPTURE_GL(CompressedTexSubImage3DOES, isCallValid, context, targetPacked, level,
13210 xoffset, yoffset, zoffset, width, height, depth, format, imageSize, data);
13211 }
13212 else
13213 {
13214 GenerateContextLostErrorOnCurrentGlobalContext();
13215 }
13216 egl::Display::GetCurrentThreadUnlockedTailCall()->run(nullptr);
13217 }
13218
GL_CopyTexSubImage3DOES(GLenum target,GLint level,GLint xoffset,GLint yoffset,GLint zoffset,GLint x,GLint y,GLsizei width,GLsizei height)13219 void GL_APIENTRY GL_CopyTexSubImage3DOES(GLenum target,
13220 GLint level,
13221 GLint xoffset,
13222 GLint yoffset,
13223 GLint zoffset,
13224 GLint x,
13225 GLint y,
13226 GLsizei width,
13227 GLsizei height)
13228 {
13229 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
13230 Context *context = GetValidGlobalContext();
13231 EVENT(context, GLCopyTexSubImage3DOES,
13232 "context = %d, target = %s, level = %d, xoffset = %d, yoffset = %d, zoffset = %d, x = "
13233 "%d, y = %d, width = %d, height = %d",
13234 CID(context), GLenumToString(GLESEnum::AllEnums, target), level, xoffset, yoffset,
13235 zoffset, x, y, width, height);
13236
13237 if (context)
13238 {
13239 TextureTarget targetPacked = PackParam<TextureTarget>(target);
13240 SCOPED_SHARE_CONTEXT_LOCK(context);
13241 bool isCallValid =
13242 (context->skipValidation() ||
13243 (ValidatePixelLocalStorageInactive(context->getPrivateState(),
13244 context->getMutableErrorSetForValidation(),
13245 angle::EntryPoint::GLCopyTexSubImage3DOES) &&
13246 ValidateCopyTexSubImage3DOES(context, angle::EntryPoint::GLCopyTexSubImage3DOES,
13247 targetPacked, level, xoffset, yoffset, zoffset, x, y,
13248 width, height)));
13249 if (isCallValid)
13250 {
13251 context->copyTexSubImage3D(targetPacked, level, xoffset, yoffset, zoffset, x, y, width,
13252 height);
13253 }
13254 ANGLE_CAPTURE_GL(CopyTexSubImage3DOES, isCallValid, context, targetPacked, level, xoffset,
13255 yoffset, zoffset, x, y, width, height);
13256 }
13257 else
13258 {
13259 GenerateContextLostErrorOnCurrentGlobalContext();
13260 }
13261 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
13262 }
13263
GL_FramebufferTexture3DOES(GLenum target,GLenum attachment,GLenum textarget,GLuint texture,GLint level,GLint zoffset)13264 void GL_APIENTRY GL_FramebufferTexture3DOES(GLenum target,
13265 GLenum attachment,
13266 GLenum textarget,
13267 GLuint texture,
13268 GLint level,
13269 GLint zoffset)
13270 {
13271 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
13272 Context *context = GetValidGlobalContext();
13273 EVENT(context, GLFramebufferTexture3DOES,
13274 "context = %d, target = %s, attachment = %s, textarget = %s, texture = %u, level = %d, "
13275 "zoffset = %d",
13276 CID(context), GLenumToString(GLESEnum::FramebufferTarget, target),
13277 GLenumToString(GLESEnum::FramebufferAttachment, attachment),
13278 GLenumToString(GLESEnum::TextureTarget, textarget), texture, level, zoffset);
13279
13280 if (context)
13281 {
13282 TextureTarget textargetPacked = PackParam<TextureTarget>(textarget);
13283 TextureID texturePacked = PackParam<TextureID>(texture);
13284 SCOPED_SHARE_CONTEXT_LOCK(context);
13285 bool isCallValid = (context->skipValidation() ||
13286 ValidateFramebufferTexture3DOES(
13287 context, angle::EntryPoint::GLFramebufferTexture3DOES, target,
13288 attachment, textargetPacked, texturePacked, level, zoffset));
13289 if (isCallValid)
13290 {
13291 context->framebufferTexture3D(target, attachment, textargetPacked, texturePacked, level,
13292 zoffset);
13293 }
13294 ANGLE_CAPTURE_GL(FramebufferTexture3DOES, isCallValid, context, target, attachment,
13295 textargetPacked, texturePacked, level, zoffset);
13296 }
13297 else
13298 {
13299 GenerateContextLostErrorOnCurrentGlobalContext();
13300 }
13301 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
13302 }
13303
GL_TexImage3DOES(GLenum target,GLint level,GLenum internalformat,GLsizei width,GLsizei height,GLsizei depth,GLint border,GLenum format,GLenum type,const void * pixels)13304 void GL_APIENTRY GL_TexImage3DOES(GLenum target,
13305 GLint level,
13306 GLenum internalformat,
13307 GLsizei width,
13308 GLsizei height,
13309 GLsizei depth,
13310 GLint border,
13311 GLenum format,
13312 GLenum type,
13313 const void *pixels)
13314 {
13315 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
13316 Context *context = GetValidGlobalContext();
13317 EVENT(context, GLTexImage3DOES,
13318 "context = %d, target = %s, level = %d, internalformat = %s, width = %d, height = %d, "
13319 "depth = %d, border = %d, format = %s, type = %s, pixels = 0x%016" PRIxPTR "",
13320 CID(context), GLenumToString(GLESEnum::TextureTarget, target), level,
13321 GLenumToString(GLESEnum::InternalFormat, internalformat), width, height, depth, border,
13322 GLenumToString(GLESEnum::PixelFormat, format), GLenumToString(GLESEnum::PixelType, type),
13323 (uintptr_t)pixels);
13324
13325 if (context)
13326 {
13327 TextureTarget targetPacked = PackParam<TextureTarget>(target);
13328 SCOPED_SHARE_CONTEXT_LOCK(context);
13329 bool isCallValid =
13330 (context->skipValidation() ||
13331 (ValidatePixelLocalStorageInactive(context->getPrivateState(),
13332 context->getMutableErrorSetForValidation(),
13333 angle::EntryPoint::GLTexImage3DOES) &&
13334 ValidateTexImage3DOES(context, angle::EntryPoint::GLTexImage3DOES, targetPacked,
13335 level, internalformat, width, height, depth, border, format,
13336 type, pixels)));
13337 if (isCallValid)
13338 {
13339 context->texImage3D(targetPacked, level, internalformat, width, height, depth, border,
13340 format, type, pixels);
13341 }
13342 ANGLE_CAPTURE_GL(TexImage3DOES, isCallValid, context, targetPacked, level, internalformat,
13343 width, height, depth, border, format, type, pixels);
13344 }
13345 else
13346 {
13347 GenerateContextLostErrorOnCurrentGlobalContext();
13348 }
13349 egl::Display::GetCurrentThreadUnlockedTailCall()->run(nullptr);
13350 }
13351
GL_TexSubImage3DOES(GLenum target,GLint level,GLint xoffset,GLint yoffset,GLint zoffset,GLsizei width,GLsizei height,GLsizei depth,GLenum format,GLenum type,const void * pixels)13352 void GL_APIENTRY GL_TexSubImage3DOES(GLenum target,
13353 GLint level,
13354 GLint xoffset,
13355 GLint yoffset,
13356 GLint zoffset,
13357 GLsizei width,
13358 GLsizei height,
13359 GLsizei depth,
13360 GLenum format,
13361 GLenum type,
13362 const void *pixels)
13363 {
13364 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
13365 Context *context = GetValidGlobalContext();
13366 EVENT(context, GLTexSubImage3DOES,
13367 "context = %d, target = %s, level = %d, xoffset = %d, yoffset = %d, zoffset = %d, width "
13368 "= %d, height = %d, depth = %d, format = %s, type = %s, pixels = 0x%016" PRIxPTR "",
13369 CID(context), GLenumToString(GLESEnum::TextureTarget, target), level, xoffset, yoffset,
13370 zoffset, width, height, depth, GLenumToString(GLESEnum::PixelFormat, format),
13371 GLenumToString(GLESEnum::PixelType, type), (uintptr_t)pixels);
13372
13373 if (context)
13374 {
13375 TextureTarget targetPacked = PackParam<TextureTarget>(target);
13376 SCOPED_SHARE_CONTEXT_LOCK(context);
13377 bool isCallValid =
13378 (context->skipValidation() ||
13379 (ValidatePixelLocalStorageInactive(context->getPrivateState(),
13380 context->getMutableErrorSetForValidation(),
13381 angle::EntryPoint::GLTexSubImage3DOES) &&
13382 ValidateTexSubImage3DOES(context, angle::EntryPoint::GLTexSubImage3DOES, targetPacked,
13383 level, xoffset, yoffset, zoffset, width, height, depth,
13384 format, type, pixels)));
13385 if (isCallValid)
13386 {
13387 context->texSubImage3D(targetPacked, level, xoffset, yoffset, zoffset, width, height,
13388 depth, format, type, pixels);
13389 }
13390 ANGLE_CAPTURE_GL(TexSubImage3DOES, isCallValid, context, targetPacked, level, xoffset,
13391 yoffset, zoffset, width, height, depth, format, type, pixels);
13392 }
13393 else
13394 {
13395 GenerateContextLostErrorOnCurrentGlobalContext();
13396 }
13397 egl::Display::GetCurrentThreadUnlockedTailCall()->run(nullptr);
13398 }
13399
13400 // GL_OES_texture_border_clamp
GL_GetSamplerParameterIivOES(GLuint sampler,GLenum pname,GLint * params)13401 void GL_APIENTRY GL_GetSamplerParameterIivOES(GLuint sampler, GLenum pname, GLint *params)
13402 {
13403 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
13404 Context *context = GetValidGlobalContext();
13405 EVENT(context, GLGetSamplerParameterIivOES,
13406 "context = %d, sampler = %u, pname = %s, params = 0x%016" PRIxPTR "", CID(context),
13407 sampler, GLenumToString(GLESEnum::SamplerParameterI, pname), (uintptr_t)params);
13408
13409 if (context)
13410 {
13411 SamplerID samplerPacked = PackParam<SamplerID>(sampler);
13412 SCOPED_SHARE_CONTEXT_LOCK(context);
13413 bool isCallValid = (context->skipValidation() ||
13414 ValidateGetSamplerParameterIivOES(
13415 context, angle::EntryPoint::GLGetSamplerParameterIivOES,
13416 samplerPacked, pname, params));
13417 if (isCallValid)
13418 {
13419 context->getSamplerParameterIiv(samplerPacked, pname, params);
13420 }
13421 ANGLE_CAPTURE_GL(GetSamplerParameterIivOES, isCallValid, context, samplerPacked, pname,
13422 params);
13423 }
13424 else
13425 {
13426 GenerateContextLostErrorOnCurrentGlobalContext();
13427 }
13428 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
13429 }
13430
GL_GetSamplerParameterIuivOES(GLuint sampler,GLenum pname,GLuint * params)13431 void GL_APIENTRY GL_GetSamplerParameterIuivOES(GLuint sampler, GLenum pname, GLuint *params)
13432 {
13433 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
13434 Context *context = GetValidGlobalContext();
13435 EVENT(context, GLGetSamplerParameterIuivOES,
13436 "context = %d, sampler = %u, pname = %s, params = 0x%016" PRIxPTR "", CID(context),
13437 sampler, GLenumToString(GLESEnum::SamplerParameterI, pname), (uintptr_t)params);
13438
13439 if (context)
13440 {
13441 SamplerID samplerPacked = PackParam<SamplerID>(sampler);
13442 SCOPED_SHARE_CONTEXT_LOCK(context);
13443 bool isCallValid = (context->skipValidation() ||
13444 ValidateGetSamplerParameterIuivOES(
13445 context, angle::EntryPoint::GLGetSamplerParameterIuivOES,
13446 samplerPacked, pname, params));
13447 if (isCallValid)
13448 {
13449 context->getSamplerParameterIuiv(samplerPacked, pname, params);
13450 }
13451 ANGLE_CAPTURE_GL(GetSamplerParameterIuivOES, isCallValid, context, samplerPacked, pname,
13452 params);
13453 }
13454 else
13455 {
13456 GenerateContextLostErrorOnCurrentGlobalContext();
13457 }
13458 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
13459 }
13460
GL_GetTexParameterIivOES(GLenum target,GLenum pname,GLint * params)13461 void GL_APIENTRY GL_GetTexParameterIivOES(GLenum target, GLenum pname, GLint *params)
13462 {
13463 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
13464 Context *context = GetValidGlobalContext();
13465 EVENT(context, GLGetTexParameterIivOES,
13466 "context = %d, target = %s, pname = %s, params = 0x%016" PRIxPTR "", CID(context),
13467 GLenumToString(GLESEnum::TextureTarget, target),
13468 GLenumToString(GLESEnum::GetTextureParameter, pname), (uintptr_t)params);
13469
13470 if (context)
13471 {
13472 TextureType targetPacked = PackParam<TextureType>(target);
13473 SCOPED_SHARE_CONTEXT_LOCK(context);
13474 bool isCallValid =
13475 (context->skipValidation() ||
13476 ValidateGetTexParameterIivOES(context, angle::EntryPoint::GLGetTexParameterIivOES,
13477 targetPacked, pname, params));
13478 if (isCallValid)
13479 {
13480 context->getTexParameterIiv(targetPacked, pname, params);
13481 }
13482 ANGLE_CAPTURE_GL(GetTexParameterIivOES, isCallValid, context, targetPacked, pname, params);
13483 }
13484 else
13485 {
13486 GenerateContextLostErrorOnCurrentGlobalContext();
13487 }
13488 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
13489 }
13490
GL_GetTexParameterIuivOES(GLenum target,GLenum pname,GLuint * params)13491 void GL_APIENTRY GL_GetTexParameterIuivOES(GLenum target, GLenum pname, GLuint *params)
13492 {
13493 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
13494 Context *context = GetValidGlobalContext();
13495 EVENT(context, GLGetTexParameterIuivOES,
13496 "context = %d, target = %s, pname = %s, params = 0x%016" PRIxPTR "", CID(context),
13497 GLenumToString(GLESEnum::TextureTarget, target),
13498 GLenumToString(GLESEnum::GetTextureParameter, pname), (uintptr_t)params);
13499
13500 if (context)
13501 {
13502 TextureType targetPacked = PackParam<TextureType>(target);
13503 SCOPED_SHARE_CONTEXT_LOCK(context);
13504 bool isCallValid =
13505 (context->skipValidation() ||
13506 ValidateGetTexParameterIuivOES(context, angle::EntryPoint::GLGetTexParameterIuivOES,
13507 targetPacked, pname, params));
13508 if (isCallValid)
13509 {
13510 context->getTexParameterIuiv(targetPacked, pname, params);
13511 }
13512 ANGLE_CAPTURE_GL(GetTexParameterIuivOES, isCallValid, context, targetPacked, pname, params);
13513 }
13514 else
13515 {
13516 GenerateContextLostErrorOnCurrentGlobalContext();
13517 }
13518 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
13519 }
13520
GL_SamplerParameterIivOES(GLuint sampler,GLenum pname,const GLint * param)13521 void GL_APIENTRY GL_SamplerParameterIivOES(GLuint sampler, GLenum pname, const GLint *param)
13522 {
13523 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
13524 Context *context = GetValidGlobalContext();
13525 EVENT(context, GLSamplerParameterIivOES,
13526 "context = %d, sampler = %u, pname = %s, param = 0x%016" PRIxPTR "", CID(context),
13527 sampler, GLenumToString(GLESEnum::SamplerParameterI, pname), (uintptr_t)param);
13528
13529 if (context)
13530 {
13531 SamplerID samplerPacked = PackParam<SamplerID>(sampler);
13532 SCOPED_SHARE_CONTEXT_LOCK(context);
13533 bool isCallValid =
13534 (context->skipValidation() ||
13535 ValidateSamplerParameterIivOES(context, angle::EntryPoint::GLSamplerParameterIivOES,
13536 samplerPacked, pname, param));
13537 if (isCallValid)
13538 {
13539 context->samplerParameterIiv(samplerPacked, pname, param);
13540 }
13541 ANGLE_CAPTURE_GL(SamplerParameterIivOES, isCallValid, context, samplerPacked, pname, param);
13542 }
13543 else
13544 {
13545 GenerateContextLostErrorOnCurrentGlobalContext();
13546 }
13547 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
13548 }
13549
GL_SamplerParameterIuivOES(GLuint sampler,GLenum pname,const GLuint * param)13550 void GL_APIENTRY GL_SamplerParameterIuivOES(GLuint sampler, GLenum pname, const GLuint *param)
13551 {
13552 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
13553 Context *context = GetValidGlobalContext();
13554 EVENT(context, GLSamplerParameterIuivOES,
13555 "context = %d, sampler = %u, pname = %s, param = 0x%016" PRIxPTR "", CID(context),
13556 sampler, GLenumToString(GLESEnum::SamplerParameterI, pname), (uintptr_t)param);
13557
13558 if (context)
13559 {
13560 SamplerID samplerPacked = PackParam<SamplerID>(sampler);
13561 SCOPED_SHARE_CONTEXT_LOCK(context);
13562 bool isCallValid =
13563 (context->skipValidation() ||
13564 ValidateSamplerParameterIuivOES(context, angle::EntryPoint::GLSamplerParameterIuivOES,
13565 samplerPacked, pname, param));
13566 if (isCallValid)
13567 {
13568 context->samplerParameterIuiv(samplerPacked, pname, param);
13569 }
13570 ANGLE_CAPTURE_GL(SamplerParameterIuivOES, isCallValid, context, samplerPacked, pname,
13571 param);
13572 }
13573 else
13574 {
13575 GenerateContextLostErrorOnCurrentGlobalContext();
13576 }
13577 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
13578 }
13579
GL_TexParameterIivOES(GLenum target,GLenum pname,const GLint * params)13580 void GL_APIENTRY GL_TexParameterIivOES(GLenum target, GLenum pname, const GLint *params)
13581 {
13582 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
13583 Context *context = GetValidGlobalContext();
13584 EVENT(context, GLTexParameterIivOES,
13585 "context = %d, target = %s, pname = %s, params = 0x%016" PRIxPTR "", CID(context),
13586 GLenumToString(GLESEnum::TextureTarget, target),
13587 GLenumToString(GLESEnum::TextureParameterName, pname), (uintptr_t)params);
13588
13589 if (context)
13590 {
13591 TextureType targetPacked = PackParam<TextureType>(target);
13592 SCOPED_SHARE_CONTEXT_LOCK(context);
13593 bool isCallValid =
13594 (context->skipValidation() ||
13595 ValidateTexParameterIivOES(context, angle::EntryPoint::GLTexParameterIivOES,
13596 targetPacked, pname, params));
13597 if (isCallValid)
13598 {
13599 context->texParameterIiv(targetPacked, pname, params);
13600 }
13601 ANGLE_CAPTURE_GL(TexParameterIivOES, isCallValid, context, targetPacked, pname, params);
13602 }
13603 else
13604 {
13605 GenerateContextLostErrorOnCurrentGlobalContext();
13606 }
13607 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
13608 }
13609
GL_TexParameterIuivOES(GLenum target,GLenum pname,const GLuint * params)13610 void GL_APIENTRY GL_TexParameterIuivOES(GLenum target, GLenum pname, const GLuint *params)
13611 {
13612 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
13613 Context *context = GetValidGlobalContext();
13614 EVENT(context, GLTexParameterIuivOES,
13615 "context = %d, target = %s, pname = %s, params = 0x%016" PRIxPTR "", CID(context),
13616 GLenumToString(GLESEnum::TextureTarget, target),
13617 GLenumToString(GLESEnum::TextureParameterName, pname), (uintptr_t)params);
13618
13619 if (context)
13620 {
13621 TextureType targetPacked = PackParam<TextureType>(target);
13622 SCOPED_SHARE_CONTEXT_LOCK(context);
13623 bool isCallValid =
13624 (context->skipValidation() ||
13625 ValidateTexParameterIuivOES(context, angle::EntryPoint::GLTexParameterIuivOES,
13626 targetPacked, pname, params));
13627 if (isCallValid)
13628 {
13629 context->texParameterIuiv(targetPacked, pname, params);
13630 }
13631 ANGLE_CAPTURE_GL(TexParameterIuivOES, isCallValid, context, targetPacked, pname, params);
13632 }
13633 else
13634 {
13635 GenerateContextLostErrorOnCurrentGlobalContext();
13636 }
13637 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
13638 }
13639
13640 // GL_OES_texture_buffer
GL_TexBufferOES(GLenum target,GLenum internalformat,GLuint buffer)13641 void GL_APIENTRY GL_TexBufferOES(GLenum target, GLenum internalformat, GLuint buffer)
13642 {
13643 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
13644 Context *context = GetValidGlobalContext();
13645 EVENT(context, GLTexBufferOES, "context = %d, target = %s, internalformat = %s, buffer = %u",
13646 CID(context), GLenumToString(GLESEnum::TextureTarget, target),
13647 GLenumToString(GLESEnum::SizedInternalFormat, internalformat), buffer);
13648
13649 if (context)
13650 {
13651 TextureType targetPacked = PackParam<TextureType>(target);
13652 BufferID bufferPacked = PackParam<BufferID>(buffer);
13653 SCOPED_SHARE_CONTEXT_LOCK(context);
13654 bool isCallValid =
13655 (context->skipValidation() ||
13656 (ValidatePixelLocalStorageInactive(context->getPrivateState(),
13657 context->getMutableErrorSetForValidation(),
13658 angle::EntryPoint::GLTexBufferOES) &&
13659 ValidateTexBufferOES(context, angle::EntryPoint::GLTexBufferOES, targetPacked,
13660 internalformat, bufferPacked)));
13661 if (isCallValid)
13662 {
13663 context->texBuffer(targetPacked, internalformat, bufferPacked);
13664 }
13665 ANGLE_CAPTURE_GL(TexBufferOES, isCallValid, context, targetPacked, internalformat,
13666 bufferPacked);
13667 }
13668 else
13669 {
13670 GenerateContextLostErrorOnCurrentGlobalContext();
13671 }
13672 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
13673 }
13674
GL_TexBufferRangeOES(GLenum target,GLenum internalformat,GLuint buffer,GLintptr offset,GLsizeiptr size)13675 void GL_APIENTRY GL_TexBufferRangeOES(GLenum target,
13676 GLenum internalformat,
13677 GLuint buffer,
13678 GLintptr offset,
13679 GLsizeiptr size)
13680 {
13681 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
13682 Context *context = GetValidGlobalContext();
13683 EVENT(context, GLTexBufferRangeOES,
13684 "context = %d, target = %s, internalformat = %s, buffer = %u, offset = %llu, size = %llu",
13685 CID(context), GLenumToString(GLESEnum::TextureTarget, target),
13686 GLenumToString(GLESEnum::SizedInternalFormat, internalformat), buffer,
13687 static_cast<unsigned long long>(offset), static_cast<unsigned long long>(size));
13688
13689 if (context)
13690 {
13691 TextureType targetPacked = PackParam<TextureType>(target);
13692 BufferID bufferPacked = PackParam<BufferID>(buffer);
13693 SCOPED_SHARE_CONTEXT_LOCK(context);
13694 bool isCallValid =
13695 (context->skipValidation() ||
13696 (ValidatePixelLocalStorageInactive(context->getPrivateState(),
13697 context->getMutableErrorSetForValidation(),
13698 angle::EntryPoint::GLTexBufferRangeOES) &&
13699 ValidateTexBufferRangeOES(context, angle::EntryPoint::GLTexBufferRangeOES,
13700 targetPacked, internalformat, bufferPacked, offset, size)));
13701 if (isCallValid)
13702 {
13703 context->texBufferRange(targetPacked, internalformat, bufferPacked, offset, size);
13704 }
13705 ANGLE_CAPTURE_GL(TexBufferRangeOES, isCallValid, context, targetPacked, internalformat,
13706 bufferPacked, offset, size);
13707 }
13708 else
13709 {
13710 GenerateContextLostErrorOnCurrentGlobalContext();
13711 }
13712 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
13713 }
13714
13715 // GL_OES_texture_compression_astc
13716
13717 // GL_OES_texture_cube_map
GL_GetTexGenfvOES(GLenum coord,GLenum pname,GLfloat * params)13718 void GL_APIENTRY GL_GetTexGenfvOES(GLenum coord, GLenum pname, GLfloat *params)
13719 {
13720 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
13721 Context *context = GetValidGlobalContext();
13722 EVENT(context, GLGetTexGenfvOES,
13723 "context = %d, coord = %s, pname = %s, params = 0x%016" PRIxPTR "", CID(context),
13724 GLenumToString(GLESEnum::TextureCoordName, coord),
13725 GLenumToString(GLESEnum::TextureGenParameter, pname), (uintptr_t)params);
13726
13727 if (context)
13728 {
13729 SCOPED_SHARE_CONTEXT_LOCK(context);
13730 bool isCallValid = (context->skipValidation() ||
13731 ValidateGetTexGenfvOES(context, angle::EntryPoint::GLGetTexGenfvOES,
13732 coord, pname, params));
13733 if (isCallValid)
13734 {
13735 context->getTexGenfv(coord, pname, params);
13736 }
13737 ANGLE_CAPTURE_GL(GetTexGenfvOES, isCallValid, context, coord, pname, params);
13738 }
13739 else
13740 {
13741 GenerateContextLostErrorOnCurrentGlobalContext();
13742 }
13743 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
13744 }
13745
GL_GetTexGenivOES(GLenum coord,GLenum pname,GLint * params)13746 void GL_APIENTRY GL_GetTexGenivOES(GLenum coord, GLenum pname, GLint *params)
13747 {
13748 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
13749 Context *context = GetValidGlobalContext();
13750 EVENT(context, GLGetTexGenivOES,
13751 "context = %d, coord = %s, pname = %s, params = 0x%016" PRIxPTR "", CID(context),
13752 GLenumToString(GLESEnum::TextureCoordName, coord),
13753 GLenumToString(GLESEnum::TextureGenParameter, pname), (uintptr_t)params);
13754
13755 if (context)
13756 {
13757 SCOPED_SHARE_CONTEXT_LOCK(context);
13758 bool isCallValid = (context->skipValidation() ||
13759 ValidateGetTexGenivOES(context, angle::EntryPoint::GLGetTexGenivOES,
13760 coord, pname, params));
13761 if (isCallValid)
13762 {
13763 context->getTexGeniv(coord, pname, params);
13764 }
13765 ANGLE_CAPTURE_GL(GetTexGenivOES, isCallValid, context, coord, pname, params);
13766 }
13767 else
13768 {
13769 GenerateContextLostErrorOnCurrentGlobalContext();
13770 }
13771 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
13772 }
13773
GL_GetTexGenxvOES(GLenum coord,GLenum pname,GLfixed * params)13774 void GL_APIENTRY GL_GetTexGenxvOES(GLenum coord, GLenum pname, GLfixed *params)
13775 {
13776 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
13777 Context *context = GetValidGlobalContext();
13778 EVENT(context, GLGetTexGenxvOES,
13779 "context = %d, coord = %s, pname = %s, params = 0x%016" PRIxPTR "", CID(context),
13780 GLenumToString(GLESEnum::TextureCoordName, coord),
13781 GLenumToString(GLESEnum::TextureGenParameter, pname), (uintptr_t)params);
13782
13783 if (context)
13784 {
13785 SCOPED_SHARE_CONTEXT_LOCK(context);
13786 bool isCallValid = (context->skipValidation() ||
13787 ValidateGetTexGenxvOES(context, angle::EntryPoint::GLGetTexGenxvOES,
13788 coord, pname, params));
13789 if (isCallValid)
13790 {
13791 context->getTexGenxv(coord, pname, params);
13792 }
13793 ANGLE_CAPTURE_GL(GetTexGenxvOES, isCallValid, context, coord, pname, params);
13794 }
13795 else
13796 {
13797 GenerateContextLostErrorOnCurrentGlobalContext();
13798 }
13799 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
13800 }
13801
GL_TexGenfOES(GLenum coord,GLenum pname,GLfloat param)13802 void GL_APIENTRY GL_TexGenfOES(GLenum coord, GLenum pname, GLfloat param)
13803 {
13804 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
13805 Context *context = GetValidGlobalContext();
13806 EVENT(context, GLTexGenfOES, "context = %d, coord = %s, pname = %s, param = %f", CID(context),
13807 GLenumToString(GLESEnum::TextureCoordName, coord),
13808 GLenumToString(GLESEnum::TextureGenParameter, pname), param);
13809
13810 if (context)
13811 {
13812 SCOPED_SHARE_CONTEXT_LOCK(context);
13813 bool isCallValid =
13814 (context->skipValidation() ||
13815 ValidateTexGenfOES(context, angle::EntryPoint::GLTexGenfOES, coord, pname, param));
13816 if (isCallValid)
13817 {
13818 context->texGenf(coord, pname, param);
13819 }
13820 ANGLE_CAPTURE_GL(TexGenfOES, isCallValid, context, coord, pname, param);
13821 }
13822 else
13823 {
13824 GenerateContextLostErrorOnCurrentGlobalContext();
13825 }
13826 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
13827 }
13828
GL_TexGenfvOES(GLenum coord,GLenum pname,const GLfloat * params)13829 void GL_APIENTRY GL_TexGenfvOES(GLenum coord, GLenum pname, const GLfloat *params)
13830 {
13831 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
13832 Context *context = GetValidGlobalContext();
13833 EVENT(context, GLTexGenfvOES,
13834 "context = %d, coord = %s, pname = %s, params = 0x%016" PRIxPTR "", CID(context),
13835 GLenumToString(GLESEnum::TextureCoordName, coord),
13836 GLenumToString(GLESEnum::TextureGenParameter, pname), (uintptr_t)params);
13837
13838 if (context)
13839 {
13840 SCOPED_SHARE_CONTEXT_LOCK(context);
13841 bool isCallValid =
13842 (context->skipValidation() ||
13843 ValidateTexGenfvOES(context, angle::EntryPoint::GLTexGenfvOES, coord, pname, params));
13844 if (isCallValid)
13845 {
13846 context->texGenfv(coord, pname, params);
13847 }
13848 ANGLE_CAPTURE_GL(TexGenfvOES, isCallValid, context, coord, pname, params);
13849 }
13850 else
13851 {
13852 GenerateContextLostErrorOnCurrentGlobalContext();
13853 }
13854 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
13855 }
13856
GL_TexGeniOES(GLenum coord,GLenum pname,GLint param)13857 void GL_APIENTRY GL_TexGeniOES(GLenum coord, GLenum pname, GLint param)
13858 {
13859 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
13860 Context *context = GetValidGlobalContext();
13861 EVENT(context, GLTexGeniOES, "context = %d, coord = %s, pname = %s, param = %d", CID(context),
13862 GLenumToString(GLESEnum::TextureCoordName, coord),
13863 GLenumToString(GLESEnum::TextureGenParameter, pname), param);
13864
13865 if (context)
13866 {
13867 SCOPED_SHARE_CONTEXT_LOCK(context);
13868 bool isCallValid =
13869 (context->skipValidation() ||
13870 ValidateTexGeniOES(context, angle::EntryPoint::GLTexGeniOES, coord, pname, param));
13871 if (isCallValid)
13872 {
13873 context->texGeni(coord, pname, param);
13874 }
13875 ANGLE_CAPTURE_GL(TexGeniOES, isCallValid, context, coord, pname, param);
13876 }
13877 else
13878 {
13879 GenerateContextLostErrorOnCurrentGlobalContext();
13880 }
13881 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
13882 }
13883
GL_TexGenivOES(GLenum coord,GLenum pname,const GLint * params)13884 void GL_APIENTRY GL_TexGenivOES(GLenum coord, GLenum pname, const GLint *params)
13885 {
13886 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
13887 Context *context = GetValidGlobalContext();
13888 EVENT(context, GLTexGenivOES,
13889 "context = %d, coord = %s, pname = %s, params = 0x%016" PRIxPTR "", CID(context),
13890 GLenumToString(GLESEnum::TextureCoordName, coord),
13891 GLenumToString(GLESEnum::TextureGenParameter, pname), (uintptr_t)params);
13892
13893 if (context)
13894 {
13895 SCOPED_SHARE_CONTEXT_LOCK(context);
13896 bool isCallValid =
13897 (context->skipValidation() ||
13898 ValidateTexGenivOES(context, angle::EntryPoint::GLTexGenivOES, coord, pname, params));
13899 if (isCallValid)
13900 {
13901 context->texGeniv(coord, pname, params);
13902 }
13903 ANGLE_CAPTURE_GL(TexGenivOES, isCallValid, context, coord, pname, params);
13904 }
13905 else
13906 {
13907 GenerateContextLostErrorOnCurrentGlobalContext();
13908 }
13909 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
13910 }
13911
GL_TexGenxOES(GLenum coord,GLenum pname,GLfixed param)13912 void GL_APIENTRY GL_TexGenxOES(GLenum coord, GLenum pname, GLfixed param)
13913 {
13914 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
13915 Context *context = GetValidGlobalContext();
13916 EVENT(context, GLTexGenxOES, "context = %d, coord = %s, pname = %s, param = 0x%X", CID(context),
13917 GLenumToString(GLESEnum::TextureCoordName, coord),
13918 GLenumToString(GLESEnum::TextureGenParameter, pname), param);
13919
13920 if (context)
13921 {
13922 SCOPED_SHARE_CONTEXT_LOCK(context);
13923 bool isCallValid =
13924 (context->skipValidation() ||
13925 ValidateTexGenxOES(context, angle::EntryPoint::GLTexGenxOES, coord, pname, param));
13926 if (isCallValid)
13927 {
13928 context->texGenx(coord, pname, param);
13929 }
13930 ANGLE_CAPTURE_GL(TexGenxOES, isCallValid, context, coord, pname, param);
13931 }
13932 else
13933 {
13934 GenerateContextLostErrorOnCurrentGlobalContext();
13935 }
13936 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
13937 }
13938
GL_TexGenxvOES(GLenum coord,GLenum pname,const GLfixed * params)13939 void GL_APIENTRY GL_TexGenxvOES(GLenum coord, GLenum pname, const GLfixed *params)
13940 {
13941 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
13942 Context *context = GetValidGlobalContext();
13943 EVENT(context, GLTexGenxvOES,
13944 "context = %d, coord = %s, pname = %s, params = 0x%016" PRIxPTR "", CID(context),
13945 GLenumToString(GLESEnum::TextureCoordName, coord),
13946 GLenumToString(GLESEnum::TextureGenParameter, pname), (uintptr_t)params);
13947
13948 if (context)
13949 {
13950 SCOPED_SHARE_CONTEXT_LOCK(context);
13951 bool isCallValid =
13952 (context->skipValidation() ||
13953 ValidateTexGenxvOES(context, angle::EntryPoint::GLTexGenxvOES, coord, pname, params));
13954 if (isCallValid)
13955 {
13956 context->texGenxv(coord, pname, params);
13957 }
13958 ANGLE_CAPTURE_GL(TexGenxvOES, isCallValid, context, coord, pname, params);
13959 }
13960 else
13961 {
13962 GenerateContextLostErrorOnCurrentGlobalContext();
13963 }
13964 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
13965 }
13966
13967 // GL_OES_texture_cube_map_array
13968
13969 // GL_OES_texture_float
13970
13971 // GL_OES_texture_float_linear
13972
13973 // GL_OES_texture_half_float
13974
13975 // GL_OES_texture_half_float_linear
13976
13977 // GL_OES_texture_mirrored_repeat
13978
13979 // GL_OES_texture_npot
13980
13981 // GL_OES_texture_stencil8
13982
13983 // GL_OES_texture_storage_multisample_2d_array
GL_TexStorage3DMultisampleOES(GLenum target,GLsizei samples,GLenum internalformat,GLsizei width,GLsizei height,GLsizei depth,GLboolean fixedsamplelocations)13984 void GL_APIENTRY GL_TexStorage3DMultisampleOES(GLenum target,
13985 GLsizei samples,
13986 GLenum internalformat,
13987 GLsizei width,
13988 GLsizei height,
13989 GLsizei depth,
13990 GLboolean fixedsamplelocations)
13991 {
13992 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
13993 Context *context = GetValidGlobalContext();
13994 EVENT(context, GLTexStorage3DMultisampleOES,
13995 "context = %d, target = %s, samples = %d, internalformat = %s, width = %d, height = %d, "
13996 "depth = %d, fixedsamplelocations = %s",
13997 CID(context), GLenumToString(GLESEnum::TextureTarget, target), samples,
13998 GLenumToString(GLESEnum::SizedInternalFormat, internalformat), width, height, depth,
13999 GLbooleanToString(fixedsamplelocations));
14000
14001 if (context)
14002 {
14003 TextureType targetPacked = PackParam<TextureType>(target);
14004 SCOPED_SHARE_CONTEXT_LOCK(context);
14005 bool isCallValid =
14006 (context->skipValidation() ||
14007 (ValidatePixelLocalStorageInactive(context->getPrivateState(),
14008 context->getMutableErrorSetForValidation(),
14009 angle::EntryPoint::GLTexStorage3DMultisampleOES) &&
14010 ValidateTexStorage3DMultisampleOES(
14011 context, angle::EntryPoint::GLTexStorage3DMultisampleOES, targetPacked, samples,
14012 internalformat, width, height, depth, fixedsamplelocations)));
14013 if (isCallValid)
14014 {
14015 context->texStorage3DMultisample(targetPacked, samples, internalformat, width, height,
14016 depth, fixedsamplelocations);
14017 }
14018 ANGLE_CAPTURE_GL(TexStorage3DMultisampleOES, isCallValid, context, targetPacked, samples,
14019 internalformat, width, height, depth, fixedsamplelocations);
14020 }
14021 else
14022 {
14023 GenerateContextLostErrorOnCurrentGlobalContext();
14024 }
14025 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
14026 }
14027
14028 // GL_OES_vertex_array_object
GL_BindVertexArrayOES(GLuint array)14029 void GL_APIENTRY GL_BindVertexArrayOES(GLuint array)
14030 {
14031 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
14032 Context *context = GetValidGlobalContext();
14033 EVENT(context, GLBindVertexArrayOES, "context = %d, array = %u", CID(context), array);
14034
14035 if (context)
14036 {
14037 VertexArrayID arrayPacked = PackParam<VertexArrayID>(array);
14038 SCOPED_SHARE_CONTEXT_LOCK(context);
14039 bool isCallValid =
14040 (context->skipValidation() ||
14041 (ValidatePixelLocalStorageInactive(context->getPrivateState(),
14042 context->getMutableErrorSetForValidation(),
14043 angle::EntryPoint::GLBindVertexArrayOES) &&
14044 ValidateBindVertexArrayOES(context, angle::EntryPoint::GLBindVertexArrayOES,
14045 arrayPacked)));
14046 if (isCallValid)
14047 {
14048 context->bindVertexArray(arrayPacked);
14049 }
14050 ANGLE_CAPTURE_GL(BindVertexArrayOES, isCallValid, context, arrayPacked);
14051 }
14052 else
14053 {
14054 GenerateContextLostErrorOnCurrentGlobalContext();
14055 }
14056 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
14057 }
14058
GL_DeleteVertexArraysOES(GLsizei n,const GLuint * arrays)14059 void GL_APIENTRY GL_DeleteVertexArraysOES(GLsizei n, const GLuint *arrays)
14060 {
14061 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
14062 Context *context = GetValidGlobalContext();
14063 EVENT(context, GLDeleteVertexArraysOES, "context = %d, n = %d, arrays = 0x%016" PRIxPTR "",
14064 CID(context), n, (uintptr_t)arrays);
14065
14066 if (context)
14067 {
14068 const VertexArrayID *arraysPacked = PackParam<const VertexArrayID *>(arrays);
14069 SCOPED_SHARE_CONTEXT_LOCK(context);
14070 bool isCallValid =
14071 (context->skipValidation() ||
14072 ValidateDeleteVertexArraysOES(context, angle::EntryPoint::GLDeleteVertexArraysOES, n,
14073 arraysPacked));
14074 if (isCallValid)
14075 {
14076 context->deleteVertexArrays(n, arraysPacked);
14077 }
14078 ANGLE_CAPTURE_GL(DeleteVertexArraysOES, isCallValid, context, n, arraysPacked);
14079 }
14080 else
14081 {
14082 GenerateContextLostErrorOnCurrentGlobalContext();
14083 }
14084 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
14085 }
14086
GL_GenVertexArraysOES(GLsizei n,GLuint * arrays)14087 void GL_APIENTRY GL_GenVertexArraysOES(GLsizei n, GLuint *arrays)
14088 {
14089 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
14090 Context *context = GetValidGlobalContext();
14091 EVENT(context, GLGenVertexArraysOES, "context = %d, n = %d, arrays = 0x%016" PRIxPTR "",
14092 CID(context), n, (uintptr_t)arrays);
14093
14094 if (context)
14095 {
14096 VertexArrayID *arraysPacked = PackParam<VertexArrayID *>(arrays);
14097 SCOPED_SHARE_CONTEXT_LOCK(context);
14098 bool isCallValid = (context->skipValidation() ||
14099 ValidateGenVertexArraysOES(
14100 context, angle::EntryPoint::GLGenVertexArraysOES, n, arraysPacked));
14101 if (isCallValid)
14102 {
14103 context->genVertexArrays(n, arraysPacked);
14104 }
14105 ANGLE_CAPTURE_GL(GenVertexArraysOES, isCallValid, context, n, arraysPacked);
14106 }
14107 else
14108 {
14109 GenerateContextLostErrorOnCurrentGlobalContext();
14110 }
14111 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
14112 }
14113
GL_IsVertexArrayOES(GLuint array)14114 GLboolean GL_APIENTRY GL_IsVertexArrayOES(GLuint array)
14115 {
14116 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
14117 Context *context = GetValidGlobalContext();
14118 EVENT(context, GLIsVertexArrayOES, "context = %d, array = %u", CID(context), array);
14119
14120 GLboolean returnValue;
14121 if (context)
14122 {
14123 VertexArrayID arrayPacked = PackParam<VertexArrayID>(array);
14124 SCOPED_SHARE_CONTEXT_LOCK(context);
14125 bool isCallValid =
14126 (context->skipValidation() ||
14127 ValidateIsVertexArrayOES(context, angle::EntryPoint::GLIsVertexArrayOES, arrayPacked));
14128 if (isCallValid)
14129 {
14130 returnValue = context->isVertexArray(arrayPacked);
14131 }
14132 else
14133 {
14134 returnValue = GetDefaultReturnValue<angle::EntryPoint::GLIsVertexArrayOES, GLboolean>();
14135 }
14136 ANGLE_CAPTURE_GL(IsVertexArrayOES, isCallValid, context, arrayPacked, returnValue);
14137 }
14138 else
14139 {
14140 GenerateContextLostErrorOnCurrentGlobalContext();
14141 returnValue = GetDefaultReturnValue<angle::EntryPoint::GLIsVertexArrayOES, GLboolean>();
14142 }
14143 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
14144 return returnValue;
14145 }
14146
14147 // GL_OES_vertex_half_float
14148
14149 // GL_OES_vertex_type_10_10_10_2
14150
14151 // GL_OVR_multiview
GL_FramebufferTextureMultiviewOVR(GLenum target,GLenum attachment,GLuint texture,GLint level,GLint baseViewIndex,GLsizei numViews)14152 void GL_APIENTRY GL_FramebufferTextureMultiviewOVR(GLenum target,
14153 GLenum attachment,
14154 GLuint texture,
14155 GLint level,
14156 GLint baseViewIndex,
14157 GLsizei numViews)
14158 {
14159 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
14160 Context *context = GetValidGlobalContext();
14161 EVENT(context, GLFramebufferTextureMultiviewOVR,
14162 "context = %d, target = %s, attachment = %s, texture = %u, level = %d, baseViewIndex = "
14163 "%d, numViews = %d",
14164 CID(context), GLenumToString(GLESEnum::FramebufferTarget, target),
14165 GLenumToString(GLESEnum::FramebufferAttachment, attachment), texture, level,
14166 baseViewIndex, numViews);
14167
14168 if (context)
14169 {
14170 TextureID texturePacked = PackParam<TextureID>(texture);
14171 SCOPED_SHARE_CONTEXT_LOCK(context);
14172 bool isCallValid = (context->skipValidation() ||
14173 ValidateFramebufferTextureMultiviewOVR(
14174 context, angle::EntryPoint::GLFramebufferTextureMultiviewOVR,
14175 target, attachment, texturePacked, level, baseViewIndex, numViews));
14176 if (isCallValid)
14177 {
14178 context->framebufferTextureMultiview(target, attachment, texturePacked, level,
14179 baseViewIndex, numViews);
14180 }
14181 ANGLE_CAPTURE_GL(FramebufferTextureMultiviewOVR, isCallValid, context, target, attachment,
14182 texturePacked, level, baseViewIndex, numViews);
14183 }
14184 else
14185 {
14186 GenerateContextLostErrorOnCurrentGlobalContext();
14187 }
14188 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
14189 }
14190
14191 // GL_OVR_multiview2
14192
14193 // GL_QCOM_framebuffer_foveated
GL_FramebufferFoveationConfigQCOM(GLuint framebuffer,GLuint numLayers,GLuint focalPointsPerLayer,GLuint requestedFeatures,GLuint * providedFeatures)14194 void GL_APIENTRY GL_FramebufferFoveationConfigQCOM(GLuint framebuffer,
14195 GLuint numLayers,
14196 GLuint focalPointsPerLayer,
14197 GLuint requestedFeatures,
14198 GLuint *providedFeatures)
14199 {
14200 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
14201 Context *context = GetValidGlobalContext();
14202 EVENT(context, GLFramebufferFoveationConfigQCOM,
14203 "context = %d, framebuffer = %u, numLayers = %u, focalPointsPerLayer = %u, "
14204 "requestedFeatures = %u, providedFeatures = 0x%016" PRIxPTR "",
14205 CID(context), framebuffer, numLayers, focalPointsPerLayer, requestedFeatures,
14206 (uintptr_t)providedFeatures);
14207
14208 if (context)
14209 {
14210 FramebufferID framebufferPacked = PackParam<FramebufferID>(framebuffer);
14211 SCOPED_SHARE_CONTEXT_LOCK(context);
14212 bool isCallValid =
14213 (context->skipValidation() ||
14214 (ValidatePixelLocalStorageInactive(
14215 context->getPrivateState(), context->getMutableErrorSetForValidation(),
14216 angle::EntryPoint::GLFramebufferFoveationConfigQCOM) &&
14217 ValidateFramebufferFoveationConfigQCOM(
14218 context, angle::EntryPoint::GLFramebufferFoveationConfigQCOM, framebufferPacked,
14219 numLayers, focalPointsPerLayer, requestedFeatures, providedFeatures)));
14220 if (isCallValid)
14221 {
14222 context->framebufferFoveationConfig(framebufferPacked, numLayers, focalPointsPerLayer,
14223 requestedFeatures, providedFeatures);
14224 }
14225 ANGLE_CAPTURE_GL(FramebufferFoveationConfigQCOM, isCallValid, context, framebufferPacked,
14226 numLayers, focalPointsPerLayer, requestedFeatures, providedFeatures);
14227 }
14228 else
14229 {
14230 GenerateContextLostErrorOnCurrentGlobalContext();
14231 }
14232 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
14233 }
14234
GL_FramebufferFoveationParametersQCOM(GLuint framebuffer,GLuint layer,GLuint focalPoint,GLfloat focalX,GLfloat focalY,GLfloat gainX,GLfloat gainY,GLfloat foveaArea)14235 void GL_APIENTRY GL_FramebufferFoveationParametersQCOM(GLuint framebuffer,
14236 GLuint layer,
14237 GLuint focalPoint,
14238 GLfloat focalX,
14239 GLfloat focalY,
14240 GLfloat gainX,
14241 GLfloat gainY,
14242 GLfloat foveaArea)
14243 {
14244 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
14245 Context *context = GetValidGlobalContext();
14246 EVENT(context, GLFramebufferFoveationParametersQCOM,
14247 "context = %d, framebuffer = %u, layer = %u, focalPoint = %u, focalX = %f, focalY = %f, "
14248 "gainX = %f, gainY = %f, foveaArea = %f",
14249 CID(context), framebuffer, layer, focalPoint, focalX, focalY, gainX, gainY, foveaArea);
14250
14251 if (context)
14252 {
14253 FramebufferID framebufferPacked = PackParam<FramebufferID>(framebuffer);
14254 SCOPED_SHARE_CONTEXT_LOCK(context);
14255 bool isCallValid =
14256 (context->skipValidation() ||
14257 (ValidatePixelLocalStorageInactive(
14258 context->getPrivateState(), context->getMutableErrorSetForValidation(),
14259 angle::EntryPoint::GLFramebufferFoveationParametersQCOM) &&
14260 ValidateFramebufferFoveationParametersQCOM(
14261 context, angle::EntryPoint::GLFramebufferFoveationParametersQCOM,
14262 framebufferPacked, layer, focalPoint, focalX, focalY, gainX, gainY, foveaArea)));
14263 if (isCallValid)
14264 {
14265 context->framebufferFoveationParameters(framebufferPacked, layer, focalPoint, focalX,
14266 focalY, gainX, gainY, foveaArea);
14267 }
14268 ANGLE_CAPTURE_GL(FramebufferFoveationParametersQCOM, isCallValid, context,
14269 framebufferPacked, layer, focalPoint, focalX, focalY, gainX, gainY,
14270 foveaArea);
14271 }
14272 else
14273 {
14274 GenerateContextLostErrorOnCurrentGlobalContext();
14275 }
14276 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
14277 }
14278
14279 // GL_QCOM_render_shared_exponent
14280
14281 // GL_QCOM_shading_rate
GL_ShadingRateQCOM(GLenum rate)14282 void GL_APIENTRY GL_ShadingRateQCOM(GLenum rate)
14283 {
14284 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
14285 Context *context = GetValidGlobalContext();
14286 EVENT(context, GLShadingRateQCOM, "context = %d, rate = %s", CID(context),
14287 GLenumToString(GLESEnum::ShadingRateQCOM, rate));
14288
14289 if (context)
14290 {
14291 bool isCallValid =
14292 (context->skipValidation() ||
14293 (ValidatePixelLocalStorageInactive(context->getPrivateState(),
14294 context->getMutableErrorSetForValidation(),
14295 angle::EntryPoint::GLShadingRateQCOM) &&
14296 ValidateShadingRateQCOM(context->getPrivateState(),
14297 context->getMutableErrorSetForValidation(),
14298 angle::EntryPoint::GLShadingRateQCOM, rate)));
14299 if (isCallValid)
14300 {
14301 ContextPrivateShadingRate(context->getMutablePrivateState(),
14302 context->getMutablePrivateStateCache(), rate);
14303 }
14304 ANGLE_CAPTURE_GL(ShadingRateQCOM, isCallValid, context, rate);
14305 }
14306 else
14307 {
14308 GenerateContextLostErrorOnCurrentGlobalContext();
14309 }
14310 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
14311 }
14312
14313 // GL_QCOM_texture_foveated
GL_TextureFoveationParametersQCOM(GLuint texture,GLuint layer,GLuint focalPoint,GLfloat focalX,GLfloat focalY,GLfloat gainX,GLfloat gainY,GLfloat foveaArea)14314 void GL_APIENTRY GL_TextureFoveationParametersQCOM(GLuint texture,
14315 GLuint layer,
14316 GLuint focalPoint,
14317 GLfloat focalX,
14318 GLfloat focalY,
14319 GLfloat gainX,
14320 GLfloat gainY,
14321 GLfloat foveaArea)
14322 {
14323 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
14324 Context *context = GetValidGlobalContext();
14325 EVENT(context, GLTextureFoveationParametersQCOM,
14326 "context = %d, texture = %u, layer = %u, focalPoint = %u, focalX = %f, focalY = %f, "
14327 "gainX = %f, gainY = %f, foveaArea = %f",
14328 CID(context), texture, layer, focalPoint, focalX, focalY, gainX, gainY, foveaArea);
14329
14330 if (context)
14331 {
14332 TextureID texturePacked = PackParam<TextureID>(texture);
14333 SCOPED_SHARE_CONTEXT_LOCK(context);
14334 bool isCallValid =
14335 (context->skipValidation() ||
14336 (ValidatePixelLocalStorageInactive(
14337 context->getPrivateState(), context->getMutableErrorSetForValidation(),
14338 angle::EntryPoint::GLTextureFoveationParametersQCOM) &&
14339 ValidateTextureFoveationParametersQCOM(
14340 context, angle::EntryPoint::GLTextureFoveationParametersQCOM, texturePacked,
14341 layer, focalPoint, focalX, focalY, gainX, gainY, foveaArea)));
14342 if (isCallValid)
14343 {
14344 context->textureFoveationParameters(texturePacked, layer, focalPoint, focalX, focalY,
14345 gainX, gainY, foveaArea);
14346 }
14347 ANGLE_CAPTURE_GL(TextureFoveationParametersQCOM, isCallValid, context, texturePacked, layer,
14348 focalPoint, focalX, focalY, gainX, gainY, foveaArea);
14349 }
14350 else
14351 {
14352 GenerateContextLostErrorOnCurrentGlobalContext();
14353 }
14354 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
14355 }
14356
14357 // GL_QCOM_tiled_rendering
GL_EndTilingQCOM(GLbitfield preserveMask)14358 void GL_APIENTRY GL_EndTilingQCOM(GLbitfield preserveMask)
14359 {
14360 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
14361 Context *context = GetValidGlobalContext();
14362 EVENT(context, GLEndTilingQCOM, "context = %d, preserveMask = %s", CID(context),
14363 GLbitfieldToString(GLESEnum::BufferBitQCOM, preserveMask).c_str());
14364
14365 if (context)
14366 {
14367 SCOPED_SHARE_CONTEXT_LOCK(context);
14368 bool isCallValid =
14369 (context->skipValidation() ||
14370 (ValidatePixelLocalStorageInactive(context->getPrivateState(),
14371 context->getMutableErrorSetForValidation(),
14372 angle::EntryPoint::GLEndTilingQCOM) &&
14373 ValidateEndTilingQCOM(context, angle::EntryPoint::GLEndTilingQCOM, preserveMask)));
14374 if (isCallValid)
14375 {
14376 context->endTiling(preserveMask);
14377 }
14378 ANGLE_CAPTURE_GL(EndTilingQCOM, isCallValid, context, preserveMask);
14379 }
14380 else
14381 {
14382 GenerateContextLostErrorOnCurrentGlobalContext();
14383 }
14384 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
14385 }
14386
14387 void GL_APIENTRY
GL_StartTilingQCOM(GLuint x,GLuint y,GLuint width,GLuint height,GLbitfield preserveMask)14388 GL_StartTilingQCOM(GLuint x, GLuint y, GLuint width, GLuint height, GLbitfield preserveMask)
14389 {
14390 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
14391 Context *context = GetValidGlobalContext();
14392 EVENT(context, GLStartTilingQCOM,
14393 "context = %d, x = %u, y = %u, width = %u, height = %u, preserveMask = %s", CID(context),
14394 x, y, width, height, GLbitfieldToString(GLESEnum::BufferBitQCOM, preserveMask).c_str());
14395
14396 if (context)
14397 {
14398 SCOPED_SHARE_CONTEXT_LOCK(context);
14399 bool isCallValid =
14400 (context->skipValidation() ||
14401 (ValidatePixelLocalStorageInactive(context->getPrivateState(),
14402 context->getMutableErrorSetForValidation(),
14403 angle::EntryPoint::GLStartTilingQCOM) &&
14404 ValidateStartTilingQCOM(context, angle::EntryPoint::GLStartTilingQCOM, x, y, width,
14405 height, preserveMask)));
14406 if (isCallValid)
14407 {
14408 context->startTiling(x, y, width, height, preserveMask);
14409 }
14410 ANGLE_CAPTURE_GL(StartTilingQCOM, isCallValid, context, x, y, width, height, preserveMask);
14411 }
14412 else
14413 {
14414 GenerateContextLostErrorOnCurrentGlobalContext();
14415 }
14416 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
14417 }
14418
14419 } // extern "C"
14420