1 // GENERATED FILE - DO NOT EDIT.
2 // Generated by generate_entry_points.py using data from gl.xml.
3 //
4 // Copyright 2020 The ANGLE Project Authors. All rights reserved.
5 // Use of this source code is governed by a BSD-style license that can be
6 // found in the LICENSE file.
7 //
8 // entry_points_gles_3_1_autogen.cpp:
9 // Defines the GLES 3.1 entry points.
10
11 #include "libGLESv2/entry_points_gles_3_1_autogen.h"
12
13 #include "common/entry_points_enum_autogen.h"
14 #include "common/gl_enum_utils.h"
15 #include "libANGLE/Context.h"
16 #include "libANGLE/Context.inl.h"
17 #include "libANGLE/capture/capture_gles_3_1_autogen.h"
18 #include "libANGLE/context_private_call_autogen.h"
19 #include "libANGLE/entry_points_utils.h"
20 #include "libANGLE/validationES31.h"
21 #include "libGLESv2/global_state.h"
22
23 using namespace gl;
24
25 extern "C" {
GL_ActiveShaderProgram(GLuint pipeline,GLuint program)26 void GL_APIENTRY GL_ActiveShaderProgram(GLuint pipeline, GLuint program)
27 {
28 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
29 Context *context = GetValidGlobalContext();
30 EVENT(context, GLActiveShaderProgram, "context = %d, pipeline = %u, program = %u", CID(context),
31 pipeline, program);
32
33 if (context)
34 {
35 ProgramPipelineID pipelinePacked = PackParam<ProgramPipelineID>(pipeline);
36 ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);
37 SCOPED_SHARE_CONTEXT_LOCK(context);
38 bool isCallValid =
39 (context->skipValidation() ||
40 (ValidatePixelLocalStorageInactive(context->getPrivateState(),
41 context->getMutableErrorSetForValidation(),
42 angle::EntryPoint::GLActiveShaderProgram) &&
43 ValidateActiveShaderProgram(context, angle::EntryPoint::GLActiveShaderProgram,
44 pipelinePacked, programPacked)));
45 if (isCallValid)
46 {
47 context->activeShaderProgram(pipelinePacked, programPacked);
48 }
49 ANGLE_CAPTURE_GL(ActiveShaderProgram, isCallValid, context, pipelinePacked, programPacked);
50 }
51 else
52 {
53 GenerateContextLostErrorOnCurrentGlobalContext();
54 }
55 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
56 }
57
GL_BindImageTexture(GLuint unit,GLuint texture,GLint level,GLboolean layered,GLint layer,GLenum access,GLenum format)58 void GL_APIENTRY GL_BindImageTexture(GLuint unit,
59 GLuint texture,
60 GLint level,
61 GLboolean layered,
62 GLint layer,
63 GLenum access,
64 GLenum format)
65 {
66 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
67 Context *context = GetValidGlobalContext();
68 EVENT(context, GLBindImageTexture,
69 "context = %d, unit = %u, texture = %u, level = %d, layered = %s, layer = %d, access = "
70 "%s, format = %s",
71 CID(context), unit, texture, level, GLbooleanToString(layered), layer,
72 GLenumToString(GLESEnum::BufferAccessARB, access),
73 GLenumToString(GLESEnum::InternalFormat, format));
74
75 if (context)
76 {
77 TextureID texturePacked = PackParam<TextureID>(texture);
78 SCOPED_SHARE_CONTEXT_LOCK(context);
79 bool isCallValid =
80 (context->skipValidation() ||
81 (ValidatePixelLocalStorageInactive(context->getPrivateState(),
82 context->getMutableErrorSetForValidation(),
83 angle::EntryPoint::GLBindImageTexture) &&
84 ValidateBindImageTexture(context, angle::EntryPoint::GLBindImageTexture, unit,
85 texturePacked, level, layered, layer, access, format)));
86 if (isCallValid)
87 {
88 context->bindImageTexture(unit, texturePacked, level, layered, layer, access, format);
89 }
90 ANGLE_CAPTURE_GL(BindImageTexture, isCallValid, context, unit, texturePacked, level,
91 layered, layer, access, format);
92 }
93 else
94 {
95 GenerateContextLostErrorOnCurrentGlobalContext();
96 }
97 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
98 }
99
GL_BindProgramPipeline(GLuint pipeline)100 void GL_APIENTRY GL_BindProgramPipeline(GLuint pipeline)
101 {
102 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
103 Context *context = GetValidGlobalContext();
104 EVENT(context, GLBindProgramPipeline, "context = %d, pipeline = %u", CID(context), pipeline);
105
106 if (context)
107 {
108 ProgramPipelineID pipelinePacked = PackParam<ProgramPipelineID>(pipeline);
109 SCOPED_SHARE_CONTEXT_LOCK(context);
110 bool isCallValid =
111 (context->skipValidation() ||
112 (ValidatePixelLocalStorageInactive(context->getPrivateState(),
113 context->getMutableErrorSetForValidation(),
114 angle::EntryPoint::GLBindProgramPipeline) &&
115 ValidateBindProgramPipeline(context, angle::EntryPoint::GLBindProgramPipeline,
116 pipelinePacked)));
117 if (isCallValid)
118 {
119 context->bindProgramPipeline(pipelinePacked);
120 }
121 ANGLE_CAPTURE_GL(BindProgramPipeline, isCallValid, context, pipelinePacked);
122 }
123 else
124 {
125 GenerateContextLostErrorOnCurrentGlobalContext();
126 }
127 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
128 }
129
GL_BindVertexBuffer(GLuint bindingindex,GLuint buffer,GLintptr offset,GLsizei stride)130 void GL_APIENTRY GL_BindVertexBuffer(GLuint bindingindex,
131 GLuint buffer,
132 GLintptr offset,
133 GLsizei stride)
134 {
135 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
136 Context *context = GetValidGlobalContext();
137 EVENT(context, GLBindVertexBuffer,
138 "context = %d, bindingindex = %u, buffer = %u, offset = %llu, stride = %d", CID(context),
139 bindingindex, buffer, static_cast<unsigned long long>(offset), stride);
140
141 if (context)
142 {
143 BufferID bufferPacked = PackParam<BufferID>(buffer);
144 SCOPED_SHARE_CONTEXT_LOCK(context);
145 bool isCallValid =
146 (context->skipValidation() ||
147 (ValidatePixelLocalStorageInactive(context->getPrivateState(),
148 context->getMutableErrorSetForValidation(),
149 angle::EntryPoint::GLBindVertexBuffer) &&
150 ValidateBindVertexBuffer(context, angle::EntryPoint::GLBindVertexBuffer, bindingindex,
151 bufferPacked, offset, stride)));
152 if (isCallValid)
153 {
154 context->bindVertexBuffer(bindingindex, bufferPacked, offset, stride);
155 }
156 ANGLE_CAPTURE_GL(BindVertexBuffer, isCallValid, context, bindingindex, bufferPacked, offset,
157 stride);
158 }
159 else
160 {
161 GenerateContextLostErrorOnCurrentGlobalContext();
162 }
163 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
164 }
165
GL_CreateShaderProgramv(GLenum type,GLsizei count,const GLchar * const * strings)166 GLuint GL_APIENTRY GL_CreateShaderProgramv(GLenum type, GLsizei count, const GLchar *const *strings)
167 {
168 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
169 Context *context = GetValidGlobalContext();
170 EVENT(context, GLCreateShaderProgramv,
171 "context = %d, type = %s, count = %d, strings = 0x%016" PRIxPTR "", CID(context),
172 GLenumToString(GLESEnum::ShaderType, type), count, (uintptr_t)strings);
173
174 GLuint returnValue;
175 if (context)
176 {
177 ShaderType typePacked = PackParam<ShaderType>(type);
178 SCOPED_SHARE_CONTEXT_LOCK(context);
179 bool isCallValid =
180 (context->skipValidation() ||
181 (ValidatePixelLocalStorageInactive(context->getPrivateState(),
182 context->getMutableErrorSetForValidation(),
183 angle::EntryPoint::GLCreateShaderProgramv) &&
184 ValidateCreateShaderProgramv(context, angle::EntryPoint::GLCreateShaderProgramv,
185 typePacked, count, strings)));
186 if (isCallValid)
187 {
188 returnValue = context->createShaderProgramv(typePacked, count, strings);
189 }
190 else
191 {
192 returnValue =
193 GetDefaultReturnValue<angle::EntryPoint::GLCreateShaderProgramv, GLuint>();
194 }
195 ANGLE_CAPTURE_GL(CreateShaderProgramv, isCallValid, context, typePacked, count, strings,
196 returnValue);
197 }
198 else
199 {
200 GenerateContextLostErrorOnCurrentGlobalContext();
201 returnValue = GetDefaultReturnValue<angle::EntryPoint::GLCreateShaderProgramv, GLuint>();
202 }
203 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
204 return returnValue;
205 }
206
GL_DeleteProgramPipelines(GLsizei n,const GLuint * pipelines)207 void GL_APIENTRY GL_DeleteProgramPipelines(GLsizei n, const GLuint *pipelines)
208 {
209 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
210 Context *context = GetValidGlobalContext();
211 EVENT(context, GLDeleteProgramPipelines, "context = %d, n = %d, pipelines = 0x%016" PRIxPTR "",
212 CID(context), n, (uintptr_t)pipelines);
213
214 if (context)
215 {
216 const ProgramPipelineID *pipelinesPacked = PackParam<const ProgramPipelineID *>(pipelines);
217 SCOPED_SHARE_CONTEXT_LOCK(context);
218 bool isCallValid =
219 (context->skipValidation() ||
220 ValidateDeleteProgramPipelines(context, angle::EntryPoint::GLDeleteProgramPipelines, n,
221 pipelinesPacked));
222 if (isCallValid)
223 {
224 context->deleteProgramPipelines(n, pipelinesPacked);
225 }
226 ANGLE_CAPTURE_GL(DeleteProgramPipelines, isCallValid, context, n, pipelinesPacked);
227 }
228 else
229 {
230 GenerateContextLostErrorOnCurrentGlobalContext();
231 }
232 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
233 }
234
GL_DispatchCompute(GLuint num_groups_x,GLuint num_groups_y,GLuint num_groups_z)235 void GL_APIENTRY GL_DispatchCompute(GLuint num_groups_x, GLuint num_groups_y, GLuint num_groups_z)
236 {
237 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
238 Context *context = GetValidGlobalContext();
239 EVENT(context, GLDispatchCompute,
240 "context = %d, num_groups_x = %u, num_groups_y = %u, num_groups_z = %u", CID(context),
241 num_groups_x, num_groups_y, num_groups_z);
242
243 if (context)
244 {
245 SCOPED_SHARE_CONTEXT_LOCK(context);
246 bool isCallValid =
247 (context->skipValidation() ||
248 (ValidatePixelLocalStorageInactive(context->getPrivateState(),
249 context->getMutableErrorSetForValidation(),
250 angle::EntryPoint::GLDispatchCompute) &&
251 ValidateDispatchCompute(context, angle::EntryPoint::GLDispatchCompute, num_groups_x,
252 num_groups_y, num_groups_z)));
253 if (isCallValid)
254 {
255 context->dispatchCompute(num_groups_x, num_groups_y, num_groups_z);
256 }
257 ANGLE_CAPTURE_GL(DispatchCompute, isCallValid, context, num_groups_x, num_groups_y,
258 num_groups_z);
259 }
260 else
261 {
262 GenerateContextLostErrorOnCurrentGlobalContext();
263 }
264 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
265 }
266
GL_DispatchComputeIndirect(GLintptr indirect)267 void GL_APIENTRY GL_DispatchComputeIndirect(GLintptr indirect)
268 {
269 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
270 Context *context = GetValidGlobalContext();
271 EVENT(context, GLDispatchComputeIndirect, "context = %d, indirect = %llu", CID(context),
272 static_cast<unsigned long long>(indirect));
273
274 if (context)
275 {
276 SCOPED_SHARE_CONTEXT_LOCK(context);
277 bool isCallValid = (context->skipValidation() ||
278 ValidateDispatchComputeIndirect(
279 context, angle::EntryPoint::GLDispatchComputeIndirect, indirect));
280 if (isCallValid)
281 {
282 context->dispatchComputeIndirect(indirect);
283 }
284 ANGLE_CAPTURE_GL(DispatchComputeIndirect, isCallValid, context, indirect);
285 }
286 else
287 {
288 GenerateContextLostErrorOnCurrentGlobalContext();
289 }
290 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
291 }
292
GL_DrawArraysIndirect(GLenum mode,const void * indirect)293 void GL_APIENTRY GL_DrawArraysIndirect(GLenum mode, const void *indirect)
294 {
295 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
296 Context *context = GetValidGlobalContext();
297 EVENT(context, GLDrawArraysIndirect, "context = %d, mode = %s, indirect = 0x%016" PRIxPTR "",
298 CID(context), GLenumToString(GLESEnum::PrimitiveType, mode), (uintptr_t)indirect);
299
300 if (context)
301 {
302 PrimitiveMode modePacked = PackParam<PrimitiveMode>(mode);
303 SCOPED_SHARE_CONTEXT_LOCK(context);
304 bool isCallValid =
305 (context->skipValidation() ||
306 ValidateDrawArraysIndirect(context, angle::EntryPoint::GLDrawArraysIndirect,
307 modePacked, indirect));
308 if (isCallValid)
309 {
310 context->drawArraysIndirect(modePacked, indirect);
311 }
312 ANGLE_CAPTURE_GL(DrawArraysIndirect, isCallValid, context, modePacked, indirect);
313 }
314 else
315 {
316 GenerateContextLostErrorOnCurrentGlobalContext();
317 }
318 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
319 }
320
GL_DrawElementsIndirect(GLenum mode,GLenum type,const void * indirect)321 void GL_APIENTRY GL_DrawElementsIndirect(GLenum mode, GLenum type, const void *indirect)
322 {
323 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
324 Context *context = GetValidGlobalContext();
325 EVENT(context, GLDrawElementsIndirect,
326 "context = %d, mode = %s, type = %s, indirect = 0x%016" PRIxPTR "", CID(context),
327 GLenumToString(GLESEnum::PrimitiveType, mode),
328 GLenumToString(GLESEnum::DrawElementsType, type), (uintptr_t)indirect);
329
330 if (context)
331 {
332 PrimitiveMode modePacked = PackParam<PrimitiveMode>(mode);
333 DrawElementsType typePacked = PackParam<DrawElementsType>(type);
334 SCOPED_SHARE_CONTEXT_LOCK(context);
335 bool isCallValid =
336 (context->skipValidation() ||
337 ValidateDrawElementsIndirect(context, angle::EntryPoint::GLDrawElementsIndirect,
338 modePacked, typePacked, indirect));
339 if (isCallValid)
340 {
341 context->drawElementsIndirect(modePacked, typePacked, indirect);
342 }
343 ANGLE_CAPTURE_GL(DrawElementsIndirect, isCallValid, context, modePacked, typePacked,
344 indirect);
345 }
346 else
347 {
348 GenerateContextLostErrorOnCurrentGlobalContext();
349 }
350 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
351 }
352
GL_FramebufferParameteri(GLenum target,GLenum pname,GLint param)353 void GL_APIENTRY GL_FramebufferParameteri(GLenum target, GLenum pname, GLint param)
354 {
355 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
356 Context *context = GetValidGlobalContext();
357 EVENT(context, GLFramebufferParameteri, "context = %d, target = %s, pname = %s, param = %d",
358 CID(context), GLenumToString(GLESEnum::FramebufferTarget, target),
359 GLenumToString(GLESEnum::FramebufferParameterName, pname), param);
360
361 if (context)
362 {
363 SCOPED_SHARE_CONTEXT_LOCK(context);
364 bool isCallValid =
365 (context->skipValidation() ||
366 ValidateFramebufferParameteri(context, angle::EntryPoint::GLFramebufferParameteri,
367 target, pname, param));
368 if (isCallValid)
369 {
370 context->framebufferParameteri(target, pname, param);
371 }
372 ANGLE_CAPTURE_GL(FramebufferParameteri, isCallValid, context, target, pname, param);
373 }
374 else
375 {
376 GenerateContextLostErrorOnCurrentGlobalContext();
377 }
378 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
379 }
380
GL_GenProgramPipelines(GLsizei n,GLuint * pipelines)381 void GL_APIENTRY GL_GenProgramPipelines(GLsizei n, GLuint *pipelines)
382 {
383 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
384 Context *context = GetValidGlobalContext();
385 EVENT(context, GLGenProgramPipelines, "context = %d, n = %d, pipelines = 0x%016" PRIxPTR "",
386 CID(context), n, (uintptr_t)pipelines);
387
388 if (context)
389 {
390 ProgramPipelineID *pipelinesPacked = PackParam<ProgramPipelineID *>(pipelines);
391 SCOPED_SHARE_CONTEXT_LOCK(context);
392 bool isCallValid =
393 (context->skipValidation() ||
394 ValidateGenProgramPipelines(context, angle::EntryPoint::GLGenProgramPipelines, n,
395 pipelinesPacked));
396 if (isCallValid)
397 {
398 context->genProgramPipelines(n, pipelinesPacked);
399 }
400 ANGLE_CAPTURE_GL(GenProgramPipelines, isCallValid, context, n, pipelinesPacked);
401 }
402 else
403 {
404 GenerateContextLostErrorOnCurrentGlobalContext();
405 }
406 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
407 }
408
GL_GetBooleani_v(GLenum target,GLuint index,GLboolean * data)409 void GL_APIENTRY GL_GetBooleani_v(GLenum target, GLuint index, GLboolean *data)
410 {
411 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
412 Context *context = GetValidGlobalContext();
413 EVENT(context, GLGetBooleani_v,
414 "context = %d, target = %s, index = %u, data = 0x%016" PRIxPTR "", CID(context),
415 GLenumToString(GLESEnum::BufferTargetARB, target), index, (uintptr_t)data);
416
417 if (context)
418 {
419 SCOPED_SHARE_CONTEXT_LOCK(context);
420 bool isCallValid = (context->skipValidation() ||
421 ValidateGetBooleani_v(context, angle::EntryPoint::GLGetBooleani_v,
422 target, index, data));
423 if (isCallValid)
424 {
425 context->getBooleani_v(target, index, data);
426 }
427 ANGLE_CAPTURE_GL(GetBooleani_v, isCallValid, context, target, index, data);
428 }
429 else
430 {
431 GenerateContextLostErrorOnCurrentGlobalContext();
432 }
433 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
434 }
435
GL_GetFramebufferParameteriv(GLenum target,GLenum pname,GLint * params)436 void GL_APIENTRY GL_GetFramebufferParameteriv(GLenum target, GLenum pname, GLint *params)
437 {
438 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
439 Context *context = GetValidGlobalContext();
440 EVENT(context, GLGetFramebufferParameteriv,
441 "context = %d, target = %s, pname = %s, params = 0x%016" PRIxPTR "", CID(context),
442 GLenumToString(GLESEnum::FramebufferTarget, target),
443 GLenumToString(GLESEnum::FramebufferAttachmentParameterName, pname), (uintptr_t)params);
444
445 if (context)
446 {
447 SCOPED_SHARE_CONTEXT_LOCK(context);
448 bool isCallValid =
449 (context->skipValidation() ||
450 ValidateGetFramebufferParameteriv(
451 context, angle::EntryPoint::GLGetFramebufferParameteriv, target, pname, params));
452 if (isCallValid)
453 {
454 context->getFramebufferParameteriv(target, pname, params);
455 }
456 ANGLE_CAPTURE_GL(GetFramebufferParameteriv, isCallValid, context, target, pname, params);
457 }
458 else
459 {
460 GenerateContextLostErrorOnCurrentGlobalContext();
461 }
462 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
463 }
464
GL_GetMultisamplefv(GLenum pname,GLuint index,GLfloat * val)465 void GL_APIENTRY GL_GetMultisamplefv(GLenum pname, GLuint index, GLfloat *val)
466 {
467 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
468 Context *context = GetValidGlobalContext();
469 EVENT(context, GLGetMultisamplefv,
470 "context = %d, pname = %s, index = %u, val = 0x%016" PRIxPTR "", CID(context),
471 GLenumToString(GLESEnum::AllEnums, pname), index, (uintptr_t)val);
472
473 if (context)
474 {
475 SCOPED_SHARE_CONTEXT_LOCK(context);
476 bool isCallValid = (context->skipValidation() ||
477 ValidateGetMultisamplefv(context, angle::EntryPoint::GLGetMultisamplefv,
478 pname, index, val));
479 if (isCallValid)
480 {
481 context->getMultisamplefv(pname, index, val);
482 }
483 ANGLE_CAPTURE_GL(GetMultisamplefv, isCallValid, context, pname, index, val);
484 }
485 else
486 {
487 GenerateContextLostErrorOnCurrentGlobalContext();
488 }
489 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
490 }
491
GL_GetProgramInterfaceiv(GLuint program,GLenum programInterface,GLenum pname,GLint * params)492 void GL_APIENTRY GL_GetProgramInterfaceiv(GLuint program,
493 GLenum programInterface,
494 GLenum pname,
495 GLint *params)
496 {
497 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
498 Context *context = GetValidGlobalContext();
499 EVENT(context, GLGetProgramInterfaceiv,
500 "context = %d, program = %u, programInterface = %s, pname = %s, params = 0x%016" PRIxPTR
501 "",
502 CID(context), program, GLenumToString(GLESEnum::ProgramInterface, programInterface),
503 GLenumToString(GLESEnum::ProgramInterfacePName, pname), (uintptr_t)params);
504
505 if (context)
506 {
507 ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);
508 SCOPED_SHARE_CONTEXT_LOCK(context);
509 bool isCallValid =
510 (context->skipValidation() ||
511 ValidateGetProgramInterfaceiv(context, angle::EntryPoint::GLGetProgramInterfaceiv,
512 programPacked, programInterface, pname, params));
513 if (isCallValid)
514 {
515 context->getProgramInterfaceiv(programPacked, programInterface, pname, params);
516 }
517 ANGLE_CAPTURE_GL(GetProgramInterfaceiv, isCallValid, context, programPacked,
518 programInterface, pname, params);
519 }
520 else
521 {
522 GenerateContextLostErrorOnCurrentGlobalContext();
523 }
524 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
525 }
526
GL_GetProgramPipelineInfoLog(GLuint pipeline,GLsizei bufSize,GLsizei * length,GLchar * infoLog)527 void GL_APIENTRY GL_GetProgramPipelineInfoLog(GLuint pipeline,
528 GLsizei bufSize,
529 GLsizei *length,
530 GLchar *infoLog)
531 {
532 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
533 Context *context = GetValidGlobalContext();
534 EVENT(context, GLGetProgramPipelineInfoLog,
535 "context = %d, pipeline = %u, bufSize = %d, length = 0x%016" PRIxPTR
536 ", infoLog = 0x%016" PRIxPTR "",
537 CID(context), pipeline, bufSize, (uintptr_t)length, (uintptr_t)infoLog);
538
539 if (context)
540 {
541 ProgramPipelineID pipelinePacked = PackParam<ProgramPipelineID>(pipeline);
542 SCOPED_SHARE_CONTEXT_LOCK(context);
543 bool isCallValid = (context->skipValidation() ||
544 ValidateGetProgramPipelineInfoLog(
545 context, angle::EntryPoint::GLGetProgramPipelineInfoLog,
546 pipelinePacked, bufSize, length, infoLog));
547 if (isCallValid)
548 {
549 context->getProgramPipelineInfoLog(pipelinePacked, bufSize, length, infoLog);
550 }
551 ANGLE_CAPTURE_GL(GetProgramPipelineInfoLog, isCallValid, context, pipelinePacked, bufSize,
552 length, infoLog);
553 }
554 else
555 {
556 GenerateContextLostErrorOnCurrentGlobalContext();
557 }
558 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
559 }
560
GL_GetProgramPipelineiv(GLuint pipeline,GLenum pname,GLint * params)561 void GL_APIENTRY GL_GetProgramPipelineiv(GLuint pipeline, GLenum pname, GLint *params)
562 {
563 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
564 Context *context = GetValidGlobalContext();
565 EVENT(context, GLGetProgramPipelineiv,
566 "context = %d, pipeline = %u, pname = %s, params = 0x%016" PRIxPTR "", CID(context),
567 pipeline, GLenumToString(GLESEnum::PipelineParameterName, pname), (uintptr_t)params);
568
569 if (context)
570 {
571 ProgramPipelineID pipelinePacked = PackParam<ProgramPipelineID>(pipeline);
572 SCOPED_SHARE_CONTEXT_LOCK(context);
573 bool isCallValid =
574 (context->skipValidation() ||
575 ValidateGetProgramPipelineiv(context, angle::EntryPoint::GLGetProgramPipelineiv,
576 pipelinePacked, pname, params));
577 if (isCallValid)
578 {
579 context->getProgramPipelineiv(pipelinePacked, pname, params);
580 }
581 ANGLE_CAPTURE_GL(GetProgramPipelineiv, isCallValid, context, pipelinePacked, pname, params);
582 }
583 else
584 {
585 GenerateContextLostErrorOnCurrentGlobalContext();
586 }
587 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
588 }
589
GL_GetProgramResourceIndex(GLuint program,GLenum programInterface,const GLchar * name)590 GLuint GL_APIENTRY GL_GetProgramResourceIndex(GLuint program,
591 GLenum programInterface,
592 const GLchar *name)
593 {
594 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
595 Context *context = GetValidGlobalContext();
596 EVENT(context, GLGetProgramResourceIndex,
597 "context = %d, program = %u, programInterface = %s, name = 0x%016" PRIxPTR "",
598 CID(context), program, GLenumToString(GLESEnum::ProgramInterface, programInterface),
599 (uintptr_t)name);
600
601 GLuint returnValue;
602 if (context)
603 {
604 ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);
605 SCOPED_SHARE_CONTEXT_LOCK(context);
606 bool isCallValid =
607 (context->skipValidation() ||
608 ValidateGetProgramResourceIndex(context, angle::EntryPoint::GLGetProgramResourceIndex,
609 programPacked, programInterface, name));
610 if (isCallValid)
611 {
612 returnValue = context->getProgramResourceIndex(programPacked, programInterface, name);
613 }
614 else
615 {
616 returnValue =
617 GetDefaultReturnValue<angle::EntryPoint::GLGetProgramResourceIndex, GLuint>();
618 }
619 ANGLE_CAPTURE_GL(GetProgramResourceIndex, isCallValid, context, programPacked,
620 programInterface, name, returnValue);
621 }
622 else
623 {
624 GenerateContextLostErrorOnCurrentGlobalContext();
625 returnValue = GetDefaultReturnValue<angle::EntryPoint::GLGetProgramResourceIndex, GLuint>();
626 }
627 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
628 return returnValue;
629 }
630
GL_GetProgramResourceLocation(GLuint program,GLenum programInterface,const GLchar * name)631 GLint GL_APIENTRY GL_GetProgramResourceLocation(GLuint program,
632 GLenum programInterface,
633 const GLchar *name)
634 {
635 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
636 Context *context = GetValidGlobalContext();
637 EVENT(context, GLGetProgramResourceLocation,
638 "context = %d, program = %u, programInterface = %s, name = 0x%016" PRIxPTR "",
639 CID(context), program, GLenumToString(GLESEnum::ProgramInterface, programInterface),
640 (uintptr_t)name);
641
642 GLint returnValue;
643 if (context)
644 {
645 ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);
646 SCOPED_SHARE_CONTEXT_LOCK(context);
647 bool isCallValid = (context->skipValidation() ||
648 ValidateGetProgramResourceLocation(
649 context, angle::EntryPoint::GLGetProgramResourceLocation,
650 programPacked, programInterface, name));
651 if (isCallValid)
652 {
653 returnValue =
654 context->getProgramResourceLocation(programPacked, programInterface, name);
655 }
656 else
657 {
658 returnValue =
659 GetDefaultReturnValue<angle::EntryPoint::GLGetProgramResourceLocation, GLint>();
660 }
661 ANGLE_CAPTURE_GL(GetProgramResourceLocation, isCallValid, context, programPacked,
662 programInterface, name, returnValue);
663 }
664 else
665 {
666 GenerateContextLostErrorOnCurrentGlobalContext();
667 returnValue =
668 GetDefaultReturnValue<angle::EntryPoint::GLGetProgramResourceLocation, GLint>();
669 }
670 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
671 return returnValue;
672 }
673
GL_GetProgramResourceName(GLuint program,GLenum programInterface,GLuint index,GLsizei bufSize,GLsizei * length,GLchar * name)674 void GL_APIENTRY GL_GetProgramResourceName(GLuint program,
675 GLenum programInterface,
676 GLuint index,
677 GLsizei bufSize,
678 GLsizei *length,
679 GLchar *name)
680 {
681 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
682 Context *context = GetValidGlobalContext();
683 EVENT(context, GLGetProgramResourceName,
684 "context = %d, program = %u, programInterface = %s, index = %u, bufSize = %d, length = "
685 "0x%016" PRIxPTR ", name = 0x%016" PRIxPTR "",
686 CID(context), program, GLenumToString(GLESEnum::ProgramInterface, programInterface),
687 index, bufSize, (uintptr_t)length, (uintptr_t)name);
688
689 if (context)
690 {
691 ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);
692 SCOPED_SHARE_CONTEXT_LOCK(context);
693 bool isCallValid = (context->skipValidation() ||
694 ValidateGetProgramResourceName(
695 context, angle::EntryPoint::GLGetProgramResourceName, programPacked,
696 programInterface, index, bufSize, length, name));
697 if (isCallValid)
698 {
699 context->getProgramResourceName(programPacked, programInterface, index, bufSize, length,
700 name);
701 }
702 ANGLE_CAPTURE_GL(GetProgramResourceName, isCallValid, context, programPacked,
703 programInterface, index, bufSize, length, name);
704 }
705 else
706 {
707 GenerateContextLostErrorOnCurrentGlobalContext();
708 }
709 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
710 }
711
GL_GetProgramResourceiv(GLuint program,GLenum programInterface,GLuint index,GLsizei propCount,const GLenum * props,GLsizei count,GLsizei * length,GLint * params)712 void GL_APIENTRY GL_GetProgramResourceiv(GLuint program,
713 GLenum programInterface,
714 GLuint index,
715 GLsizei propCount,
716 const GLenum *props,
717 GLsizei count,
718 GLsizei *length,
719 GLint *params)
720 {
721 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
722 Context *context = GetValidGlobalContext();
723 EVENT(context, GLGetProgramResourceiv,
724 "context = %d, program = %u, programInterface = %s, index = %u, propCount = %d, props = "
725 "0x%016" PRIxPTR ", count = %d, length = 0x%016" PRIxPTR ", params = 0x%016" PRIxPTR "",
726 CID(context), program, GLenumToString(GLESEnum::ProgramInterface, programInterface),
727 index, propCount, (uintptr_t)props, count, (uintptr_t)length, (uintptr_t)params);
728
729 if (context)
730 {
731 ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);
732 SCOPED_SHARE_CONTEXT_LOCK(context);
733 bool isCallValid = (context->skipValidation() ||
734 ValidateGetProgramResourceiv(
735 context, angle::EntryPoint::GLGetProgramResourceiv, programPacked,
736 programInterface, index, propCount, props, count, length, params));
737 if (isCallValid)
738 {
739 context->getProgramResourceiv(programPacked, programInterface, index, propCount, props,
740 count, length, params);
741 }
742 ANGLE_CAPTURE_GL(GetProgramResourceiv, isCallValid, context, programPacked,
743 programInterface, index, propCount, props, count, length, params);
744 }
745 else
746 {
747 GenerateContextLostErrorOnCurrentGlobalContext();
748 }
749 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
750 }
751
GL_GetTexLevelParameterfv(GLenum target,GLint level,GLenum pname,GLfloat * params)752 void GL_APIENTRY GL_GetTexLevelParameterfv(GLenum target,
753 GLint level,
754 GLenum pname,
755 GLfloat *params)
756 {
757 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
758 Context *context = GetValidGlobalContext();
759 EVENT(context, GLGetTexLevelParameterfv,
760 "context = %d, target = %s, level = %d, pname = %s, params = 0x%016" PRIxPTR "",
761 CID(context), GLenumToString(GLESEnum::TextureTarget, target), level,
762 GLenumToString(GLESEnum::GetTextureParameter, pname), (uintptr_t)params);
763
764 if (context)
765 {
766 TextureTarget targetPacked = PackParam<TextureTarget>(target);
767 SCOPED_SHARE_CONTEXT_LOCK(context);
768 bool isCallValid =
769 (context->skipValidation() ||
770 ValidateGetTexLevelParameterfv(context, angle::EntryPoint::GLGetTexLevelParameterfv,
771 targetPacked, level, pname, params));
772 if (isCallValid)
773 {
774 context->getTexLevelParameterfv(targetPacked, level, pname, params);
775 }
776 ANGLE_CAPTURE_GL(GetTexLevelParameterfv, isCallValid, context, targetPacked, level, pname,
777 params);
778 }
779 else
780 {
781 GenerateContextLostErrorOnCurrentGlobalContext();
782 }
783 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
784 }
785
GL_GetTexLevelParameteriv(GLenum target,GLint level,GLenum pname,GLint * params)786 void GL_APIENTRY GL_GetTexLevelParameteriv(GLenum target, GLint level, GLenum pname, GLint *params)
787 {
788 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
789 Context *context = GetValidGlobalContext();
790 EVENT(context, GLGetTexLevelParameteriv,
791 "context = %d, target = %s, level = %d, pname = %s, params = 0x%016" PRIxPTR "",
792 CID(context), GLenumToString(GLESEnum::TextureTarget, target), level,
793 GLenumToString(GLESEnum::GetTextureParameter, pname), (uintptr_t)params);
794
795 if (context)
796 {
797 TextureTarget targetPacked = PackParam<TextureTarget>(target);
798 SCOPED_SHARE_CONTEXT_LOCK(context);
799 bool isCallValid =
800 (context->skipValidation() ||
801 ValidateGetTexLevelParameteriv(context, angle::EntryPoint::GLGetTexLevelParameteriv,
802 targetPacked, level, pname, params));
803 if (isCallValid)
804 {
805 context->getTexLevelParameteriv(targetPacked, level, pname, params);
806 }
807 ANGLE_CAPTURE_GL(GetTexLevelParameteriv, isCallValid, context, targetPacked, level, pname,
808 params);
809 }
810 else
811 {
812 GenerateContextLostErrorOnCurrentGlobalContext();
813 }
814 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
815 }
816
GL_IsProgramPipeline(GLuint pipeline)817 GLboolean GL_APIENTRY GL_IsProgramPipeline(GLuint pipeline)
818 {
819 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
820 Context *context = GetValidGlobalContext();
821 EVENT(context, GLIsProgramPipeline, "context = %d, pipeline = %u", CID(context), pipeline);
822
823 GLboolean returnValue;
824 if (context)
825 {
826 ProgramPipelineID pipelinePacked = PackParam<ProgramPipelineID>(pipeline);
827 SCOPED_SHARE_CONTEXT_LOCK(context);
828 bool isCallValid = (context->skipValidation() ||
829 ValidateIsProgramPipeline(
830 context, angle::EntryPoint::GLIsProgramPipeline, pipelinePacked));
831 if (isCallValid)
832 {
833 returnValue = context->isProgramPipeline(pipelinePacked);
834 }
835 else
836 {
837 returnValue =
838 GetDefaultReturnValue<angle::EntryPoint::GLIsProgramPipeline, GLboolean>();
839 }
840 ANGLE_CAPTURE_GL(IsProgramPipeline, isCallValid, context, pipelinePacked, returnValue);
841 }
842 else
843 {
844 GenerateContextLostErrorOnCurrentGlobalContext();
845 returnValue = GetDefaultReturnValue<angle::EntryPoint::GLIsProgramPipeline, GLboolean>();
846 }
847 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
848 return returnValue;
849 }
850
GL_MemoryBarrier(GLbitfield barriers)851 void GL_APIENTRY GL_MemoryBarrier(GLbitfield barriers)
852 {
853 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
854 Context *context = GetValidGlobalContext();
855 EVENT(context, GLMemoryBarrier, "context = %d, barriers = %s", CID(context),
856 GLbitfieldToString(GLESEnum::MemoryBarrierMask, barriers).c_str());
857
858 if (context)
859 {
860 SCOPED_SHARE_CONTEXT_LOCK(context);
861 bool isCallValid =
862 (context->skipValidation() ||
863 (ValidatePixelLocalStorageInactive(context->getPrivateState(),
864 context->getMutableErrorSetForValidation(),
865 angle::EntryPoint::GLMemoryBarrier) &&
866 ValidateMemoryBarrier(context, angle::EntryPoint::GLMemoryBarrier, barriers)));
867 if (isCallValid)
868 {
869 context->memoryBarrier(barriers);
870 }
871 ANGLE_CAPTURE_GL(MemoryBarrier, isCallValid, context, barriers);
872 }
873 else
874 {
875 GenerateContextLostErrorOnCurrentGlobalContext();
876 }
877 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
878 }
879
GL_MemoryBarrierByRegion(GLbitfield barriers)880 void GL_APIENTRY GL_MemoryBarrierByRegion(GLbitfield barriers)
881 {
882 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
883 Context *context = GetValidGlobalContext();
884 EVENT(context, GLMemoryBarrierByRegion, "context = %d, barriers = %s", CID(context),
885 GLbitfieldToString(GLESEnum::MemoryBarrierMask, barriers).c_str());
886
887 if (context)
888 {
889 SCOPED_SHARE_CONTEXT_LOCK(context);
890 bool isCallValid =
891 (context->skipValidation() ||
892 (ValidatePixelLocalStorageInactive(context->getPrivateState(),
893 context->getMutableErrorSetForValidation(),
894 angle::EntryPoint::GLMemoryBarrierByRegion) &&
895 ValidateMemoryBarrierByRegion(context, angle::EntryPoint::GLMemoryBarrierByRegion,
896 barriers)));
897 if (isCallValid)
898 {
899 context->memoryBarrierByRegion(barriers);
900 }
901 ANGLE_CAPTURE_GL(MemoryBarrierByRegion, isCallValid, context, barriers);
902 }
903 else
904 {
905 GenerateContextLostErrorOnCurrentGlobalContext();
906 }
907 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
908 }
909
GL_ProgramUniform1f(GLuint program,GLint location,GLfloat v0)910 void GL_APIENTRY GL_ProgramUniform1f(GLuint program, GLint location, GLfloat v0)
911 {
912 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
913 Context *context = GetValidGlobalContext();
914 EVENT(context, GLProgramUniform1f, "context = %d, program = %u, location = %d, v0 = %f",
915 CID(context), program, location, v0);
916
917 if (context)
918 {
919 ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);
920 UniformLocation locationPacked = PackParam<UniformLocation>(location);
921 SCOPED_SHARE_CONTEXT_LOCK(context);
922 bool isCallValid =
923 (context->skipValidation() ||
924 (ValidatePixelLocalStorageInactive(context->getPrivateState(),
925 context->getMutableErrorSetForValidation(),
926 angle::EntryPoint::GLProgramUniform1f) &&
927 ValidateProgramUniform1f(context, angle::EntryPoint::GLProgramUniform1f,
928 programPacked, locationPacked, v0)));
929 if (isCallValid)
930 {
931 context->programUniform1f(programPacked, locationPacked, v0);
932 }
933 ANGLE_CAPTURE_GL(ProgramUniform1f, isCallValid, context, programPacked, locationPacked, v0);
934 }
935 else
936 {
937 GenerateContextLostErrorOnCurrentGlobalContext();
938 }
939 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
940 }
941
GL_ProgramUniform1fv(GLuint program,GLint location,GLsizei count,const GLfloat * value)942 void GL_APIENTRY GL_ProgramUniform1fv(GLuint program,
943 GLint location,
944 GLsizei count,
945 const GLfloat *value)
946 {
947 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
948 Context *context = GetValidGlobalContext();
949 EVENT(context, GLProgramUniform1fv,
950 "context = %d, program = %u, location = %d, count = %d, value = 0x%016" PRIxPTR "",
951 CID(context), program, location, count, (uintptr_t)value);
952
953 if (context)
954 {
955 ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);
956 UniformLocation locationPacked = PackParam<UniformLocation>(location);
957 SCOPED_SHARE_CONTEXT_LOCK(context);
958 bool isCallValid =
959 (context->skipValidation() ||
960 (ValidatePixelLocalStorageInactive(context->getPrivateState(),
961 context->getMutableErrorSetForValidation(),
962 angle::EntryPoint::GLProgramUniform1fv) &&
963 ValidateProgramUniform1fv(context, angle::EntryPoint::GLProgramUniform1fv,
964 programPacked, locationPacked, count, value)));
965 if (isCallValid)
966 {
967 context->programUniform1fv(programPacked, locationPacked, count, value);
968 }
969 ANGLE_CAPTURE_GL(ProgramUniform1fv, isCallValid, context, programPacked, locationPacked,
970 count, value);
971 }
972 else
973 {
974 GenerateContextLostErrorOnCurrentGlobalContext();
975 }
976 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
977 }
978
GL_ProgramUniform1i(GLuint program,GLint location,GLint v0)979 void GL_APIENTRY GL_ProgramUniform1i(GLuint program, GLint location, GLint v0)
980 {
981 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
982 Context *context = GetValidGlobalContext();
983 EVENT(context, GLProgramUniform1i, "context = %d, program = %u, location = %d, v0 = %d",
984 CID(context), program, location, v0);
985
986 if (context)
987 {
988 ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);
989 UniformLocation locationPacked = PackParam<UniformLocation>(location);
990 SCOPED_SHARE_CONTEXT_LOCK(context);
991 bool isCallValid =
992 (context->skipValidation() ||
993 (ValidatePixelLocalStorageInactive(context->getPrivateState(),
994 context->getMutableErrorSetForValidation(),
995 angle::EntryPoint::GLProgramUniform1i) &&
996 ValidateProgramUniform1i(context, angle::EntryPoint::GLProgramUniform1i,
997 programPacked, locationPacked, v0)));
998 if (isCallValid)
999 {
1000 context->programUniform1i(programPacked, locationPacked, v0);
1001 }
1002 ANGLE_CAPTURE_GL(ProgramUniform1i, isCallValid, context, programPacked, locationPacked, v0);
1003 }
1004 else
1005 {
1006 GenerateContextLostErrorOnCurrentGlobalContext();
1007 }
1008 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
1009 }
1010
GL_ProgramUniform1iv(GLuint program,GLint location,GLsizei count,const GLint * value)1011 void GL_APIENTRY GL_ProgramUniform1iv(GLuint program,
1012 GLint location,
1013 GLsizei count,
1014 const GLint *value)
1015 {
1016 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
1017 Context *context = GetValidGlobalContext();
1018 EVENT(context, GLProgramUniform1iv,
1019 "context = %d, program = %u, location = %d, count = %d, value = 0x%016" PRIxPTR "",
1020 CID(context), program, location, count, (uintptr_t)value);
1021
1022 if (context)
1023 {
1024 ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);
1025 UniformLocation locationPacked = PackParam<UniformLocation>(location);
1026 SCOPED_SHARE_CONTEXT_LOCK(context);
1027 bool isCallValid =
1028 (context->skipValidation() ||
1029 (ValidatePixelLocalStorageInactive(context->getPrivateState(),
1030 context->getMutableErrorSetForValidation(),
1031 angle::EntryPoint::GLProgramUniform1iv) &&
1032 ValidateProgramUniform1iv(context, angle::EntryPoint::GLProgramUniform1iv,
1033 programPacked, locationPacked, count, value)));
1034 if (isCallValid)
1035 {
1036 context->programUniform1iv(programPacked, locationPacked, count, value);
1037 }
1038 ANGLE_CAPTURE_GL(ProgramUniform1iv, isCallValid, context, programPacked, locationPacked,
1039 count, value);
1040 }
1041 else
1042 {
1043 GenerateContextLostErrorOnCurrentGlobalContext();
1044 }
1045 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
1046 }
1047
GL_ProgramUniform1ui(GLuint program,GLint location,GLuint v0)1048 void GL_APIENTRY GL_ProgramUniform1ui(GLuint program, GLint location, GLuint v0)
1049 {
1050 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
1051 Context *context = GetValidGlobalContext();
1052 EVENT(context, GLProgramUniform1ui, "context = %d, program = %u, location = %d, v0 = %u",
1053 CID(context), program, location, v0);
1054
1055 if (context)
1056 {
1057 ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);
1058 UniformLocation locationPacked = PackParam<UniformLocation>(location);
1059 SCOPED_SHARE_CONTEXT_LOCK(context);
1060 bool isCallValid =
1061 (context->skipValidation() ||
1062 (ValidatePixelLocalStorageInactive(context->getPrivateState(),
1063 context->getMutableErrorSetForValidation(),
1064 angle::EntryPoint::GLProgramUniform1ui) &&
1065 ValidateProgramUniform1ui(context, angle::EntryPoint::GLProgramUniform1ui,
1066 programPacked, locationPacked, v0)));
1067 if (isCallValid)
1068 {
1069 context->programUniform1ui(programPacked, locationPacked, v0);
1070 }
1071 ANGLE_CAPTURE_GL(ProgramUniform1ui, isCallValid, context, programPacked, locationPacked,
1072 v0);
1073 }
1074 else
1075 {
1076 GenerateContextLostErrorOnCurrentGlobalContext();
1077 }
1078 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
1079 }
1080
GL_ProgramUniform1uiv(GLuint program,GLint location,GLsizei count,const GLuint * value)1081 void GL_APIENTRY GL_ProgramUniform1uiv(GLuint program,
1082 GLint location,
1083 GLsizei count,
1084 const GLuint *value)
1085 {
1086 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
1087 Context *context = GetValidGlobalContext();
1088 EVENT(context, GLProgramUniform1uiv,
1089 "context = %d, program = %u, location = %d, count = %d, value = 0x%016" PRIxPTR "",
1090 CID(context), program, location, count, (uintptr_t)value);
1091
1092 if (context)
1093 {
1094 ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);
1095 UniformLocation locationPacked = PackParam<UniformLocation>(location);
1096 SCOPED_SHARE_CONTEXT_LOCK(context);
1097 bool isCallValid =
1098 (context->skipValidation() ||
1099 (ValidatePixelLocalStorageInactive(context->getPrivateState(),
1100 context->getMutableErrorSetForValidation(),
1101 angle::EntryPoint::GLProgramUniform1uiv) &&
1102 ValidateProgramUniform1uiv(context, angle::EntryPoint::GLProgramUniform1uiv,
1103 programPacked, locationPacked, count, value)));
1104 if (isCallValid)
1105 {
1106 context->programUniform1uiv(programPacked, locationPacked, count, value);
1107 }
1108 ANGLE_CAPTURE_GL(ProgramUniform1uiv, isCallValid, context, programPacked, locationPacked,
1109 count, value);
1110 }
1111 else
1112 {
1113 GenerateContextLostErrorOnCurrentGlobalContext();
1114 }
1115 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
1116 }
1117
GL_ProgramUniform2f(GLuint program,GLint location,GLfloat v0,GLfloat v1)1118 void GL_APIENTRY GL_ProgramUniform2f(GLuint program, GLint location, GLfloat v0, GLfloat v1)
1119 {
1120 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
1121 Context *context = GetValidGlobalContext();
1122 EVENT(context, GLProgramUniform2f,
1123 "context = %d, program = %u, location = %d, v0 = %f, v1 = %f", CID(context), program,
1124 location, v0, v1);
1125
1126 if (context)
1127 {
1128 ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);
1129 UniformLocation locationPacked = PackParam<UniformLocation>(location);
1130 SCOPED_SHARE_CONTEXT_LOCK(context);
1131 bool isCallValid =
1132 (context->skipValidation() ||
1133 (ValidatePixelLocalStorageInactive(context->getPrivateState(),
1134 context->getMutableErrorSetForValidation(),
1135 angle::EntryPoint::GLProgramUniform2f) &&
1136 ValidateProgramUniform2f(context, angle::EntryPoint::GLProgramUniform2f,
1137 programPacked, locationPacked, v0, v1)));
1138 if (isCallValid)
1139 {
1140 context->programUniform2f(programPacked, locationPacked, v0, v1);
1141 }
1142 ANGLE_CAPTURE_GL(ProgramUniform2f, isCallValid, context, programPacked, locationPacked, v0,
1143 v1);
1144 }
1145 else
1146 {
1147 GenerateContextLostErrorOnCurrentGlobalContext();
1148 }
1149 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
1150 }
1151
GL_ProgramUniform2fv(GLuint program,GLint location,GLsizei count,const GLfloat * value)1152 void GL_APIENTRY GL_ProgramUniform2fv(GLuint program,
1153 GLint location,
1154 GLsizei count,
1155 const GLfloat *value)
1156 {
1157 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
1158 Context *context = GetValidGlobalContext();
1159 EVENT(context, GLProgramUniform2fv,
1160 "context = %d, program = %u, location = %d, count = %d, value = 0x%016" PRIxPTR "",
1161 CID(context), program, location, count, (uintptr_t)value);
1162
1163 if (context)
1164 {
1165 ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);
1166 UniformLocation locationPacked = PackParam<UniformLocation>(location);
1167 SCOPED_SHARE_CONTEXT_LOCK(context);
1168 bool isCallValid =
1169 (context->skipValidation() ||
1170 (ValidatePixelLocalStorageInactive(context->getPrivateState(),
1171 context->getMutableErrorSetForValidation(),
1172 angle::EntryPoint::GLProgramUniform2fv) &&
1173 ValidateProgramUniform2fv(context, angle::EntryPoint::GLProgramUniform2fv,
1174 programPacked, locationPacked, count, value)));
1175 if (isCallValid)
1176 {
1177 context->programUniform2fv(programPacked, locationPacked, count, value);
1178 }
1179 ANGLE_CAPTURE_GL(ProgramUniform2fv, isCallValid, context, programPacked, locationPacked,
1180 count, value);
1181 }
1182 else
1183 {
1184 GenerateContextLostErrorOnCurrentGlobalContext();
1185 }
1186 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
1187 }
1188
GL_ProgramUniform2i(GLuint program,GLint location,GLint v0,GLint v1)1189 void GL_APIENTRY GL_ProgramUniform2i(GLuint program, GLint location, GLint v0, GLint v1)
1190 {
1191 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
1192 Context *context = GetValidGlobalContext();
1193 EVENT(context, GLProgramUniform2i,
1194 "context = %d, program = %u, location = %d, v0 = %d, v1 = %d", CID(context), program,
1195 location, v0, v1);
1196
1197 if (context)
1198 {
1199 ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);
1200 UniformLocation locationPacked = PackParam<UniformLocation>(location);
1201 SCOPED_SHARE_CONTEXT_LOCK(context);
1202 bool isCallValid =
1203 (context->skipValidation() ||
1204 (ValidatePixelLocalStorageInactive(context->getPrivateState(),
1205 context->getMutableErrorSetForValidation(),
1206 angle::EntryPoint::GLProgramUniform2i) &&
1207 ValidateProgramUniform2i(context, angle::EntryPoint::GLProgramUniform2i,
1208 programPacked, locationPacked, v0, v1)));
1209 if (isCallValid)
1210 {
1211 context->programUniform2i(programPacked, locationPacked, v0, v1);
1212 }
1213 ANGLE_CAPTURE_GL(ProgramUniform2i, isCallValid, context, programPacked, locationPacked, v0,
1214 v1);
1215 }
1216 else
1217 {
1218 GenerateContextLostErrorOnCurrentGlobalContext();
1219 }
1220 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
1221 }
1222
GL_ProgramUniform2iv(GLuint program,GLint location,GLsizei count,const GLint * value)1223 void GL_APIENTRY GL_ProgramUniform2iv(GLuint program,
1224 GLint location,
1225 GLsizei count,
1226 const GLint *value)
1227 {
1228 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
1229 Context *context = GetValidGlobalContext();
1230 EVENT(context, GLProgramUniform2iv,
1231 "context = %d, program = %u, location = %d, count = %d, value = 0x%016" PRIxPTR "",
1232 CID(context), program, location, count, (uintptr_t)value);
1233
1234 if (context)
1235 {
1236 ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);
1237 UniformLocation locationPacked = PackParam<UniformLocation>(location);
1238 SCOPED_SHARE_CONTEXT_LOCK(context);
1239 bool isCallValid =
1240 (context->skipValidation() ||
1241 (ValidatePixelLocalStorageInactive(context->getPrivateState(),
1242 context->getMutableErrorSetForValidation(),
1243 angle::EntryPoint::GLProgramUniform2iv) &&
1244 ValidateProgramUniform2iv(context, angle::EntryPoint::GLProgramUniform2iv,
1245 programPacked, locationPacked, count, value)));
1246 if (isCallValid)
1247 {
1248 context->programUniform2iv(programPacked, locationPacked, count, value);
1249 }
1250 ANGLE_CAPTURE_GL(ProgramUniform2iv, isCallValid, context, programPacked, locationPacked,
1251 count, value);
1252 }
1253 else
1254 {
1255 GenerateContextLostErrorOnCurrentGlobalContext();
1256 }
1257 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
1258 }
1259
GL_ProgramUniform2ui(GLuint program,GLint location,GLuint v0,GLuint v1)1260 void GL_APIENTRY GL_ProgramUniform2ui(GLuint program, GLint location, GLuint v0, GLuint v1)
1261 {
1262 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
1263 Context *context = GetValidGlobalContext();
1264 EVENT(context, GLProgramUniform2ui,
1265 "context = %d, program = %u, location = %d, v0 = %u, v1 = %u", CID(context), program,
1266 location, v0, v1);
1267
1268 if (context)
1269 {
1270 ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);
1271 UniformLocation locationPacked = PackParam<UniformLocation>(location);
1272 SCOPED_SHARE_CONTEXT_LOCK(context);
1273 bool isCallValid =
1274 (context->skipValidation() ||
1275 (ValidatePixelLocalStorageInactive(context->getPrivateState(),
1276 context->getMutableErrorSetForValidation(),
1277 angle::EntryPoint::GLProgramUniform2ui) &&
1278 ValidateProgramUniform2ui(context, angle::EntryPoint::GLProgramUniform2ui,
1279 programPacked, locationPacked, v0, v1)));
1280 if (isCallValid)
1281 {
1282 context->programUniform2ui(programPacked, locationPacked, v0, v1);
1283 }
1284 ANGLE_CAPTURE_GL(ProgramUniform2ui, isCallValid, context, programPacked, locationPacked, v0,
1285 v1);
1286 }
1287 else
1288 {
1289 GenerateContextLostErrorOnCurrentGlobalContext();
1290 }
1291 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
1292 }
1293
GL_ProgramUniform2uiv(GLuint program,GLint location,GLsizei count,const GLuint * value)1294 void GL_APIENTRY GL_ProgramUniform2uiv(GLuint program,
1295 GLint location,
1296 GLsizei count,
1297 const GLuint *value)
1298 {
1299 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
1300 Context *context = GetValidGlobalContext();
1301 EVENT(context, GLProgramUniform2uiv,
1302 "context = %d, program = %u, location = %d, count = %d, value = 0x%016" PRIxPTR "",
1303 CID(context), program, location, count, (uintptr_t)value);
1304
1305 if (context)
1306 {
1307 ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);
1308 UniformLocation locationPacked = PackParam<UniformLocation>(location);
1309 SCOPED_SHARE_CONTEXT_LOCK(context);
1310 bool isCallValid =
1311 (context->skipValidation() ||
1312 (ValidatePixelLocalStorageInactive(context->getPrivateState(),
1313 context->getMutableErrorSetForValidation(),
1314 angle::EntryPoint::GLProgramUniform2uiv) &&
1315 ValidateProgramUniform2uiv(context, angle::EntryPoint::GLProgramUniform2uiv,
1316 programPacked, locationPacked, count, value)));
1317 if (isCallValid)
1318 {
1319 context->programUniform2uiv(programPacked, locationPacked, count, value);
1320 }
1321 ANGLE_CAPTURE_GL(ProgramUniform2uiv, isCallValid, context, programPacked, locationPacked,
1322 count, value);
1323 }
1324 else
1325 {
1326 GenerateContextLostErrorOnCurrentGlobalContext();
1327 }
1328 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
1329 }
1330
1331 void GL_APIENTRY
GL_ProgramUniform3f(GLuint program,GLint location,GLfloat v0,GLfloat v1,GLfloat v2)1332 GL_ProgramUniform3f(GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2)
1333 {
1334 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
1335 Context *context = GetValidGlobalContext();
1336 EVENT(context, GLProgramUniform3f,
1337 "context = %d, program = %u, location = %d, v0 = %f, v1 = %f, v2 = %f", CID(context),
1338 program, location, v0, v1, v2);
1339
1340 if (context)
1341 {
1342 ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);
1343 UniformLocation locationPacked = PackParam<UniformLocation>(location);
1344 SCOPED_SHARE_CONTEXT_LOCK(context);
1345 bool isCallValid =
1346 (context->skipValidation() ||
1347 (ValidatePixelLocalStorageInactive(context->getPrivateState(),
1348 context->getMutableErrorSetForValidation(),
1349 angle::EntryPoint::GLProgramUniform3f) &&
1350 ValidateProgramUniform3f(context, angle::EntryPoint::GLProgramUniform3f,
1351 programPacked, locationPacked, v0, v1, v2)));
1352 if (isCallValid)
1353 {
1354 context->programUniform3f(programPacked, locationPacked, v0, v1, v2);
1355 }
1356 ANGLE_CAPTURE_GL(ProgramUniform3f, isCallValid, context, programPacked, locationPacked, v0,
1357 v1, v2);
1358 }
1359 else
1360 {
1361 GenerateContextLostErrorOnCurrentGlobalContext();
1362 }
1363 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
1364 }
1365
GL_ProgramUniform3fv(GLuint program,GLint location,GLsizei count,const GLfloat * value)1366 void GL_APIENTRY GL_ProgramUniform3fv(GLuint program,
1367 GLint location,
1368 GLsizei count,
1369 const GLfloat *value)
1370 {
1371 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
1372 Context *context = GetValidGlobalContext();
1373 EVENT(context, GLProgramUniform3fv,
1374 "context = %d, program = %u, location = %d, count = %d, value = 0x%016" PRIxPTR "",
1375 CID(context), program, location, count, (uintptr_t)value);
1376
1377 if (context)
1378 {
1379 ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);
1380 UniformLocation locationPacked = PackParam<UniformLocation>(location);
1381 SCOPED_SHARE_CONTEXT_LOCK(context);
1382 bool isCallValid =
1383 (context->skipValidation() ||
1384 (ValidatePixelLocalStorageInactive(context->getPrivateState(),
1385 context->getMutableErrorSetForValidation(),
1386 angle::EntryPoint::GLProgramUniform3fv) &&
1387 ValidateProgramUniform3fv(context, angle::EntryPoint::GLProgramUniform3fv,
1388 programPacked, locationPacked, count, value)));
1389 if (isCallValid)
1390 {
1391 context->programUniform3fv(programPacked, locationPacked, count, value);
1392 }
1393 ANGLE_CAPTURE_GL(ProgramUniform3fv, isCallValid, context, programPacked, locationPacked,
1394 count, value);
1395 }
1396 else
1397 {
1398 GenerateContextLostErrorOnCurrentGlobalContext();
1399 }
1400 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
1401 }
1402
GL_ProgramUniform3i(GLuint program,GLint location,GLint v0,GLint v1,GLint v2)1403 void GL_APIENTRY GL_ProgramUniform3i(GLuint program, GLint location, GLint v0, GLint v1, GLint v2)
1404 {
1405 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
1406 Context *context = GetValidGlobalContext();
1407 EVENT(context, GLProgramUniform3i,
1408 "context = %d, program = %u, location = %d, v0 = %d, v1 = %d, v2 = %d", CID(context),
1409 program, location, v0, v1, v2);
1410
1411 if (context)
1412 {
1413 ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);
1414 UniformLocation locationPacked = PackParam<UniformLocation>(location);
1415 SCOPED_SHARE_CONTEXT_LOCK(context);
1416 bool isCallValid =
1417 (context->skipValidation() ||
1418 (ValidatePixelLocalStorageInactive(context->getPrivateState(),
1419 context->getMutableErrorSetForValidation(),
1420 angle::EntryPoint::GLProgramUniform3i) &&
1421 ValidateProgramUniform3i(context, angle::EntryPoint::GLProgramUniform3i,
1422 programPacked, locationPacked, v0, v1, v2)));
1423 if (isCallValid)
1424 {
1425 context->programUniform3i(programPacked, locationPacked, v0, v1, v2);
1426 }
1427 ANGLE_CAPTURE_GL(ProgramUniform3i, isCallValid, context, programPacked, locationPacked, v0,
1428 v1, v2);
1429 }
1430 else
1431 {
1432 GenerateContextLostErrorOnCurrentGlobalContext();
1433 }
1434 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
1435 }
1436
GL_ProgramUniform3iv(GLuint program,GLint location,GLsizei count,const GLint * value)1437 void GL_APIENTRY GL_ProgramUniform3iv(GLuint program,
1438 GLint location,
1439 GLsizei count,
1440 const GLint *value)
1441 {
1442 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
1443 Context *context = GetValidGlobalContext();
1444 EVENT(context, GLProgramUniform3iv,
1445 "context = %d, program = %u, location = %d, count = %d, value = 0x%016" PRIxPTR "",
1446 CID(context), program, location, count, (uintptr_t)value);
1447
1448 if (context)
1449 {
1450 ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);
1451 UniformLocation locationPacked = PackParam<UniformLocation>(location);
1452 SCOPED_SHARE_CONTEXT_LOCK(context);
1453 bool isCallValid =
1454 (context->skipValidation() ||
1455 (ValidatePixelLocalStorageInactive(context->getPrivateState(),
1456 context->getMutableErrorSetForValidation(),
1457 angle::EntryPoint::GLProgramUniform3iv) &&
1458 ValidateProgramUniform3iv(context, angle::EntryPoint::GLProgramUniform3iv,
1459 programPacked, locationPacked, count, value)));
1460 if (isCallValid)
1461 {
1462 context->programUniform3iv(programPacked, locationPacked, count, value);
1463 }
1464 ANGLE_CAPTURE_GL(ProgramUniform3iv, isCallValid, context, programPacked, locationPacked,
1465 count, value);
1466 }
1467 else
1468 {
1469 GenerateContextLostErrorOnCurrentGlobalContext();
1470 }
1471 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
1472 }
1473
1474 void GL_APIENTRY
GL_ProgramUniform3ui(GLuint program,GLint location,GLuint v0,GLuint v1,GLuint v2)1475 GL_ProgramUniform3ui(GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2)
1476 {
1477 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
1478 Context *context = GetValidGlobalContext();
1479 EVENT(context, GLProgramUniform3ui,
1480 "context = %d, program = %u, location = %d, v0 = %u, v1 = %u, v2 = %u", CID(context),
1481 program, location, v0, v1, v2);
1482
1483 if (context)
1484 {
1485 ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);
1486 UniformLocation locationPacked = PackParam<UniformLocation>(location);
1487 SCOPED_SHARE_CONTEXT_LOCK(context);
1488 bool isCallValid =
1489 (context->skipValidation() ||
1490 (ValidatePixelLocalStorageInactive(context->getPrivateState(),
1491 context->getMutableErrorSetForValidation(),
1492 angle::EntryPoint::GLProgramUniform3ui) &&
1493 ValidateProgramUniform3ui(context, angle::EntryPoint::GLProgramUniform3ui,
1494 programPacked, locationPacked, v0, v1, v2)));
1495 if (isCallValid)
1496 {
1497 context->programUniform3ui(programPacked, locationPacked, v0, v1, v2);
1498 }
1499 ANGLE_CAPTURE_GL(ProgramUniform3ui, isCallValid, context, programPacked, locationPacked, v0,
1500 v1, v2);
1501 }
1502 else
1503 {
1504 GenerateContextLostErrorOnCurrentGlobalContext();
1505 }
1506 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
1507 }
1508
GL_ProgramUniform3uiv(GLuint program,GLint location,GLsizei count,const GLuint * value)1509 void GL_APIENTRY GL_ProgramUniform3uiv(GLuint program,
1510 GLint location,
1511 GLsizei count,
1512 const GLuint *value)
1513 {
1514 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
1515 Context *context = GetValidGlobalContext();
1516 EVENT(context, GLProgramUniform3uiv,
1517 "context = %d, program = %u, location = %d, count = %d, value = 0x%016" PRIxPTR "",
1518 CID(context), program, location, count, (uintptr_t)value);
1519
1520 if (context)
1521 {
1522 ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);
1523 UniformLocation locationPacked = PackParam<UniformLocation>(location);
1524 SCOPED_SHARE_CONTEXT_LOCK(context);
1525 bool isCallValid =
1526 (context->skipValidation() ||
1527 (ValidatePixelLocalStorageInactive(context->getPrivateState(),
1528 context->getMutableErrorSetForValidation(),
1529 angle::EntryPoint::GLProgramUniform3uiv) &&
1530 ValidateProgramUniform3uiv(context, angle::EntryPoint::GLProgramUniform3uiv,
1531 programPacked, locationPacked, count, value)));
1532 if (isCallValid)
1533 {
1534 context->programUniform3uiv(programPacked, locationPacked, count, value);
1535 }
1536 ANGLE_CAPTURE_GL(ProgramUniform3uiv, isCallValid, context, programPacked, locationPacked,
1537 count, value);
1538 }
1539 else
1540 {
1541 GenerateContextLostErrorOnCurrentGlobalContext();
1542 }
1543 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
1544 }
1545
1546 void GL_APIENTRY
GL_ProgramUniform4f(GLuint program,GLint location,GLfloat v0,GLfloat v1,GLfloat v2,GLfloat v3)1547 GL_ProgramUniform4f(GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3)
1548 {
1549 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
1550 Context *context = GetValidGlobalContext();
1551 EVENT(context, GLProgramUniform4f,
1552 "context = %d, program = %u, location = %d, v0 = %f, v1 = %f, v2 = %f, v3 = %f",
1553 CID(context), program, location, v0, v1, v2, v3);
1554
1555 if (context)
1556 {
1557 ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);
1558 UniformLocation locationPacked = PackParam<UniformLocation>(location);
1559 SCOPED_SHARE_CONTEXT_LOCK(context);
1560 bool isCallValid =
1561 (context->skipValidation() ||
1562 (ValidatePixelLocalStorageInactive(context->getPrivateState(),
1563 context->getMutableErrorSetForValidation(),
1564 angle::EntryPoint::GLProgramUniform4f) &&
1565 ValidateProgramUniform4f(context, angle::EntryPoint::GLProgramUniform4f,
1566 programPacked, locationPacked, v0, v1, v2, v3)));
1567 if (isCallValid)
1568 {
1569 context->programUniform4f(programPacked, locationPacked, v0, v1, v2, v3);
1570 }
1571 ANGLE_CAPTURE_GL(ProgramUniform4f, isCallValid, context, programPacked, locationPacked, v0,
1572 v1, v2, v3);
1573 }
1574 else
1575 {
1576 GenerateContextLostErrorOnCurrentGlobalContext();
1577 }
1578 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
1579 }
1580
GL_ProgramUniform4fv(GLuint program,GLint location,GLsizei count,const GLfloat * value)1581 void GL_APIENTRY GL_ProgramUniform4fv(GLuint program,
1582 GLint location,
1583 GLsizei count,
1584 const GLfloat *value)
1585 {
1586 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
1587 Context *context = GetValidGlobalContext();
1588 EVENT(context, GLProgramUniform4fv,
1589 "context = %d, program = %u, location = %d, count = %d, value = 0x%016" PRIxPTR "",
1590 CID(context), program, location, count, (uintptr_t)value);
1591
1592 if (context)
1593 {
1594 ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);
1595 UniformLocation locationPacked = PackParam<UniformLocation>(location);
1596 SCOPED_SHARE_CONTEXT_LOCK(context);
1597 bool isCallValid =
1598 (context->skipValidation() ||
1599 (ValidatePixelLocalStorageInactive(context->getPrivateState(),
1600 context->getMutableErrorSetForValidation(),
1601 angle::EntryPoint::GLProgramUniform4fv) &&
1602 ValidateProgramUniform4fv(context, angle::EntryPoint::GLProgramUniform4fv,
1603 programPacked, locationPacked, count, value)));
1604 if (isCallValid)
1605 {
1606 context->programUniform4fv(programPacked, locationPacked, count, value);
1607 }
1608 ANGLE_CAPTURE_GL(ProgramUniform4fv, isCallValid, context, programPacked, locationPacked,
1609 count, value);
1610 }
1611 else
1612 {
1613 GenerateContextLostErrorOnCurrentGlobalContext();
1614 }
1615 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
1616 }
1617
1618 void GL_APIENTRY
GL_ProgramUniform4i(GLuint program,GLint location,GLint v0,GLint v1,GLint v2,GLint v3)1619 GL_ProgramUniform4i(GLuint program, GLint location, GLint v0, GLint v1, GLint v2, GLint v3)
1620 {
1621 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
1622 Context *context = GetValidGlobalContext();
1623 EVENT(context, GLProgramUniform4i,
1624 "context = %d, program = %u, location = %d, v0 = %d, v1 = %d, v2 = %d, v3 = %d",
1625 CID(context), program, location, v0, v1, v2, v3);
1626
1627 if (context)
1628 {
1629 ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);
1630 UniformLocation locationPacked = PackParam<UniformLocation>(location);
1631 SCOPED_SHARE_CONTEXT_LOCK(context);
1632 bool isCallValid =
1633 (context->skipValidation() ||
1634 (ValidatePixelLocalStorageInactive(context->getPrivateState(),
1635 context->getMutableErrorSetForValidation(),
1636 angle::EntryPoint::GLProgramUniform4i) &&
1637 ValidateProgramUniform4i(context, angle::EntryPoint::GLProgramUniform4i,
1638 programPacked, locationPacked, v0, v1, v2, v3)));
1639 if (isCallValid)
1640 {
1641 context->programUniform4i(programPacked, locationPacked, v0, v1, v2, v3);
1642 }
1643 ANGLE_CAPTURE_GL(ProgramUniform4i, isCallValid, context, programPacked, locationPacked, v0,
1644 v1, v2, v3);
1645 }
1646 else
1647 {
1648 GenerateContextLostErrorOnCurrentGlobalContext();
1649 }
1650 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
1651 }
1652
GL_ProgramUniform4iv(GLuint program,GLint location,GLsizei count,const GLint * value)1653 void GL_APIENTRY GL_ProgramUniform4iv(GLuint program,
1654 GLint location,
1655 GLsizei count,
1656 const GLint *value)
1657 {
1658 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
1659 Context *context = GetValidGlobalContext();
1660 EVENT(context, GLProgramUniform4iv,
1661 "context = %d, program = %u, location = %d, count = %d, value = 0x%016" PRIxPTR "",
1662 CID(context), program, location, count, (uintptr_t)value);
1663
1664 if (context)
1665 {
1666 ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);
1667 UniformLocation locationPacked = PackParam<UniformLocation>(location);
1668 SCOPED_SHARE_CONTEXT_LOCK(context);
1669 bool isCallValid =
1670 (context->skipValidation() ||
1671 (ValidatePixelLocalStorageInactive(context->getPrivateState(),
1672 context->getMutableErrorSetForValidation(),
1673 angle::EntryPoint::GLProgramUniform4iv) &&
1674 ValidateProgramUniform4iv(context, angle::EntryPoint::GLProgramUniform4iv,
1675 programPacked, locationPacked, count, value)));
1676 if (isCallValid)
1677 {
1678 context->programUniform4iv(programPacked, locationPacked, count, value);
1679 }
1680 ANGLE_CAPTURE_GL(ProgramUniform4iv, isCallValid, context, programPacked, locationPacked,
1681 count, value);
1682 }
1683 else
1684 {
1685 GenerateContextLostErrorOnCurrentGlobalContext();
1686 }
1687 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
1688 }
1689
1690 void GL_APIENTRY
GL_ProgramUniform4ui(GLuint program,GLint location,GLuint v0,GLuint v1,GLuint v2,GLuint v3)1691 GL_ProgramUniform4ui(GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3)
1692 {
1693 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
1694 Context *context = GetValidGlobalContext();
1695 EVENT(context, GLProgramUniform4ui,
1696 "context = %d, program = %u, location = %d, v0 = %u, v1 = %u, v2 = %u, v3 = %u",
1697 CID(context), program, location, v0, v1, v2, v3);
1698
1699 if (context)
1700 {
1701 ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);
1702 UniformLocation locationPacked = PackParam<UniformLocation>(location);
1703 SCOPED_SHARE_CONTEXT_LOCK(context);
1704 bool isCallValid =
1705 (context->skipValidation() ||
1706 (ValidatePixelLocalStorageInactive(context->getPrivateState(),
1707 context->getMutableErrorSetForValidation(),
1708 angle::EntryPoint::GLProgramUniform4ui) &&
1709 ValidateProgramUniform4ui(context, angle::EntryPoint::GLProgramUniform4ui,
1710 programPacked, locationPacked, v0, v1, v2, v3)));
1711 if (isCallValid)
1712 {
1713 context->programUniform4ui(programPacked, locationPacked, v0, v1, v2, v3);
1714 }
1715 ANGLE_CAPTURE_GL(ProgramUniform4ui, isCallValid, context, programPacked, locationPacked, v0,
1716 v1, v2, v3);
1717 }
1718 else
1719 {
1720 GenerateContextLostErrorOnCurrentGlobalContext();
1721 }
1722 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
1723 }
1724
GL_ProgramUniform4uiv(GLuint program,GLint location,GLsizei count,const GLuint * value)1725 void GL_APIENTRY GL_ProgramUniform4uiv(GLuint program,
1726 GLint location,
1727 GLsizei count,
1728 const GLuint *value)
1729 {
1730 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
1731 Context *context = GetValidGlobalContext();
1732 EVENT(context, GLProgramUniform4uiv,
1733 "context = %d, program = %u, location = %d, count = %d, value = 0x%016" PRIxPTR "",
1734 CID(context), program, location, count, (uintptr_t)value);
1735
1736 if (context)
1737 {
1738 ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);
1739 UniformLocation locationPacked = PackParam<UniformLocation>(location);
1740 SCOPED_SHARE_CONTEXT_LOCK(context);
1741 bool isCallValid =
1742 (context->skipValidation() ||
1743 (ValidatePixelLocalStorageInactive(context->getPrivateState(),
1744 context->getMutableErrorSetForValidation(),
1745 angle::EntryPoint::GLProgramUniform4uiv) &&
1746 ValidateProgramUniform4uiv(context, angle::EntryPoint::GLProgramUniform4uiv,
1747 programPacked, locationPacked, count, value)));
1748 if (isCallValid)
1749 {
1750 context->programUniform4uiv(programPacked, locationPacked, count, value);
1751 }
1752 ANGLE_CAPTURE_GL(ProgramUniform4uiv, isCallValid, context, programPacked, locationPacked,
1753 count, value);
1754 }
1755 else
1756 {
1757 GenerateContextLostErrorOnCurrentGlobalContext();
1758 }
1759 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
1760 }
1761
GL_ProgramUniformMatrix2fv(GLuint program,GLint location,GLsizei count,GLboolean transpose,const GLfloat * value)1762 void GL_APIENTRY GL_ProgramUniformMatrix2fv(GLuint program,
1763 GLint location,
1764 GLsizei count,
1765 GLboolean transpose,
1766 const GLfloat *value)
1767 {
1768 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
1769 Context *context = GetValidGlobalContext();
1770 EVENT(context, GLProgramUniformMatrix2fv,
1771 "context = %d, program = %u, location = %d, count = %d, transpose = %s, value = "
1772 "0x%016" PRIxPTR "",
1773 CID(context), program, location, count, GLbooleanToString(transpose), (uintptr_t)value);
1774
1775 if (context)
1776 {
1777 ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);
1778 UniformLocation locationPacked = PackParam<UniformLocation>(location);
1779 SCOPED_SHARE_CONTEXT_LOCK(context);
1780 bool isCallValid =
1781 (context->skipValidation() ||
1782 (ValidatePixelLocalStorageInactive(context->getPrivateState(),
1783 context->getMutableErrorSetForValidation(),
1784 angle::EntryPoint::GLProgramUniformMatrix2fv) &&
1785 ValidateProgramUniformMatrix2fv(context, angle::EntryPoint::GLProgramUniformMatrix2fv,
1786 programPacked, locationPacked, count, transpose,
1787 value)));
1788 if (isCallValid)
1789 {
1790 context->programUniformMatrix2fv(programPacked, locationPacked, count, transpose,
1791 value);
1792 }
1793 ANGLE_CAPTURE_GL(ProgramUniformMatrix2fv, isCallValid, context, programPacked,
1794 locationPacked, count, transpose, value);
1795 }
1796 else
1797 {
1798 GenerateContextLostErrorOnCurrentGlobalContext();
1799 }
1800 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
1801 }
1802
GL_ProgramUniformMatrix2x3fv(GLuint program,GLint location,GLsizei count,GLboolean transpose,const GLfloat * value)1803 void GL_APIENTRY GL_ProgramUniformMatrix2x3fv(GLuint program,
1804 GLint location,
1805 GLsizei count,
1806 GLboolean transpose,
1807 const GLfloat *value)
1808 {
1809 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
1810 Context *context = GetValidGlobalContext();
1811 EVENT(context, GLProgramUniformMatrix2x3fv,
1812 "context = %d, program = %u, location = %d, count = %d, transpose = %s, value = "
1813 "0x%016" PRIxPTR "",
1814 CID(context), program, location, count, GLbooleanToString(transpose), (uintptr_t)value);
1815
1816 if (context)
1817 {
1818 ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);
1819 UniformLocation locationPacked = PackParam<UniformLocation>(location);
1820 SCOPED_SHARE_CONTEXT_LOCK(context);
1821 bool isCallValid =
1822 (context->skipValidation() ||
1823 (ValidatePixelLocalStorageInactive(context->getPrivateState(),
1824 context->getMutableErrorSetForValidation(),
1825 angle::EntryPoint::GLProgramUniformMatrix2x3fv) &&
1826 ValidateProgramUniformMatrix2x3fv(
1827 context, angle::EntryPoint::GLProgramUniformMatrix2x3fv, programPacked,
1828 locationPacked, count, transpose, value)));
1829 if (isCallValid)
1830 {
1831 context->programUniformMatrix2x3fv(programPacked, locationPacked, count, transpose,
1832 value);
1833 }
1834 ANGLE_CAPTURE_GL(ProgramUniformMatrix2x3fv, isCallValid, context, programPacked,
1835 locationPacked, count, transpose, value);
1836 }
1837 else
1838 {
1839 GenerateContextLostErrorOnCurrentGlobalContext();
1840 }
1841 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
1842 }
1843
GL_ProgramUniformMatrix2x4fv(GLuint program,GLint location,GLsizei count,GLboolean transpose,const GLfloat * value)1844 void GL_APIENTRY GL_ProgramUniformMatrix2x4fv(GLuint program,
1845 GLint location,
1846 GLsizei count,
1847 GLboolean transpose,
1848 const GLfloat *value)
1849 {
1850 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
1851 Context *context = GetValidGlobalContext();
1852 EVENT(context, GLProgramUniformMatrix2x4fv,
1853 "context = %d, program = %u, location = %d, count = %d, transpose = %s, value = "
1854 "0x%016" PRIxPTR "",
1855 CID(context), program, location, count, GLbooleanToString(transpose), (uintptr_t)value);
1856
1857 if (context)
1858 {
1859 ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);
1860 UniformLocation locationPacked = PackParam<UniformLocation>(location);
1861 SCOPED_SHARE_CONTEXT_LOCK(context);
1862 bool isCallValid =
1863 (context->skipValidation() ||
1864 (ValidatePixelLocalStorageInactive(context->getPrivateState(),
1865 context->getMutableErrorSetForValidation(),
1866 angle::EntryPoint::GLProgramUniformMatrix2x4fv) &&
1867 ValidateProgramUniformMatrix2x4fv(
1868 context, angle::EntryPoint::GLProgramUniformMatrix2x4fv, programPacked,
1869 locationPacked, count, transpose, value)));
1870 if (isCallValid)
1871 {
1872 context->programUniformMatrix2x4fv(programPacked, locationPacked, count, transpose,
1873 value);
1874 }
1875 ANGLE_CAPTURE_GL(ProgramUniformMatrix2x4fv, isCallValid, context, programPacked,
1876 locationPacked, count, transpose, value);
1877 }
1878 else
1879 {
1880 GenerateContextLostErrorOnCurrentGlobalContext();
1881 }
1882 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
1883 }
1884
GL_ProgramUniformMatrix3fv(GLuint program,GLint location,GLsizei count,GLboolean transpose,const GLfloat * value)1885 void GL_APIENTRY GL_ProgramUniformMatrix3fv(GLuint program,
1886 GLint location,
1887 GLsizei count,
1888 GLboolean transpose,
1889 const GLfloat *value)
1890 {
1891 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
1892 Context *context = GetValidGlobalContext();
1893 EVENT(context, GLProgramUniformMatrix3fv,
1894 "context = %d, program = %u, location = %d, count = %d, transpose = %s, value = "
1895 "0x%016" PRIxPTR "",
1896 CID(context), program, location, count, GLbooleanToString(transpose), (uintptr_t)value);
1897
1898 if (context)
1899 {
1900 ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);
1901 UniformLocation locationPacked = PackParam<UniformLocation>(location);
1902 SCOPED_SHARE_CONTEXT_LOCK(context);
1903 bool isCallValid =
1904 (context->skipValidation() ||
1905 (ValidatePixelLocalStorageInactive(context->getPrivateState(),
1906 context->getMutableErrorSetForValidation(),
1907 angle::EntryPoint::GLProgramUniformMatrix3fv) &&
1908 ValidateProgramUniformMatrix3fv(context, angle::EntryPoint::GLProgramUniformMatrix3fv,
1909 programPacked, locationPacked, count, transpose,
1910 value)));
1911 if (isCallValid)
1912 {
1913 context->programUniformMatrix3fv(programPacked, locationPacked, count, transpose,
1914 value);
1915 }
1916 ANGLE_CAPTURE_GL(ProgramUniformMatrix3fv, isCallValid, context, programPacked,
1917 locationPacked, count, transpose, value);
1918 }
1919 else
1920 {
1921 GenerateContextLostErrorOnCurrentGlobalContext();
1922 }
1923 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
1924 }
1925
GL_ProgramUniformMatrix3x2fv(GLuint program,GLint location,GLsizei count,GLboolean transpose,const GLfloat * value)1926 void GL_APIENTRY GL_ProgramUniformMatrix3x2fv(GLuint program,
1927 GLint location,
1928 GLsizei count,
1929 GLboolean transpose,
1930 const GLfloat *value)
1931 {
1932 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
1933 Context *context = GetValidGlobalContext();
1934 EVENT(context, GLProgramUniformMatrix3x2fv,
1935 "context = %d, program = %u, location = %d, count = %d, transpose = %s, value = "
1936 "0x%016" PRIxPTR "",
1937 CID(context), program, location, count, GLbooleanToString(transpose), (uintptr_t)value);
1938
1939 if (context)
1940 {
1941 ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);
1942 UniformLocation locationPacked = PackParam<UniformLocation>(location);
1943 SCOPED_SHARE_CONTEXT_LOCK(context);
1944 bool isCallValid =
1945 (context->skipValidation() ||
1946 (ValidatePixelLocalStorageInactive(context->getPrivateState(),
1947 context->getMutableErrorSetForValidation(),
1948 angle::EntryPoint::GLProgramUniformMatrix3x2fv) &&
1949 ValidateProgramUniformMatrix3x2fv(
1950 context, angle::EntryPoint::GLProgramUniformMatrix3x2fv, programPacked,
1951 locationPacked, count, transpose, value)));
1952 if (isCallValid)
1953 {
1954 context->programUniformMatrix3x2fv(programPacked, locationPacked, count, transpose,
1955 value);
1956 }
1957 ANGLE_CAPTURE_GL(ProgramUniformMatrix3x2fv, isCallValid, context, programPacked,
1958 locationPacked, count, transpose, value);
1959 }
1960 else
1961 {
1962 GenerateContextLostErrorOnCurrentGlobalContext();
1963 }
1964 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
1965 }
1966
GL_ProgramUniformMatrix3x4fv(GLuint program,GLint location,GLsizei count,GLboolean transpose,const GLfloat * value)1967 void GL_APIENTRY GL_ProgramUniformMatrix3x4fv(GLuint program,
1968 GLint location,
1969 GLsizei count,
1970 GLboolean transpose,
1971 const GLfloat *value)
1972 {
1973 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
1974 Context *context = GetValidGlobalContext();
1975 EVENT(context, GLProgramUniformMatrix3x4fv,
1976 "context = %d, program = %u, location = %d, count = %d, transpose = %s, value = "
1977 "0x%016" PRIxPTR "",
1978 CID(context), program, location, count, GLbooleanToString(transpose), (uintptr_t)value);
1979
1980 if (context)
1981 {
1982 ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);
1983 UniformLocation locationPacked = PackParam<UniformLocation>(location);
1984 SCOPED_SHARE_CONTEXT_LOCK(context);
1985 bool isCallValid =
1986 (context->skipValidation() ||
1987 (ValidatePixelLocalStorageInactive(context->getPrivateState(),
1988 context->getMutableErrorSetForValidation(),
1989 angle::EntryPoint::GLProgramUniformMatrix3x4fv) &&
1990 ValidateProgramUniformMatrix3x4fv(
1991 context, angle::EntryPoint::GLProgramUniformMatrix3x4fv, programPacked,
1992 locationPacked, count, transpose, value)));
1993 if (isCallValid)
1994 {
1995 context->programUniformMatrix3x4fv(programPacked, locationPacked, count, transpose,
1996 value);
1997 }
1998 ANGLE_CAPTURE_GL(ProgramUniformMatrix3x4fv, isCallValid, context, programPacked,
1999 locationPacked, count, transpose, value);
2000 }
2001 else
2002 {
2003 GenerateContextLostErrorOnCurrentGlobalContext();
2004 }
2005 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
2006 }
2007
GL_ProgramUniformMatrix4fv(GLuint program,GLint location,GLsizei count,GLboolean transpose,const GLfloat * value)2008 void GL_APIENTRY GL_ProgramUniformMatrix4fv(GLuint program,
2009 GLint location,
2010 GLsizei count,
2011 GLboolean transpose,
2012 const GLfloat *value)
2013 {
2014 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
2015 Context *context = GetValidGlobalContext();
2016 EVENT(context, GLProgramUniformMatrix4fv,
2017 "context = %d, program = %u, location = %d, count = %d, transpose = %s, value = "
2018 "0x%016" PRIxPTR "",
2019 CID(context), program, location, count, GLbooleanToString(transpose), (uintptr_t)value);
2020
2021 if (context)
2022 {
2023 ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);
2024 UniformLocation locationPacked = PackParam<UniformLocation>(location);
2025 SCOPED_SHARE_CONTEXT_LOCK(context);
2026 bool isCallValid =
2027 (context->skipValidation() ||
2028 (ValidatePixelLocalStorageInactive(context->getPrivateState(),
2029 context->getMutableErrorSetForValidation(),
2030 angle::EntryPoint::GLProgramUniformMatrix4fv) &&
2031 ValidateProgramUniformMatrix4fv(context, angle::EntryPoint::GLProgramUniformMatrix4fv,
2032 programPacked, locationPacked, count, transpose,
2033 value)));
2034 if (isCallValid)
2035 {
2036 context->programUniformMatrix4fv(programPacked, locationPacked, count, transpose,
2037 value);
2038 }
2039 ANGLE_CAPTURE_GL(ProgramUniformMatrix4fv, isCallValid, context, programPacked,
2040 locationPacked, count, transpose, value);
2041 }
2042 else
2043 {
2044 GenerateContextLostErrorOnCurrentGlobalContext();
2045 }
2046 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
2047 }
2048
GL_ProgramUniformMatrix4x2fv(GLuint program,GLint location,GLsizei count,GLboolean transpose,const GLfloat * value)2049 void GL_APIENTRY GL_ProgramUniformMatrix4x2fv(GLuint program,
2050 GLint location,
2051 GLsizei count,
2052 GLboolean transpose,
2053 const GLfloat *value)
2054 {
2055 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
2056 Context *context = GetValidGlobalContext();
2057 EVENT(context, GLProgramUniformMatrix4x2fv,
2058 "context = %d, program = %u, location = %d, count = %d, transpose = %s, value = "
2059 "0x%016" PRIxPTR "",
2060 CID(context), program, location, count, GLbooleanToString(transpose), (uintptr_t)value);
2061
2062 if (context)
2063 {
2064 ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);
2065 UniformLocation locationPacked = PackParam<UniformLocation>(location);
2066 SCOPED_SHARE_CONTEXT_LOCK(context);
2067 bool isCallValid =
2068 (context->skipValidation() ||
2069 (ValidatePixelLocalStorageInactive(context->getPrivateState(),
2070 context->getMutableErrorSetForValidation(),
2071 angle::EntryPoint::GLProgramUniformMatrix4x2fv) &&
2072 ValidateProgramUniformMatrix4x2fv(
2073 context, angle::EntryPoint::GLProgramUniformMatrix4x2fv, programPacked,
2074 locationPacked, count, transpose, value)));
2075 if (isCallValid)
2076 {
2077 context->programUniformMatrix4x2fv(programPacked, locationPacked, count, transpose,
2078 value);
2079 }
2080 ANGLE_CAPTURE_GL(ProgramUniformMatrix4x2fv, isCallValid, context, programPacked,
2081 locationPacked, count, transpose, value);
2082 }
2083 else
2084 {
2085 GenerateContextLostErrorOnCurrentGlobalContext();
2086 }
2087 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
2088 }
2089
GL_ProgramUniformMatrix4x3fv(GLuint program,GLint location,GLsizei count,GLboolean transpose,const GLfloat * value)2090 void GL_APIENTRY GL_ProgramUniformMatrix4x3fv(GLuint program,
2091 GLint location,
2092 GLsizei count,
2093 GLboolean transpose,
2094 const GLfloat *value)
2095 {
2096 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
2097 Context *context = GetValidGlobalContext();
2098 EVENT(context, GLProgramUniformMatrix4x3fv,
2099 "context = %d, program = %u, location = %d, count = %d, transpose = %s, value = "
2100 "0x%016" PRIxPTR "",
2101 CID(context), program, location, count, GLbooleanToString(transpose), (uintptr_t)value);
2102
2103 if (context)
2104 {
2105 ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);
2106 UniformLocation locationPacked = PackParam<UniformLocation>(location);
2107 SCOPED_SHARE_CONTEXT_LOCK(context);
2108 bool isCallValid =
2109 (context->skipValidation() ||
2110 (ValidatePixelLocalStorageInactive(context->getPrivateState(),
2111 context->getMutableErrorSetForValidation(),
2112 angle::EntryPoint::GLProgramUniformMatrix4x3fv) &&
2113 ValidateProgramUniformMatrix4x3fv(
2114 context, angle::EntryPoint::GLProgramUniformMatrix4x3fv, programPacked,
2115 locationPacked, count, transpose, value)));
2116 if (isCallValid)
2117 {
2118 context->programUniformMatrix4x3fv(programPacked, locationPacked, count, transpose,
2119 value);
2120 }
2121 ANGLE_CAPTURE_GL(ProgramUniformMatrix4x3fv, isCallValid, context, programPacked,
2122 locationPacked, count, transpose, value);
2123 }
2124 else
2125 {
2126 GenerateContextLostErrorOnCurrentGlobalContext();
2127 }
2128 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
2129 }
2130
GL_SampleMaski(GLuint maskNumber,GLbitfield mask)2131 void GL_APIENTRY GL_SampleMaski(GLuint maskNumber, GLbitfield mask)
2132 {
2133 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
2134 Context *context = GetValidGlobalContext();
2135 EVENT(context, GLSampleMaski, "context = %d, maskNumber = %u, mask = %s", CID(context),
2136 maskNumber, GLbitfieldToString(GLESEnum::AllEnums, mask).c_str());
2137
2138 if (context)
2139 {
2140 bool isCallValid =
2141 (context->skipValidation() ||
2142 (ValidatePixelLocalStorageInactive(context->getPrivateState(),
2143 context->getMutableErrorSetForValidation(),
2144 angle::EntryPoint::GLSampleMaski) &&
2145 ValidateSampleMaski(context->getPrivateState(),
2146 context->getMutableErrorSetForValidation(),
2147 angle::EntryPoint::GLSampleMaski, maskNumber, mask)));
2148 if (isCallValid)
2149 {
2150 ContextPrivateSampleMaski(context->getMutablePrivateState(),
2151 context->getMutablePrivateStateCache(), maskNumber, mask);
2152 }
2153 ANGLE_CAPTURE_GL(SampleMaski, isCallValid, context, maskNumber, mask);
2154 }
2155 else
2156 {
2157 GenerateContextLostErrorOnCurrentGlobalContext();
2158 }
2159 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
2160 }
2161
GL_TexStorage2DMultisample(GLenum target,GLsizei samples,GLenum internalformat,GLsizei width,GLsizei height,GLboolean fixedsamplelocations)2162 void GL_APIENTRY GL_TexStorage2DMultisample(GLenum target,
2163 GLsizei samples,
2164 GLenum internalformat,
2165 GLsizei width,
2166 GLsizei height,
2167 GLboolean fixedsamplelocations)
2168 {
2169 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
2170 Context *context = GetValidGlobalContext();
2171 EVENT(context, GLTexStorage2DMultisample,
2172 "context = %d, target = %s, samples = %d, internalformat = %s, width = %d, height = %d, "
2173 "fixedsamplelocations = %s",
2174 CID(context), GLenumToString(GLESEnum::TextureTarget, target), samples,
2175 GLenumToString(GLESEnum::SizedInternalFormat, internalformat), width, height,
2176 GLbooleanToString(fixedsamplelocations));
2177
2178 if (context)
2179 {
2180 TextureType targetPacked = PackParam<TextureType>(target);
2181 SCOPED_SHARE_CONTEXT_LOCK(context);
2182 bool isCallValid =
2183 (context->skipValidation() ||
2184 (ValidatePixelLocalStorageInactive(context->getPrivateState(),
2185 context->getMutableErrorSetForValidation(),
2186 angle::EntryPoint::GLTexStorage2DMultisample) &&
2187 ValidateTexStorage2DMultisample(context, angle::EntryPoint::GLTexStorage2DMultisample,
2188 targetPacked, samples, internalformat, width, height,
2189 fixedsamplelocations)));
2190 if (isCallValid)
2191 {
2192 context->texStorage2DMultisample(targetPacked, samples, internalformat, width, height,
2193 fixedsamplelocations);
2194 }
2195 ANGLE_CAPTURE_GL(TexStorage2DMultisample, isCallValid, context, targetPacked, samples,
2196 internalformat, width, height, fixedsamplelocations);
2197 }
2198 else
2199 {
2200 GenerateContextLostErrorOnCurrentGlobalContext();
2201 }
2202 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
2203 }
2204
GL_UseProgramStages(GLuint pipeline,GLbitfield stages,GLuint program)2205 void GL_APIENTRY GL_UseProgramStages(GLuint pipeline, GLbitfield stages, GLuint program)
2206 {
2207 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
2208 Context *context = GetValidGlobalContext();
2209 EVENT(context, GLUseProgramStages, "context = %d, pipeline = %u, stages = %s, program = %u",
2210 CID(context), pipeline, GLbitfieldToString(GLESEnum::UseProgramStageMask, stages).c_str(),
2211 program);
2212
2213 if (context)
2214 {
2215 ProgramPipelineID pipelinePacked = PackParam<ProgramPipelineID>(pipeline);
2216 ShaderProgramID programPacked = PackParam<ShaderProgramID>(program);
2217 SCOPED_SHARE_CONTEXT_LOCK(context);
2218 bool isCallValid =
2219 (context->skipValidation() ||
2220 (ValidatePixelLocalStorageInactive(context->getPrivateState(),
2221 context->getMutableErrorSetForValidation(),
2222 angle::EntryPoint::GLUseProgramStages) &&
2223 ValidateUseProgramStages(context, angle::EntryPoint::GLUseProgramStages,
2224 pipelinePacked, stages, programPacked)));
2225 if (isCallValid)
2226 {
2227 context->useProgramStages(pipelinePacked, stages, programPacked);
2228 }
2229 ANGLE_CAPTURE_GL(UseProgramStages, isCallValid, context, pipelinePacked, stages,
2230 programPacked);
2231 }
2232 else
2233 {
2234 GenerateContextLostErrorOnCurrentGlobalContext();
2235 }
2236 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
2237 }
2238
GL_ValidateProgramPipeline(GLuint pipeline)2239 void GL_APIENTRY GL_ValidateProgramPipeline(GLuint pipeline)
2240 {
2241 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
2242 Context *context = GetValidGlobalContext();
2243 EVENT(context, GLValidateProgramPipeline, "context = %d, pipeline = %u", CID(context),
2244 pipeline);
2245
2246 if (context)
2247 {
2248 ProgramPipelineID pipelinePacked = PackParam<ProgramPipelineID>(pipeline);
2249 SCOPED_SHARE_CONTEXT_LOCK(context);
2250 bool isCallValid =
2251 (context->skipValidation() ||
2252 (ValidatePixelLocalStorageInactive(context->getPrivateState(),
2253 context->getMutableErrorSetForValidation(),
2254 angle::EntryPoint::GLValidateProgramPipeline) &&
2255 ValidateValidateProgramPipeline(context, angle::EntryPoint::GLValidateProgramPipeline,
2256 pipelinePacked)));
2257 if (isCallValid)
2258 {
2259 context->validateProgramPipeline(pipelinePacked);
2260 }
2261 ANGLE_CAPTURE_GL(ValidateProgramPipeline, isCallValid, context, pipelinePacked);
2262 }
2263 else
2264 {
2265 GenerateContextLostErrorOnCurrentGlobalContext();
2266 }
2267 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
2268 }
2269
GL_VertexAttribBinding(GLuint attribindex,GLuint bindingindex)2270 void GL_APIENTRY GL_VertexAttribBinding(GLuint attribindex, GLuint bindingindex)
2271 {
2272 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
2273 Context *context = GetValidGlobalContext();
2274 EVENT(context, GLVertexAttribBinding, "context = %d, attribindex = %u, bindingindex = %u",
2275 CID(context), attribindex, bindingindex);
2276
2277 if (context)
2278 {
2279 SCOPED_SHARE_CONTEXT_LOCK(context);
2280 bool isCallValid =
2281 (context->skipValidation() ||
2282 ValidateVertexAttribBinding(context, angle::EntryPoint::GLVertexAttribBinding,
2283 attribindex, bindingindex));
2284 if (isCallValid)
2285 {
2286 context->vertexAttribBinding(attribindex, bindingindex);
2287 }
2288 ANGLE_CAPTURE_GL(VertexAttribBinding, isCallValid, context, attribindex, bindingindex);
2289 }
2290 else
2291 {
2292 GenerateContextLostErrorOnCurrentGlobalContext();
2293 }
2294 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
2295 }
2296
GL_VertexAttribFormat(GLuint attribindex,GLint size,GLenum type,GLboolean normalized,GLuint relativeoffset)2297 void GL_APIENTRY GL_VertexAttribFormat(GLuint attribindex,
2298 GLint size,
2299 GLenum type,
2300 GLboolean normalized,
2301 GLuint relativeoffset)
2302 {
2303 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
2304 Context *context = GetValidGlobalContext();
2305 EVENT(context, GLVertexAttribFormat,
2306 "context = %d, attribindex = %u, size = %d, type = %s, normalized = %s, relativeoffset = "
2307 "%u",
2308 CID(context), attribindex, size, GLenumToString(GLESEnum::VertexAttribType, type),
2309 GLbooleanToString(normalized), relativeoffset);
2310
2311 if (context)
2312 {
2313 VertexAttribType typePacked = PackParam<VertexAttribType>(type);
2314 SCOPED_SHARE_CONTEXT_LOCK(context);
2315 bool isCallValid =
2316 (context->skipValidation() ||
2317 ValidateVertexAttribFormat(context, angle::EntryPoint::GLVertexAttribFormat,
2318 attribindex, size, typePacked, normalized, relativeoffset));
2319 if (isCallValid)
2320 {
2321 context->vertexAttribFormat(attribindex, size, typePacked, normalized, relativeoffset);
2322 }
2323 ANGLE_CAPTURE_GL(VertexAttribFormat, isCallValid, context, attribindex, size, typePacked,
2324 normalized, relativeoffset);
2325 }
2326 else
2327 {
2328 GenerateContextLostErrorOnCurrentGlobalContext();
2329 }
2330 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
2331 }
2332
GL_VertexAttribIFormat(GLuint attribindex,GLint size,GLenum type,GLuint relativeoffset)2333 void GL_APIENTRY GL_VertexAttribIFormat(GLuint attribindex,
2334 GLint size,
2335 GLenum type,
2336 GLuint relativeoffset)
2337 {
2338 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
2339 Context *context = GetValidGlobalContext();
2340 EVENT(context, GLVertexAttribIFormat,
2341 "context = %d, attribindex = %u, size = %d, type = %s, relativeoffset = %u", CID(context),
2342 attribindex, size, GLenumToString(GLESEnum::VertexAttribIType, type), relativeoffset);
2343
2344 if (context)
2345 {
2346 VertexAttribType typePacked = PackParam<VertexAttribType>(type);
2347 SCOPED_SHARE_CONTEXT_LOCK(context);
2348 bool isCallValid =
2349 (context->skipValidation() ||
2350 ValidateVertexAttribIFormat(context, angle::EntryPoint::GLVertexAttribIFormat,
2351 attribindex, size, typePacked, relativeoffset));
2352 if (isCallValid)
2353 {
2354 context->vertexAttribIFormat(attribindex, size, typePacked, relativeoffset);
2355 }
2356 ANGLE_CAPTURE_GL(VertexAttribIFormat, isCallValid, context, attribindex, size, typePacked,
2357 relativeoffset);
2358 }
2359 else
2360 {
2361 GenerateContextLostErrorOnCurrentGlobalContext();
2362 }
2363 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
2364 }
2365
GL_VertexBindingDivisor(GLuint bindingindex,GLuint divisor)2366 void GL_APIENTRY GL_VertexBindingDivisor(GLuint bindingindex, GLuint divisor)
2367 {
2368 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
2369 Context *context = GetValidGlobalContext();
2370 EVENT(context, GLVertexBindingDivisor, "context = %d, bindingindex = %u, divisor = %u",
2371 CID(context), bindingindex, divisor);
2372
2373 if (context)
2374 {
2375 SCOPED_SHARE_CONTEXT_LOCK(context);
2376 bool isCallValid =
2377 (context->skipValidation() ||
2378 (ValidatePixelLocalStorageInactive(context->getPrivateState(),
2379 context->getMutableErrorSetForValidation(),
2380 angle::EntryPoint::GLVertexBindingDivisor) &&
2381 ValidateVertexBindingDivisor(context, angle::EntryPoint::GLVertexBindingDivisor,
2382 bindingindex, divisor)));
2383 if (isCallValid)
2384 {
2385 context->vertexBindingDivisor(bindingindex, divisor);
2386 }
2387 ANGLE_CAPTURE_GL(VertexBindingDivisor, isCallValid, context, bindingindex, divisor);
2388 }
2389 else
2390 {
2391 GenerateContextLostErrorOnCurrentGlobalContext();
2392 }
2393 ASSERT(!egl::Display::GetCurrentThreadUnlockedTailCall()->any());
2394 }
2395
2396 } // extern "C"
2397