• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // GENERATED FILE - DO NOT EDIT.
2 // Generated by generate_entry_points.py using data from gl.xml and gl_angle_ext.xml.
3 //
4 // Copyright 2020 The ANGLE Project Authors. All rights reserved.
5 // Use of this source code is governed by a BSD-style license that can be
6 // found in the LICENSE file.
7 //
8 // capture_gles_ext_autogen.cpp:
9 //   Capture functions for the OpenGL ES extension entry points.
10 
11 #include "libANGLE/capture/capture_gles_ext_autogen.h"
12 
13 #include "libANGLE/Context.h"
14 #include "libANGLE/capture/FrameCapture.h"
15 #include "libANGLE/capture/gl_enum_utils.h"
16 #include "libANGLE/validationESEXT.h"
17 
18 using namespace angle;
19 
20 namespace gl
21 {
22 
CaptureDrawArraysInstancedBaseInstanceANGLE(const State & glState,bool isCallValid,PrimitiveMode modePacked,GLint first,GLsizei count,GLsizei instanceCount,GLuint baseInstance)23 CallCapture CaptureDrawArraysInstancedBaseInstanceANGLE(const State &glState,
24                                                         bool isCallValid,
25                                                         PrimitiveMode modePacked,
26                                                         GLint first,
27                                                         GLsizei count,
28                                                         GLsizei instanceCount,
29                                                         GLuint baseInstance)
30 {
31     ParamBuffer paramBuffer;
32 
33     paramBuffer.addValueParam("modePacked", ParamType::TPrimitiveMode, modePacked);
34     paramBuffer.addValueParam("first", ParamType::TGLint, first);
35     paramBuffer.addValueParam("count", ParamType::TGLsizei, count);
36     paramBuffer.addValueParam("instanceCount", ParamType::TGLsizei, instanceCount);
37     paramBuffer.addValueParam("baseInstance", ParamType::TGLuint, baseInstance);
38 
39     return CallCapture(angle::EntryPoint::GLDrawArraysInstancedBaseInstanceANGLE,
40                        std::move(paramBuffer));
41 }
42 
CaptureDrawElementsInstancedBaseVertexBaseInstanceANGLE(const State & glState,bool isCallValid,PrimitiveMode modePacked,GLsizei count,DrawElementsType typePacked,const GLvoid * indices,GLsizei instanceCounts,GLint baseVertex,GLuint baseInstance)43 CallCapture CaptureDrawElementsInstancedBaseVertexBaseInstanceANGLE(const State &glState,
44                                                                     bool isCallValid,
45                                                                     PrimitiveMode modePacked,
46                                                                     GLsizei count,
47                                                                     DrawElementsType typePacked,
48                                                                     const GLvoid *indices,
49                                                                     GLsizei instanceCounts,
50                                                                     GLint baseVertex,
51                                                                     GLuint baseInstance)
52 {
53     ParamBuffer paramBuffer;
54 
55     paramBuffer.addValueParam("modePacked", ParamType::TPrimitiveMode, modePacked);
56     paramBuffer.addValueParam("count", ParamType::TGLsizei, count);
57     paramBuffer.addValueParam("typePacked", ParamType::TDrawElementsType, typePacked);
58 
59     if (isCallValid)
60     {
61         ParamCapture indicesParam("indices", ParamType::TGLvoidConstPointer);
62         InitParamValue(ParamType::TGLvoidConstPointer, indices, &indicesParam.value);
63         CaptureDrawElementsInstancedBaseVertexBaseInstanceANGLE_indices(
64             glState, isCallValid, modePacked, count, typePacked, indices, instanceCounts,
65             baseVertex, baseInstance, &indicesParam);
66         paramBuffer.addParam(std::move(indicesParam));
67     }
68     else
69     {
70         ParamCapture indicesParam("indices", ParamType::TGLvoidConstPointer);
71         InitParamValue(ParamType::TGLvoidConstPointer, static_cast<const GLvoid *>(nullptr),
72                        &indicesParam.value);
73         paramBuffer.addParam(std::move(indicesParam));
74     }
75 
76     paramBuffer.addValueParam("instanceCounts", ParamType::TGLsizei, instanceCounts);
77     paramBuffer.addValueParam("baseVertex", ParamType::TGLint, baseVertex);
78     paramBuffer.addValueParam("baseInstance", ParamType::TGLuint, baseInstance);
79 
80     return CallCapture(angle::EntryPoint::GLDrawElementsInstancedBaseVertexBaseInstanceANGLE,
81                        std::move(paramBuffer));
82 }
83 
CaptureMultiDrawArraysInstancedBaseInstanceANGLE(const State & glState,bool isCallValid,PrimitiveMode modePacked,const GLint * firsts,const GLsizei * counts,const GLsizei * instanceCounts,const GLuint * baseInstances,GLsizei drawcount)84 CallCapture CaptureMultiDrawArraysInstancedBaseInstanceANGLE(const State &glState,
85                                                              bool isCallValid,
86                                                              PrimitiveMode modePacked,
87                                                              const GLint *firsts,
88                                                              const GLsizei *counts,
89                                                              const GLsizei *instanceCounts,
90                                                              const GLuint *baseInstances,
91                                                              GLsizei drawcount)
92 {
93     ParamBuffer paramBuffer;
94 
95     paramBuffer.addValueParam("modePacked", ParamType::TPrimitiveMode, modePacked);
96 
97     if (isCallValid)
98     {
99         ParamCapture firstsParam("firsts", ParamType::TGLintConstPointer);
100         InitParamValue(ParamType::TGLintConstPointer, firsts, &firstsParam.value);
101         CaptureMultiDrawArraysInstancedBaseInstanceANGLE_firsts(
102             glState, isCallValid, modePacked, firsts, counts, instanceCounts, baseInstances,
103             drawcount, &firstsParam);
104         paramBuffer.addParam(std::move(firstsParam));
105     }
106     else
107     {
108         ParamCapture firstsParam("firsts", ParamType::TGLintConstPointer);
109         InitParamValue(ParamType::TGLintConstPointer, static_cast<const GLint *>(nullptr),
110                        &firstsParam.value);
111         paramBuffer.addParam(std::move(firstsParam));
112     }
113 
114     if (isCallValid)
115     {
116         ParamCapture countsParam("counts", ParamType::TGLsizeiConstPointer);
117         InitParamValue(ParamType::TGLsizeiConstPointer, counts, &countsParam.value);
118         CaptureMultiDrawArraysInstancedBaseInstanceANGLE_counts(
119             glState, isCallValid, modePacked, firsts, counts, instanceCounts, baseInstances,
120             drawcount, &countsParam);
121         paramBuffer.addParam(std::move(countsParam));
122     }
123     else
124     {
125         ParamCapture countsParam("counts", ParamType::TGLsizeiConstPointer);
126         InitParamValue(ParamType::TGLsizeiConstPointer, static_cast<const GLsizei *>(nullptr),
127                        &countsParam.value);
128         paramBuffer.addParam(std::move(countsParam));
129     }
130 
131     if (isCallValid)
132     {
133         ParamCapture instanceCountsParam("instanceCounts", ParamType::TGLsizeiConstPointer);
134         InitParamValue(ParamType::TGLsizeiConstPointer, instanceCounts, &instanceCountsParam.value);
135         CaptureMultiDrawArraysInstancedBaseInstanceANGLE_instanceCounts(
136             glState, isCallValid, modePacked, firsts, counts, instanceCounts, baseInstances,
137             drawcount, &instanceCountsParam);
138         paramBuffer.addParam(std::move(instanceCountsParam));
139     }
140     else
141     {
142         ParamCapture instanceCountsParam("instanceCounts", ParamType::TGLsizeiConstPointer);
143         InitParamValue(ParamType::TGLsizeiConstPointer, static_cast<const GLsizei *>(nullptr),
144                        &instanceCountsParam.value);
145         paramBuffer.addParam(std::move(instanceCountsParam));
146     }
147 
148     if (isCallValid)
149     {
150         ParamCapture baseInstancesParam("baseInstances", ParamType::TGLuintConstPointer);
151         InitParamValue(ParamType::TGLuintConstPointer, baseInstances, &baseInstancesParam.value);
152         CaptureMultiDrawArraysInstancedBaseInstanceANGLE_baseInstances(
153             glState, isCallValid, modePacked, firsts, counts, instanceCounts, baseInstances,
154             drawcount, &baseInstancesParam);
155         paramBuffer.addParam(std::move(baseInstancesParam));
156     }
157     else
158     {
159         ParamCapture baseInstancesParam("baseInstances", ParamType::TGLuintConstPointer);
160         InitParamValue(ParamType::TGLuintConstPointer, static_cast<const GLuint *>(nullptr),
161                        &baseInstancesParam.value);
162         paramBuffer.addParam(std::move(baseInstancesParam));
163     }
164 
165     paramBuffer.addValueParam("drawcount", ParamType::TGLsizei, drawcount);
166 
167     return CallCapture(angle::EntryPoint::GLMultiDrawArraysInstancedBaseInstanceANGLE,
168                        std::move(paramBuffer));
169 }
170 
CaptureMultiDrawElementsInstancedBaseVertexBaseInstanceANGLE(const State & glState,bool isCallValid,PrimitiveMode modePacked,const GLsizei * counts,DrawElementsType typePacked,const GLvoid * const * indices,const GLsizei * instanceCounts,const GLint * baseVertices,const GLuint * baseInstances,GLsizei drawcount)171 CallCapture CaptureMultiDrawElementsInstancedBaseVertexBaseInstanceANGLE(
172     const State &glState,
173     bool isCallValid,
174     PrimitiveMode modePacked,
175     const GLsizei *counts,
176     DrawElementsType typePacked,
177     const GLvoid *const *indices,
178     const GLsizei *instanceCounts,
179     const GLint *baseVertices,
180     const GLuint *baseInstances,
181     GLsizei drawcount)
182 {
183     ParamBuffer paramBuffer;
184 
185     paramBuffer.addValueParam("modePacked", ParamType::TPrimitiveMode, modePacked);
186 
187     if (isCallValid)
188     {
189         ParamCapture countsParam("counts", ParamType::TGLsizeiConstPointer);
190         InitParamValue(ParamType::TGLsizeiConstPointer, counts, &countsParam.value);
191         CaptureMultiDrawElementsInstancedBaseVertexBaseInstanceANGLE_counts(
192             glState, isCallValid, modePacked, counts, typePacked, indices, instanceCounts,
193             baseVertices, baseInstances, drawcount, &countsParam);
194         paramBuffer.addParam(std::move(countsParam));
195     }
196     else
197     {
198         ParamCapture countsParam("counts", ParamType::TGLsizeiConstPointer);
199         InitParamValue(ParamType::TGLsizeiConstPointer, static_cast<const GLsizei *>(nullptr),
200                        &countsParam.value);
201         paramBuffer.addParam(std::move(countsParam));
202     }
203 
204     paramBuffer.addValueParam("typePacked", ParamType::TDrawElementsType, typePacked);
205 
206     if (isCallValid)
207     {
208         ParamCapture indicesParam("indices", ParamType::TGLvoidConstPointerPointer);
209         InitParamValue(ParamType::TGLvoidConstPointerPointer, indices, &indicesParam.value);
210         CaptureMultiDrawElementsInstancedBaseVertexBaseInstanceANGLE_indices(
211             glState, isCallValid, modePacked, counts, typePacked, indices, instanceCounts,
212             baseVertices, baseInstances, drawcount, &indicesParam);
213         paramBuffer.addParam(std::move(indicesParam));
214     }
215     else
216     {
217         ParamCapture indicesParam("indices", ParamType::TGLvoidConstPointerPointer);
218         InitParamValue(ParamType::TGLvoidConstPointerPointer,
219                        static_cast<const GLvoid *const *>(nullptr), &indicesParam.value);
220         paramBuffer.addParam(std::move(indicesParam));
221     }
222 
223     if (isCallValid)
224     {
225         ParamCapture instanceCountsParam("instanceCounts", ParamType::TGLsizeiConstPointer);
226         InitParamValue(ParamType::TGLsizeiConstPointer, instanceCounts, &instanceCountsParam.value);
227         CaptureMultiDrawElementsInstancedBaseVertexBaseInstanceANGLE_instanceCounts(
228             glState, isCallValid, modePacked, counts, typePacked, indices, instanceCounts,
229             baseVertices, baseInstances, drawcount, &instanceCountsParam);
230         paramBuffer.addParam(std::move(instanceCountsParam));
231     }
232     else
233     {
234         ParamCapture instanceCountsParam("instanceCounts", ParamType::TGLsizeiConstPointer);
235         InitParamValue(ParamType::TGLsizeiConstPointer, static_cast<const GLsizei *>(nullptr),
236                        &instanceCountsParam.value);
237         paramBuffer.addParam(std::move(instanceCountsParam));
238     }
239 
240     if (isCallValid)
241     {
242         ParamCapture baseVerticesParam("baseVertices", ParamType::TGLintConstPointer);
243         InitParamValue(ParamType::TGLintConstPointer, baseVertices, &baseVerticesParam.value);
244         CaptureMultiDrawElementsInstancedBaseVertexBaseInstanceANGLE_baseVertices(
245             glState, isCallValid, modePacked, counts, typePacked, indices, instanceCounts,
246             baseVertices, baseInstances, drawcount, &baseVerticesParam);
247         paramBuffer.addParam(std::move(baseVerticesParam));
248     }
249     else
250     {
251         ParamCapture baseVerticesParam("baseVertices", ParamType::TGLintConstPointer);
252         InitParamValue(ParamType::TGLintConstPointer, static_cast<const GLint *>(nullptr),
253                        &baseVerticesParam.value);
254         paramBuffer.addParam(std::move(baseVerticesParam));
255     }
256 
257     if (isCallValid)
258     {
259         ParamCapture baseInstancesParam("baseInstances", ParamType::TGLuintConstPointer);
260         InitParamValue(ParamType::TGLuintConstPointer, baseInstances, &baseInstancesParam.value);
261         CaptureMultiDrawElementsInstancedBaseVertexBaseInstanceANGLE_baseInstances(
262             glState, isCallValid, modePacked, counts, typePacked, indices, instanceCounts,
263             baseVertices, baseInstances, drawcount, &baseInstancesParam);
264         paramBuffer.addParam(std::move(baseInstancesParam));
265     }
266     else
267     {
268         ParamCapture baseInstancesParam("baseInstances", ParamType::TGLuintConstPointer);
269         InitParamValue(ParamType::TGLuintConstPointer, static_cast<const GLuint *>(nullptr),
270                        &baseInstancesParam.value);
271         paramBuffer.addParam(std::move(baseInstancesParam));
272     }
273 
274     paramBuffer.addValueParam("drawcount", ParamType::TGLsizei, drawcount);
275 
276     return CallCapture(angle::EntryPoint::GLMultiDrawElementsInstancedBaseVertexBaseInstanceANGLE,
277                        std::move(paramBuffer));
278 }
279 
CaptureCopyTexture3DANGLE(const State & glState,bool isCallValid,TextureID sourceIdPacked,GLint sourceLevel,TextureTarget destTargetPacked,TextureID destIdPacked,GLint destLevel,GLint internalFormat,GLenum destType,GLboolean unpackFlipY,GLboolean unpackPremultiplyAlpha,GLboolean unpackUnmultiplyAlpha)280 CallCapture CaptureCopyTexture3DANGLE(const State &glState,
281                                       bool isCallValid,
282                                       TextureID sourceIdPacked,
283                                       GLint sourceLevel,
284                                       TextureTarget destTargetPacked,
285                                       TextureID destIdPacked,
286                                       GLint destLevel,
287                                       GLint internalFormat,
288                                       GLenum destType,
289                                       GLboolean unpackFlipY,
290                                       GLboolean unpackPremultiplyAlpha,
291                                       GLboolean unpackUnmultiplyAlpha)
292 {
293     ParamBuffer paramBuffer;
294 
295     paramBuffer.addValueParam("sourceIdPacked", ParamType::TTextureID, sourceIdPacked);
296     paramBuffer.addValueParam("sourceLevel", ParamType::TGLint, sourceLevel);
297     paramBuffer.addValueParam("destTargetPacked", ParamType::TTextureTarget, destTargetPacked);
298     paramBuffer.addValueParam("destIdPacked", ParamType::TTextureID, destIdPacked);
299     paramBuffer.addValueParam("destLevel", ParamType::TGLint, destLevel);
300     paramBuffer.addValueParam("internalFormat", ParamType::TGLint, internalFormat);
301     paramBuffer.addEnumParam("destType", GLenumGroup::DefaultGroup, ParamType::TGLenum, destType);
302     paramBuffer.addValueParam("unpackFlipY", ParamType::TGLboolean, unpackFlipY);
303     paramBuffer.addValueParam("unpackPremultiplyAlpha", ParamType::TGLboolean,
304                               unpackPremultiplyAlpha);
305     paramBuffer.addValueParam("unpackUnmultiplyAlpha", ParamType::TGLboolean,
306                               unpackUnmultiplyAlpha);
307 
308     return CallCapture(angle::EntryPoint::GLCopyTexture3DANGLE, std::move(paramBuffer));
309 }
310 
CaptureCopySubTexture3DANGLE(const State & glState,bool isCallValid,TextureID sourceIdPacked,GLint sourceLevel,TextureTarget destTargetPacked,TextureID destIdPacked,GLint destLevel,GLint xoffset,GLint yoffset,GLint zoffset,GLint x,GLint y,GLint z,GLint width,GLint height,GLint depth,GLboolean unpackFlipY,GLboolean unpackPremultiplyAlpha,GLboolean unpackUnmultiplyAlpha)311 CallCapture CaptureCopySubTexture3DANGLE(const State &glState,
312                                          bool isCallValid,
313                                          TextureID sourceIdPacked,
314                                          GLint sourceLevel,
315                                          TextureTarget destTargetPacked,
316                                          TextureID destIdPacked,
317                                          GLint destLevel,
318                                          GLint xoffset,
319                                          GLint yoffset,
320                                          GLint zoffset,
321                                          GLint x,
322                                          GLint y,
323                                          GLint z,
324                                          GLint width,
325                                          GLint height,
326                                          GLint depth,
327                                          GLboolean unpackFlipY,
328                                          GLboolean unpackPremultiplyAlpha,
329                                          GLboolean unpackUnmultiplyAlpha)
330 {
331     ParamBuffer paramBuffer;
332 
333     paramBuffer.addValueParam("sourceIdPacked", ParamType::TTextureID, sourceIdPacked);
334     paramBuffer.addValueParam("sourceLevel", ParamType::TGLint, sourceLevel);
335     paramBuffer.addValueParam("destTargetPacked", ParamType::TTextureTarget, destTargetPacked);
336     paramBuffer.addValueParam("destIdPacked", ParamType::TTextureID, destIdPacked);
337     paramBuffer.addValueParam("destLevel", ParamType::TGLint, destLevel);
338     paramBuffer.addValueParam("xoffset", ParamType::TGLint, xoffset);
339     paramBuffer.addValueParam("yoffset", ParamType::TGLint, yoffset);
340     paramBuffer.addValueParam("zoffset", ParamType::TGLint, zoffset);
341     paramBuffer.addValueParam("x", ParamType::TGLint, x);
342     paramBuffer.addValueParam("y", ParamType::TGLint, y);
343     paramBuffer.addValueParam("z", ParamType::TGLint, z);
344     paramBuffer.addValueParam("width", ParamType::TGLint, width);
345     paramBuffer.addValueParam("height", ParamType::TGLint, height);
346     paramBuffer.addValueParam("depth", ParamType::TGLint, depth);
347     paramBuffer.addValueParam("unpackFlipY", ParamType::TGLboolean, unpackFlipY);
348     paramBuffer.addValueParam("unpackPremultiplyAlpha", ParamType::TGLboolean,
349                               unpackPremultiplyAlpha);
350     paramBuffer.addValueParam("unpackUnmultiplyAlpha", ParamType::TGLboolean,
351                               unpackUnmultiplyAlpha);
352 
353     return CallCapture(angle::EntryPoint::GLCopySubTexture3DANGLE, std::move(paramBuffer));
354 }
355 
CaptureBlitFramebufferANGLE(const State & glState,bool isCallValid,GLint srcX0,GLint srcY0,GLint srcX1,GLint srcY1,GLint dstX0,GLint dstY0,GLint dstX1,GLint dstY1,GLbitfield mask,GLenum filter)356 CallCapture CaptureBlitFramebufferANGLE(const State &glState,
357                                         bool isCallValid,
358                                         GLint srcX0,
359                                         GLint srcY0,
360                                         GLint srcX1,
361                                         GLint srcY1,
362                                         GLint dstX0,
363                                         GLint dstY0,
364                                         GLint dstX1,
365                                         GLint dstY1,
366                                         GLbitfield mask,
367                                         GLenum filter)
368 {
369     ParamBuffer paramBuffer;
370 
371     paramBuffer.addValueParam("srcX0", ParamType::TGLint, srcX0);
372     paramBuffer.addValueParam("srcY0", ParamType::TGLint, srcY0);
373     paramBuffer.addValueParam("srcX1", ParamType::TGLint, srcX1);
374     paramBuffer.addValueParam("srcY1", ParamType::TGLint, srcY1);
375     paramBuffer.addValueParam("dstX0", ParamType::TGLint, dstX0);
376     paramBuffer.addValueParam("dstY0", ParamType::TGLint, dstY0);
377     paramBuffer.addValueParam("dstX1", ParamType::TGLint, dstX1);
378     paramBuffer.addValueParam("dstY1", ParamType::TGLint, dstY1);
379     paramBuffer.addEnumParam("mask", GLenumGroup::ClearBufferMask, ParamType::TGLbitfield, mask);
380     paramBuffer.addEnumParam("filter", GLenumGroup::BlitFramebufferFilter, ParamType::TGLenum,
381                              filter);
382 
383     return CallCapture(angle::EntryPoint::GLBlitFramebufferANGLE, std::move(paramBuffer));
384 }
385 
CaptureRenderbufferStorageMultisampleANGLE(const State & glState,bool isCallValid,GLenum target,GLsizei samples,GLenum internalformat,GLsizei width,GLsizei height)386 CallCapture CaptureRenderbufferStorageMultisampleANGLE(const State &glState,
387                                                        bool isCallValid,
388                                                        GLenum target,
389                                                        GLsizei samples,
390                                                        GLenum internalformat,
391                                                        GLsizei width,
392                                                        GLsizei height)
393 {
394     ParamBuffer paramBuffer;
395 
396     paramBuffer.addEnumParam("target", GLenumGroup::RenderbufferTarget, ParamType::TGLenum, target);
397     paramBuffer.addValueParam("samples", ParamType::TGLsizei, samples);
398     paramBuffer.addEnumParam("internalformat", GLenumGroup::InternalFormat, ParamType::TGLenum,
399                              internalformat);
400     paramBuffer.addValueParam("width", ParamType::TGLsizei, width);
401     paramBuffer.addValueParam("height", ParamType::TGLsizei, height);
402 
403     return CallCapture(angle::EntryPoint::GLRenderbufferStorageMultisampleANGLE,
404                        std::move(paramBuffer));
405 }
406 
CaptureGetTexImageANGLE(const State & glState,bool isCallValid,TextureTarget targetPacked,GLint level,GLenum format,GLenum type,void * pixels)407 CallCapture CaptureGetTexImageANGLE(const State &glState,
408                                     bool isCallValid,
409                                     TextureTarget targetPacked,
410                                     GLint level,
411                                     GLenum format,
412                                     GLenum type,
413                                     void *pixels)
414 {
415     ParamBuffer paramBuffer;
416 
417     paramBuffer.addValueParam("targetPacked", ParamType::TTextureTarget, targetPacked);
418     paramBuffer.addValueParam("level", ParamType::TGLint, level);
419     paramBuffer.addEnumParam("format", GLenumGroup::PixelFormat, ParamType::TGLenum, format);
420     paramBuffer.addEnumParam("type", GLenumGroup::PixelType, ParamType::TGLenum, type);
421 
422     if (isCallValid)
423     {
424         ParamCapture pixelsParam("pixels", ParamType::TvoidPointer);
425         InitParamValue(ParamType::TvoidPointer, pixels, &pixelsParam.value);
426         CaptureGetTexImageANGLE_pixels(glState, isCallValid, targetPacked, level, format, type,
427                                        pixels, &pixelsParam);
428         paramBuffer.addParam(std::move(pixelsParam));
429     }
430     else
431     {
432         ParamCapture pixelsParam("pixels", ParamType::TvoidPointer);
433         InitParamValue(ParamType::TvoidPointer, static_cast<void *>(nullptr), &pixelsParam.value);
434         paramBuffer.addParam(std::move(pixelsParam));
435     }
436 
437     return CallCapture(angle::EntryPoint::GLGetTexImageANGLE, std::move(paramBuffer));
438 }
439 
CaptureGetCompressedTexImageANGLE(const State & glState,bool isCallValid,TextureTarget targetPacked,GLint level,void * pixels)440 CallCapture CaptureGetCompressedTexImageANGLE(const State &glState,
441                                               bool isCallValid,
442                                               TextureTarget targetPacked,
443                                               GLint level,
444                                               void *pixels)
445 {
446     ParamBuffer paramBuffer;
447 
448     paramBuffer.addValueParam("targetPacked", ParamType::TTextureTarget, targetPacked);
449     paramBuffer.addValueParam("level", ParamType::TGLint, level);
450 
451     if (isCallValid)
452     {
453         ParamCapture pixelsParam("pixels", ParamType::TvoidPointer);
454         InitParamValue(ParamType::TvoidPointer, pixels, &pixelsParam.value);
455         CaptureGetCompressedTexImageANGLE_pixels(glState, isCallValid, targetPacked, level, pixels,
456                                                  &pixelsParam);
457         paramBuffer.addParam(std::move(pixelsParam));
458     }
459     else
460     {
461         ParamCapture pixelsParam("pixels", ParamType::TvoidPointer);
462         InitParamValue(ParamType::TvoidPointer, static_cast<void *>(nullptr), &pixelsParam.value);
463         paramBuffer.addParam(std::move(pixelsParam));
464     }
465 
466     return CallCapture(angle::EntryPoint::GLGetCompressedTexImageANGLE, std::move(paramBuffer));
467 }
468 
CaptureGetRenderbufferImageANGLE(const State & glState,bool isCallValid,GLenum target,GLenum format,GLenum type,void * pixels)469 CallCapture CaptureGetRenderbufferImageANGLE(const State &glState,
470                                              bool isCallValid,
471                                              GLenum target,
472                                              GLenum format,
473                                              GLenum type,
474                                              void *pixels)
475 {
476     ParamBuffer paramBuffer;
477 
478     paramBuffer.addEnumParam("target", GLenumGroup::RenderbufferTarget, ParamType::TGLenum, target);
479     paramBuffer.addEnumParam("format", GLenumGroup::PixelFormat, ParamType::TGLenum, format);
480     paramBuffer.addEnumParam("type", GLenumGroup::PixelType, ParamType::TGLenum, type);
481 
482     if (isCallValid)
483     {
484         ParamCapture pixelsParam("pixels", ParamType::TvoidPointer);
485         InitParamValue(ParamType::TvoidPointer, pixels, &pixelsParam.value);
486         CaptureGetRenderbufferImageANGLE_pixels(glState, isCallValid, target, format, type, pixels,
487                                                 &pixelsParam);
488         paramBuffer.addParam(std::move(pixelsParam));
489     }
490     else
491     {
492         ParamCapture pixelsParam("pixels", ParamType::TvoidPointer);
493         InitParamValue(ParamType::TvoidPointer, static_cast<void *>(nullptr), &pixelsParam.value);
494         paramBuffer.addParam(std::move(pixelsParam));
495     }
496 
497     return CallCapture(angle::EntryPoint::GLGetRenderbufferImageANGLE, std::move(paramBuffer));
498 }
499 
CaptureGetTexLevelParameterivANGLE(const State & glState,bool isCallValid,TextureTarget targetPacked,GLint level,GLenum pname,GLint * params)500 CallCapture CaptureGetTexLevelParameterivANGLE(const State &glState,
501                                                bool isCallValid,
502                                                TextureTarget targetPacked,
503                                                GLint level,
504                                                GLenum pname,
505                                                GLint *params)
506 {
507     ParamBuffer paramBuffer;
508 
509     paramBuffer.addValueParam("targetPacked", ParamType::TTextureTarget, targetPacked);
510     paramBuffer.addValueParam("level", ParamType::TGLint, level);
511     paramBuffer.addEnumParam("pname", GLenumGroup::GetTextureParameter, ParamType::TGLenum, pname);
512 
513     if (isCallValid)
514     {
515         ParamCapture paramsParam("params", ParamType::TGLintPointer);
516         InitParamValue(ParamType::TGLintPointer, params, &paramsParam.value);
517         CaptureGetTexLevelParameterivANGLE_params(glState, isCallValid, targetPacked, level, pname,
518                                                   params, &paramsParam);
519         paramBuffer.addParam(std::move(paramsParam));
520     }
521     else
522     {
523         ParamCapture paramsParam("params", ParamType::TGLintPointer);
524         InitParamValue(ParamType::TGLintPointer, static_cast<GLint *>(nullptr), &paramsParam.value);
525         paramBuffer.addParam(std::move(paramsParam));
526     }
527 
528     return CallCapture(angle::EntryPoint::GLGetTexLevelParameterivANGLE, std::move(paramBuffer));
529 }
530 
CaptureGetTexLevelParameterfvANGLE(const State & glState,bool isCallValid,TextureTarget targetPacked,GLint level,GLenum pname,GLfloat * params)531 CallCapture CaptureGetTexLevelParameterfvANGLE(const State &glState,
532                                                bool isCallValid,
533                                                TextureTarget targetPacked,
534                                                GLint level,
535                                                GLenum pname,
536                                                GLfloat *params)
537 {
538     ParamBuffer paramBuffer;
539 
540     paramBuffer.addValueParam("targetPacked", ParamType::TTextureTarget, targetPacked);
541     paramBuffer.addValueParam("level", ParamType::TGLint, level);
542     paramBuffer.addEnumParam("pname", GLenumGroup::DefaultGroup, ParamType::TGLenum, pname);
543 
544     if (isCallValid)
545     {
546         ParamCapture paramsParam("params", ParamType::TGLfloatPointer);
547         InitParamValue(ParamType::TGLfloatPointer, params, &paramsParam.value);
548         CaptureGetTexLevelParameterfvANGLE_params(glState, isCallValid, targetPacked, level, pname,
549                                                   params, &paramsParam);
550         paramBuffer.addParam(std::move(paramsParam));
551     }
552     else
553     {
554         ParamCapture paramsParam("params", ParamType::TGLfloatPointer);
555         InitParamValue(ParamType::TGLfloatPointer, static_cast<GLfloat *>(nullptr),
556                        &paramsParam.value);
557         paramBuffer.addParam(std::move(paramsParam));
558     }
559 
560     return CallCapture(angle::EntryPoint::GLGetTexLevelParameterfvANGLE, std::move(paramBuffer));
561 }
562 
CaptureDrawArraysInstancedANGLE(const State & glState,bool isCallValid,PrimitiveMode modePacked,GLint first,GLsizei count,GLsizei primcount)563 CallCapture CaptureDrawArraysInstancedANGLE(const State &glState,
564                                             bool isCallValid,
565                                             PrimitiveMode modePacked,
566                                             GLint first,
567                                             GLsizei count,
568                                             GLsizei primcount)
569 {
570     ParamBuffer paramBuffer;
571 
572     paramBuffer.addValueParam("modePacked", ParamType::TPrimitiveMode, modePacked);
573     paramBuffer.addValueParam("first", ParamType::TGLint, first);
574     paramBuffer.addValueParam("count", ParamType::TGLsizei, count);
575     paramBuffer.addValueParam("primcount", ParamType::TGLsizei, primcount);
576 
577     return CallCapture(angle::EntryPoint::GLDrawArraysInstancedANGLE, std::move(paramBuffer));
578 }
579 
CaptureDrawElementsInstancedANGLE(const State & glState,bool isCallValid,PrimitiveMode modePacked,GLsizei count,DrawElementsType typePacked,const void * indices,GLsizei primcount)580 CallCapture CaptureDrawElementsInstancedANGLE(const State &glState,
581                                               bool isCallValid,
582                                               PrimitiveMode modePacked,
583                                               GLsizei count,
584                                               DrawElementsType typePacked,
585                                               const void *indices,
586                                               GLsizei primcount)
587 {
588     ParamBuffer paramBuffer;
589 
590     paramBuffer.addValueParam("modePacked", ParamType::TPrimitiveMode, modePacked);
591     paramBuffer.addValueParam("count", ParamType::TGLsizei, count);
592     paramBuffer.addValueParam("typePacked", ParamType::TDrawElementsType, typePacked);
593 
594     if (isCallValid)
595     {
596         ParamCapture indicesParam("indices", ParamType::TvoidConstPointer);
597         InitParamValue(ParamType::TvoidConstPointer, indices, &indicesParam.value);
598         CaptureDrawElementsInstancedANGLE_indices(glState, isCallValid, modePacked, count,
599                                                   typePacked, indices, primcount, &indicesParam);
600         paramBuffer.addParam(std::move(indicesParam));
601     }
602     else
603     {
604         ParamCapture indicesParam("indices", ParamType::TvoidConstPointer);
605         InitParamValue(ParamType::TvoidConstPointer, static_cast<const void *>(nullptr),
606                        &indicesParam.value);
607         paramBuffer.addParam(std::move(indicesParam));
608     }
609 
610     paramBuffer.addValueParam("primcount", ParamType::TGLsizei, primcount);
611 
612     return CallCapture(angle::EntryPoint::GLDrawElementsInstancedANGLE, std::move(paramBuffer));
613 }
614 
CaptureVertexAttribDivisorANGLE(const State & glState,bool isCallValid,GLuint index,GLuint divisor)615 CallCapture CaptureVertexAttribDivisorANGLE(const State &glState,
616                                             bool isCallValid,
617                                             GLuint index,
618                                             GLuint divisor)
619 {
620     ParamBuffer paramBuffer;
621 
622     paramBuffer.addValueParam("index", ParamType::TGLuint, index);
623     paramBuffer.addValueParam("divisor", ParamType::TGLuint, divisor);
624 
625     return CallCapture(angle::EntryPoint::GLVertexAttribDivisorANGLE, std::move(paramBuffer));
626 }
627 
CaptureTexStorageMemFlags2DANGLE(const State & glState,bool isCallValid,TextureType targetPacked,GLsizei levels,GLenum internalFormat,GLsizei width,GLsizei height,MemoryObjectID memoryPacked,GLuint64 offset,GLbitfield createFlags,GLbitfield usageFlags,const void * imageCreateInfoPNext)628 CallCapture CaptureTexStorageMemFlags2DANGLE(const State &glState,
629                                              bool isCallValid,
630                                              TextureType targetPacked,
631                                              GLsizei levels,
632                                              GLenum internalFormat,
633                                              GLsizei width,
634                                              GLsizei height,
635                                              MemoryObjectID memoryPacked,
636                                              GLuint64 offset,
637                                              GLbitfield createFlags,
638                                              GLbitfield usageFlags,
639                                              const void *imageCreateInfoPNext)
640 {
641     ParamBuffer paramBuffer;
642 
643     paramBuffer.addValueParam("targetPacked", ParamType::TTextureType, targetPacked);
644     paramBuffer.addValueParam("levels", ParamType::TGLsizei, levels);
645     paramBuffer.addEnumParam("internalFormat", GLenumGroup::DefaultGroup, ParamType::TGLenum,
646                              internalFormat);
647     paramBuffer.addValueParam("width", ParamType::TGLsizei, width);
648     paramBuffer.addValueParam("height", ParamType::TGLsizei, height);
649     paramBuffer.addValueParam("memoryPacked", ParamType::TMemoryObjectID, memoryPacked);
650     paramBuffer.addValueParam("offset", ParamType::TGLuint64, offset);
651     paramBuffer.addEnumParam("createFlags", GLenumGroup::DefaultGroup, ParamType::TGLbitfield,
652                              createFlags);
653     paramBuffer.addEnumParam("usageFlags", GLenumGroup::DefaultGroup, ParamType::TGLbitfield,
654                              usageFlags);
655 
656     if (isCallValid)
657     {
658         ParamCapture imageCreateInfoPNextParam("imageCreateInfoPNext",
659                                                ParamType::TvoidConstPointer);
660         InitParamValue(ParamType::TvoidConstPointer, imageCreateInfoPNext,
661                        &imageCreateInfoPNextParam.value);
662         CaptureTexStorageMemFlags2DANGLE_imageCreateInfoPNext(
663             glState, isCallValid, targetPacked, levels, internalFormat, width, height, memoryPacked,
664             offset, createFlags, usageFlags, imageCreateInfoPNext, &imageCreateInfoPNextParam);
665         paramBuffer.addParam(std::move(imageCreateInfoPNextParam));
666     }
667     else
668     {
669         ParamCapture imageCreateInfoPNextParam("imageCreateInfoPNext",
670                                                ParamType::TvoidConstPointer);
671         InitParamValue(ParamType::TvoidConstPointer, static_cast<const void *>(nullptr),
672                        &imageCreateInfoPNextParam.value);
673         paramBuffer.addParam(std::move(imageCreateInfoPNextParam));
674     }
675 
676     return CallCapture(angle::EntryPoint::GLTexStorageMemFlags2DANGLE, std::move(paramBuffer));
677 }
678 
CaptureTexStorageMemFlags2DMultisampleANGLE(const State & glState,bool isCallValid,TextureType targetPacked,GLsizei samples,GLenum internalFormat,GLsizei width,GLsizei height,GLboolean fixedSampleLocations,MemoryObjectID memoryPacked,GLuint64 offset,GLbitfield createFlags,GLbitfield usageFlags,const void * imageCreateInfoPNext)679 CallCapture CaptureTexStorageMemFlags2DMultisampleANGLE(const State &glState,
680                                                         bool isCallValid,
681                                                         TextureType targetPacked,
682                                                         GLsizei samples,
683                                                         GLenum internalFormat,
684                                                         GLsizei width,
685                                                         GLsizei height,
686                                                         GLboolean fixedSampleLocations,
687                                                         MemoryObjectID memoryPacked,
688                                                         GLuint64 offset,
689                                                         GLbitfield createFlags,
690                                                         GLbitfield usageFlags,
691                                                         const void *imageCreateInfoPNext)
692 {
693     ParamBuffer paramBuffer;
694 
695     paramBuffer.addValueParam("targetPacked", ParamType::TTextureType, targetPacked);
696     paramBuffer.addValueParam("samples", ParamType::TGLsizei, samples);
697     paramBuffer.addEnumParam("internalFormat", GLenumGroup::DefaultGroup, ParamType::TGLenum,
698                              internalFormat);
699     paramBuffer.addValueParam("width", ParamType::TGLsizei, width);
700     paramBuffer.addValueParam("height", ParamType::TGLsizei, height);
701     paramBuffer.addValueParam("fixedSampleLocations", ParamType::TGLboolean, fixedSampleLocations);
702     paramBuffer.addValueParam("memoryPacked", ParamType::TMemoryObjectID, memoryPacked);
703     paramBuffer.addValueParam("offset", ParamType::TGLuint64, offset);
704     paramBuffer.addEnumParam("createFlags", GLenumGroup::DefaultGroup, ParamType::TGLbitfield,
705                              createFlags);
706     paramBuffer.addEnumParam("usageFlags", GLenumGroup::DefaultGroup, ParamType::TGLbitfield,
707                              usageFlags);
708 
709     if (isCallValid)
710     {
711         ParamCapture imageCreateInfoPNextParam("imageCreateInfoPNext",
712                                                ParamType::TvoidConstPointer);
713         InitParamValue(ParamType::TvoidConstPointer, imageCreateInfoPNext,
714                        &imageCreateInfoPNextParam.value);
715         CaptureTexStorageMemFlags2DMultisampleANGLE_imageCreateInfoPNext(
716             glState, isCallValid, targetPacked, samples, internalFormat, width, height,
717             fixedSampleLocations, memoryPacked, offset, createFlags, usageFlags,
718             imageCreateInfoPNext, &imageCreateInfoPNextParam);
719         paramBuffer.addParam(std::move(imageCreateInfoPNextParam));
720     }
721     else
722     {
723         ParamCapture imageCreateInfoPNextParam("imageCreateInfoPNext",
724                                                ParamType::TvoidConstPointer);
725         InitParamValue(ParamType::TvoidConstPointer, static_cast<const void *>(nullptr),
726                        &imageCreateInfoPNextParam.value);
727         paramBuffer.addParam(std::move(imageCreateInfoPNextParam));
728     }
729 
730     return CallCapture(angle::EntryPoint::GLTexStorageMemFlags2DMultisampleANGLE,
731                        std::move(paramBuffer));
732 }
733 
CaptureTexStorageMemFlags3DANGLE(const State & glState,bool isCallValid,TextureType targetPacked,GLsizei levels,GLenum internalFormat,GLsizei width,GLsizei height,GLsizei depth,MemoryObjectID memoryPacked,GLuint64 offset,GLbitfield createFlags,GLbitfield usageFlags,const void * imageCreateInfoPNext)734 CallCapture CaptureTexStorageMemFlags3DANGLE(const State &glState,
735                                              bool isCallValid,
736                                              TextureType targetPacked,
737                                              GLsizei levels,
738                                              GLenum internalFormat,
739                                              GLsizei width,
740                                              GLsizei height,
741                                              GLsizei depth,
742                                              MemoryObjectID memoryPacked,
743                                              GLuint64 offset,
744                                              GLbitfield createFlags,
745                                              GLbitfield usageFlags,
746                                              const void *imageCreateInfoPNext)
747 {
748     ParamBuffer paramBuffer;
749 
750     paramBuffer.addValueParam("targetPacked", ParamType::TTextureType, targetPacked);
751     paramBuffer.addValueParam("levels", ParamType::TGLsizei, levels);
752     paramBuffer.addEnumParam("internalFormat", GLenumGroup::DefaultGroup, ParamType::TGLenum,
753                              internalFormat);
754     paramBuffer.addValueParam("width", ParamType::TGLsizei, width);
755     paramBuffer.addValueParam("height", ParamType::TGLsizei, height);
756     paramBuffer.addValueParam("depth", ParamType::TGLsizei, depth);
757     paramBuffer.addValueParam("memoryPacked", ParamType::TMemoryObjectID, memoryPacked);
758     paramBuffer.addValueParam("offset", ParamType::TGLuint64, offset);
759     paramBuffer.addEnumParam("createFlags", GLenumGroup::DefaultGroup, ParamType::TGLbitfield,
760                              createFlags);
761     paramBuffer.addEnumParam("usageFlags", GLenumGroup::DefaultGroup, ParamType::TGLbitfield,
762                              usageFlags);
763 
764     if (isCallValid)
765     {
766         ParamCapture imageCreateInfoPNextParam("imageCreateInfoPNext",
767                                                ParamType::TvoidConstPointer);
768         InitParamValue(ParamType::TvoidConstPointer, imageCreateInfoPNext,
769                        &imageCreateInfoPNextParam.value);
770         CaptureTexStorageMemFlags3DANGLE_imageCreateInfoPNext(
771             glState, isCallValid, targetPacked, levels, internalFormat, width, height, depth,
772             memoryPacked, offset, createFlags, usageFlags, imageCreateInfoPNext,
773             &imageCreateInfoPNextParam);
774         paramBuffer.addParam(std::move(imageCreateInfoPNextParam));
775     }
776     else
777     {
778         ParamCapture imageCreateInfoPNextParam("imageCreateInfoPNext",
779                                                ParamType::TvoidConstPointer);
780         InitParamValue(ParamType::TvoidConstPointer, static_cast<const void *>(nullptr),
781                        &imageCreateInfoPNextParam.value);
782         paramBuffer.addParam(std::move(imageCreateInfoPNextParam));
783     }
784 
785     return CallCapture(angle::EntryPoint::GLTexStorageMemFlags3DANGLE, std::move(paramBuffer));
786 }
787 
CaptureTexStorageMemFlags3DMultisampleANGLE(const State & glState,bool isCallValid,TextureType targetPacked,GLsizei samples,GLenum internalFormat,GLsizei width,GLsizei height,GLsizei depth,GLboolean fixedSampleLocations,MemoryObjectID memoryPacked,GLuint64 offset,GLbitfield createFlags,GLbitfield usageFlags,const void * imageCreateInfoPNext)788 CallCapture CaptureTexStorageMemFlags3DMultisampleANGLE(const State &glState,
789                                                         bool isCallValid,
790                                                         TextureType targetPacked,
791                                                         GLsizei samples,
792                                                         GLenum internalFormat,
793                                                         GLsizei width,
794                                                         GLsizei height,
795                                                         GLsizei depth,
796                                                         GLboolean fixedSampleLocations,
797                                                         MemoryObjectID memoryPacked,
798                                                         GLuint64 offset,
799                                                         GLbitfield createFlags,
800                                                         GLbitfield usageFlags,
801                                                         const void *imageCreateInfoPNext)
802 {
803     ParamBuffer paramBuffer;
804 
805     paramBuffer.addValueParam("targetPacked", ParamType::TTextureType, targetPacked);
806     paramBuffer.addValueParam("samples", ParamType::TGLsizei, samples);
807     paramBuffer.addEnumParam("internalFormat", GLenumGroup::DefaultGroup, ParamType::TGLenum,
808                              internalFormat);
809     paramBuffer.addValueParam("width", ParamType::TGLsizei, width);
810     paramBuffer.addValueParam("height", ParamType::TGLsizei, height);
811     paramBuffer.addValueParam("depth", ParamType::TGLsizei, depth);
812     paramBuffer.addValueParam("fixedSampleLocations", ParamType::TGLboolean, fixedSampleLocations);
813     paramBuffer.addValueParam("memoryPacked", ParamType::TMemoryObjectID, memoryPacked);
814     paramBuffer.addValueParam("offset", ParamType::TGLuint64, offset);
815     paramBuffer.addEnumParam("createFlags", GLenumGroup::DefaultGroup, ParamType::TGLbitfield,
816                              createFlags);
817     paramBuffer.addEnumParam("usageFlags", GLenumGroup::DefaultGroup, ParamType::TGLbitfield,
818                              usageFlags);
819 
820     if (isCallValid)
821     {
822         ParamCapture imageCreateInfoPNextParam("imageCreateInfoPNext",
823                                                ParamType::TvoidConstPointer);
824         InitParamValue(ParamType::TvoidConstPointer, imageCreateInfoPNext,
825                        &imageCreateInfoPNextParam.value);
826         CaptureTexStorageMemFlags3DMultisampleANGLE_imageCreateInfoPNext(
827             glState, isCallValid, targetPacked, samples, internalFormat, width, height, depth,
828             fixedSampleLocations, memoryPacked, offset, createFlags, usageFlags,
829             imageCreateInfoPNext, &imageCreateInfoPNextParam);
830         paramBuffer.addParam(std::move(imageCreateInfoPNextParam));
831     }
832     else
833     {
834         ParamCapture imageCreateInfoPNextParam("imageCreateInfoPNext",
835                                                ParamType::TvoidConstPointer);
836         InitParamValue(ParamType::TvoidConstPointer, static_cast<const void *>(nullptr),
837                        &imageCreateInfoPNextParam.value);
838         paramBuffer.addParam(std::move(imageCreateInfoPNextParam));
839     }
840 
841     return CallCapture(angle::EntryPoint::GLTexStorageMemFlags3DMultisampleANGLE,
842                        std::move(paramBuffer));
843 }
844 
CaptureImportMemoryZirconHandleANGLE(const State & glState,bool isCallValid,MemoryObjectID memoryPacked,GLuint64 size,HandleType handleTypePacked,GLuint handle)845 CallCapture CaptureImportMemoryZirconHandleANGLE(const State &glState,
846                                                  bool isCallValid,
847                                                  MemoryObjectID memoryPacked,
848                                                  GLuint64 size,
849                                                  HandleType handleTypePacked,
850                                                  GLuint handle)
851 {
852     ParamBuffer paramBuffer;
853 
854     paramBuffer.addValueParam("memoryPacked", ParamType::TMemoryObjectID, memoryPacked);
855     paramBuffer.addValueParam("size", ParamType::TGLuint64, size);
856     paramBuffer.addValueParam("handleTypePacked", ParamType::THandleType, handleTypePacked);
857     paramBuffer.addValueParam("handle", ParamType::TGLuint, handle);
858 
859     return CallCapture(angle::EntryPoint::GLImportMemoryZirconHandleANGLE, std::move(paramBuffer));
860 }
861 
CaptureMultiDrawArraysANGLE(const State & glState,bool isCallValid,PrimitiveMode modePacked,const GLint * firsts,const GLsizei * counts,GLsizei drawcount)862 CallCapture CaptureMultiDrawArraysANGLE(const State &glState,
863                                         bool isCallValid,
864                                         PrimitiveMode modePacked,
865                                         const GLint *firsts,
866                                         const GLsizei *counts,
867                                         GLsizei drawcount)
868 {
869     ParamBuffer paramBuffer;
870 
871     paramBuffer.addValueParam("modePacked", ParamType::TPrimitiveMode, modePacked);
872 
873     if (isCallValid)
874     {
875         ParamCapture firstsParam("firsts", ParamType::TGLintConstPointer);
876         InitParamValue(ParamType::TGLintConstPointer, firsts, &firstsParam.value);
877         CaptureMultiDrawArraysANGLE_firsts(glState, isCallValid, modePacked, firsts, counts,
878                                            drawcount, &firstsParam);
879         paramBuffer.addParam(std::move(firstsParam));
880     }
881     else
882     {
883         ParamCapture firstsParam("firsts", ParamType::TGLintConstPointer);
884         InitParamValue(ParamType::TGLintConstPointer, static_cast<const GLint *>(nullptr),
885                        &firstsParam.value);
886         paramBuffer.addParam(std::move(firstsParam));
887     }
888 
889     if (isCallValid)
890     {
891         ParamCapture countsParam("counts", ParamType::TGLsizeiConstPointer);
892         InitParamValue(ParamType::TGLsizeiConstPointer, counts, &countsParam.value);
893         CaptureMultiDrawArraysANGLE_counts(glState, isCallValid, modePacked, firsts, counts,
894                                            drawcount, &countsParam);
895         paramBuffer.addParam(std::move(countsParam));
896     }
897     else
898     {
899         ParamCapture countsParam("counts", ParamType::TGLsizeiConstPointer);
900         InitParamValue(ParamType::TGLsizeiConstPointer, static_cast<const GLsizei *>(nullptr),
901                        &countsParam.value);
902         paramBuffer.addParam(std::move(countsParam));
903     }
904 
905     paramBuffer.addValueParam("drawcount", ParamType::TGLsizei, drawcount);
906 
907     return CallCapture(angle::EntryPoint::GLMultiDrawArraysANGLE, std::move(paramBuffer));
908 }
909 
CaptureMultiDrawArraysInstancedANGLE(const State & glState,bool isCallValid,PrimitiveMode modePacked,const GLint * firsts,const GLsizei * counts,const GLsizei * instanceCounts,GLsizei drawcount)910 CallCapture CaptureMultiDrawArraysInstancedANGLE(const State &glState,
911                                                  bool isCallValid,
912                                                  PrimitiveMode modePacked,
913                                                  const GLint *firsts,
914                                                  const GLsizei *counts,
915                                                  const GLsizei *instanceCounts,
916                                                  GLsizei drawcount)
917 {
918     ParamBuffer paramBuffer;
919 
920     paramBuffer.addValueParam("modePacked", ParamType::TPrimitiveMode, modePacked);
921 
922     if (isCallValid)
923     {
924         ParamCapture firstsParam("firsts", ParamType::TGLintConstPointer);
925         InitParamValue(ParamType::TGLintConstPointer, firsts, &firstsParam.value);
926         CaptureMultiDrawArraysInstancedANGLE_firsts(glState, isCallValid, modePacked, firsts,
927                                                     counts, instanceCounts, drawcount,
928                                                     &firstsParam);
929         paramBuffer.addParam(std::move(firstsParam));
930     }
931     else
932     {
933         ParamCapture firstsParam("firsts", ParamType::TGLintConstPointer);
934         InitParamValue(ParamType::TGLintConstPointer, static_cast<const GLint *>(nullptr),
935                        &firstsParam.value);
936         paramBuffer.addParam(std::move(firstsParam));
937     }
938 
939     if (isCallValid)
940     {
941         ParamCapture countsParam("counts", ParamType::TGLsizeiConstPointer);
942         InitParamValue(ParamType::TGLsizeiConstPointer, counts, &countsParam.value);
943         CaptureMultiDrawArraysInstancedANGLE_counts(glState, isCallValid, modePacked, firsts,
944                                                     counts, instanceCounts, drawcount,
945                                                     &countsParam);
946         paramBuffer.addParam(std::move(countsParam));
947     }
948     else
949     {
950         ParamCapture countsParam("counts", ParamType::TGLsizeiConstPointer);
951         InitParamValue(ParamType::TGLsizeiConstPointer, static_cast<const GLsizei *>(nullptr),
952                        &countsParam.value);
953         paramBuffer.addParam(std::move(countsParam));
954     }
955 
956     if (isCallValid)
957     {
958         ParamCapture instanceCountsParam("instanceCounts", ParamType::TGLsizeiConstPointer);
959         InitParamValue(ParamType::TGLsizeiConstPointer, instanceCounts, &instanceCountsParam.value);
960         CaptureMultiDrawArraysInstancedANGLE_instanceCounts(glState, isCallValid, modePacked,
961                                                             firsts, counts, instanceCounts,
962                                                             drawcount, &instanceCountsParam);
963         paramBuffer.addParam(std::move(instanceCountsParam));
964     }
965     else
966     {
967         ParamCapture instanceCountsParam("instanceCounts", ParamType::TGLsizeiConstPointer);
968         InitParamValue(ParamType::TGLsizeiConstPointer, static_cast<const GLsizei *>(nullptr),
969                        &instanceCountsParam.value);
970         paramBuffer.addParam(std::move(instanceCountsParam));
971     }
972 
973     paramBuffer.addValueParam("drawcount", ParamType::TGLsizei, drawcount);
974 
975     return CallCapture(angle::EntryPoint::GLMultiDrawArraysInstancedANGLE, std::move(paramBuffer));
976 }
977 
CaptureMultiDrawElementsANGLE(const State & glState,bool isCallValid,PrimitiveMode modePacked,const GLsizei * counts,DrawElementsType typePacked,const GLvoid * const * indices,GLsizei drawcount)978 CallCapture CaptureMultiDrawElementsANGLE(const State &glState,
979                                           bool isCallValid,
980                                           PrimitiveMode modePacked,
981                                           const GLsizei *counts,
982                                           DrawElementsType typePacked,
983                                           const GLvoid *const *indices,
984                                           GLsizei drawcount)
985 {
986     ParamBuffer paramBuffer;
987 
988     paramBuffer.addValueParam("modePacked", ParamType::TPrimitiveMode, modePacked);
989 
990     if (isCallValid)
991     {
992         ParamCapture countsParam("counts", ParamType::TGLsizeiConstPointer);
993         InitParamValue(ParamType::TGLsizeiConstPointer, counts, &countsParam.value);
994         CaptureMultiDrawElementsANGLE_counts(glState, isCallValid, modePacked, counts, typePacked,
995                                              indices, drawcount, &countsParam);
996         paramBuffer.addParam(std::move(countsParam));
997     }
998     else
999     {
1000         ParamCapture countsParam("counts", ParamType::TGLsizeiConstPointer);
1001         InitParamValue(ParamType::TGLsizeiConstPointer, static_cast<const GLsizei *>(nullptr),
1002                        &countsParam.value);
1003         paramBuffer.addParam(std::move(countsParam));
1004     }
1005 
1006     paramBuffer.addValueParam("typePacked", ParamType::TDrawElementsType, typePacked);
1007 
1008     if (isCallValid)
1009     {
1010         ParamCapture indicesParam("indices", ParamType::TGLvoidConstPointerPointer);
1011         InitParamValue(ParamType::TGLvoidConstPointerPointer, indices, &indicesParam.value);
1012         CaptureMultiDrawElementsANGLE_indices(glState, isCallValid, modePacked, counts, typePacked,
1013                                               indices, drawcount, &indicesParam);
1014         paramBuffer.addParam(std::move(indicesParam));
1015     }
1016     else
1017     {
1018         ParamCapture indicesParam("indices", ParamType::TGLvoidConstPointerPointer);
1019         InitParamValue(ParamType::TGLvoidConstPointerPointer,
1020                        static_cast<const GLvoid *const *>(nullptr), &indicesParam.value);
1021         paramBuffer.addParam(std::move(indicesParam));
1022     }
1023 
1024     paramBuffer.addValueParam("drawcount", ParamType::TGLsizei, drawcount);
1025 
1026     return CallCapture(angle::EntryPoint::GLMultiDrawElementsANGLE, std::move(paramBuffer));
1027 }
1028 
CaptureMultiDrawElementsInstancedANGLE(const State & glState,bool isCallValid,PrimitiveMode modePacked,const GLsizei * counts,DrawElementsType typePacked,const GLvoid * const * indices,const GLsizei * instanceCounts,GLsizei drawcount)1029 CallCapture CaptureMultiDrawElementsInstancedANGLE(const State &glState,
1030                                                    bool isCallValid,
1031                                                    PrimitiveMode modePacked,
1032                                                    const GLsizei *counts,
1033                                                    DrawElementsType typePacked,
1034                                                    const GLvoid *const *indices,
1035                                                    const GLsizei *instanceCounts,
1036                                                    GLsizei drawcount)
1037 {
1038     ParamBuffer paramBuffer;
1039 
1040     paramBuffer.addValueParam("modePacked", ParamType::TPrimitiveMode, modePacked);
1041 
1042     if (isCallValid)
1043     {
1044         ParamCapture countsParam("counts", ParamType::TGLsizeiConstPointer);
1045         InitParamValue(ParamType::TGLsizeiConstPointer, counts, &countsParam.value);
1046         CaptureMultiDrawElementsInstancedANGLE_counts(glState, isCallValid, modePacked, counts,
1047                                                       typePacked, indices, instanceCounts,
1048                                                       drawcount, &countsParam);
1049         paramBuffer.addParam(std::move(countsParam));
1050     }
1051     else
1052     {
1053         ParamCapture countsParam("counts", ParamType::TGLsizeiConstPointer);
1054         InitParamValue(ParamType::TGLsizeiConstPointer, static_cast<const GLsizei *>(nullptr),
1055                        &countsParam.value);
1056         paramBuffer.addParam(std::move(countsParam));
1057     }
1058 
1059     paramBuffer.addValueParam("typePacked", ParamType::TDrawElementsType, typePacked);
1060 
1061     if (isCallValid)
1062     {
1063         ParamCapture indicesParam("indices", ParamType::TGLvoidConstPointerPointer);
1064         InitParamValue(ParamType::TGLvoidConstPointerPointer, indices, &indicesParam.value);
1065         CaptureMultiDrawElementsInstancedANGLE_indices(glState, isCallValid, modePacked, counts,
1066                                                        typePacked, indices, instanceCounts,
1067                                                        drawcount, &indicesParam);
1068         paramBuffer.addParam(std::move(indicesParam));
1069     }
1070     else
1071     {
1072         ParamCapture indicesParam("indices", ParamType::TGLvoidConstPointerPointer);
1073         InitParamValue(ParamType::TGLvoidConstPointerPointer,
1074                        static_cast<const GLvoid *const *>(nullptr), &indicesParam.value);
1075         paramBuffer.addParam(std::move(indicesParam));
1076     }
1077 
1078     if (isCallValid)
1079     {
1080         ParamCapture instanceCountsParam("instanceCounts", ParamType::TGLsizeiConstPointer);
1081         InitParamValue(ParamType::TGLsizeiConstPointer, instanceCounts, &instanceCountsParam.value);
1082         CaptureMultiDrawElementsInstancedANGLE_instanceCounts(
1083             glState, isCallValid, modePacked, counts, typePacked, indices, instanceCounts,
1084             drawcount, &instanceCountsParam);
1085         paramBuffer.addParam(std::move(instanceCountsParam));
1086     }
1087     else
1088     {
1089         ParamCapture instanceCountsParam("instanceCounts", ParamType::TGLsizeiConstPointer);
1090         InitParamValue(ParamType::TGLsizeiConstPointer, static_cast<const GLsizei *>(nullptr),
1091                        &instanceCountsParam.value);
1092         paramBuffer.addParam(std::move(instanceCountsParam));
1093     }
1094 
1095     paramBuffer.addValueParam("drawcount", ParamType::TGLsizei, drawcount);
1096 
1097     return CallCapture(angle::EntryPoint::GLMultiDrawElementsInstancedANGLE,
1098                        std::move(paramBuffer));
1099 }
1100 
CaptureProvokingVertexANGLE(const State & glState,bool isCallValid,ProvokingVertexConvention modePacked)1101 CallCapture CaptureProvokingVertexANGLE(const State &glState,
1102                                         bool isCallValid,
1103                                         ProvokingVertexConvention modePacked)
1104 {
1105     ParamBuffer paramBuffer;
1106 
1107     paramBuffer.addValueParam("modePacked", ParamType::TProvokingVertexConvention, modePacked);
1108 
1109     return CallCapture(angle::EntryPoint::GLProvokingVertexANGLE, std::move(paramBuffer));
1110 }
1111 
CaptureRequestExtensionANGLE(const State & glState,bool isCallValid,const GLchar * name)1112 CallCapture CaptureRequestExtensionANGLE(const State &glState, bool isCallValid, const GLchar *name)
1113 {
1114     ParamBuffer paramBuffer;
1115 
1116     if (isCallValid)
1117     {
1118         ParamCapture nameParam("name", ParamType::TGLcharConstPointer);
1119         InitParamValue(ParamType::TGLcharConstPointer, name, &nameParam.value);
1120         CaptureRequestExtensionANGLE_name(glState, isCallValid, name, &nameParam);
1121         paramBuffer.addParam(std::move(nameParam));
1122     }
1123     else
1124     {
1125         ParamCapture nameParam("name", ParamType::TGLcharConstPointer);
1126         InitParamValue(ParamType::TGLcharConstPointer, static_cast<const GLchar *>(nullptr),
1127                        &nameParam.value);
1128         paramBuffer.addParam(std::move(nameParam));
1129     }
1130 
1131     return CallCapture(angle::EntryPoint::GLRequestExtensionANGLE, std::move(paramBuffer));
1132 }
1133 
CaptureDisableExtensionANGLE(const State & glState,bool isCallValid,const GLchar * name)1134 CallCapture CaptureDisableExtensionANGLE(const State &glState, bool isCallValid, const GLchar *name)
1135 {
1136     ParamBuffer paramBuffer;
1137 
1138     if (isCallValid)
1139     {
1140         ParamCapture nameParam("name", ParamType::TGLcharConstPointer);
1141         InitParamValue(ParamType::TGLcharConstPointer, name, &nameParam.value);
1142         CaptureDisableExtensionANGLE_name(glState, isCallValid, name, &nameParam);
1143         paramBuffer.addParam(std::move(nameParam));
1144     }
1145     else
1146     {
1147         ParamCapture nameParam("name", ParamType::TGLcharConstPointer);
1148         InitParamValue(ParamType::TGLcharConstPointer, static_cast<const GLchar *>(nullptr),
1149                        &nameParam.value);
1150         paramBuffer.addParam(std::move(nameParam));
1151     }
1152 
1153     return CallCapture(angle::EntryPoint::GLDisableExtensionANGLE, std::move(paramBuffer));
1154 }
1155 
CaptureGetBooleanvRobustANGLE(const State & glState,bool isCallValid,GLenum pname,GLsizei bufSize,GLsizei * length,GLboolean * params)1156 CallCapture CaptureGetBooleanvRobustANGLE(const State &glState,
1157                                           bool isCallValid,
1158                                           GLenum pname,
1159                                           GLsizei bufSize,
1160                                           GLsizei *length,
1161                                           GLboolean *params)
1162 {
1163     ParamBuffer paramBuffer;
1164 
1165     paramBuffer.addEnumParam("pname", GLenumGroup::DefaultGroup, ParamType::TGLenum, pname);
1166     paramBuffer.addValueParam("bufSize", ParamType::TGLsizei, bufSize);
1167 
1168     if (isCallValid)
1169     {
1170         ParamCapture lengthParam("length", ParamType::TGLsizeiPointer);
1171         InitParamValue(ParamType::TGLsizeiPointer, length, &lengthParam.value);
1172         CaptureGetBooleanvRobustANGLE_length(glState, isCallValid, pname, bufSize, length, params,
1173                                              &lengthParam);
1174         paramBuffer.addParam(std::move(lengthParam));
1175     }
1176     else
1177     {
1178         ParamCapture lengthParam("length", ParamType::TGLsizeiPointer);
1179         InitParamValue(ParamType::TGLsizeiPointer, static_cast<GLsizei *>(nullptr),
1180                        &lengthParam.value);
1181         paramBuffer.addParam(std::move(lengthParam));
1182     }
1183 
1184     if (isCallValid)
1185     {
1186         ParamCapture paramsParam("params", ParamType::TGLbooleanPointer);
1187         InitParamValue(ParamType::TGLbooleanPointer, params, &paramsParam.value);
1188         CaptureGetBooleanvRobustANGLE_params(glState, isCallValid, pname, bufSize, length, params,
1189                                              &paramsParam);
1190         paramBuffer.addParam(std::move(paramsParam));
1191     }
1192     else
1193     {
1194         ParamCapture paramsParam("params", ParamType::TGLbooleanPointer);
1195         InitParamValue(ParamType::TGLbooleanPointer, static_cast<GLboolean *>(nullptr),
1196                        &paramsParam.value);
1197         paramBuffer.addParam(std::move(paramsParam));
1198     }
1199 
1200     return CallCapture(angle::EntryPoint::GLGetBooleanvRobustANGLE, std::move(paramBuffer));
1201 }
1202 
CaptureGetBufferParameterivRobustANGLE(const State & glState,bool isCallValid,BufferBinding targetPacked,GLenum pname,GLsizei bufSize,GLsizei * length,GLint * params)1203 CallCapture CaptureGetBufferParameterivRobustANGLE(const State &glState,
1204                                                    bool isCallValid,
1205                                                    BufferBinding targetPacked,
1206                                                    GLenum pname,
1207                                                    GLsizei bufSize,
1208                                                    GLsizei *length,
1209                                                    GLint *params)
1210 {
1211     ParamBuffer paramBuffer;
1212 
1213     paramBuffer.addValueParam("targetPacked", ParamType::TBufferBinding, targetPacked);
1214     paramBuffer.addEnumParam("pname", GLenumGroup::DefaultGroup, ParamType::TGLenum, pname);
1215     paramBuffer.addValueParam("bufSize", ParamType::TGLsizei, bufSize);
1216 
1217     if (isCallValid)
1218     {
1219         ParamCapture lengthParam("length", ParamType::TGLsizeiPointer);
1220         InitParamValue(ParamType::TGLsizeiPointer, length, &lengthParam.value);
1221         CaptureGetBufferParameterivRobustANGLE_length(glState, isCallValid, targetPacked, pname,
1222                                                       bufSize, length, params, &lengthParam);
1223         paramBuffer.addParam(std::move(lengthParam));
1224     }
1225     else
1226     {
1227         ParamCapture lengthParam("length", ParamType::TGLsizeiPointer);
1228         InitParamValue(ParamType::TGLsizeiPointer, static_cast<GLsizei *>(nullptr),
1229                        &lengthParam.value);
1230         paramBuffer.addParam(std::move(lengthParam));
1231     }
1232 
1233     if (isCallValid)
1234     {
1235         ParamCapture paramsParam("params", ParamType::TGLintPointer);
1236         InitParamValue(ParamType::TGLintPointer, params, &paramsParam.value);
1237         CaptureGetBufferParameterivRobustANGLE_params(glState, isCallValid, targetPacked, pname,
1238                                                       bufSize, length, params, &paramsParam);
1239         paramBuffer.addParam(std::move(paramsParam));
1240     }
1241     else
1242     {
1243         ParamCapture paramsParam("params", ParamType::TGLintPointer);
1244         InitParamValue(ParamType::TGLintPointer, static_cast<GLint *>(nullptr), &paramsParam.value);
1245         paramBuffer.addParam(std::move(paramsParam));
1246     }
1247 
1248     return CallCapture(angle::EntryPoint::GLGetBufferParameterivRobustANGLE,
1249                        std::move(paramBuffer));
1250 }
1251 
CaptureGetFloatvRobustANGLE(const State & glState,bool isCallValid,GLenum pname,GLsizei bufSize,GLsizei * length,GLfloat * params)1252 CallCapture CaptureGetFloatvRobustANGLE(const State &glState,
1253                                         bool isCallValid,
1254                                         GLenum pname,
1255                                         GLsizei bufSize,
1256                                         GLsizei *length,
1257                                         GLfloat *params)
1258 {
1259     ParamBuffer paramBuffer;
1260 
1261     paramBuffer.addEnumParam("pname", GLenumGroup::DefaultGroup, ParamType::TGLenum, pname);
1262     paramBuffer.addValueParam("bufSize", ParamType::TGLsizei, bufSize);
1263 
1264     if (isCallValid)
1265     {
1266         ParamCapture lengthParam("length", ParamType::TGLsizeiPointer);
1267         InitParamValue(ParamType::TGLsizeiPointer, length, &lengthParam.value);
1268         CaptureGetFloatvRobustANGLE_length(glState, isCallValid, pname, bufSize, length, params,
1269                                            &lengthParam);
1270         paramBuffer.addParam(std::move(lengthParam));
1271     }
1272     else
1273     {
1274         ParamCapture lengthParam("length", ParamType::TGLsizeiPointer);
1275         InitParamValue(ParamType::TGLsizeiPointer, static_cast<GLsizei *>(nullptr),
1276                        &lengthParam.value);
1277         paramBuffer.addParam(std::move(lengthParam));
1278     }
1279 
1280     if (isCallValid)
1281     {
1282         ParamCapture paramsParam("params", ParamType::TGLfloatPointer);
1283         InitParamValue(ParamType::TGLfloatPointer, params, &paramsParam.value);
1284         CaptureGetFloatvRobustANGLE_params(glState, isCallValid, pname, bufSize, length, params,
1285                                            &paramsParam);
1286         paramBuffer.addParam(std::move(paramsParam));
1287     }
1288     else
1289     {
1290         ParamCapture paramsParam("params", ParamType::TGLfloatPointer);
1291         InitParamValue(ParamType::TGLfloatPointer, static_cast<GLfloat *>(nullptr),
1292                        &paramsParam.value);
1293         paramBuffer.addParam(std::move(paramsParam));
1294     }
1295 
1296     return CallCapture(angle::EntryPoint::GLGetFloatvRobustANGLE, std::move(paramBuffer));
1297 }
1298 
CaptureGetFramebufferAttachmentParameterivRobustANGLE(const State & glState,bool isCallValid,GLenum target,GLenum attachment,GLenum pname,GLsizei bufSize,GLsizei * length,GLint * params)1299 CallCapture CaptureGetFramebufferAttachmentParameterivRobustANGLE(const State &glState,
1300                                                                   bool isCallValid,
1301                                                                   GLenum target,
1302                                                                   GLenum attachment,
1303                                                                   GLenum pname,
1304                                                                   GLsizei bufSize,
1305                                                                   GLsizei *length,
1306                                                                   GLint *params)
1307 {
1308     ParamBuffer paramBuffer;
1309 
1310     paramBuffer.addEnumParam("target", GLenumGroup::DefaultGroup, ParamType::TGLenum, target);
1311     paramBuffer.addEnumParam("attachment", GLenumGroup::DefaultGroup, ParamType::TGLenum,
1312                              attachment);
1313     paramBuffer.addEnumParam("pname", GLenumGroup::DefaultGroup, ParamType::TGLenum, pname);
1314     paramBuffer.addValueParam("bufSize", ParamType::TGLsizei, bufSize);
1315 
1316     if (isCallValid)
1317     {
1318         ParamCapture lengthParam("length", ParamType::TGLsizeiPointer);
1319         InitParamValue(ParamType::TGLsizeiPointer, length, &lengthParam.value);
1320         CaptureGetFramebufferAttachmentParameterivRobustANGLE_length(
1321             glState, isCallValid, target, attachment, pname, bufSize, length, params, &lengthParam);
1322         paramBuffer.addParam(std::move(lengthParam));
1323     }
1324     else
1325     {
1326         ParamCapture lengthParam("length", ParamType::TGLsizeiPointer);
1327         InitParamValue(ParamType::TGLsizeiPointer, static_cast<GLsizei *>(nullptr),
1328                        &lengthParam.value);
1329         paramBuffer.addParam(std::move(lengthParam));
1330     }
1331 
1332     if (isCallValid)
1333     {
1334         ParamCapture paramsParam("params", ParamType::TGLintPointer);
1335         InitParamValue(ParamType::TGLintPointer, params, &paramsParam.value);
1336         CaptureGetFramebufferAttachmentParameterivRobustANGLE_params(
1337             glState, isCallValid, target, attachment, pname, bufSize, length, params, &paramsParam);
1338         paramBuffer.addParam(std::move(paramsParam));
1339     }
1340     else
1341     {
1342         ParamCapture paramsParam("params", ParamType::TGLintPointer);
1343         InitParamValue(ParamType::TGLintPointer, static_cast<GLint *>(nullptr), &paramsParam.value);
1344         paramBuffer.addParam(std::move(paramsParam));
1345     }
1346 
1347     return CallCapture(angle::EntryPoint::GLGetFramebufferAttachmentParameterivRobustANGLE,
1348                        std::move(paramBuffer));
1349 }
1350 
CaptureGetIntegervRobustANGLE(const State & glState,bool isCallValid,GLenum pname,GLsizei bufSize,GLsizei * length,GLint * data)1351 CallCapture CaptureGetIntegervRobustANGLE(const State &glState,
1352                                           bool isCallValid,
1353                                           GLenum pname,
1354                                           GLsizei bufSize,
1355                                           GLsizei *length,
1356                                           GLint *data)
1357 {
1358     ParamBuffer paramBuffer;
1359 
1360     paramBuffer.addEnumParam("pname", GLenumGroup::DefaultGroup, ParamType::TGLenum, pname);
1361     paramBuffer.addValueParam("bufSize", ParamType::TGLsizei, bufSize);
1362 
1363     if (isCallValid)
1364     {
1365         ParamCapture lengthParam("length", ParamType::TGLsizeiPointer);
1366         InitParamValue(ParamType::TGLsizeiPointer, length, &lengthParam.value);
1367         CaptureGetIntegervRobustANGLE_length(glState, isCallValid, pname, bufSize, length, data,
1368                                              &lengthParam);
1369         paramBuffer.addParam(std::move(lengthParam));
1370     }
1371     else
1372     {
1373         ParamCapture lengthParam("length", ParamType::TGLsizeiPointer);
1374         InitParamValue(ParamType::TGLsizeiPointer, static_cast<GLsizei *>(nullptr),
1375                        &lengthParam.value);
1376         paramBuffer.addParam(std::move(lengthParam));
1377     }
1378 
1379     if (isCallValid)
1380     {
1381         ParamCapture dataParam("data", ParamType::TGLintPointer);
1382         InitParamValue(ParamType::TGLintPointer, data, &dataParam.value);
1383         CaptureGetIntegervRobustANGLE_data(glState, isCallValid, pname, bufSize, length, data,
1384                                            &dataParam);
1385         paramBuffer.addParam(std::move(dataParam));
1386     }
1387     else
1388     {
1389         ParamCapture dataParam("data", ParamType::TGLintPointer);
1390         InitParamValue(ParamType::TGLintPointer, static_cast<GLint *>(nullptr), &dataParam.value);
1391         paramBuffer.addParam(std::move(dataParam));
1392     }
1393 
1394     return CallCapture(angle::EntryPoint::GLGetIntegervRobustANGLE, std::move(paramBuffer));
1395 }
1396 
CaptureGetProgramivRobustANGLE(const State & glState,bool isCallValid,ShaderProgramID programPacked,GLenum pname,GLsizei bufSize,GLsizei * length,GLint * params)1397 CallCapture CaptureGetProgramivRobustANGLE(const State &glState,
1398                                            bool isCallValid,
1399                                            ShaderProgramID programPacked,
1400                                            GLenum pname,
1401                                            GLsizei bufSize,
1402                                            GLsizei *length,
1403                                            GLint *params)
1404 {
1405     ParamBuffer paramBuffer;
1406 
1407     paramBuffer.addValueParam("programPacked", ParamType::TShaderProgramID, programPacked);
1408     paramBuffer.addEnumParam("pname", GLenumGroup::DefaultGroup, ParamType::TGLenum, pname);
1409     paramBuffer.addValueParam("bufSize", ParamType::TGLsizei, bufSize);
1410 
1411     if (isCallValid)
1412     {
1413         ParamCapture lengthParam("length", ParamType::TGLsizeiPointer);
1414         InitParamValue(ParamType::TGLsizeiPointer, length, &lengthParam.value);
1415         CaptureGetProgramivRobustANGLE_length(glState, isCallValid, programPacked, pname, bufSize,
1416                                               length, params, &lengthParam);
1417         paramBuffer.addParam(std::move(lengthParam));
1418     }
1419     else
1420     {
1421         ParamCapture lengthParam("length", ParamType::TGLsizeiPointer);
1422         InitParamValue(ParamType::TGLsizeiPointer, static_cast<GLsizei *>(nullptr),
1423                        &lengthParam.value);
1424         paramBuffer.addParam(std::move(lengthParam));
1425     }
1426 
1427     if (isCallValid)
1428     {
1429         ParamCapture paramsParam("params", ParamType::TGLintPointer);
1430         InitParamValue(ParamType::TGLintPointer, params, &paramsParam.value);
1431         CaptureGetProgramivRobustANGLE_params(glState, isCallValid, programPacked, pname, bufSize,
1432                                               length, params, &paramsParam);
1433         paramBuffer.addParam(std::move(paramsParam));
1434     }
1435     else
1436     {
1437         ParamCapture paramsParam("params", ParamType::TGLintPointer);
1438         InitParamValue(ParamType::TGLintPointer, static_cast<GLint *>(nullptr), &paramsParam.value);
1439         paramBuffer.addParam(std::move(paramsParam));
1440     }
1441 
1442     return CallCapture(angle::EntryPoint::GLGetProgramivRobustANGLE, std::move(paramBuffer));
1443 }
1444 
CaptureGetRenderbufferParameterivRobustANGLE(const State & glState,bool isCallValid,GLenum target,GLenum pname,GLsizei bufSize,GLsizei * length,GLint * params)1445 CallCapture CaptureGetRenderbufferParameterivRobustANGLE(const State &glState,
1446                                                          bool isCallValid,
1447                                                          GLenum target,
1448                                                          GLenum pname,
1449                                                          GLsizei bufSize,
1450                                                          GLsizei *length,
1451                                                          GLint *params)
1452 {
1453     ParamBuffer paramBuffer;
1454 
1455     paramBuffer.addEnumParam("target", GLenumGroup::DefaultGroup, ParamType::TGLenum, target);
1456     paramBuffer.addEnumParam("pname", GLenumGroup::DefaultGroup, ParamType::TGLenum, pname);
1457     paramBuffer.addValueParam("bufSize", ParamType::TGLsizei, bufSize);
1458 
1459     if (isCallValid)
1460     {
1461         ParamCapture lengthParam("length", ParamType::TGLsizeiPointer);
1462         InitParamValue(ParamType::TGLsizeiPointer, length, &lengthParam.value);
1463         CaptureGetRenderbufferParameterivRobustANGLE_length(glState, isCallValid, target, pname,
1464                                                             bufSize, length, params, &lengthParam);
1465         paramBuffer.addParam(std::move(lengthParam));
1466     }
1467     else
1468     {
1469         ParamCapture lengthParam("length", ParamType::TGLsizeiPointer);
1470         InitParamValue(ParamType::TGLsizeiPointer, static_cast<GLsizei *>(nullptr),
1471                        &lengthParam.value);
1472         paramBuffer.addParam(std::move(lengthParam));
1473     }
1474 
1475     if (isCallValid)
1476     {
1477         ParamCapture paramsParam("params", ParamType::TGLintPointer);
1478         InitParamValue(ParamType::TGLintPointer, params, &paramsParam.value);
1479         CaptureGetRenderbufferParameterivRobustANGLE_params(glState, isCallValid, target, pname,
1480                                                             bufSize, length, params, &paramsParam);
1481         paramBuffer.addParam(std::move(paramsParam));
1482     }
1483     else
1484     {
1485         ParamCapture paramsParam("params", ParamType::TGLintPointer);
1486         InitParamValue(ParamType::TGLintPointer, static_cast<GLint *>(nullptr), &paramsParam.value);
1487         paramBuffer.addParam(std::move(paramsParam));
1488     }
1489 
1490     return CallCapture(angle::EntryPoint::GLGetRenderbufferParameterivRobustANGLE,
1491                        std::move(paramBuffer));
1492 }
1493 
CaptureGetShaderivRobustANGLE(const State & glState,bool isCallValid,ShaderProgramID shaderPacked,GLenum pname,GLsizei bufSize,GLsizei * length,GLint * params)1494 CallCapture CaptureGetShaderivRobustANGLE(const State &glState,
1495                                           bool isCallValid,
1496                                           ShaderProgramID shaderPacked,
1497                                           GLenum pname,
1498                                           GLsizei bufSize,
1499                                           GLsizei *length,
1500                                           GLint *params)
1501 {
1502     ParamBuffer paramBuffer;
1503 
1504     paramBuffer.addValueParam("shaderPacked", ParamType::TShaderProgramID, shaderPacked);
1505     paramBuffer.addEnumParam("pname", GLenumGroup::DefaultGroup, ParamType::TGLenum, pname);
1506     paramBuffer.addValueParam("bufSize", ParamType::TGLsizei, bufSize);
1507 
1508     if (isCallValid)
1509     {
1510         ParamCapture lengthParam("length", ParamType::TGLsizeiPointer);
1511         InitParamValue(ParamType::TGLsizeiPointer, length, &lengthParam.value);
1512         CaptureGetShaderivRobustANGLE_length(glState, isCallValid, shaderPacked, pname, bufSize,
1513                                              length, params, &lengthParam);
1514         paramBuffer.addParam(std::move(lengthParam));
1515     }
1516     else
1517     {
1518         ParamCapture lengthParam("length", ParamType::TGLsizeiPointer);
1519         InitParamValue(ParamType::TGLsizeiPointer, static_cast<GLsizei *>(nullptr),
1520                        &lengthParam.value);
1521         paramBuffer.addParam(std::move(lengthParam));
1522     }
1523 
1524     if (isCallValid)
1525     {
1526         ParamCapture paramsParam("params", ParamType::TGLintPointer);
1527         InitParamValue(ParamType::TGLintPointer, params, &paramsParam.value);
1528         CaptureGetShaderivRobustANGLE_params(glState, isCallValid, shaderPacked, pname, bufSize,
1529                                              length, params, &paramsParam);
1530         paramBuffer.addParam(std::move(paramsParam));
1531     }
1532     else
1533     {
1534         ParamCapture paramsParam("params", ParamType::TGLintPointer);
1535         InitParamValue(ParamType::TGLintPointer, static_cast<GLint *>(nullptr), &paramsParam.value);
1536         paramBuffer.addParam(std::move(paramsParam));
1537     }
1538 
1539     return CallCapture(angle::EntryPoint::GLGetShaderivRobustANGLE, std::move(paramBuffer));
1540 }
1541 
CaptureGetTexParameterfvRobustANGLE(const State & glState,bool isCallValid,TextureType targetPacked,GLenum pname,GLsizei bufSize,GLsizei * length,GLfloat * params)1542 CallCapture CaptureGetTexParameterfvRobustANGLE(const State &glState,
1543                                                 bool isCallValid,
1544                                                 TextureType targetPacked,
1545                                                 GLenum pname,
1546                                                 GLsizei bufSize,
1547                                                 GLsizei *length,
1548                                                 GLfloat *params)
1549 {
1550     ParamBuffer paramBuffer;
1551 
1552     paramBuffer.addValueParam("targetPacked", ParamType::TTextureType, targetPacked);
1553     paramBuffer.addEnumParam("pname", GLenumGroup::DefaultGroup, ParamType::TGLenum, pname);
1554     paramBuffer.addValueParam("bufSize", ParamType::TGLsizei, bufSize);
1555 
1556     if (isCallValid)
1557     {
1558         ParamCapture lengthParam("length", ParamType::TGLsizeiPointer);
1559         InitParamValue(ParamType::TGLsizeiPointer, length, &lengthParam.value);
1560         CaptureGetTexParameterfvRobustANGLE_length(glState, isCallValid, targetPacked, pname,
1561                                                    bufSize, length, params, &lengthParam);
1562         paramBuffer.addParam(std::move(lengthParam));
1563     }
1564     else
1565     {
1566         ParamCapture lengthParam("length", ParamType::TGLsizeiPointer);
1567         InitParamValue(ParamType::TGLsizeiPointer, static_cast<GLsizei *>(nullptr),
1568                        &lengthParam.value);
1569         paramBuffer.addParam(std::move(lengthParam));
1570     }
1571 
1572     if (isCallValid)
1573     {
1574         ParamCapture paramsParam("params", ParamType::TGLfloatPointer);
1575         InitParamValue(ParamType::TGLfloatPointer, params, &paramsParam.value);
1576         CaptureGetTexParameterfvRobustANGLE_params(glState, isCallValid, targetPacked, pname,
1577                                                    bufSize, length, params, &paramsParam);
1578         paramBuffer.addParam(std::move(paramsParam));
1579     }
1580     else
1581     {
1582         ParamCapture paramsParam("params", ParamType::TGLfloatPointer);
1583         InitParamValue(ParamType::TGLfloatPointer, static_cast<GLfloat *>(nullptr),
1584                        &paramsParam.value);
1585         paramBuffer.addParam(std::move(paramsParam));
1586     }
1587 
1588     return CallCapture(angle::EntryPoint::GLGetTexParameterfvRobustANGLE, std::move(paramBuffer));
1589 }
1590 
CaptureGetTexParameterivRobustANGLE(const State & glState,bool isCallValid,TextureType targetPacked,GLenum pname,GLsizei bufSize,GLsizei * length,GLint * params)1591 CallCapture CaptureGetTexParameterivRobustANGLE(const State &glState,
1592                                                 bool isCallValid,
1593                                                 TextureType targetPacked,
1594                                                 GLenum pname,
1595                                                 GLsizei bufSize,
1596                                                 GLsizei *length,
1597                                                 GLint *params)
1598 {
1599     ParamBuffer paramBuffer;
1600 
1601     paramBuffer.addValueParam("targetPacked", ParamType::TTextureType, targetPacked);
1602     paramBuffer.addEnumParam("pname", GLenumGroup::DefaultGroup, ParamType::TGLenum, pname);
1603     paramBuffer.addValueParam("bufSize", ParamType::TGLsizei, bufSize);
1604 
1605     if (isCallValid)
1606     {
1607         ParamCapture lengthParam("length", ParamType::TGLsizeiPointer);
1608         InitParamValue(ParamType::TGLsizeiPointer, length, &lengthParam.value);
1609         CaptureGetTexParameterivRobustANGLE_length(glState, isCallValid, targetPacked, pname,
1610                                                    bufSize, length, params, &lengthParam);
1611         paramBuffer.addParam(std::move(lengthParam));
1612     }
1613     else
1614     {
1615         ParamCapture lengthParam("length", ParamType::TGLsizeiPointer);
1616         InitParamValue(ParamType::TGLsizeiPointer, static_cast<GLsizei *>(nullptr),
1617                        &lengthParam.value);
1618         paramBuffer.addParam(std::move(lengthParam));
1619     }
1620 
1621     if (isCallValid)
1622     {
1623         ParamCapture paramsParam("params", ParamType::TGLintPointer);
1624         InitParamValue(ParamType::TGLintPointer, params, &paramsParam.value);
1625         CaptureGetTexParameterivRobustANGLE_params(glState, isCallValid, targetPacked, pname,
1626                                                    bufSize, length, params, &paramsParam);
1627         paramBuffer.addParam(std::move(paramsParam));
1628     }
1629     else
1630     {
1631         ParamCapture paramsParam("params", ParamType::TGLintPointer);
1632         InitParamValue(ParamType::TGLintPointer, static_cast<GLint *>(nullptr), &paramsParam.value);
1633         paramBuffer.addParam(std::move(paramsParam));
1634     }
1635 
1636     return CallCapture(angle::EntryPoint::GLGetTexParameterivRobustANGLE, std::move(paramBuffer));
1637 }
1638 
CaptureGetUniformfvRobustANGLE(const State & glState,bool isCallValid,ShaderProgramID programPacked,UniformLocation locationPacked,GLsizei bufSize,GLsizei * length,GLfloat * params)1639 CallCapture CaptureGetUniformfvRobustANGLE(const State &glState,
1640                                            bool isCallValid,
1641                                            ShaderProgramID programPacked,
1642                                            UniformLocation locationPacked,
1643                                            GLsizei bufSize,
1644                                            GLsizei *length,
1645                                            GLfloat *params)
1646 {
1647     ParamBuffer paramBuffer;
1648 
1649     paramBuffer.addValueParam("programPacked", ParamType::TShaderProgramID, programPacked);
1650     paramBuffer.addValueParam("locationPacked", ParamType::TUniformLocation, locationPacked);
1651     paramBuffer.addValueParam("bufSize", ParamType::TGLsizei, bufSize);
1652 
1653     if (isCallValid)
1654     {
1655         ParamCapture lengthParam("length", ParamType::TGLsizeiPointer);
1656         InitParamValue(ParamType::TGLsizeiPointer, length, &lengthParam.value);
1657         CaptureGetUniformfvRobustANGLE_length(glState, isCallValid, programPacked, locationPacked,
1658                                               bufSize, length, params, &lengthParam);
1659         paramBuffer.addParam(std::move(lengthParam));
1660     }
1661     else
1662     {
1663         ParamCapture lengthParam("length", ParamType::TGLsizeiPointer);
1664         InitParamValue(ParamType::TGLsizeiPointer, static_cast<GLsizei *>(nullptr),
1665                        &lengthParam.value);
1666         paramBuffer.addParam(std::move(lengthParam));
1667     }
1668 
1669     if (isCallValid)
1670     {
1671         ParamCapture paramsParam("params", ParamType::TGLfloatPointer);
1672         InitParamValue(ParamType::TGLfloatPointer, params, &paramsParam.value);
1673         CaptureGetUniformfvRobustANGLE_params(glState, isCallValid, programPacked, locationPacked,
1674                                               bufSize, length, params, &paramsParam);
1675         paramBuffer.addParam(std::move(paramsParam));
1676     }
1677     else
1678     {
1679         ParamCapture paramsParam("params", ParamType::TGLfloatPointer);
1680         InitParamValue(ParamType::TGLfloatPointer, static_cast<GLfloat *>(nullptr),
1681                        &paramsParam.value);
1682         paramBuffer.addParam(std::move(paramsParam));
1683     }
1684 
1685     return CallCapture(angle::EntryPoint::GLGetUniformfvRobustANGLE, std::move(paramBuffer));
1686 }
1687 
CaptureGetUniformivRobustANGLE(const State & glState,bool isCallValid,ShaderProgramID programPacked,UniformLocation locationPacked,GLsizei bufSize,GLsizei * length,GLint * params)1688 CallCapture CaptureGetUniformivRobustANGLE(const State &glState,
1689                                            bool isCallValid,
1690                                            ShaderProgramID programPacked,
1691                                            UniformLocation locationPacked,
1692                                            GLsizei bufSize,
1693                                            GLsizei *length,
1694                                            GLint *params)
1695 {
1696     ParamBuffer paramBuffer;
1697 
1698     paramBuffer.addValueParam("programPacked", ParamType::TShaderProgramID, programPacked);
1699     paramBuffer.addValueParam("locationPacked", ParamType::TUniformLocation, locationPacked);
1700     paramBuffer.addValueParam("bufSize", ParamType::TGLsizei, bufSize);
1701 
1702     if (isCallValid)
1703     {
1704         ParamCapture lengthParam("length", ParamType::TGLsizeiPointer);
1705         InitParamValue(ParamType::TGLsizeiPointer, length, &lengthParam.value);
1706         CaptureGetUniformivRobustANGLE_length(glState, isCallValid, programPacked, locationPacked,
1707                                               bufSize, length, params, &lengthParam);
1708         paramBuffer.addParam(std::move(lengthParam));
1709     }
1710     else
1711     {
1712         ParamCapture lengthParam("length", ParamType::TGLsizeiPointer);
1713         InitParamValue(ParamType::TGLsizeiPointer, static_cast<GLsizei *>(nullptr),
1714                        &lengthParam.value);
1715         paramBuffer.addParam(std::move(lengthParam));
1716     }
1717 
1718     if (isCallValid)
1719     {
1720         ParamCapture paramsParam("params", ParamType::TGLintPointer);
1721         InitParamValue(ParamType::TGLintPointer, params, &paramsParam.value);
1722         CaptureGetUniformivRobustANGLE_params(glState, isCallValid, programPacked, locationPacked,
1723                                               bufSize, length, params, &paramsParam);
1724         paramBuffer.addParam(std::move(paramsParam));
1725     }
1726     else
1727     {
1728         ParamCapture paramsParam("params", ParamType::TGLintPointer);
1729         InitParamValue(ParamType::TGLintPointer, static_cast<GLint *>(nullptr), &paramsParam.value);
1730         paramBuffer.addParam(std::move(paramsParam));
1731     }
1732 
1733     return CallCapture(angle::EntryPoint::GLGetUniformivRobustANGLE, std::move(paramBuffer));
1734 }
1735 
CaptureGetVertexAttribfvRobustANGLE(const State & glState,bool isCallValid,GLuint index,GLenum pname,GLsizei bufSize,GLsizei * length,GLfloat * params)1736 CallCapture CaptureGetVertexAttribfvRobustANGLE(const State &glState,
1737                                                 bool isCallValid,
1738                                                 GLuint index,
1739                                                 GLenum pname,
1740                                                 GLsizei bufSize,
1741                                                 GLsizei *length,
1742                                                 GLfloat *params)
1743 {
1744     ParamBuffer paramBuffer;
1745 
1746     paramBuffer.addValueParam("index", ParamType::TGLuint, index);
1747     paramBuffer.addEnumParam("pname", GLenumGroup::DefaultGroup, ParamType::TGLenum, pname);
1748     paramBuffer.addValueParam("bufSize", ParamType::TGLsizei, bufSize);
1749 
1750     if (isCallValid)
1751     {
1752         ParamCapture lengthParam("length", ParamType::TGLsizeiPointer);
1753         InitParamValue(ParamType::TGLsizeiPointer, length, &lengthParam.value);
1754         CaptureGetVertexAttribfvRobustANGLE_length(glState, isCallValid, index, pname, bufSize,
1755                                                    length, params, &lengthParam);
1756         paramBuffer.addParam(std::move(lengthParam));
1757     }
1758     else
1759     {
1760         ParamCapture lengthParam("length", ParamType::TGLsizeiPointer);
1761         InitParamValue(ParamType::TGLsizeiPointer, static_cast<GLsizei *>(nullptr),
1762                        &lengthParam.value);
1763         paramBuffer.addParam(std::move(lengthParam));
1764     }
1765 
1766     if (isCallValid)
1767     {
1768         ParamCapture paramsParam("params", ParamType::TGLfloatPointer);
1769         InitParamValue(ParamType::TGLfloatPointer, params, &paramsParam.value);
1770         CaptureGetVertexAttribfvRobustANGLE_params(glState, isCallValid, index, pname, bufSize,
1771                                                    length, params, &paramsParam);
1772         paramBuffer.addParam(std::move(paramsParam));
1773     }
1774     else
1775     {
1776         ParamCapture paramsParam("params", ParamType::TGLfloatPointer);
1777         InitParamValue(ParamType::TGLfloatPointer, static_cast<GLfloat *>(nullptr),
1778                        &paramsParam.value);
1779         paramBuffer.addParam(std::move(paramsParam));
1780     }
1781 
1782     return CallCapture(angle::EntryPoint::GLGetVertexAttribfvRobustANGLE, std::move(paramBuffer));
1783 }
1784 
CaptureGetVertexAttribivRobustANGLE(const State & glState,bool isCallValid,GLuint index,GLenum pname,GLsizei bufSize,GLsizei * length,GLint * params)1785 CallCapture CaptureGetVertexAttribivRobustANGLE(const State &glState,
1786                                                 bool isCallValid,
1787                                                 GLuint index,
1788                                                 GLenum pname,
1789                                                 GLsizei bufSize,
1790                                                 GLsizei *length,
1791                                                 GLint *params)
1792 {
1793     ParamBuffer paramBuffer;
1794 
1795     paramBuffer.addValueParam("index", ParamType::TGLuint, index);
1796     paramBuffer.addEnumParam("pname", GLenumGroup::DefaultGroup, ParamType::TGLenum, pname);
1797     paramBuffer.addValueParam("bufSize", ParamType::TGLsizei, bufSize);
1798 
1799     if (isCallValid)
1800     {
1801         ParamCapture lengthParam("length", ParamType::TGLsizeiPointer);
1802         InitParamValue(ParamType::TGLsizeiPointer, length, &lengthParam.value);
1803         CaptureGetVertexAttribivRobustANGLE_length(glState, isCallValid, index, pname, bufSize,
1804                                                    length, params, &lengthParam);
1805         paramBuffer.addParam(std::move(lengthParam));
1806     }
1807     else
1808     {
1809         ParamCapture lengthParam("length", ParamType::TGLsizeiPointer);
1810         InitParamValue(ParamType::TGLsizeiPointer, static_cast<GLsizei *>(nullptr),
1811                        &lengthParam.value);
1812         paramBuffer.addParam(std::move(lengthParam));
1813     }
1814 
1815     if (isCallValid)
1816     {
1817         ParamCapture paramsParam("params", ParamType::TGLintPointer);
1818         InitParamValue(ParamType::TGLintPointer, params, &paramsParam.value);
1819         CaptureGetVertexAttribivRobustANGLE_params(glState, isCallValid, index, pname, bufSize,
1820                                                    length, params, &paramsParam);
1821         paramBuffer.addParam(std::move(paramsParam));
1822     }
1823     else
1824     {
1825         ParamCapture paramsParam("params", ParamType::TGLintPointer);
1826         InitParamValue(ParamType::TGLintPointer, static_cast<GLint *>(nullptr), &paramsParam.value);
1827         paramBuffer.addParam(std::move(paramsParam));
1828     }
1829 
1830     return CallCapture(angle::EntryPoint::GLGetVertexAttribivRobustANGLE, std::move(paramBuffer));
1831 }
1832 
CaptureGetVertexAttribPointervRobustANGLE(const State & glState,bool isCallValid,GLuint index,GLenum pname,GLsizei bufSize,GLsizei * length,void ** pointer)1833 CallCapture CaptureGetVertexAttribPointervRobustANGLE(const State &glState,
1834                                                       bool isCallValid,
1835                                                       GLuint index,
1836                                                       GLenum pname,
1837                                                       GLsizei bufSize,
1838                                                       GLsizei *length,
1839                                                       void **pointer)
1840 {
1841     ParamBuffer paramBuffer;
1842 
1843     paramBuffer.addValueParam("index", ParamType::TGLuint, index);
1844     paramBuffer.addEnumParam("pname", GLenumGroup::DefaultGroup, ParamType::TGLenum, pname);
1845     paramBuffer.addValueParam("bufSize", ParamType::TGLsizei, bufSize);
1846 
1847     if (isCallValid)
1848     {
1849         ParamCapture lengthParam("length", ParamType::TGLsizeiPointer);
1850         InitParamValue(ParamType::TGLsizeiPointer, length, &lengthParam.value);
1851         CaptureGetVertexAttribPointervRobustANGLE_length(glState, isCallValid, index, pname,
1852                                                          bufSize, length, pointer, &lengthParam);
1853         paramBuffer.addParam(std::move(lengthParam));
1854     }
1855     else
1856     {
1857         ParamCapture lengthParam("length", ParamType::TGLsizeiPointer);
1858         InitParamValue(ParamType::TGLsizeiPointer, static_cast<GLsizei *>(nullptr),
1859                        &lengthParam.value);
1860         paramBuffer.addParam(std::move(lengthParam));
1861     }
1862 
1863     if (isCallValid)
1864     {
1865         ParamCapture pointerParam("pointer", ParamType::TvoidPointerPointer);
1866         InitParamValue(ParamType::TvoidPointerPointer, pointer, &pointerParam.value);
1867         CaptureGetVertexAttribPointervRobustANGLE_pointer(glState, isCallValid, index, pname,
1868                                                           bufSize, length, pointer, &pointerParam);
1869         paramBuffer.addParam(std::move(pointerParam));
1870     }
1871     else
1872     {
1873         ParamCapture pointerParam("pointer", ParamType::TvoidPointerPointer);
1874         InitParamValue(ParamType::TvoidPointerPointer, static_cast<void **>(nullptr),
1875                        &pointerParam.value);
1876         paramBuffer.addParam(std::move(pointerParam));
1877     }
1878 
1879     return CallCapture(angle::EntryPoint::GLGetVertexAttribPointervRobustANGLE,
1880                        std::move(paramBuffer));
1881 }
1882 
CaptureReadPixelsRobustANGLE(const State & glState,bool isCallValid,GLint x,GLint y,GLsizei width,GLsizei height,GLenum format,GLenum type,GLsizei bufSize,GLsizei * length,GLsizei * columns,GLsizei * rows,void * pixels)1883 CallCapture CaptureReadPixelsRobustANGLE(const State &glState,
1884                                          bool isCallValid,
1885                                          GLint x,
1886                                          GLint y,
1887                                          GLsizei width,
1888                                          GLsizei height,
1889                                          GLenum format,
1890                                          GLenum type,
1891                                          GLsizei bufSize,
1892                                          GLsizei *length,
1893                                          GLsizei *columns,
1894                                          GLsizei *rows,
1895                                          void *pixels)
1896 {
1897     ParamBuffer paramBuffer;
1898 
1899     paramBuffer.addValueParam("x", ParamType::TGLint, x);
1900     paramBuffer.addValueParam("y", ParamType::TGLint, y);
1901     paramBuffer.addValueParam("width", ParamType::TGLsizei, width);
1902     paramBuffer.addValueParam("height", ParamType::TGLsizei, height);
1903     paramBuffer.addEnumParam("format", GLenumGroup::DefaultGroup, ParamType::TGLenum, format);
1904     paramBuffer.addEnumParam("type", GLenumGroup::DefaultGroup, ParamType::TGLenum, type);
1905     paramBuffer.addValueParam("bufSize", ParamType::TGLsizei, bufSize);
1906 
1907     if (isCallValid)
1908     {
1909         ParamCapture lengthParam("length", ParamType::TGLsizeiPointer);
1910         InitParamValue(ParamType::TGLsizeiPointer, length, &lengthParam.value);
1911         CaptureReadPixelsRobustANGLE_length(glState, isCallValid, x, y, width, height, format, type,
1912                                             bufSize, length, columns, rows, pixels, &lengthParam);
1913         paramBuffer.addParam(std::move(lengthParam));
1914     }
1915     else
1916     {
1917         ParamCapture lengthParam("length", ParamType::TGLsizeiPointer);
1918         InitParamValue(ParamType::TGLsizeiPointer, static_cast<GLsizei *>(nullptr),
1919                        &lengthParam.value);
1920         paramBuffer.addParam(std::move(lengthParam));
1921     }
1922 
1923     if (isCallValid)
1924     {
1925         ParamCapture columnsParam("columns", ParamType::TGLsizeiPointer);
1926         InitParamValue(ParamType::TGLsizeiPointer, columns, &columnsParam.value);
1927         CaptureReadPixelsRobustANGLE_columns(glState, isCallValid, x, y, width, height, format,
1928                                              type, bufSize, length, columns, rows, pixels,
1929                                              &columnsParam);
1930         paramBuffer.addParam(std::move(columnsParam));
1931     }
1932     else
1933     {
1934         ParamCapture columnsParam("columns", ParamType::TGLsizeiPointer);
1935         InitParamValue(ParamType::TGLsizeiPointer, static_cast<GLsizei *>(nullptr),
1936                        &columnsParam.value);
1937         paramBuffer.addParam(std::move(columnsParam));
1938     }
1939 
1940     if (isCallValid)
1941     {
1942         ParamCapture rowsParam("rows", ParamType::TGLsizeiPointer);
1943         InitParamValue(ParamType::TGLsizeiPointer, rows, &rowsParam.value);
1944         CaptureReadPixelsRobustANGLE_rows(glState, isCallValid, x, y, width, height, format, type,
1945                                           bufSize, length, columns, rows, pixels, &rowsParam);
1946         paramBuffer.addParam(std::move(rowsParam));
1947     }
1948     else
1949     {
1950         ParamCapture rowsParam("rows", ParamType::TGLsizeiPointer);
1951         InitParamValue(ParamType::TGLsizeiPointer, static_cast<GLsizei *>(nullptr),
1952                        &rowsParam.value);
1953         paramBuffer.addParam(std::move(rowsParam));
1954     }
1955 
1956     if (isCallValid)
1957     {
1958         ParamCapture pixelsParam("pixels", ParamType::TvoidPointer);
1959         InitParamValue(ParamType::TvoidPointer, pixels, &pixelsParam.value);
1960         CaptureReadPixelsRobustANGLE_pixels(glState, isCallValid, x, y, width, height, format, type,
1961                                             bufSize, length, columns, rows, pixels, &pixelsParam);
1962         paramBuffer.addParam(std::move(pixelsParam));
1963     }
1964     else
1965     {
1966         ParamCapture pixelsParam("pixels", ParamType::TvoidPointer);
1967         InitParamValue(ParamType::TvoidPointer, static_cast<void *>(nullptr), &pixelsParam.value);
1968         paramBuffer.addParam(std::move(pixelsParam));
1969     }
1970 
1971     return CallCapture(angle::EntryPoint::GLReadPixelsRobustANGLE, std::move(paramBuffer));
1972 }
1973 
CaptureTexImage2DRobustANGLE(const State & glState,bool isCallValid,TextureTarget targetPacked,GLint level,GLint internalformat,GLsizei width,GLsizei height,GLint border,GLenum format,GLenum type,GLsizei bufSize,const void * pixels)1974 CallCapture CaptureTexImage2DRobustANGLE(const State &glState,
1975                                          bool isCallValid,
1976                                          TextureTarget targetPacked,
1977                                          GLint level,
1978                                          GLint internalformat,
1979                                          GLsizei width,
1980                                          GLsizei height,
1981                                          GLint border,
1982                                          GLenum format,
1983                                          GLenum type,
1984                                          GLsizei bufSize,
1985                                          const void *pixels)
1986 {
1987     ParamBuffer paramBuffer;
1988 
1989     paramBuffer.addValueParam("targetPacked", ParamType::TTextureTarget, targetPacked);
1990     paramBuffer.addValueParam("level", ParamType::TGLint, level);
1991     paramBuffer.addValueParam("internalformat", ParamType::TGLint, internalformat);
1992     paramBuffer.addValueParam("width", ParamType::TGLsizei, width);
1993     paramBuffer.addValueParam("height", ParamType::TGLsizei, height);
1994     paramBuffer.addValueParam("border", ParamType::TGLint, border);
1995     paramBuffer.addEnumParam("format", GLenumGroup::DefaultGroup, ParamType::TGLenum, format);
1996     paramBuffer.addEnumParam("type", GLenumGroup::DefaultGroup, ParamType::TGLenum, type);
1997     paramBuffer.addValueParam("bufSize", ParamType::TGLsizei, bufSize);
1998 
1999     if (isCallValid)
2000     {
2001         ParamCapture pixelsParam("pixels", ParamType::TvoidConstPointer);
2002         InitParamValue(ParamType::TvoidConstPointer, pixels, &pixelsParam.value);
2003         CaptureTexImage2DRobustANGLE_pixels(glState, isCallValid, targetPacked, level,
2004                                             internalformat, width, height, border, format, type,
2005                                             bufSize, pixels, &pixelsParam);
2006         paramBuffer.addParam(std::move(pixelsParam));
2007     }
2008     else
2009     {
2010         ParamCapture pixelsParam("pixels", ParamType::TvoidConstPointer);
2011         InitParamValue(ParamType::TvoidConstPointer, static_cast<const void *>(nullptr),
2012                        &pixelsParam.value);
2013         paramBuffer.addParam(std::move(pixelsParam));
2014     }
2015 
2016     return CallCapture(angle::EntryPoint::GLTexImage2DRobustANGLE, std::move(paramBuffer));
2017 }
2018 
CaptureTexParameterfvRobustANGLE(const State & glState,bool isCallValid,TextureType targetPacked,GLenum pname,GLsizei bufSize,const GLfloat * params)2019 CallCapture CaptureTexParameterfvRobustANGLE(const State &glState,
2020                                              bool isCallValid,
2021                                              TextureType targetPacked,
2022                                              GLenum pname,
2023                                              GLsizei bufSize,
2024                                              const GLfloat *params)
2025 {
2026     ParamBuffer paramBuffer;
2027 
2028     paramBuffer.addValueParam("targetPacked", ParamType::TTextureType, targetPacked);
2029     paramBuffer.addEnumParam("pname", GLenumGroup::DefaultGroup, ParamType::TGLenum, pname);
2030     paramBuffer.addValueParam("bufSize", ParamType::TGLsizei, bufSize);
2031 
2032     if (isCallValid)
2033     {
2034         ParamCapture paramsParam("params", ParamType::TGLfloatConstPointer);
2035         InitParamValue(ParamType::TGLfloatConstPointer, params, &paramsParam.value);
2036         CaptureTexParameterfvRobustANGLE_params(glState, isCallValid, targetPacked, pname, bufSize,
2037                                                 params, &paramsParam);
2038         paramBuffer.addParam(std::move(paramsParam));
2039     }
2040     else
2041     {
2042         ParamCapture paramsParam("params", ParamType::TGLfloatConstPointer);
2043         InitParamValue(ParamType::TGLfloatConstPointer, static_cast<const GLfloat *>(nullptr),
2044                        &paramsParam.value);
2045         paramBuffer.addParam(std::move(paramsParam));
2046     }
2047 
2048     return CallCapture(angle::EntryPoint::GLTexParameterfvRobustANGLE, std::move(paramBuffer));
2049 }
2050 
CaptureTexParameterivRobustANGLE(const State & glState,bool isCallValid,TextureType targetPacked,GLenum pname,GLsizei bufSize,const GLint * params)2051 CallCapture CaptureTexParameterivRobustANGLE(const State &glState,
2052                                              bool isCallValid,
2053                                              TextureType targetPacked,
2054                                              GLenum pname,
2055                                              GLsizei bufSize,
2056                                              const GLint *params)
2057 {
2058     ParamBuffer paramBuffer;
2059 
2060     paramBuffer.addValueParam("targetPacked", ParamType::TTextureType, targetPacked);
2061     paramBuffer.addEnumParam("pname", GLenumGroup::DefaultGroup, ParamType::TGLenum, pname);
2062     paramBuffer.addValueParam("bufSize", ParamType::TGLsizei, bufSize);
2063 
2064     if (isCallValid)
2065     {
2066         ParamCapture paramsParam("params", ParamType::TGLintConstPointer);
2067         InitParamValue(ParamType::TGLintConstPointer, params, &paramsParam.value);
2068         CaptureTexParameterivRobustANGLE_params(glState, isCallValid, targetPacked, pname, bufSize,
2069                                                 params, &paramsParam);
2070         paramBuffer.addParam(std::move(paramsParam));
2071     }
2072     else
2073     {
2074         ParamCapture paramsParam("params", ParamType::TGLintConstPointer);
2075         InitParamValue(ParamType::TGLintConstPointer, static_cast<const GLint *>(nullptr),
2076                        &paramsParam.value);
2077         paramBuffer.addParam(std::move(paramsParam));
2078     }
2079 
2080     return CallCapture(angle::EntryPoint::GLTexParameterivRobustANGLE, std::move(paramBuffer));
2081 }
2082 
CaptureTexSubImage2DRobustANGLE(const State & glState,bool isCallValid,TextureTarget targetPacked,GLint level,GLint xoffset,GLint yoffset,GLsizei width,GLsizei height,GLenum format,GLenum type,GLsizei bufSize,const void * pixels)2083 CallCapture CaptureTexSubImage2DRobustANGLE(const State &glState,
2084                                             bool isCallValid,
2085                                             TextureTarget targetPacked,
2086                                             GLint level,
2087                                             GLint xoffset,
2088                                             GLint yoffset,
2089                                             GLsizei width,
2090                                             GLsizei height,
2091                                             GLenum format,
2092                                             GLenum type,
2093                                             GLsizei bufSize,
2094                                             const void *pixels)
2095 {
2096     ParamBuffer paramBuffer;
2097 
2098     paramBuffer.addValueParam("targetPacked", ParamType::TTextureTarget, targetPacked);
2099     paramBuffer.addValueParam("level", ParamType::TGLint, level);
2100     paramBuffer.addValueParam("xoffset", ParamType::TGLint, xoffset);
2101     paramBuffer.addValueParam("yoffset", ParamType::TGLint, yoffset);
2102     paramBuffer.addValueParam("width", ParamType::TGLsizei, width);
2103     paramBuffer.addValueParam("height", ParamType::TGLsizei, height);
2104     paramBuffer.addEnumParam("format", GLenumGroup::DefaultGroup, ParamType::TGLenum, format);
2105     paramBuffer.addEnumParam("type", GLenumGroup::DefaultGroup, ParamType::TGLenum, type);
2106     paramBuffer.addValueParam("bufSize", ParamType::TGLsizei, bufSize);
2107 
2108     if (isCallValid)
2109     {
2110         ParamCapture pixelsParam("pixels", ParamType::TvoidConstPointer);
2111         InitParamValue(ParamType::TvoidConstPointer, pixels, &pixelsParam.value);
2112         CaptureTexSubImage2DRobustANGLE_pixels(glState, isCallValid, targetPacked, level, xoffset,
2113                                                yoffset, width, height, format, type, bufSize,
2114                                                pixels, &pixelsParam);
2115         paramBuffer.addParam(std::move(pixelsParam));
2116     }
2117     else
2118     {
2119         ParamCapture pixelsParam("pixels", ParamType::TvoidConstPointer);
2120         InitParamValue(ParamType::TvoidConstPointer, static_cast<const void *>(nullptr),
2121                        &pixelsParam.value);
2122         paramBuffer.addParam(std::move(pixelsParam));
2123     }
2124 
2125     return CallCapture(angle::EntryPoint::GLTexSubImage2DRobustANGLE, std::move(paramBuffer));
2126 }
2127 
CaptureTexImage3DRobustANGLE(const State & glState,bool isCallValid,TextureTarget targetPacked,GLint level,GLint internalformat,GLsizei width,GLsizei height,GLsizei depth,GLint border,GLenum format,GLenum type,GLsizei bufSize,const void * pixels)2128 CallCapture CaptureTexImage3DRobustANGLE(const State &glState,
2129                                          bool isCallValid,
2130                                          TextureTarget targetPacked,
2131                                          GLint level,
2132                                          GLint internalformat,
2133                                          GLsizei width,
2134                                          GLsizei height,
2135                                          GLsizei depth,
2136                                          GLint border,
2137                                          GLenum format,
2138                                          GLenum type,
2139                                          GLsizei bufSize,
2140                                          const void *pixels)
2141 {
2142     ParamBuffer paramBuffer;
2143 
2144     paramBuffer.addValueParam("targetPacked", ParamType::TTextureTarget, targetPacked);
2145     paramBuffer.addValueParam("level", ParamType::TGLint, level);
2146     paramBuffer.addValueParam("internalformat", ParamType::TGLint, internalformat);
2147     paramBuffer.addValueParam("width", ParamType::TGLsizei, width);
2148     paramBuffer.addValueParam("height", ParamType::TGLsizei, height);
2149     paramBuffer.addValueParam("depth", ParamType::TGLsizei, depth);
2150     paramBuffer.addValueParam("border", ParamType::TGLint, border);
2151     paramBuffer.addEnumParam("format", GLenumGroup::DefaultGroup, ParamType::TGLenum, format);
2152     paramBuffer.addEnumParam("type", GLenumGroup::DefaultGroup, ParamType::TGLenum, type);
2153     paramBuffer.addValueParam("bufSize", ParamType::TGLsizei, bufSize);
2154 
2155     if (isCallValid)
2156     {
2157         ParamCapture pixelsParam("pixels", ParamType::TvoidConstPointer);
2158         InitParamValue(ParamType::TvoidConstPointer, pixels, &pixelsParam.value);
2159         CaptureTexImage3DRobustANGLE_pixels(glState, isCallValid, targetPacked, level,
2160                                             internalformat, width, height, depth, border, format,
2161                                             type, bufSize, pixels, &pixelsParam);
2162         paramBuffer.addParam(std::move(pixelsParam));
2163     }
2164     else
2165     {
2166         ParamCapture pixelsParam("pixels", ParamType::TvoidConstPointer);
2167         InitParamValue(ParamType::TvoidConstPointer, static_cast<const void *>(nullptr),
2168                        &pixelsParam.value);
2169         paramBuffer.addParam(std::move(pixelsParam));
2170     }
2171 
2172     return CallCapture(angle::EntryPoint::GLTexImage3DRobustANGLE, std::move(paramBuffer));
2173 }
2174 
CaptureTexSubImage3DRobustANGLE(const State & glState,bool isCallValid,TextureTarget targetPacked,GLint level,GLint xoffset,GLint yoffset,GLint zoffset,GLsizei width,GLsizei height,GLsizei depth,GLenum format,GLenum type,GLsizei bufSize,const void * pixels)2175 CallCapture CaptureTexSubImage3DRobustANGLE(const State &glState,
2176                                             bool isCallValid,
2177                                             TextureTarget targetPacked,
2178                                             GLint level,
2179                                             GLint xoffset,
2180                                             GLint yoffset,
2181                                             GLint zoffset,
2182                                             GLsizei width,
2183                                             GLsizei height,
2184                                             GLsizei depth,
2185                                             GLenum format,
2186                                             GLenum type,
2187                                             GLsizei bufSize,
2188                                             const void *pixels)
2189 {
2190     ParamBuffer paramBuffer;
2191 
2192     paramBuffer.addValueParam("targetPacked", ParamType::TTextureTarget, targetPacked);
2193     paramBuffer.addValueParam("level", ParamType::TGLint, level);
2194     paramBuffer.addValueParam("xoffset", ParamType::TGLint, xoffset);
2195     paramBuffer.addValueParam("yoffset", ParamType::TGLint, yoffset);
2196     paramBuffer.addValueParam("zoffset", ParamType::TGLint, zoffset);
2197     paramBuffer.addValueParam("width", ParamType::TGLsizei, width);
2198     paramBuffer.addValueParam("height", ParamType::TGLsizei, height);
2199     paramBuffer.addValueParam("depth", ParamType::TGLsizei, depth);
2200     paramBuffer.addEnumParam("format", GLenumGroup::DefaultGroup, ParamType::TGLenum, format);
2201     paramBuffer.addEnumParam("type", GLenumGroup::DefaultGroup, ParamType::TGLenum, type);
2202     paramBuffer.addValueParam("bufSize", ParamType::TGLsizei, bufSize);
2203 
2204     if (isCallValid)
2205     {
2206         ParamCapture pixelsParam("pixels", ParamType::TvoidConstPointer);
2207         InitParamValue(ParamType::TvoidConstPointer, pixels, &pixelsParam.value);
2208         CaptureTexSubImage3DRobustANGLE_pixels(glState, isCallValid, targetPacked, level, xoffset,
2209                                                yoffset, zoffset, width, height, depth, format, type,
2210                                                bufSize, pixels, &pixelsParam);
2211         paramBuffer.addParam(std::move(pixelsParam));
2212     }
2213     else
2214     {
2215         ParamCapture pixelsParam("pixels", ParamType::TvoidConstPointer);
2216         InitParamValue(ParamType::TvoidConstPointer, static_cast<const void *>(nullptr),
2217                        &pixelsParam.value);
2218         paramBuffer.addParam(std::move(pixelsParam));
2219     }
2220 
2221     return CallCapture(angle::EntryPoint::GLTexSubImage3DRobustANGLE, std::move(paramBuffer));
2222 }
2223 
CaptureCompressedTexImage2DRobustANGLE(const State & glState,bool isCallValid,TextureTarget targetPacked,GLint level,GLenum internalformat,GLsizei width,GLsizei height,GLint border,GLsizei imageSize,GLsizei dataSize,const GLvoid * data)2224 CallCapture CaptureCompressedTexImage2DRobustANGLE(const State &glState,
2225                                                    bool isCallValid,
2226                                                    TextureTarget targetPacked,
2227                                                    GLint level,
2228                                                    GLenum internalformat,
2229                                                    GLsizei width,
2230                                                    GLsizei height,
2231                                                    GLint border,
2232                                                    GLsizei imageSize,
2233                                                    GLsizei dataSize,
2234                                                    const GLvoid *data)
2235 {
2236     ParamBuffer paramBuffer;
2237 
2238     paramBuffer.addValueParam("targetPacked", ParamType::TTextureTarget, targetPacked);
2239     paramBuffer.addValueParam("level", ParamType::TGLint, level);
2240     paramBuffer.addEnumParam("internalformat", GLenumGroup::DefaultGroup, ParamType::TGLenum,
2241                              internalformat);
2242     paramBuffer.addValueParam("width", ParamType::TGLsizei, width);
2243     paramBuffer.addValueParam("height", ParamType::TGLsizei, height);
2244     paramBuffer.addValueParam("border", ParamType::TGLint, border);
2245     paramBuffer.addValueParam("imageSize", ParamType::TGLsizei, imageSize);
2246     paramBuffer.addValueParam("dataSize", ParamType::TGLsizei, dataSize);
2247 
2248     if (isCallValid)
2249     {
2250         ParamCapture dataParam("data", ParamType::TGLvoidConstPointer);
2251         InitParamValue(ParamType::TGLvoidConstPointer, data, &dataParam.value);
2252         CaptureCompressedTexImage2DRobustANGLE_data(glState, isCallValid, targetPacked, level,
2253                                                     internalformat, width, height, border,
2254                                                     imageSize, dataSize, data, &dataParam);
2255         paramBuffer.addParam(std::move(dataParam));
2256     }
2257     else
2258     {
2259         ParamCapture dataParam("data", ParamType::TGLvoidConstPointer);
2260         InitParamValue(ParamType::TGLvoidConstPointer, static_cast<const GLvoid *>(nullptr),
2261                        &dataParam.value);
2262         paramBuffer.addParam(std::move(dataParam));
2263     }
2264 
2265     return CallCapture(angle::EntryPoint::GLCompressedTexImage2DRobustANGLE,
2266                        std::move(paramBuffer));
2267 }
2268 
CaptureCompressedTexSubImage2DRobustANGLE(const State & glState,bool isCallValid,TextureTarget targetPacked,GLint level,GLsizei xoffset,GLsizei yoffset,GLsizei width,GLsizei height,GLenum format,GLsizei imageSize,GLsizei dataSize,const GLvoid * data)2269 CallCapture CaptureCompressedTexSubImage2DRobustANGLE(const State &glState,
2270                                                       bool isCallValid,
2271                                                       TextureTarget targetPacked,
2272                                                       GLint level,
2273                                                       GLsizei xoffset,
2274                                                       GLsizei yoffset,
2275                                                       GLsizei width,
2276                                                       GLsizei height,
2277                                                       GLenum format,
2278                                                       GLsizei imageSize,
2279                                                       GLsizei dataSize,
2280                                                       const GLvoid *data)
2281 {
2282     ParamBuffer paramBuffer;
2283 
2284     paramBuffer.addValueParam("targetPacked", ParamType::TTextureTarget, targetPacked);
2285     paramBuffer.addValueParam("level", ParamType::TGLint, level);
2286     paramBuffer.addValueParam("xoffset", ParamType::TGLsizei, xoffset);
2287     paramBuffer.addValueParam("yoffset", ParamType::TGLsizei, yoffset);
2288     paramBuffer.addValueParam("width", ParamType::TGLsizei, width);
2289     paramBuffer.addValueParam("height", ParamType::TGLsizei, height);
2290     paramBuffer.addEnumParam("format", GLenumGroup::DefaultGroup, ParamType::TGLenum, format);
2291     paramBuffer.addValueParam("imageSize", ParamType::TGLsizei, imageSize);
2292     paramBuffer.addValueParam("dataSize", ParamType::TGLsizei, dataSize);
2293 
2294     if (isCallValid)
2295     {
2296         ParamCapture dataParam("data", ParamType::TGLvoidConstPointer);
2297         InitParamValue(ParamType::TGLvoidConstPointer, data, &dataParam.value);
2298         CaptureCompressedTexSubImage2DRobustANGLE_data(glState, isCallValid, targetPacked, level,
2299                                                        xoffset, yoffset, width, height, format,
2300                                                        imageSize, dataSize, data, &dataParam);
2301         paramBuffer.addParam(std::move(dataParam));
2302     }
2303     else
2304     {
2305         ParamCapture dataParam("data", ParamType::TGLvoidConstPointer);
2306         InitParamValue(ParamType::TGLvoidConstPointer, static_cast<const GLvoid *>(nullptr),
2307                        &dataParam.value);
2308         paramBuffer.addParam(std::move(dataParam));
2309     }
2310 
2311     return CallCapture(angle::EntryPoint::GLCompressedTexSubImage2DRobustANGLE,
2312                        std::move(paramBuffer));
2313 }
2314 
CaptureCompressedTexImage3DRobustANGLE(const State & glState,bool isCallValid,TextureTarget targetPacked,GLint level,GLenum internalformat,GLsizei width,GLsizei height,GLsizei depth,GLint border,GLsizei imageSize,GLsizei dataSize,const GLvoid * data)2315 CallCapture CaptureCompressedTexImage3DRobustANGLE(const State &glState,
2316                                                    bool isCallValid,
2317                                                    TextureTarget targetPacked,
2318                                                    GLint level,
2319                                                    GLenum internalformat,
2320                                                    GLsizei width,
2321                                                    GLsizei height,
2322                                                    GLsizei depth,
2323                                                    GLint border,
2324                                                    GLsizei imageSize,
2325                                                    GLsizei dataSize,
2326                                                    const GLvoid *data)
2327 {
2328     ParamBuffer paramBuffer;
2329 
2330     paramBuffer.addValueParam("targetPacked", ParamType::TTextureTarget, targetPacked);
2331     paramBuffer.addValueParam("level", ParamType::TGLint, level);
2332     paramBuffer.addEnumParam("internalformat", GLenumGroup::DefaultGroup, ParamType::TGLenum,
2333                              internalformat);
2334     paramBuffer.addValueParam("width", ParamType::TGLsizei, width);
2335     paramBuffer.addValueParam("height", ParamType::TGLsizei, height);
2336     paramBuffer.addValueParam("depth", ParamType::TGLsizei, depth);
2337     paramBuffer.addValueParam("border", ParamType::TGLint, border);
2338     paramBuffer.addValueParam("imageSize", ParamType::TGLsizei, imageSize);
2339     paramBuffer.addValueParam("dataSize", ParamType::TGLsizei, dataSize);
2340 
2341     if (isCallValid)
2342     {
2343         ParamCapture dataParam("data", ParamType::TGLvoidConstPointer);
2344         InitParamValue(ParamType::TGLvoidConstPointer, data, &dataParam.value);
2345         CaptureCompressedTexImage3DRobustANGLE_data(glState, isCallValid, targetPacked, level,
2346                                                     internalformat, width, height, depth, border,
2347                                                     imageSize, dataSize, data, &dataParam);
2348         paramBuffer.addParam(std::move(dataParam));
2349     }
2350     else
2351     {
2352         ParamCapture dataParam("data", ParamType::TGLvoidConstPointer);
2353         InitParamValue(ParamType::TGLvoidConstPointer, static_cast<const GLvoid *>(nullptr),
2354                        &dataParam.value);
2355         paramBuffer.addParam(std::move(dataParam));
2356     }
2357 
2358     return CallCapture(angle::EntryPoint::GLCompressedTexImage3DRobustANGLE,
2359                        std::move(paramBuffer));
2360 }
2361 
CaptureCompressedTexSubImage3DRobustANGLE(const State & glState,bool isCallValid,TextureTarget targetPacked,GLint level,GLint xoffset,GLint yoffset,GLint zoffset,GLsizei width,GLsizei height,GLsizei depth,GLenum format,GLsizei imageSize,GLsizei dataSize,const GLvoid * data)2362 CallCapture CaptureCompressedTexSubImage3DRobustANGLE(const State &glState,
2363                                                       bool isCallValid,
2364                                                       TextureTarget targetPacked,
2365                                                       GLint level,
2366                                                       GLint xoffset,
2367                                                       GLint yoffset,
2368                                                       GLint zoffset,
2369                                                       GLsizei width,
2370                                                       GLsizei height,
2371                                                       GLsizei depth,
2372                                                       GLenum format,
2373                                                       GLsizei imageSize,
2374                                                       GLsizei dataSize,
2375                                                       const GLvoid *data)
2376 {
2377     ParamBuffer paramBuffer;
2378 
2379     paramBuffer.addValueParam("targetPacked", ParamType::TTextureTarget, targetPacked);
2380     paramBuffer.addValueParam("level", ParamType::TGLint, level);
2381     paramBuffer.addValueParam("xoffset", ParamType::TGLint, xoffset);
2382     paramBuffer.addValueParam("yoffset", ParamType::TGLint, yoffset);
2383     paramBuffer.addValueParam("zoffset", ParamType::TGLint, zoffset);
2384     paramBuffer.addValueParam("width", ParamType::TGLsizei, width);
2385     paramBuffer.addValueParam("height", ParamType::TGLsizei, height);
2386     paramBuffer.addValueParam("depth", ParamType::TGLsizei, depth);
2387     paramBuffer.addEnumParam("format", GLenumGroup::DefaultGroup, ParamType::TGLenum, format);
2388     paramBuffer.addValueParam("imageSize", ParamType::TGLsizei, imageSize);
2389     paramBuffer.addValueParam("dataSize", ParamType::TGLsizei, dataSize);
2390 
2391     if (isCallValid)
2392     {
2393         ParamCapture dataParam("data", ParamType::TGLvoidConstPointer);
2394         InitParamValue(ParamType::TGLvoidConstPointer, data, &dataParam.value);
2395         CaptureCompressedTexSubImage3DRobustANGLE_data(
2396             glState, isCallValid, targetPacked, level, xoffset, yoffset, zoffset, width, height,
2397             depth, format, imageSize, dataSize, data, &dataParam);
2398         paramBuffer.addParam(std::move(dataParam));
2399     }
2400     else
2401     {
2402         ParamCapture dataParam("data", ParamType::TGLvoidConstPointer);
2403         InitParamValue(ParamType::TGLvoidConstPointer, static_cast<const GLvoid *>(nullptr),
2404                        &dataParam.value);
2405         paramBuffer.addParam(std::move(dataParam));
2406     }
2407 
2408     return CallCapture(angle::EntryPoint::GLCompressedTexSubImage3DRobustANGLE,
2409                        std::move(paramBuffer));
2410 }
2411 
CaptureGetQueryivRobustANGLE(const State & glState,bool isCallValid,QueryType targetPacked,GLenum pname,GLsizei bufSize,GLsizei * length,GLint * params)2412 CallCapture CaptureGetQueryivRobustANGLE(const State &glState,
2413                                          bool isCallValid,
2414                                          QueryType targetPacked,
2415                                          GLenum pname,
2416                                          GLsizei bufSize,
2417                                          GLsizei *length,
2418                                          GLint *params)
2419 {
2420     ParamBuffer paramBuffer;
2421 
2422     paramBuffer.addValueParam("targetPacked", ParamType::TQueryType, targetPacked);
2423     paramBuffer.addEnumParam("pname", GLenumGroup::DefaultGroup, ParamType::TGLenum, pname);
2424     paramBuffer.addValueParam("bufSize", ParamType::TGLsizei, bufSize);
2425 
2426     if (isCallValid)
2427     {
2428         ParamCapture lengthParam("length", ParamType::TGLsizeiPointer);
2429         InitParamValue(ParamType::TGLsizeiPointer, length, &lengthParam.value);
2430         CaptureGetQueryivRobustANGLE_length(glState, isCallValid, targetPacked, pname, bufSize,
2431                                             length, params, &lengthParam);
2432         paramBuffer.addParam(std::move(lengthParam));
2433     }
2434     else
2435     {
2436         ParamCapture lengthParam("length", ParamType::TGLsizeiPointer);
2437         InitParamValue(ParamType::TGLsizeiPointer, static_cast<GLsizei *>(nullptr),
2438                        &lengthParam.value);
2439         paramBuffer.addParam(std::move(lengthParam));
2440     }
2441 
2442     if (isCallValid)
2443     {
2444         ParamCapture paramsParam("params", ParamType::TGLintPointer);
2445         InitParamValue(ParamType::TGLintPointer, params, &paramsParam.value);
2446         CaptureGetQueryivRobustANGLE_params(glState, isCallValid, targetPacked, pname, bufSize,
2447                                             length, params, &paramsParam);
2448         paramBuffer.addParam(std::move(paramsParam));
2449     }
2450     else
2451     {
2452         ParamCapture paramsParam("params", ParamType::TGLintPointer);
2453         InitParamValue(ParamType::TGLintPointer, static_cast<GLint *>(nullptr), &paramsParam.value);
2454         paramBuffer.addParam(std::move(paramsParam));
2455     }
2456 
2457     return CallCapture(angle::EntryPoint::GLGetQueryivRobustANGLE, std::move(paramBuffer));
2458 }
2459 
CaptureGetQueryObjectuivRobustANGLE(const State & glState,bool isCallValid,QueryID idPacked,GLenum pname,GLsizei bufSize,GLsizei * length,GLuint * params)2460 CallCapture CaptureGetQueryObjectuivRobustANGLE(const State &glState,
2461                                                 bool isCallValid,
2462                                                 QueryID idPacked,
2463                                                 GLenum pname,
2464                                                 GLsizei bufSize,
2465                                                 GLsizei *length,
2466                                                 GLuint *params)
2467 {
2468     ParamBuffer paramBuffer;
2469 
2470     paramBuffer.addValueParam("idPacked", ParamType::TQueryID, idPacked);
2471     paramBuffer.addEnumParam("pname", GLenumGroup::DefaultGroup, ParamType::TGLenum, pname);
2472     paramBuffer.addValueParam("bufSize", ParamType::TGLsizei, bufSize);
2473 
2474     if (isCallValid)
2475     {
2476         ParamCapture lengthParam("length", ParamType::TGLsizeiPointer);
2477         InitParamValue(ParamType::TGLsizeiPointer, length, &lengthParam.value);
2478         CaptureGetQueryObjectuivRobustANGLE_length(glState, isCallValid, idPacked, pname, bufSize,
2479                                                    length, params, &lengthParam);
2480         paramBuffer.addParam(std::move(lengthParam));
2481     }
2482     else
2483     {
2484         ParamCapture lengthParam("length", ParamType::TGLsizeiPointer);
2485         InitParamValue(ParamType::TGLsizeiPointer, static_cast<GLsizei *>(nullptr),
2486                        &lengthParam.value);
2487         paramBuffer.addParam(std::move(lengthParam));
2488     }
2489 
2490     if (isCallValid)
2491     {
2492         ParamCapture paramsParam("params", ParamType::TGLuintPointer);
2493         InitParamValue(ParamType::TGLuintPointer, params, &paramsParam.value);
2494         CaptureGetQueryObjectuivRobustANGLE_params(glState, isCallValid, idPacked, pname, bufSize,
2495                                                    length, params, &paramsParam);
2496         paramBuffer.addParam(std::move(paramsParam));
2497     }
2498     else
2499     {
2500         ParamCapture paramsParam("params", ParamType::TGLuintPointer);
2501         InitParamValue(ParamType::TGLuintPointer, static_cast<GLuint *>(nullptr),
2502                        &paramsParam.value);
2503         paramBuffer.addParam(std::move(paramsParam));
2504     }
2505 
2506     return CallCapture(angle::EntryPoint::GLGetQueryObjectuivRobustANGLE, std::move(paramBuffer));
2507 }
2508 
CaptureGetBufferPointervRobustANGLE(const State & glState,bool isCallValid,BufferBinding targetPacked,GLenum pname,GLsizei bufSize,GLsizei * length,void ** params)2509 CallCapture CaptureGetBufferPointervRobustANGLE(const State &glState,
2510                                                 bool isCallValid,
2511                                                 BufferBinding targetPacked,
2512                                                 GLenum pname,
2513                                                 GLsizei bufSize,
2514                                                 GLsizei *length,
2515                                                 void **params)
2516 {
2517     ParamBuffer paramBuffer;
2518 
2519     paramBuffer.addValueParam("targetPacked", ParamType::TBufferBinding, targetPacked);
2520     paramBuffer.addEnumParam("pname", GLenumGroup::DefaultGroup, ParamType::TGLenum, pname);
2521     paramBuffer.addValueParam("bufSize", ParamType::TGLsizei, bufSize);
2522 
2523     if (isCallValid)
2524     {
2525         ParamCapture lengthParam("length", ParamType::TGLsizeiPointer);
2526         InitParamValue(ParamType::TGLsizeiPointer, length, &lengthParam.value);
2527         CaptureGetBufferPointervRobustANGLE_length(glState, isCallValid, targetPacked, pname,
2528                                                    bufSize, length, params, &lengthParam);
2529         paramBuffer.addParam(std::move(lengthParam));
2530     }
2531     else
2532     {
2533         ParamCapture lengthParam("length", ParamType::TGLsizeiPointer);
2534         InitParamValue(ParamType::TGLsizeiPointer, static_cast<GLsizei *>(nullptr),
2535                        &lengthParam.value);
2536         paramBuffer.addParam(std::move(lengthParam));
2537     }
2538 
2539     if (isCallValid)
2540     {
2541         ParamCapture paramsParam("params", ParamType::TvoidPointerPointer);
2542         InitParamValue(ParamType::TvoidPointerPointer, params, &paramsParam.value);
2543         CaptureGetBufferPointervRobustANGLE_params(glState, isCallValid, targetPacked, pname,
2544                                                    bufSize, length, params, &paramsParam);
2545         paramBuffer.addParam(std::move(paramsParam));
2546     }
2547     else
2548     {
2549         ParamCapture paramsParam("params", ParamType::TvoidPointerPointer);
2550         InitParamValue(ParamType::TvoidPointerPointer, static_cast<void **>(nullptr),
2551                        &paramsParam.value);
2552         paramBuffer.addParam(std::move(paramsParam));
2553     }
2554 
2555     return CallCapture(angle::EntryPoint::GLGetBufferPointervRobustANGLE, std::move(paramBuffer));
2556 }
2557 
CaptureGetIntegeri_vRobustANGLE(const State & glState,bool isCallValid,GLenum target,GLuint index,GLsizei bufSize,GLsizei * length,GLint * data)2558 CallCapture CaptureGetIntegeri_vRobustANGLE(const State &glState,
2559                                             bool isCallValid,
2560                                             GLenum target,
2561                                             GLuint index,
2562                                             GLsizei bufSize,
2563                                             GLsizei *length,
2564                                             GLint *data)
2565 {
2566     ParamBuffer paramBuffer;
2567 
2568     paramBuffer.addEnumParam("target", GLenumGroup::DefaultGroup, ParamType::TGLenum, target);
2569     paramBuffer.addValueParam("index", ParamType::TGLuint, index);
2570     paramBuffer.addValueParam("bufSize", ParamType::TGLsizei, bufSize);
2571 
2572     if (isCallValid)
2573     {
2574         ParamCapture lengthParam("length", ParamType::TGLsizeiPointer);
2575         InitParamValue(ParamType::TGLsizeiPointer, length, &lengthParam.value);
2576         CaptureGetIntegeri_vRobustANGLE_length(glState, isCallValid, target, index, bufSize, length,
2577                                                data, &lengthParam);
2578         paramBuffer.addParam(std::move(lengthParam));
2579     }
2580     else
2581     {
2582         ParamCapture lengthParam("length", ParamType::TGLsizeiPointer);
2583         InitParamValue(ParamType::TGLsizeiPointer, static_cast<GLsizei *>(nullptr),
2584                        &lengthParam.value);
2585         paramBuffer.addParam(std::move(lengthParam));
2586     }
2587 
2588     if (isCallValid)
2589     {
2590         ParamCapture dataParam("data", ParamType::TGLintPointer);
2591         InitParamValue(ParamType::TGLintPointer, data, &dataParam.value);
2592         CaptureGetIntegeri_vRobustANGLE_data(glState, isCallValid, target, index, bufSize, length,
2593                                              data, &dataParam);
2594         paramBuffer.addParam(std::move(dataParam));
2595     }
2596     else
2597     {
2598         ParamCapture dataParam("data", ParamType::TGLintPointer);
2599         InitParamValue(ParamType::TGLintPointer, static_cast<GLint *>(nullptr), &dataParam.value);
2600         paramBuffer.addParam(std::move(dataParam));
2601     }
2602 
2603     return CallCapture(angle::EntryPoint::GLGetIntegeri_vRobustANGLE, std::move(paramBuffer));
2604 }
2605 
CaptureGetInternalformativRobustANGLE(const State & glState,bool isCallValid,GLenum target,GLenum internalformat,GLenum pname,GLsizei bufSize,GLsizei * length,GLint * params)2606 CallCapture CaptureGetInternalformativRobustANGLE(const State &glState,
2607                                                   bool isCallValid,
2608                                                   GLenum target,
2609                                                   GLenum internalformat,
2610                                                   GLenum pname,
2611                                                   GLsizei bufSize,
2612                                                   GLsizei *length,
2613                                                   GLint *params)
2614 {
2615     ParamBuffer paramBuffer;
2616 
2617     paramBuffer.addEnumParam("target", GLenumGroup::DefaultGroup, ParamType::TGLenum, target);
2618     paramBuffer.addEnumParam("internalformat", GLenumGroup::DefaultGroup, ParamType::TGLenum,
2619                              internalformat);
2620     paramBuffer.addEnumParam("pname", GLenumGroup::DefaultGroup, ParamType::TGLenum, pname);
2621     paramBuffer.addValueParam("bufSize", ParamType::TGLsizei, bufSize);
2622 
2623     if (isCallValid)
2624     {
2625         ParamCapture lengthParam("length", ParamType::TGLsizeiPointer);
2626         InitParamValue(ParamType::TGLsizeiPointer, length, &lengthParam.value);
2627         CaptureGetInternalformativRobustANGLE_length(glState, isCallValid, target, internalformat,
2628                                                      pname, bufSize, length, params, &lengthParam);
2629         paramBuffer.addParam(std::move(lengthParam));
2630     }
2631     else
2632     {
2633         ParamCapture lengthParam("length", ParamType::TGLsizeiPointer);
2634         InitParamValue(ParamType::TGLsizeiPointer, static_cast<GLsizei *>(nullptr),
2635                        &lengthParam.value);
2636         paramBuffer.addParam(std::move(lengthParam));
2637     }
2638 
2639     if (isCallValid)
2640     {
2641         ParamCapture paramsParam("params", ParamType::TGLintPointer);
2642         InitParamValue(ParamType::TGLintPointer, params, &paramsParam.value);
2643         CaptureGetInternalformativRobustANGLE_params(glState, isCallValid, target, internalformat,
2644                                                      pname, bufSize, length, params, &paramsParam);
2645         paramBuffer.addParam(std::move(paramsParam));
2646     }
2647     else
2648     {
2649         ParamCapture paramsParam("params", ParamType::TGLintPointer);
2650         InitParamValue(ParamType::TGLintPointer, static_cast<GLint *>(nullptr), &paramsParam.value);
2651         paramBuffer.addParam(std::move(paramsParam));
2652     }
2653 
2654     return CallCapture(angle::EntryPoint::GLGetInternalformativRobustANGLE, std::move(paramBuffer));
2655 }
2656 
CaptureGetVertexAttribIivRobustANGLE(const State & glState,bool isCallValid,GLuint index,GLenum pname,GLsizei bufSize,GLsizei * length,GLint * params)2657 CallCapture CaptureGetVertexAttribIivRobustANGLE(const State &glState,
2658                                                  bool isCallValid,
2659                                                  GLuint index,
2660                                                  GLenum pname,
2661                                                  GLsizei bufSize,
2662                                                  GLsizei *length,
2663                                                  GLint *params)
2664 {
2665     ParamBuffer paramBuffer;
2666 
2667     paramBuffer.addValueParam("index", ParamType::TGLuint, index);
2668     paramBuffer.addEnumParam("pname", GLenumGroup::DefaultGroup, ParamType::TGLenum, pname);
2669     paramBuffer.addValueParam("bufSize", ParamType::TGLsizei, bufSize);
2670 
2671     if (isCallValid)
2672     {
2673         ParamCapture lengthParam("length", ParamType::TGLsizeiPointer);
2674         InitParamValue(ParamType::TGLsizeiPointer, length, &lengthParam.value);
2675         CaptureGetVertexAttribIivRobustANGLE_length(glState, isCallValid, index, pname, bufSize,
2676                                                     length, params, &lengthParam);
2677         paramBuffer.addParam(std::move(lengthParam));
2678     }
2679     else
2680     {
2681         ParamCapture lengthParam("length", ParamType::TGLsizeiPointer);
2682         InitParamValue(ParamType::TGLsizeiPointer, static_cast<GLsizei *>(nullptr),
2683                        &lengthParam.value);
2684         paramBuffer.addParam(std::move(lengthParam));
2685     }
2686 
2687     if (isCallValid)
2688     {
2689         ParamCapture paramsParam("params", ParamType::TGLintPointer);
2690         InitParamValue(ParamType::TGLintPointer, params, &paramsParam.value);
2691         CaptureGetVertexAttribIivRobustANGLE_params(glState, isCallValid, index, pname, bufSize,
2692                                                     length, params, &paramsParam);
2693         paramBuffer.addParam(std::move(paramsParam));
2694     }
2695     else
2696     {
2697         ParamCapture paramsParam("params", ParamType::TGLintPointer);
2698         InitParamValue(ParamType::TGLintPointer, static_cast<GLint *>(nullptr), &paramsParam.value);
2699         paramBuffer.addParam(std::move(paramsParam));
2700     }
2701 
2702     return CallCapture(angle::EntryPoint::GLGetVertexAttribIivRobustANGLE, std::move(paramBuffer));
2703 }
2704 
CaptureGetVertexAttribIuivRobustANGLE(const State & glState,bool isCallValid,GLuint index,GLenum pname,GLsizei bufSize,GLsizei * length,GLuint * params)2705 CallCapture CaptureGetVertexAttribIuivRobustANGLE(const State &glState,
2706                                                   bool isCallValid,
2707                                                   GLuint index,
2708                                                   GLenum pname,
2709                                                   GLsizei bufSize,
2710                                                   GLsizei *length,
2711                                                   GLuint *params)
2712 {
2713     ParamBuffer paramBuffer;
2714 
2715     paramBuffer.addValueParam("index", ParamType::TGLuint, index);
2716     paramBuffer.addEnumParam("pname", GLenumGroup::DefaultGroup, ParamType::TGLenum, pname);
2717     paramBuffer.addValueParam("bufSize", ParamType::TGLsizei, bufSize);
2718 
2719     if (isCallValid)
2720     {
2721         ParamCapture lengthParam("length", ParamType::TGLsizeiPointer);
2722         InitParamValue(ParamType::TGLsizeiPointer, length, &lengthParam.value);
2723         CaptureGetVertexAttribIuivRobustANGLE_length(glState, isCallValid, index, pname, bufSize,
2724                                                      length, params, &lengthParam);
2725         paramBuffer.addParam(std::move(lengthParam));
2726     }
2727     else
2728     {
2729         ParamCapture lengthParam("length", ParamType::TGLsizeiPointer);
2730         InitParamValue(ParamType::TGLsizeiPointer, static_cast<GLsizei *>(nullptr),
2731                        &lengthParam.value);
2732         paramBuffer.addParam(std::move(lengthParam));
2733     }
2734 
2735     if (isCallValid)
2736     {
2737         ParamCapture paramsParam("params", ParamType::TGLuintPointer);
2738         InitParamValue(ParamType::TGLuintPointer, params, &paramsParam.value);
2739         CaptureGetVertexAttribIuivRobustANGLE_params(glState, isCallValid, index, pname, bufSize,
2740                                                      length, params, &paramsParam);
2741         paramBuffer.addParam(std::move(paramsParam));
2742     }
2743     else
2744     {
2745         ParamCapture paramsParam("params", ParamType::TGLuintPointer);
2746         InitParamValue(ParamType::TGLuintPointer, static_cast<GLuint *>(nullptr),
2747                        &paramsParam.value);
2748         paramBuffer.addParam(std::move(paramsParam));
2749     }
2750 
2751     return CallCapture(angle::EntryPoint::GLGetVertexAttribIuivRobustANGLE, std::move(paramBuffer));
2752 }
2753 
CaptureGetUniformuivRobustANGLE(const State & glState,bool isCallValid,ShaderProgramID programPacked,UniformLocation locationPacked,GLsizei bufSize,GLsizei * length,GLuint * params)2754 CallCapture CaptureGetUniformuivRobustANGLE(const State &glState,
2755                                             bool isCallValid,
2756                                             ShaderProgramID programPacked,
2757                                             UniformLocation locationPacked,
2758                                             GLsizei bufSize,
2759                                             GLsizei *length,
2760                                             GLuint *params)
2761 {
2762     ParamBuffer paramBuffer;
2763 
2764     paramBuffer.addValueParam("programPacked", ParamType::TShaderProgramID, programPacked);
2765     paramBuffer.addValueParam("locationPacked", ParamType::TUniformLocation, locationPacked);
2766     paramBuffer.addValueParam("bufSize", ParamType::TGLsizei, bufSize);
2767 
2768     if (isCallValid)
2769     {
2770         ParamCapture lengthParam("length", ParamType::TGLsizeiPointer);
2771         InitParamValue(ParamType::TGLsizeiPointer, length, &lengthParam.value);
2772         CaptureGetUniformuivRobustANGLE_length(glState, isCallValid, programPacked, locationPacked,
2773                                                bufSize, length, params, &lengthParam);
2774         paramBuffer.addParam(std::move(lengthParam));
2775     }
2776     else
2777     {
2778         ParamCapture lengthParam("length", ParamType::TGLsizeiPointer);
2779         InitParamValue(ParamType::TGLsizeiPointer, static_cast<GLsizei *>(nullptr),
2780                        &lengthParam.value);
2781         paramBuffer.addParam(std::move(lengthParam));
2782     }
2783 
2784     if (isCallValid)
2785     {
2786         ParamCapture paramsParam("params", ParamType::TGLuintPointer);
2787         InitParamValue(ParamType::TGLuintPointer, params, &paramsParam.value);
2788         CaptureGetUniformuivRobustANGLE_params(glState, isCallValid, programPacked, locationPacked,
2789                                                bufSize, length, params, &paramsParam);
2790         paramBuffer.addParam(std::move(paramsParam));
2791     }
2792     else
2793     {
2794         ParamCapture paramsParam("params", ParamType::TGLuintPointer);
2795         InitParamValue(ParamType::TGLuintPointer, static_cast<GLuint *>(nullptr),
2796                        &paramsParam.value);
2797         paramBuffer.addParam(std::move(paramsParam));
2798     }
2799 
2800     return CallCapture(angle::EntryPoint::GLGetUniformuivRobustANGLE, std::move(paramBuffer));
2801 }
2802 
CaptureGetActiveUniformBlockivRobustANGLE(const State & glState,bool isCallValid,ShaderProgramID programPacked,UniformBlockIndex uniformBlockIndexPacked,GLenum pname,GLsizei bufSize,GLsizei * length,GLint * params)2803 CallCapture CaptureGetActiveUniformBlockivRobustANGLE(const State &glState,
2804                                                       bool isCallValid,
2805                                                       ShaderProgramID programPacked,
2806                                                       UniformBlockIndex uniformBlockIndexPacked,
2807                                                       GLenum pname,
2808                                                       GLsizei bufSize,
2809                                                       GLsizei *length,
2810                                                       GLint *params)
2811 {
2812     ParamBuffer paramBuffer;
2813 
2814     paramBuffer.addValueParam("programPacked", ParamType::TShaderProgramID, programPacked);
2815     paramBuffer.addValueParam("uniformBlockIndexPacked", ParamType::TUniformBlockIndex,
2816                               uniformBlockIndexPacked);
2817     paramBuffer.addEnumParam("pname", GLenumGroup::DefaultGroup, ParamType::TGLenum, pname);
2818     paramBuffer.addValueParam("bufSize", ParamType::TGLsizei, bufSize);
2819 
2820     if (isCallValid)
2821     {
2822         ParamCapture lengthParam("length", ParamType::TGLsizeiPointer);
2823         InitParamValue(ParamType::TGLsizeiPointer, length, &lengthParam.value);
2824         CaptureGetActiveUniformBlockivRobustANGLE_length(glState, isCallValid, programPacked,
2825                                                          uniformBlockIndexPacked, pname, bufSize,
2826                                                          length, params, &lengthParam);
2827         paramBuffer.addParam(std::move(lengthParam));
2828     }
2829     else
2830     {
2831         ParamCapture lengthParam("length", ParamType::TGLsizeiPointer);
2832         InitParamValue(ParamType::TGLsizeiPointer, static_cast<GLsizei *>(nullptr),
2833                        &lengthParam.value);
2834         paramBuffer.addParam(std::move(lengthParam));
2835     }
2836 
2837     if (isCallValid)
2838     {
2839         ParamCapture paramsParam("params", ParamType::TGLintPointer);
2840         InitParamValue(ParamType::TGLintPointer, params, &paramsParam.value);
2841         CaptureGetActiveUniformBlockivRobustANGLE_params(glState, isCallValid, programPacked,
2842                                                          uniformBlockIndexPacked, pname, bufSize,
2843                                                          length, params, &paramsParam);
2844         paramBuffer.addParam(std::move(paramsParam));
2845     }
2846     else
2847     {
2848         ParamCapture paramsParam("params", ParamType::TGLintPointer);
2849         InitParamValue(ParamType::TGLintPointer, static_cast<GLint *>(nullptr), &paramsParam.value);
2850         paramBuffer.addParam(std::move(paramsParam));
2851     }
2852 
2853     return CallCapture(angle::EntryPoint::GLGetActiveUniformBlockivRobustANGLE,
2854                        std::move(paramBuffer));
2855 }
2856 
CaptureGetInteger64vRobustANGLE(const State & glState,bool isCallValid,GLenum pname,GLsizei bufSize,GLsizei * length,GLint64 * data)2857 CallCapture CaptureGetInteger64vRobustANGLE(const State &glState,
2858                                             bool isCallValid,
2859                                             GLenum pname,
2860                                             GLsizei bufSize,
2861                                             GLsizei *length,
2862                                             GLint64 *data)
2863 {
2864     ParamBuffer paramBuffer;
2865 
2866     paramBuffer.addEnumParam("pname", GLenumGroup::DefaultGroup, ParamType::TGLenum, pname);
2867     paramBuffer.addValueParam("bufSize", ParamType::TGLsizei, bufSize);
2868 
2869     if (isCallValid)
2870     {
2871         ParamCapture lengthParam("length", ParamType::TGLsizeiPointer);
2872         InitParamValue(ParamType::TGLsizeiPointer, length, &lengthParam.value);
2873         CaptureGetInteger64vRobustANGLE_length(glState, isCallValid, pname, bufSize, length, data,
2874                                                &lengthParam);
2875         paramBuffer.addParam(std::move(lengthParam));
2876     }
2877     else
2878     {
2879         ParamCapture lengthParam("length", ParamType::TGLsizeiPointer);
2880         InitParamValue(ParamType::TGLsizeiPointer, static_cast<GLsizei *>(nullptr),
2881                        &lengthParam.value);
2882         paramBuffer.addParam(std::move(lengthParam));
2883     }
2884 
2885     if (isCallValid)
2886     {
2887         ParamCapture dataParam("data", ParamType::TGLint64Pointer);
2888         InitParamValue(ParamType::TGLint64Pointer, data, &dataParam.value);
2889         CaptureGetInteger64vRobustANGLE_data(glState, isCallValid, pname, bufSize, length, data,
2890                                              &dataParam);
2891         paramBuffer.addParam(std::move(dataParam));
2892     }
2893     else
2894     {
2895         ParamCapture dataParam("data", ParamType::TGLint64Pointer);
2896         InitParamValue(ParamType::TGLint64Pointer, static_cast<GLint64 *>(nullptr),
2897                        &dataParam.value);
2898         paramBuffer.addParam(std::move(dataParam));
2899     }
2900 
2901     return CallCapture(angle::EntryPoint::GLGetInteger64vRobustANGLE, std::move(paramBuffer));
2902 }
2903 
CaptureGetInteger64i_vRobustANGLE(const State & glState,bool isCallValid,GLenum target,GLuint index,GLsizei bufSize,GLsizei * length,GLint64 * data)2904 CallCapture CaptureGetInteger64i_vRobustANGLE(const State &glState,
2905                                               bool isCallValid,
2906                                               GLenum target,
2907                                               GLuint index,
2908                                               GLsizei bufSize,
2909                                               GLsizei *length,
2910                                               GLint64 *data)
2911 {
2912     ParamBuffer paramBuffer;
2913 
2914     paramBuffer.addEnumParam("target", GLenumGroup::DefaultGroup, ParamType::TGLenum, target);
2915     paramBuffer.addValueParam("index", ParamType::TGLuint, index);
2916     paramBuffer.addValueParam("bufSize", ParamType::TGLsizei, bufSize);
2917 
2918     if (isCallValid)
2919     {
2920         ParamCapture lengthParam("length", ParamType::TGLsizeiPointer);
2921         InitParamValue(ParamType::TGLsizeiPointer, length, &lengthParam.value);
2922         CaptureGetInteger64i_vRobustANGLE_length(glState, isCallValid, target, index, bufSize,
2923                                                  length, data, &lengthParam);
2924         paramBuffer.addParam(std::move(lengthParam));
2925     }
2926     else
2927     {
2928         ParamCapture lengthParam("length", ParamType::TGLsizeiPointer);
2929         InitParamValue(ParamType::TGLsizeiPointer, static_cast<GLsizei *>(nullptr),
2930                        &lengthParam.value);
2931         paramBuffer.addParam(std::move(lengthParam));
2932     }
2933 
2934     if (isCallValid)
2935     {
2936         ParamCapture dataParam("data", ParamType::TGLint64Pointer);
2937         InitParamValue(ParamType::TGLint64Pointer, data, &dataParam.value);
2938         CaptureGetInteger64i_vRobustANGLE_data(glState, isCallValid, target, index, bufSize, length,
2939                                                data, &dataParam);
2940         paramBuffer.addParam(std::move(dataParam));
2941     }
2942     else
2943     {
2944         ParamCapture dataParam("data", ParamType::TGLint64Pointer);
2945         InitParamValue(ParamType::TGLint64Pointer, static_cast<GLint64 *>(nullptr),
2946                        &dataParam.value);
2947         paramBuffer.addParam(std::move(dataParam));
2948     }
2949 
2950     return CallCapture(angle::EntryPoint::GLGetInteger64i_vRobustANGLE, std::move(paramBuffer));
2951 }
2952 
CaptureGetBufferParameteri64vRobustANGLE(const State & glState,bool isCallValid,BufferBinding targetPacked,GLenum pname,GLsizei bufSize,GLsizei * length,GLint64 * params)2953 CallCapture CaptureGetBufferParameteri64vRobustANGLE(const State &glState,
2954                                                      bool isCallValid,
2955                                                      BufferBinding targetPacked,
2956                                                      GLenum pname,
2957                                                      GLsizei bufSize,
2958                                                      GLsizei *length,
2959                                                      GLint64 *params)
2960 {
2961     ParamBuffer paramBuffer;
2962 
2963     paramBuffer.addValueParam("targetPacked", ParamType::TBufferBinding, targetPacked);
2964     paramBuffer.addEnumParam("pname", GLenumGroup::DefaultGroup, ParamType::TGLenum, pname);
2965     paramBuffer.addValueParam("bufSize", ParamType::TGLsizei, bufSize);
2966 
2967     if (isCallValid)
2968     {
2969         ParamCapture lengthParam("length", ParamType::TGLsizeiPointer);
2970         InitParamValue(ParamType::TGLsizeiPointer, length, &lengthParam.value);
2971         CaptureGetBufferParameteri64vRobustANGLE_length(glState, isCallValid, targetPacked, pname,
2972                                                         bufSize, length, params, &lengthParam);
2973         paramBuffer.addParam(std::move(lengthParam));
2974     }
2975     else
2976     {
2977         ParamCapture lengthParam("length", ParamType::TGLsizeiPointer);
2978         InitParamValue(ParamType::TGLsizeiPointer, static_cast<GLsizei *>(nullptr),
2979                        &lengthParam.value);
2980         paramBuffer.addParam(std::move(lengthParam));
2981     }
2982 
2983     if (isCallValid)
2984     {
2985         ParamCapture paramsParam("params", ParamType::TGLint64Pointer);
2986         InitParamValue(ParamType::TGLint64Pointer, params, &paramsParam.value);
2987         CaptureGetBufferParameteri64vRobustANGLE_params(glState, isCallValid, targetPacked, pname,
2988                                                         bufSize, length, params, &paramsParam);
2989         paramBuffer.addParam(std::move(paramsParam));
2990     }
2991     else
2992     {
2993         ParamCapture paramsParam("params", ParamType::TGLint64Pointer);
2994         InitParamValue(ParamType::TGLint64Pointer, static_cast<GLint64 *>(nullptr),
2995                        &paramsParam.value);
2996         paramBuffer.addParam(std::move(paramsParam));
2997     }
2998 
2999     return CallCapture(angle::EntryPoint::GLGetBufferParameteri64vRobustANGLE,
3000                        std::move(paramBuffer));
3001 }
3002 
CaptureSamplerParameterivRobustANGLE(const State & glState,bool isCallValid,SamplerID samplerPacked,GLuint pname,GLsizei bufSize,const GLint * param)3003 CallCapture CaptureSamplerParameterivRobustANGLE(const State &glState,
3004                                                  bool isCallValid,
3005                                                  SamplerID samplerPacked,
3006                                                  GLuint pname,
3007                                                  GLsizei bufSize,
3008                                                  const GLint *param)
3009 {
3010     ParamBuffer paramBuffer;
3011 
3012     paramBuffer.addValueParam("samplerPacked", ParamType::TSamplerID, samplerPacked);
3013     paramBuffer.addValueParam("pname", ParamType::TGLuint, pname);
3014     paramBuffer.addValueParam("bufSize", ParamType::TGLsizei, bufSize);
3015 
3016     if (isCallValid)
3017     {
3018         ParamCapture paramParam("param", ParamType::TGLintConstPointer);
3019         InitParamValue(ParamType::TGLintConstPointer, param, &paramParam.value);
3020         CaptureSamplerParameterivRobustANGLE_param(glState, isCallValid, samplerPacked, pname,
3021                                                    bufSize, param, &paramParam);
3022         paramBuffer.addParam(std::move(paramParam));
3023     }
3024     else
3025     {
3026         ParamCapture paramParam("param", ParamType::TGLintConstPointer);
3027         InitParamValue(ParamType::TGLintConstPointer, static_cast<const GLint *>(nullptr),
3028                        &paramParam.value);
3029         paramBuffer.addParam(std::move(paramParam));
3030     }
3031 
3032     return CallCapture(angle::EntryPoint::GLSamplerParameterivRobustANGLE, std::move(paramBuffer));
3033 }
3034 
CaptureSamplerParameterfvRobustANGLE(const State & glState,bool isCallValid,SamplerID samplerPacked,GLenum pname,GLsizei bufSize,const GLfloat * param)3035 CallCapture CaptureSamplerParameterfvRobustANGLE(const State &glState,
3036                                                  bool isCallValid,
3037                                                  SamplerID samplerPacked,
3038                                                  GLenum pname,
3039                                                  GLsizei bufSize,
3040                                                  const GLfloat *param)
3041 {
3042     ParamBuffer paramBuffer;
3043 
3044     paramBuffer.addValueParam("samplerPacked", ParamType::TSamplerID, samplerPacked);
3045     paramBuffer.addEnumParam("pname", GLenumGroup::DefaultGroup, ParamType::TGLenum, pname);
3046     paramBuffer.addValueParam("bufSize", ParamType::TGLsizei, bufSize);
3047 
3048     if (isCallValid)
3049     {
3050         ParamCapture paramParam("param", ParamType::TGLfloatConstPointer);
3051         InitParamValue(ParamType::TGLfloatConstPointer, param, &paramParam.value);
3052         CaptureSamplerParameterfvRobustANGLE_param(glState, isCallValid, samplerPacked, pname,
3053                                                    bufSize, param, &paramParam);
3054         paramBuffer.addParam(std::move(paramParam));
3055     }
3056     else
3057     {
3058         ParamCapture paramParam("param", ParamType::TGLfloatConstPointer);
3059         InitParamValue(ParamType::TGLfloatConstPointer, static_cast<const GLfloat *>(nullptr),
3060                        &paramParam.value);
3061         paramBuffer.addParam(std::move(paramParam));
3062     }
3063 
3064     return CallCapture(angle::EntryPoint::GLSamplerParameterfvRobustANGLE, std::move(paramBuffer));
3065 }
3066 
CaptureGetSamplerParameterivRobustANGLE(const State & glState,bool isCallValid,SamplerID samplerPacked,GLenum pname,GLsizei bufSize,GLsizei * length,GLint * params)3067 CallCapture CaptureGetSamplerParameterivRobustANGLE(const State &glState,
3068                                                     bool isCallValid,
3069                                                     SamplerID samplerPacked,
3070                                                     GLenum pname,
3071                                                     GLsizei bufSize,
3072                                                     GLsizei *length,
3073                                                     GLint *params)
3074 {
3075     ParamBuffer paramBuffer;
3076 
3077     paramBuffer.addValueParam("samplerPacked", ParamType::TSamplerID, samplerPacked);
3078     paramBuffer.addEnumParam("pname", GLenumGroup::DefaultGroup, ParamType::TGLenum, pname);
3079     paramBuffer.addValueParam("bufSize", ParamType::TGLsizei, bufSize);
3080 
3081     if (isCallValid)
3082     {
3083         ParamCapture lengthParam("length", ParamType::TGLsizeiPointer);
3084         InitParamValue(ParamType::TGLsizeiPointer, length, &lengthParam.value);
3085         CaptureGetSamplerParameterivRobustANGLE_length(glState, isCallValid, samplerPacked, pname,
3086                                                        bufSize, length, params, &lengthParam);
3087         paramBuffer.addParam(std::move(lengthParam));
3088     }
3089     else
3090     {
3091         ParamCapture lengthParam("length", ParamType::TGLsizeiPointer);
3092         InitParamValue(ParamType::TGLsizeiPointer, static_cast<GLsizei *>(nullptr),
3093                        &lengthParam.value);
3094         paramBuffer.addParam(std::move(lengthParam));
3095     }
3096 
3097     if (isCallValid)
3098     {
3099         ParamCapture paramsParam("params", ParamType::TGLintPointer);
3100         InitParamValue(ParamType::TGLintPointer, params, &paramsParam.value);
3101         CaptureGetSamplerParameterivRobustANGLE_params(glState, isCallValid, samplerPacked, pname,
3102                                                        bufSize, length, params, &paramsParam);
3103         paramBuffer.addParam(std::move(paramsParam));
3104     }
3105     else
3106     {
3107         ParamCapture paramsParam("params", ParamType::TGLintPointer);
3108         InitParamValue(ParamType::TGLintPointer, static_cast<GLint *>(nullptr), &paramsParam.value);
3109         paramBuffer.addParam(std::move(paramsParam));
3110     }
3111 
3112     return CallCapture(angle::EntryPoint::GLGetSamplerParameterivRobustANGLE,
3113                        std::move(paramBuffer));
3114 }
3115 
CaptureGetSamplerParameterfvRobustANGLE(const State & glState,bool isCallValid,SamplerID samplerPacked,GLenum pname,GLsizei bufSize,GLsizei * length,GLfloat * params)3116 CallCapture CaptureGetSamplerParameterfvRobustANGLE(const State &glState,
3117                                                     bool isCallValid,
3118                                                     SamplerID samplerPacked,
3119                                                     GLenum pname,
3120                                                     GLsizei bufSize,
3121                                                     GLsizei *length,
3122                                                     GLfloat *params)
3123 {
3124     ParamBuffer paramBuffer;
3125 
3126     paramBuffer.addValueParam("samplerPacked", ParamType::TSamplerID, samplerPacked);
3127     paramBuffer.addEnumParam("pname", GLenumGroup::DefaultGroup, ParamType::TGLenum, pname);
3128     paramBuffer.addValueParam("bufSize", ParamType::TGLsizei, bufSize);
3129 
3130     if (isCallValid)
3131     {
3132         ParamCapture lengthParam("length", ParamType::TGLsizeiPointer);
3133         InitParamValue(ParamType::TGLsizeiPointer, length, &lengthParam.value);
3134         CaptureGetSamplerParameterfvRobustANGLE_length(glState, isCallValid, samplerPacked, pname,
3135                                                        bufSize, length, params, &lengthParam);
3136         paramBuffer.addParam(std::move(lengthParam));
3137     }
3138     else
3139     {
3140         ParamCapture lengthParam("length", ParamType::TGLsizeiPointer);
3141         InitParamValue(ParamType::TGLsizeiPointer, static_cast<GLsizei *>(nullptr),
3142                        &lengthParam.value);
3143         paramBuffer.addParam(std::move(lengthParam));
3144     }
3145 
3146     if (isCallValid)
3147     {
3148         ParamCapture paramsParam("params", ParamType::TGLfloatPointer);
3149         InitParamValue(ParamType::TGLfloatPointer, params, &paramsParam.value);
3150         CaptureGetSamplerParameterfvRobustANGLE_params(glState, isCallValid, samplerPacked, pname,
3151                                                        bufSize, length, params, &paramsParam);
3152         paramBuffer.addParam(std::move(paramsParam));
3153     }
3154     else
3155     {
3156         ParamCapture paramsParam("params", ParamType::TGLfloatPointer);
3157         InitParamValue(ParamType::TGLfloatPointer, static_cast<GLfloat *>(nullptr),
3158                        &paramsParam.value);
3159         paramBuffer.addParam(std::move(paramsParam));
3160     }
3161 
3162     return CallCapture(angle::EntryPoint::GLGetSamplerParameterfvRobustANGLE,
3163                        std::move(paramBuffer));
3164 }
3165 
CaptureGetFramebufferParameterivRobustANGLE(const State & glState,bool isCallValid,GLenum target,GLenum pname,GLsizei bufSize,GLsizei * length,GLint * params)3166 CallCapture CaptureGetFramebufferParameterivRobustANGLE(const State &glState,
3167                                                         bool isCallValid,
3168                                                         GLenum target,
3169                                                         GLenum pname,
3170                                                         GLsizei bufSize,
3171                                                         GLsizei *length,
3172                                                         GLint *params)
3173 {
3174     ParamBuffer paramBuffer;
3175 
3176     paramBuffer.addEnumParam("target", GLenumGroup::DefaultGroup, ParamType::TGLenum, target);
3177     paramBuffer.addEnumParam("pname", GLenumGroup::DefaultGroup, ParamType::TGLenum, pname);
3178     paramBuffer.addValueParam("bufSize", ParamType::TGLsizei, bufSize);
3179 
3180     if (isCallValid)
3181     {
3182         ParamCapture lengthParam("length", ParamType::TGLsizeiPointer);
3183         InitParamValue(ParamType::TGLsizeiPointer, length, &lengthParam.value);
3184         CaptureGetFramebufferParameterivRobustANGLE_length(glState, isCallValid, target, pname,
3185                                                            bufSize, length, params, &lengthParam);
3186         paramBuffer.addParam(std::move(lengthParam));
3187     }
3188     else
3189     {
3190         ParamCapture lengthParam("length", ParamType::TGLsizeiPointer);
3191         InitParamValue(ParamType::TGLsizeiPointer, static_cast<GLsizei *>(nullptr),
3192                        &lengthParam.value);
3193         paramBuffer.addParam(std::move(lengthParam));
3194     }
3195 
3196     if (isCallValid)
3197     {
3198         ParamCapture paramsParam("params", ParamType::TGLintPointer);
3199         InitParamValue(ParamType::TGLintPointer, params, &paramsParam.value);
3200         CaptureGetFramebufferParameterivRobustANGLE_params(glState, isCallValid, target, pname,
3201                                                            bufSize, length, params, &paramsParam);
3202         paramBuffer.addParam(std::move(paramsParam));
3203     }
3204     else
3205     {
3206         ParamCapture paramsParam("params", ParamType::TGLintPointer);
3207         InitParamValue(ParamType::TGLintPointer, static_cast<GLint *>(nullptr), &paramsParam.value);
3208         paramBuffer.addParam(std::move(paramsParam));
3209     }
3210 
3211     return CallCapture(angle::EntryPoint::GLGetFramebufferParameterivRobustANGLE,
3212                        std::move(paramBuffer));
3213 }
3214 
CaptureGetProgramInterfaceivRobustANGLE(const State & glState,bool isCallValid,ShaderProgramID programPacked,GLenum programInterface,GLenum pname,GLsizei bufSize,GLsizei * length,GLint * params)3215 CallCapture CaptureGetProgramInterfaceivRobustANGLE(const State &glState,
3216                                                     bool isCallValid,
3217                                                     ShaderProgramID programPacked,
3218                                                     GLenum programInterface,
3219                                                     GLenum pname,
3220                                                     GLsizei bufSize,
3221                                                     GLsizei *length,
3222                                                     GLint *params)
3223 {
3224     ParamBuffer paramBuffer;
3225 
3226     paramBuffer.addValueParam("programPacked", ParamType::TShaderProgramID, programPacked);
3227     paramBuffer.addEnumParam("programInterface", GLenumGroup::DefaultGroup, ParamType::TGLenum,
3228                              programInterface);
3229     paramBuffer.addEnumParam("pname", GLenumGroup::DefaultGroup, ParamType::TGLenum, pname);
3230     paramBuffer.addValueParam("bufSize", ParamType::TGLsizei, bufSize);
3231 
3232     if (isCallValid)
3233     {
3234         ParamCapture lengthParam("length", ParamType::TGLsizeiPointer);
3235         InitParamValue(ParamType::TGLsizeiPointer, length, &lengthParam.value);
3236         CaptureGetProgramInterfaceivRobustANGLE_length(glState, isCallValid, programPacked,
3237                                                        programInterface, pname, bufSize, length,
3238                                                        params, &lengthParam);
3239         paramBuffer.addParam(std::move(lengthParam));
3240     }
3241     else
3242     {
3243         ParamCapture lengthParam("length", ParamType::TGLsizeiPointer);
3244         InitParamValue(ParamType::TGLsizeiPointer, static_cast<GLsizei *>(nullptr),
3245                        &lengthParam.value);
3246         paramBuffer.addParam(std::move(lengthParam));
3247     }
3248 
3249     if (isCallValid)
3250     {
3251         ParamCapture paramsParam("params", ParamType::TGLintPointer);
3252         InitParamValue(ParamType::TGLintPointer, params, &paramsParam.value);
3253         CaptureGetProgramInterfaceivRobustANGLE_params(glState, isCallValid, programPacked,
3254                                                        programInterface, pname, bufSize, length,
3255                                                        params, &paramsParam);
3256         paramBuffer.addParam(std::move(paramsParam));
3257     }
3258     else
3259     {
3260         ParamCapture paramsParam("params", ParamType::TGLintPointer);
3261         InitParamValue(ParamType::TGLintPointer, static_cast<GLint *>(nullptr), &paramsParam.value);
3262         paramBuffer.addParam(std::move(paramsParam));
3263     }
3264 
3265     return CallCapture(angle::EntryPoint::GLGetProgramInterfaceivRobustANGLE,
3266                        std::move(paramBuffer));
3267 }
3268 
CaptureGetBooleani_vRobustANGLE(const State & glState,bool isCallValid,GLenum target,GLuint index,GLsizei bufSize,GLsizei * length,GLboolean * data)3269 CallCapture CaptureGetBooleani_vRobustANGLE(const State &glState,
3270                                             bool isCallValid,
3271                                             GLenum target,
3272                                             GLuint index,
3273                                             GLsizei bufSize,
3274                                             GLsizei *length,
3275                                             GLboolean *data)
3276 {
3277     ParamBuffer paramBuffer;
3278 
3279     paramBuffer.addEnumParam("target", GLenumGroup::DefaultGroup, ParamType::TGLenum, target);
3280     paramBuffer.addValueParam("index", ParamType::TGLuint, index);
3281     paramBuffer.addValueParam("bufSize", ParamType::TGLsizei, bufSize);
3282 
3283     if (isCallValid)
3284     {
3285         ParamCapture lengthParam("length", ParamType::TGLsizeiPointer);
3286         InitParamValue(ParamType::TGLsizeiPointer, length, &lengthParam.value);
3287         CaptureGetBooleani_vRobustANGLE_length(glState, isCallValid, target, index, bufSize, length,
3288                                                data, &lengthParam);
3289         paramBuffer.addParam(std::move(lengthParam));
3290     }
3291     else
3292     {
3293         ParamCapture lengthParam("length", ParamType::TGLsizeiPointer);
3294         InitParamValue(ParamType::TGLsizeiPointer, static_cast<GLsizei *>(nullptr),
3295                        &lengthParam.value);
3296         paramBuffer.addParam(std::move(lengthParam));
3297     }
3298 
3299     if (isCallValid)
3300     {
3301         ParamCapture dataParam("data", ParamType::TGLbooleanPointer);
3302         InitParamValue(ParamType::TGLbooleanPointer, data, &dataParam.value);
3303         CaptureGetBooleani_vRobustANGLE_data(glState, isCallValid, target, index, bufSize, length,
3304                                              data, &dataParam);
3305         paramBuffer.addParam(std::move(dataParam));
3306     }
3307     else
3308     {
3309         ParamCapture dataParam("data", ParamType::TGLbooleanPointer);
3310         InitParamValue(ParamType::TGLbooleanPointer, static_cast<GLboolean *>(nullptr),
3311                        &dataParam.value);
3312         paramBuffer.addParam(std::move(dataParam));
3313     }
3314 
3315     return CallCapture(angle::EntryPoint::GLGetBooleani_vRobustANGLE, std::move(paramBuffer));
3316 }
3317 
CaptureGetMultisamplefvRobustANGLE(const State & glState,bool isCallValid,GLenum pname,GLuint index,GLsizei bufSize,GLsizei * length,GLfloat * val)3318 CallCapture CaptureGetMultisamplefvRobustANGLE(const State &glState,
3319                                                bool isCallValid,
3320                                                GLenum pname,
3321                                                GLuint index,
3322                                                GLsizei bufSize,
3323                                                GLsizei *length,
3324                                                GLfloat *val)
3325 {
3326     ParamBuffer paramBuffer;
3327 
3328     paramBuffer.addEnumParam("pname", GLenumGroup::DefaultGroup, ParamType::TGLenum, pname);
3329     paramBuffer.addValueParam("index", ParamType::TGLuint, index);
3330     paramBuffer.addValueParam("bufSize", ParamType::TGLsizei, bufSize);
3331 
3332     if (isCallValid)
3333     {
3334         ParamCapture lengthParam("length", ParamType::TGLsizeiPointer);
3335         InitParamValue(ParamType::TGLsizeiPointer, length, &lengthParam.value);
3336         CaptureGetMultisamplefvRobustANGLE_length(glState, isCallValid, pname, index, bufSize,
3337                                                   length, val, &lengthParam);
3338         paramBuffer.addParam(std::move(lengthParam));
3339     }
3340     else
3341     {
3342         ParamCapture lengthParam("length", ParamType::TGLsizeiPointer);
3343         InitParamValue(ParamType::TGLsizeiPointer, static_cast<GLsizei *>(nullptr),
3344                        &lengthParam.value);
3345         paramBuffer.addParam(std::move(lengthParam));
3346     }
3347 
3348     if (isCallValid)
3349     {
3350         ParamCapture valParam("val", ParamType::TGLfloatPointer);
3351         InitParamValue(ParamType::TGLfloatPointer, val, &valParam.value);
3352         CaptureGetMultisamplefvRobustANGLE_val(glState, isCallValid, pname, index, bufSize, length,
3353                                                val, &valParam);
3354         paramBuffer.addParam(std::move(valParam));
3355     }
3356     else
3357     {
3358         ParamCapture valParam("val", ParamType::TGLfloatPointer);
3359         InitParamValue(ParamType::TGLfloatPointer, static_cast<GLfloat *>(nullptr),
3360                        &valParam.value);
3361         paramBuffer.addParam(std::move(valParam));
3362     }
3363 
3364     return CallCapture(angle::EntryPoint::GLGetMultisamplefvRobustANGLE, std::move(paramBuffer));
3365 }
3366 
CaptureGetTexLevelParameterivRobustANGLE(const State & glState,bool isCallValid,TextureTarget targetPacked,GLint level,GLenum pname,GLsizei bufSize,GLsizei * length,GLint * params)3367 CallCapture CaptureGetTexLevelParameterivRobustANGLE(const State &glState,
3368                                                      bool isCallValid,
3369                                                      TextureTarget targetPacked,
3370                                                      GLint level,
3371                                                      GLenum pname,
3372                                                      GLsizei bufSize,
3373                                                      GLsizei *length,
3374                                                      GLint *params)
3375 {
3376     ParamBuffer paramBuffer;
3377 
3378     paramBuffer.addValueParam("targetPacked", ParamType::TTextureTarget, targetPacked);
3379     paramBuffer.addValueParam("level", ParamType::TGLint, level);
3380     paramBuffer.addEnumParam("pname", GLenumGroup::DefaultGroup, ParamType::TGLenum, pname);
3381     paramBuffer.addValueParam("bufSize", ParamType::TGLsizei, bufSize);
3382 
3383     if (isCallValid)
3384     {
3385         ParamCapture lengthParam("length", ParamType::TGLsizeiPointer);
3386         InitParamValue(ParamType::TGLsizeiPointer, length, &lengthParam.value);
3387         CaptureGetTexLevelParameterivRobustANGLE_length(glState, isCallValid, targetPacked, level,
3388                                                         pname, bufSize, length, params,
3389                                                         &lengthParam);
3390         paramBuffer.addParam(std::move(lengthParam));
3391     }
3392     else
3393     {
3394         ParamCapture lengthParam("length", ParamType::TGLsizeiPointer);
3395         InitParamValue(ParamType::TGLsizeiPointer, static_cast<GLsizei *>(nullptr),
3396                        &lengthParam.value);
3397         paramBuffer.addParam(std::move(lengthParam));
3398     }
3399 
3400     if (isCallValid)
3401     {
3402         ParamCapture paramsParam("params", ParamType::TGLintPointer);
3403         InitParamValue(ParamType::TGLintPointer, params, &paramsParam.value);
3404         CaptureGetTexLevelParameterivRobustANGLE_params(glState, isCallValid, targetPacked, level,
3405                                                         pname, bufSize, length, params,
3406                                                         &paramsParam);
3407         paramBuffer.addParam(std::move(paramsParam));
3408     }
3409     else
3410     {
3411         ParamCapture paramsParam("params", ParamType::TGLintPointer);
3412         InitParamValue(ParamType::TGLintPointer, static_cast<GLint *>(nullptr), &paramsParam.value);
3413         paramBuffer.addParam(std::move(paramsParam));
3414     }
3415 
3416     return CallCapture(angle::EntryPoint::GLGetTexLevelParameterivRobustANGLE,
3417                        std::move(paramBuffer));
3418 }
3419 
CaptureGetTexLevelParameterfvRobustANGLE(const State & glState,bool isCallValid,TextureTarget targetPacked,GLint level,GLenum pname,GLsizei bufSize,GLsizei * length,GLfloat * params)3420 CallCapture CaptureGetTexLevelParameterfvRobustANGLE(const State &glState,
3421                                                      bool isCallValid,
3422                                                      TextureTarget targetPacked,
3423                                                      GLint level,
3424                                                      GLenum pname,
3425                                                      GLsizei bufSize,
3426                                                      GLsizei *length,
3427                                                      GLfloat *params)
3428 {
3429     ParamBuffer paramBuffer;
3430 
3431     paramBuffer.addValueParam("targetPacked", ParamType::TTextureTarget, targetPacked);
3432     paramBuffer.addValueParam("level", ParamType::TGLint, level);
3433     paramBuffer.addEnumParam("pname", GLenumGroup::DefaultGroup, ParamType::TGLenum, pname);
3434     paramBuffer.addValueParam("bufSize", ParamType::TGLsizei, bufSize);
3435 
3436     if (isCallValid)
3437     {
3438         ParamCapture lengthParam("length", ParamType::TGLsizeiPointer);
3439         InitParamValue(ParamType::TGLsizeiPointer, length, &lengthParam.value);
3440         CaptureGetTexLevelParameterfvRobustANGLE_length(glState, isCallValid, targetPacked, level,
3441                                                         pname, bufSize, length, params,
3442                                                         &lengthParam);
3443         paramBuffer.addParam(std::move(lengthParam));
3444     }
3445     else
3446     {
3447         ParamCapture lengthParam("length", ParamType::TGLsizeiPointer);
3448         InitParamValue(ParamType::TGLsizeiPointer, static_cast<GLsizei *>(nullptr),
3449                        &lengthParam.value);
3450         paramBuffer.addParam(std::move(lengthParam));
3451     }
3452 
3453     if (isCallValid)
3454     {
3455         ParamCapture paramsParam("params", ParamType::TGLfloatPointer);
3456         InitParamValue(ParamType::TGLfloatPointer, params, &paramsParam.value);
3457         CaptureGetTexLevelParameterfvRobustANGLE_params(glState, isCallValid, targetPacked, level,
3458                                                         pname, bufSize, length, params,
3459                                                         &paramsParam);
3460         paramBuffer.addParam(std::move(paramsParam));
3461     }
3462     else
3463     {
3464         ParamCapture paramsParam("params", ParamType::TGLfloatPointer);
3465         InitParamValue(ParamType::TGLfloatPointer, static_cast<GLfloat *>(nullptr),
3466                        &paramsParam.value);
3467         paramBuffer.addParam(std::move(paramsParam));
3468     }
3469 
3470     return CallCapture(angle::EntryPoint::GLGetTexLevelParameterfvRobustANGLE,
3471                        std::move(paramBuffer));
3472 }
3473 
CaptureGetPointervRobustANGLERobustANGLE(const State & glState,bool isCallValid,GLenum pname,GLsizei bufSize,GLsizei * length,void ** params)3474 CallCapture CaptureGetPointervRobustANGLERobustANGLE(const State &glState,
3475                                                      bool isCallValid,
3476                                                      GLenum pname,
3477                                                      GLsizei bufSize,
3478                                                      GLsizei *length,
3479                                                      void **params)
3480 {
3481     ParamBuffer paramBuffer;
3482 
3483     paramBuffer.addEnumParam("pname", GLenumGroup::DefaultGroup, ParamType::TGLenum, pname);
3484     paramBuffer.addValueParam("bufSize", ParamType::TGLsizei, bufSize);
3485 
3486     if (isCallValid)
3487     {
3488         ParamCapture lengthParam("length", ParamType::TGLsizeiPointer);
3489         InitParamValue(ParamType::TGLsizeiPointer, length, &lengthParam.value);
3490         CaptureGetPointervRobustANGLERobustANGLE_length(glState, isCallValid, pname, bufSize,
3491                                                         length, params, &lengthParam);
3492         paramBuffer.addParam(std::move(lengthParam));
3493     }
3494     else
3495     {
3496         ParamCapture lengthParam("length", ParamType::TGLsizeiPointer);
3497         InitParamValue(ParamType::TGLsizeiPointer, static_cast<GLsizei *>(nullptr),
3498                        &lengthParam.value);
3499         paramBuffer.addParam(std::move(lengthParam));
3500     }
3501 
3502     if (isCallValid)
3503     {
3504         ParamCapture paramsParam("params", ParamType::TvoidPointerPointer);
3505         InitParamValue(ParamType::TvoidPointerPointer, params, &paramsParam.value);
3506         CaptureGetPointervRobustANGLERobustANGLE_params(glState, isCallValid, pname, bufSize,
3507                                                         length, params, &paramsParam);
3508         paramBuffer.addParam(std::move(paramsParam));
3509     }
3510     else
3511     {
3512         ParamCapture paramsParam("params", ParamType::TvoidPointerPointer);
3513         InitParamValue(ParamType::TvoidPointerPointer, static_cast<void **>(nullptr),
3514                        &paramsParam.value);
3515         paramBuffer.addParam(std::move(paramsParam));
3516     }
3517 
3518     return CallCapture(angle::EntryPoint::GLGetPointervRobustANGLERobustANGLE,
3519                        std::move(paramBuffer));
3520 }
3521 
CaptureReadnPixelsRobustANGLE(const State & glState,bool isCallValid,GLint x,GLint y,GLsizei width,GLsizei height,GLenum format,GLenum type,GLsizei bufSize,GLsizei * length,GLsizei * columns,GLsizei * rows,void * data)3522 CallCapture CaptureReadnPixelsRobustANGLE(const State &glState,
3523                                           bool isCallValid,
3524                                           GLint x,
3525                                           GLint y,
3526                                           GLsizei width,
3527                                           GLsizei height,
3528                                           GLenum format,
3529                                           GLenum type,
3530                                           GLsizei bufSize,
3531                                           GLsizei *length,
3532                                           GLsizei *columns,
3533                                           GLsizei *rows,
3534                                           void *data)
3535 {
3536     ParamBuffer paramBuffer;
3537 
3538     paramBuffer.addValueParam("x", ParamType::TGLint, x);
3539     paramBuffer.addValueParam("y", ParamType::TGLint, y);
3540     paramBuffer.addValueParam("width", ParamType::TGLsizei, width);
3541     paramBuffer.addValueParam("height", ParamType::TGLsizei, height);
3542     paramBuffer.addEnumParam("format", GLenumGroup::DefaultGroup, ParamType::TGLenum, format);
3543     paramBuffer.addEnumParam("type", GLenumGroup::DefaultGroup, ParamType::TGLenum, type);
3544     paramBuffer.addValueParam("bufSize", ParamType::TGLsizei, bufSize);
3545 
3546     if (isCallValid)
3547     {
3548         ParamCapture lengthParam("length", ParamType::TGLsizeiPointer);
3549         InitParamValue(ParamType::TGLsizeiPointer, length, &lengthParam.value);
3550         CaptureReadnPixelsRobustANGLE_length(glState, isCallValid, x, y, width, height, format,
3551                                              type, bufSize, length, columns, rows, data,
3552                                              &lengthParam);
3553         paramBuffer.addParam(std::move(lengthParam));
3554     }
3555     else
3556     {
3557         ParamCapture lengthParam("length", ParamType::TGLsizeiPointer);
3558         InitParamValue(ParamType::TGLsizeiPointer, static_cast<GLsizei *>(nullptr),
3559                        &lengthParam.value);
3560         paramBuffer.addParam(std::move(lengthParam));
3561     }
3562 
3563     if (isCallValid)
3564     {
3565         ParamCapture columnsParam("columns", ParamType::TGLsizeiPointer);
3566         InitParamValue(ParamType::TGLsizeiPointer, columns, &columnsParam.value);
3567         CaptureReadnPixelsRobustANGLE_columns(glState, isCallValid, x, y, width, height, format,
3568                                               type, bufSize, length, columns, rows, data,
3569                                               &columnsParam);
3570         paramBuffer.addParam(std::move(columnsParam));
3571     }
3572     else
3573     {
3574         ParamCapture columnsParam("columns", ParamType::TGLsizeiPointer);
3575         InitParamValue(ParamType::TGLsizeiPointer, static_cast<GLsizei *>(nullptr),
3576                        &columnsParam.value);
3577         paramBuffer.addParam(std::move(columnsParam));
3578     }
3579 
3580     if (isCallValid)
3581     {
3582         ParamCapture rowsParam("rows", ParamType::TGLsizeiPointer);
3583         InitParamValue(ParamType::TGLsizeiPointer, rows, &rowsParam.value);
3584         CaptureReadnPixelsRobustANGLE_rows(glState, isCallValid, x, y, width, height, format, type,
3585                                            bufSize, length, columns, rows, data, &rowsParam);
3586         paramBuffer.addParam(std::move(rowsParam));
3587     }
3588     else
3589     {
3590         ParamCapture rowsParam("rows", ParamType::TGLsizeiPointer);
3591         InitParamValue(ParamType::TGLsizeiPointer, static_cast<GLsizei *>(nullptr),
3592                        &rowsParam.value);
3593         paramBuffer.addParam(std::move(rowsParam));
3594     }
3595 
3596     if (isCallValid)
3597     {
3598         ParamCapture dataParam("data", ParamType::TvoidPointer);
3599         InitParamValue(ParamType::TvoidPointer, data, &dataParam.value);
3600         CaptureReadnPixelsRobustANGLE_data(glState, isCallValid, x, y, width, height, format, type,
3601                                            bufSize, length, columns, rows, data, &dataParam);
3602         paramBuffer.addParam(std::move(dataParam));
3603     }
3604     else
3605     {
3606         ParamCapture dataParam("data", ParamType::TvoidPointer);
3607         InitParamValue(ParamType::TvoidPointer, static_cast<void *>(nullptr), &dataParam.value);
3608         paramBuffer.addParam(std::move(dataParam));
3609     }
3610 
3611     return CallCapture(angle::EntryPoint::GLReadnPixelsRobustANGLE, std::move(paramBuffer));
3612 }
3613 
CaptureGetnUniformfvRobustANGLE(const State & glState,bool isCallValid,ShaderProgramID programPacked,UniformLocation locationPacked,GLsizei bufSize,GLsizei * length,GLfloat * params)3614 CallCapture CaptureGetnUniformfvRobustANGLE(const State &glState,
3615                                             bool isCallValid,
3616                                             ShaderProgramID programPacked,
3617                                             UniformLocation locationPacked,
3618                                             GLsizei bufSize,
3619                                             GLsizei *length,
3620                                             GLfloat *params)
3621 {
3622     ParamBuffer paramBuffer;
3623 
3624     paramBuffer.addValueParam("programPacked", ParamType::TShaderProgramID, programPacked);
3625     paramBuffer.addValueParam("locationPacked", ParamType::TUniformLocation, locationPacked);
3626     paramBuffer.addValueParam("bufSize", ParamType::TGLsizei, bufSize);
3627 
3628     if (isCallValid)
3629     {
3630         ParamCapture lengthParam("length", ParamType::TGLsizeiPointer);
3631         InitParamValue(ParamType::TGLsizeiPointer, length, &lengthParam.value);
3632         CaptureGetnUniformfvRobustANGLE_length(glState, isCallValid, programPacked, locationPacked,
3633                                                bufSize, length, params, &lengthParam);
3634         paramBuffer.addParam(std::move(lengthParam));
3635     }
3636     else
3637     {
3638         ParamCapture lengthParam("length", ParamType::TGLsizeiPointer);
3639         InitParamValue(ParamType::TGLsizeiPointer, static_cast<GLsizei *>(nullptr),
3640                        &lengthParam.value);
3641         paramBuffer.addParam(std::move(lengthParam));
3642     }
3643 
3644     if (isCallValid)
3645     {
3646         ParamCapture paramsParam("params", ParamType::TGLfloatPointer);
3647         InitParamValue(ParamType::TGLfloatPointer, params, &paramsParam.value);
3648         CaptureGetnUniformfvRobustANGLE_params(glState, isCallValid, programPacked, locationPacked,
3649                                                bufSize, length, params, &paramsParam);
3650         paramBuffer.addParam(std::move(paramsParam));
3651     }
3652     else
3653     {
3654         ParamCapture paramsParam("params", ParamType::TGLfloatPointer);
3655         InitParamValue(ParamType::TGLfloatPointer, static_cast<GLfloat *>(nullptr),
3656                        &paramsParam.value);
3657         paramBuffer.addParam(std::move(paramsParam));
3658     }
3659 
3660     return CallCapture(angle::EntryPoint::GLGetnUniformfvRobustANGLE, std::move(paramBuffer));
3661 }
3662 
CaptureGetnUniformivRobustANGLE(const State & glState,bool isCallValid,ShaderProgramID programPacked,UniformLocation locationPacked,GLsizei bufSize,GLsizei * length,GLint * params)3663 CallCapture CaptureGetnUniformivRobustANGLE(const State &glState,
3664                                             bool isCallValid,
3665                                             ShaderProgramID programPacked,
3666                                             UniformLocation locationPacked,
3667                                             GLsizei bufSize,
3668                                             GLsizei *length,
3669                                             GLint *params)
3670 {
3671     ParamBuffer paramBuffer;
3672 
3673     paramBuffer.addValueParam("programPacked", ParamType::TShaderProgramID, programPacked);
3674     paramBuffer.addValueParam("locationPacked", ParamType::TUniformLocation, locationPacked);
3675     paramBuffer.addValueParam("bufSize", ParamType::TGLsizei, bufSize);
3676 
3677     if (isCallValid)
3678     {
3679         ParamCapture lengthParam("length", ParamType::TGLsizeiPointer);
3680         InitParamValue(ParamType::TGLsizeiPointer, length, &lengthParam.value);
3681         CaptureGetnUniformivRobustANGLE_length(glState, isCallValid, programPacked, locationPacked,
3682                                                bufSize, length, params, &lengthParam);
3683         paramBuffer.addParam(std::move(lengthParam));
3684     }
3685     else
3686     {
3687         ParamCapture lengthParam("length", ParamType::TGLsizeiPointer);
3688         InitParamValue(ParamType::TGLsizeiPointer, static_cast<GLsizei *>(nullptr),
3689                        &lengthParam.value);
3690         paramBuffer.addParam(std::move(lengthParam));
3691     }
3692 
3693     if (isCallValid)
3694     {
3695         ParamCapture paramsParam("params", ParamType::TGLintPointer);
3696         InitParamValue(ParamType::TGLintPointer, params, &paramsParam.value);
3697         CaptureGetnUniformivRobustANGLE_params(glState, isCallValid, programPacked, locationPacked,
3698                                                bufSize, length, params, &paramsParam);
3699         paramBuffer.addParam(std::move(paramsParam));
3700     }
3701     else
3702     {
3703         ParamCapture paramsParam("params", ParamType::TGLintPointer);
3704         InitParamValue(ParamType::TGLintPointer, static_cast<GLint *>(nullptr), &paramsParam.value);
3705         paramBuffer.addParam(std::move(paramsParam));
3706     }
3707 
3708     return CallCapture(angle::EntryPoint::GLGetnUniformivRobustANGLE, std::move(paramBuffer));
3709 }
3710 
CaptureGetnUniformuivRobustANGLE(const State & glState,bool isCallValid,ShaderProgramID programPacked,UniformLocation locationPacked,GLsizei bufSize,GLsizei * length,GLuint * params)3711 CallCapture CaptureGetnUniformuivRobustANGLE(const State &glState,
3712                                              bool isCallValid,
3713                                              ShaderProgramID programPacked,
3714                                              UniformLocation locationPacked,
3715                                              GLsizei bufSize,
3716                                              GLsizei *length,
3717                                              GLuint *params)
3718 {
3719     ParamBuffer paramBuffer;
3720 
3721     paramBuffer.addValueParam("programPacked", ParamType::TShaderProgramID, programPacked);
3722     paramBuffer.addValueParam("locationPacked", ParamType::TUniformLocation, locationPacked);
3723     paramBuffer.addValueParam("bufSize", ParamType::TGLsizei, bufSize);
3724 
3725     if (isCallValid)
3726     {
3727         ParamCapture lengthParam("length", ParamType::TGLsizeiPointer);
3728         InitParamValue(ParamType::TGLsizeiPointer, length, &lengthParam.value);
3729         CaptureGetnUniformuivRobustANGLE_length(glState, isCallValid, programPacked, locationPacked,
3730                                                 bufSize, length, params, &lengthParam);
3731         paramBuffer.addParam(std::move(lengthParam));
3732     }
3733     else
3734     {
3735         ParamCapture lengthParam("length", ParamType::TGLsizeiPointer);
3736         InitParamValue(ParamType::TGLsizeiPointer, static_cast<GLsizei *>(nullptr),
3737                        &lengthParam.value);
3738         paramBuffer.addParam(std::move(lengthParam));
3739     }
3740 
3741     if (isCallValid)
3742     {
3743         ParamCapture paramsParam("params", ParamType::TGLuintPointer);
3744         InitParamValue(ParamType::TGLuintPointer, params, &paramsParam.value);
3745         CaptureGetnUniformuivRobustANGLE_params(glState, isCallValid, programPacked, locationPacked,
3746                                                 bufSize, length, params, &paramsParam);
3747         paramBuffer.addParam(std::move(paramsParam));
3748     }
3749     else
3750     {
3751         ParamCapture paramsParam("params", ParamType::TGLuintPointer);
3752         InitParamValue(ParamType::TGLuintPointer, static_cast<GLuint *>(nullptr),
3753                        &paramsParam.value);
3754         paramBuffer.addParam(std::move(paramsParam));
3755     }
3756 
3757     return CallCapture(angle::EntryPoint::GLGetnUniformuivRobustANGLE, std::move(paramBuffer));
3758 }
3759 
CaptureTexParameterIivRobustANGLE(const State & glState,bool isCallValid,TextureType targetPacked,GLenum pname,GLsizei bufSize,const GLint * params)3760 CallCapture CaptureTexParameterIivRobustANGLE(const State &glState,
3761                                               bool isCallValid,
3762                                               TextureType targetPacked,
3763                                               GLenum pname,
3764                                               GLsizei bufSize,
3765                                               const GLint *params)
3766 {
3767     ParamBuffer paramBuffer;
3768 
3769     paramBuffer.addValueParam("targetPacked", ParamType::TTextureType, targetPacked);
3770     paramBuffer.addEnumParam("pname", GLenumGroup::DefaultGroup, ParamType::TGLenum, pname);
3771     paramBuffer.addValueParam("bufSize", ParamType::TGLsizei, bufSize);
3772 
3773     if (isCallValid)
3774     {
3775         ParamCapture paramsParam("params", ParamType::TGLintConstPointer);
3776         InitParamValue(ParamType::TGLintConstPointer, params, &paramsParam.value);
3777         CaptureTexParameterIivRobustANGLE_params(glState, isCallValid, targetPacked, pname, bufSize,
3778                                                  params, &paramsParam);
3779         paramBuffer.addParam(std::move(paramsParam));
3780     }
3781     else
3782     {
3783         ParamCapture paramsParam("params", ParamType::TGLintConstPointer);
3784         InitParamValue(ParamType::TGLintConstPointer, static_cast<const GLint *>(nullptr),
3785                        &paramsParam.value);
3786         paramBuffer.addParam(std::move(paramsParam));
3787     }
3788 
3789     return CallCapture(angle::EntryPoint::GLTexParameterIivRobustANGLE, std::move(paramBuffer));
3790 }
3791 
CaptureTexParameterIuivRobustANGLE(const State & glState,bool isCallValid,TextureType targetPacked,GLenum pname,GLsizei bufSize,const GLuint * params)3792 CallCapture CaptureTexParameterIuivRobustANGLE(const State &glState,
3793                                                bool isCallValid,
3794                                                TextureType targetPacked,
3795                                                GLenum pname,
3796                                                GLsizei bufSize,
3797                                                const GLuint *params)
3798 {
3799     ParamBuffer paramBuffer;
3800 
3801     paramBuffer.addValueParam("targetPacked", ParamType::TTextureType, targetPacked);
3802     paramBuffer.addEnumParam("pname", GLenumGroup::DefaultGroup, ParamType::TGLenum, pname);
3803     paramBuffer.addValueParam("bufSize", ParamType::TGLsizei, bufSize);
3804 
3805     if (isCallValid)
3806     {
3807         ParamCapture paramsParam("params", ParamType::TGLuintConstPointer);
3808         InitParamValue(ParamType::TGLuintConstPointer, params, &paramsParam.value);
3809         CaptureTexParameterIuivRobustANGLE_params(glState, isCallValid, targetPacked, pname,
3810                                                   bufSize, params, &paramsParam);
3811         paramBuffer.addParam(std::move(paramsParam));
3812     }
3813     else
3814     {
3815         ParamCapture paramsParam("params", ParamType::TGLuintConstPointer);
3816         InitParamValue(ParamType::TGLuintConstPointer, static_cast<const GLuint *>(nullptr),
3817                        &paramsParam.value);
3818         paramBuffer.addParam(std::move(paramsParam));
3819     }
3820 
3821     return CallCapture(angle::EntryPoint::GLTexParameterIuivRobustANGLE, std::move(paramBuffer));
3822 }
3823 
CaptureGetTexParameterIivRobustANGLE(const State & glState,bool isCallValid,TextureType targetPacked,GLenum pname,GLsizei bufSize,GLsizei * length,GLint * params)3824 CallCapture CaptureGetTexParameterIivRobustANGLE(const State &glState,
3825                                                  bool isCallValid,
3826                                                  TextureType targetPacked,
3827                                                  GLenum pname,
3828                                                  GLsizei bufSize,
3829                                                  GLsizei *length,
3830                                                  GLint *params)
3831 {
3832     ParamBuffer paramBuffer;
3833 
3834     paramBuffer.addValueParam("targetPacked", ParamType::TTextureType, targetPacked);
3835     paramBuffer.addEnumParam("pname", GLenumGroup::DefaultGroup, ParamType::TGLenum, pname);
3836     paramBuffer.addValueParam("bufSize", ParamType::TGLsizei, bufSize);
3837 
3838     if (isCallValid)
3839     {
3840         ParamCapture lengthParam("length", ParamType::TGLsizeiPointer);
3841         InitParamValue(ParamType::TGLsizeiPointer, length, &lengthParam.value);
3842         CaptureGetTexParameterIivRobustANGLE_length(glState, isCallValid, targetPacked, pname,
3843                                                     bufSize, length, params, &lengthParam);
3844         paramBuffer.addParam(std::move(lengthParam));
3845     }
3846     else
3847     {
3848         ParamCapture lengthParam("length", ParamType::TGLsizeiPointer);
3849         InitParamValue(ParamType::TGLsizeiPointer, static_cast<GLsizei *>(nullptr),
3850                        &lengthParam.value);
3851         paramBuffer.addParam(std::move(lengthParam));
3852     }
3853 
3854     if (isCallValid)
3855     {
3856         ParamCapture paramsParam("params", ParamType::TGLintPointer);
3857         InitParamValue(ParamType::TGLintPointer, params, &paramsParam.value);
3858         CaptureGetTexParameterIivRobustANGLE_params(glState, isCallValid, targetPacked, pname,
3859                                                     bufSize, length, params, &paramsParam);
3860         paramBuffer.addParam(std::move(paramsParam));
3861     }
3862     else
3863     {
3864         ParamCapture paramsParam("params", ParamType::TGLintPointer);
3865         InitParamValue(ParamType::TGLintPointer, static_cast<GLint *>(nullptr), &paramsParam.value);
3866         paramBuffer.addParam(std::move(paramsParam));
3867     }
3868 
3869     return CallCapture(angle::EntryPoint::GLGetTexParameterIivRobustANGLE, std::move(paramBuffer));
3870 }
3871 
CaptureGetTexParameterIuivRobustANGLE(const State & glState,bool isCallValid,TextureType targetPacked,GLenum pname,GLsizei bufSize,GLsizei * length,GLuint * params)3872 CallCapture CaptureGetTexParameterIuivRobustANGLE(const State &glState,
3873                                                   bool isCallValid,
3874                                                   TextureType targetPacked,
3875                                                   GLenum pname,
3876                                                   GLsizei bufSize,
3877                                                   GLsizei *length,
3878                                                   GLuint *params)
3879 {
3880     ParamBuffer paramBuffer;
3881 
3882     paramBuffer.addValueParam("targetPacked", ParamType::TTextureType, targetPacked);
3883     paramBuffer.addEnumParam("pname", GLenumGroup::DefaultGroup, ParamType::TGLenum, pname);
3884     paramBuffer.addValueParam("bufSize", ParamType::TGLsizei, bufSize);
3885 
3886     if (isCallValid)
3887     {
3888         ParamCapture lengthParam("length", ParamType::TGLsizeiPointer);
3889         InitParamValue(ParamType::TGLsizeiPointer, length, &lengthParam.value);
3890         CaptureGetTexParameterIuivRobustANGLE_length(glState, isCallValid, targetPacked, pname,
3891                                                      bufSize, length, params, &lengthParam);
3892         paramBuffer.addParam(std::move(lengthParam));
3893     }
3894     else
3895     {
3896         ParamCapture lengthParam("length", ParamType::TGLsizeiPointer);
3897         InitParamValue(ParamType::TGLsizeiPointer, static_cast<GLsizei *>(nullptr),
3898                        &lengthParam.value);
3899         paramBuffer.addParam(std::move(lengthParam));
3900     }
3901 
3902     if (isCallValid)
3903     {
3904         ParamCapture paramsParam("params", ParamType::TGLuintPointer);
3905         InitParamValue(ParamType::TGLuintPointer, params, &paramsParam.value);
3906         CaptureGetTexParameterIuivRobustANGLE_params(glState, isCallValid, targetPacked, pname,
3907                                                      bufSize, length, params, &paramsParam);
3908         paramBuffer.addParam(std::move(paramsParam));
3909     }
3910     else
3911     {
3912         ParamCapture paramsParam("params", ParamType::TGLuintPointer);
3913         InitParamValue(ParamType::TGLuintPointer, static_cast<GLuint *>(nullptr),
3914                        &paramsParam.value);
3915         paramBuffer.addParam(std::move(paramsParam));
3916     }
3917 
3918     return CallCapture(angle::EntryPoint::GLGetTexParameterIuivRobustANGLE, std::move(paramBuffer));
3919 }
3920 
CaptureSamplerParameterIivRobustANGLE(const State & glState,bool isCallValid,SamplerID samplerPacked,GLenum pname,GLsizei bufSize,const GLint * param)3921 CallCapture CaptureSamplerParameterIivRobustANGLE(const State &glState,
3922                                                   bool isCallValid,
3923                                                   SamplerID samplerPacked,
3924                                                   GLenum pname,
3925                                                   GLsizei bufSize,
3926                                                   const GLint *param)
3927 {
3928     ParamBuffer paramBuffer;
3929 
3930     paramBuffer.addValueParam("samplerPacked", ParamType::TSamplerID, samplerPacked);
3931     paramBuffer.addEnumParam("pname", GLenumGroup::DefaultGroup, ParamType::TGLenum, pname);
3932     paramBuffer.addValueParam("bufSize", ParamType::TGLsizei, bufSize);
3933 
3934     if (isCallValid)
3935     {
3936         ParamCapture paramParam("param", ParamType::TGLintConstPointer);
3937         InitParamValue(ParamType::TGLintConstPointer, param, &paramParam.value);
3938         CaptureSamplerParameterIivRobustANGLE_param(glState, isCallValid, samplerPacked, pname,
3939                                                     bufSize, param, &paramParam);
3940         paramBuffer.addParam(std::move(paramParam));
3941     }
3942     else
3943     {
3944         ParamCapture paramParam("param", ParamType::TGLintConstPointer);
3945         InitParamValue(ParamType::TGLintConstPointer, static_cast<const GLint *>(nullptr),
3946                        &paramParam.value);
3947         paramBuffer.addParam(std::move(paramParam));
3948     }
3949 
3950     return CallCapture(angle::EntryPoint::GLSamplerParameterIivRobustANGLE, std::move(paramBuffer));
3951 }
3952 
CaptureSamplerParameterIuivRobustANGLE(const State & glState,bool isCallValid,SamplerID samplerPacked,GLenum pname,GLsizei bufSize,const GLuint * param)3953 CallCapture CaptureSamplerParameterIuivRobustANGLE(const State &glState,
3954                                                    bool isCallValid,
3955                                                    SamplerID samplerPacked,
3956                                                    GLenum pname,
3957                                                    GLsizei bufSize,
3958                                                    const GLuint *param)
3959 {
3960     ParamBuffer paramBuffer;
3961 
3962     paramBuffer.addValueParam("samplerPacked", ParamType::TSamplerID, samplerPacked);
3963     paramBuffer.addEnumParam("pname", GLenumGroup::DefaultGroup, ParamType::TGLenum, pname);
3964     paramBuffer.addValueParam("bufSize", ParamType::TGLsizei, bufSize);
3965 
3966     if (isCallValid)
3967     {
3968         ParamCapture paramParam("param", ParamType::TGLuintConstPointer);
3969         InitParamValue(ParamType::TGLuintConstPointer, param, &paramParam.value);
3970         CaptureSamplerParameterIuivRobustANGLE_param(glState, isCallValid, samplerPacked, pname,
3971                                                      bufSize, param, &paramParam);
3972         paramBuffer.addParam(std::move(paramParam));
3973     }
3974     else
3975     {
3976         ParamCapture paramParam("param", ParamType::TGLuintConstPointer);
3977         InitParamValue(ParamType::TGLuintConstPointer, static_cast<const GLuint *>(nullptr),
3978                        &paramParam.value);
3979         paramBuffer.addParam(std::move(paramParam));
3980     }
3981 
3982     return CallCapture(angle::EntryPoint::GLSamplerParameterIuivRobustANGLE,
3983                        std::move(paramBuffer));
3984 }
3985 
CaptureGetSamplerParameterIivRobustANGLE(const State & glState,bool isCallValid,SamplerID samplerPacked,GLenum pname,GLsizei bufSize,GLsizei * length,GLint * params)3986 CallCapture CaptureGetSamplerParameterIivRobustANGLE(const State &glState,
3987                                                      bool isCallValid,
3988                                                      SamplerID samplerPacked,
3989                                                      GLenum pname,
3990                                                      GLsizei bufSize,
3991                                                      GLsizei *length,
3992                                                      GLint *params)
3993 {
3994     ParamBuffer paramBuffer;
3995 
3996     paramBuffer.addValueParam("samplerPacked", ParamType::TSamplerID, samplerPacked);
3997     paramBuffer.addEnumParam("pname", GLenumGroup::DefaultGroup, ParamType::TGLenum, pname);
3998     paramBuffer.addValueParam("bufSize", ParamType::TGLsizei, bufSize);
3999 
4000     if (isCallValid)
4001     {
4002         ParamCapture lengthParam("length", ParamType::TGLsizeiPointer);
4003         InitParamValue(ParamType::TGLsizeiPointer, length, &lengthParam.value);
4004         CaptureGetSamplerParameterIivRobustANGLE_length(glState, isCallValid, samplerPacked, pname,
4005                                                         bufSize, length, params, &lengthParam);
4006         paramBuffer.addParam(std::move(lengthParam));
4007     }
4008     else
4009     {
4010         ParamCapture lengthParam("length", ParamType::TGLsizeiPointer);
4011         InitParamValue(ParamType::TGLsizeiPointer, static_cast<GLsizei *>(nullptr),
4012                        &lengthParam.value);
4013         paramBuffer.addParam(std::move(lengthParam));
4014     }
4015 
4016     if (isCallValid)
4017     {
4018         ParamCapture paramsParam("params", ParamType::TGLintPointer);
4019         InitParamValue(ParamType::TGLintPointer, params, &paramsParam.value);
4020         CaptureGetSamplerParameterIivRobustANGLE_params(glState, isCallValid, samplerPacked, pname,
4021                                                         bufSize, length, params, &paramsParam);
4022         paramBuffer.addParam(std::move(paramsParam));
4023     }
4024     else
4025     {
4026         ParamCapture paramsParam("params", ParamType::TGLintPointer);
4027         InitParamValue(ParamType::TGLintPointer, static_cast<GLint *>(nullptr), &paramsParam.value);
4028         paramBuffer.addParam(std::move(paramsParam));
4029     }
4030 
4031     return CallCapture(angle::EntryPoint::GLGetSamplerParameterIivRobustANGLE,
4032                        std::move(paramBuffer));
4033 }
4034 
CaptureGetSamplerParameterIuivRobustANGLE(const State & glState,bool isCallValid,SamplerID samplerPacked,GLenum pname,GLsizei bufSize,GLsizei * length,GLuint * params)4035 CallCapture CaptureGetSamplerParameterIuivRobustANGLE(const State &glState,
4036                                                       bool isCallValid,
4037                                                       SamplerID samplerPacked,
4038                                                       GLenum pname,
4039                                                       GLsizei bufSize,
4040                                                       GLsizei *length,
4041                                                       GLuint *params)
4042 {
4043     ParamBuffer paramBuffer;
4044 
4045     paramBuffer.addValueParam("samplerPacked", ParamType::TSamplerID, samplerPacked);
4046     paramBuffer.addEnumParam("pname", GLenumGroup::DefaultGroup, ParamType::TGLenum, pname);
4047     paramBuffer.addValueParam("bufSize", ParamType::TGLsizei, bufSize);
4048 
4049     if (isCallValid)
4050     {
4051         ParamCapture lengthParam("length", ParamType::TGLsizeiPointer);
4052         InitParamValue(ParamType::TGLsizeiPointer, length, &lengthParam.value);
4053         CaptureGetSamplerParameterIuivRobustANGLE_length(glState, isCallValid, samplerPacked, pname,
4054                                                          bufSize, length, params, &lengthParam);
4055         paramBuffer.addParam(std::move(lengthParam));
4056     }
4057     else
4058     {
4059         ParamCapture lengthParam("length", ParamType::TGLsizeiPointer);
4060         InitParamValue(ParamType::TGLsizeiPointer, static_cast<GLsizei *>(nullptr),
4061                        &lengthParam.value);
4062         paramBuffer.addParam(std::move(lengthParam));
4063     }
4064 
4065     if (isCallValid)
4066     {
4067         ParamCapture paramsParam("params", ParamType::TGLuintPointer);
4068         InitParamValue(ParamType::TGLuintPointer, params, &paramsParam.value);
4069         CaptureGetSamplerParameterIuivRobustANGLE_params(glState, isCallValid, samplerPacked, pname,
4070                                                          bufSize, length, params, &paramsParam);
4071         paramBuffer.addParam(std::move(paramsParam));
4072     }
4073     else
4074     {
4075         ParamCapture paramsParam("params", ParamType::TGLuintPointer);
4076         InitParamValue(ParamType::TGLuintPointer, static_cast<GLuint *>(nullptr),
4077                        &paramsParam.value);
4078         paramBuffer.addParam(std::move(paramsParam));
4079     }
4080 
4081     return CallCapture(angle::EntryPoint::GLGetSamplerParameterIuivRobustANGLE,
4082                        std::move(paramBuffer));
4083 }
4084 
CaptureGetQueryObjectivRobustANGLE(const State & glState,bool isCallValid,QueryID idPacked,GLenum pname,GLsizei bufSize,GLsizei * length,GLint * params)4085 CallCapture CaptureGetQueryObjectivRobustANGLE(const State &glState,
4086                                                bool isCallValid,
4087                                                QueryID idPacked,
4088                                                GLenum pname,
4089                                                GLsizei bufSize,
4090                                                GLsizei *length,
4091                                                GLint *params)
4092 {
4093     ParamBuffer paramBuffer;
4094 
4095     paramBuffer.addValueParam("idPacked", ParamType::TQueryID, idPacked);
4096     paramBuffer.addEnumParam("pname", GLenumGroup::DefaultGroup, ParamType::TGLenum, pname);
4097     paramBuffer.addValueParam("bufSize", ParamType::TGLsizei, bufSize);
4098 
4099     if (isCallValid)
4100     {
4101         ParamCapture lengthParam("length", ParamType::TGLsizeiPointer);
4102         InitParamValue(ParamType::TGLsizeiPointer, length, &lengthParam.value);
4103         CaptureGetQueryObjectivRobustANGLE_length(glState, isCallValid, idPacked, pname, bufSize,
4104                                                   length, params, &lengthParam);
4105         paramBuffer.addParam(std::move(lengthParam));
4106     }
4107     else
4108     {
4109         ParamCapture lengthParam("length", ParamType::TGLsizeiPointer);
4110         InitParamValue(ParamType::TGLsizeiPointer, static_cast<GLsizei *>(nullptr),
4111                        &lengthParam.value);
4112         paramBuffer.addParam(std::move(lengthParam));
4113     }
4114 
4115     if (isCallValid)
4116     {
4117         ParamCapture paramsParam("params", ParamType::TGLintPointer);
4118         InitParamValue(ParamType::TGLintPointer, params, &paramsParam.value);
4119         CaptureGetQueryObjectivRobustANGLE_params(glState, isCallValid, idPacked, pname, bufSize,
4120                                                   length, params, &paramsParam);
4121         paramBuffer.addParam(std::move(paramsParam));
4122     }
4123     else
4124     {
4125         ParamCapture paramsParam("params", ParamType::TGLintPointer);
4126         InitParamValue(ParamType::TGLintPointer, static_cast<GLint *>(nullptr), &paramsParam.value);
4127         paramBuffer.addParam(std::move(paramsParam));
4128     }
4129 
4130     return CallCapture(angle::EntryPoint::GLGetQueryObjectivRobustANGLE, std::move(paramBuffer));
4131 }
4132 
CaptureGetQueryObjecti64vRobustANGLE(const State & glState,bool isCallValid,QueryID idPacked,GLenum pname,GLsizei bufSize,GLsizei * length,GLint64 * params)4133 CallCapture CaptureGetQueryObjecti64vRobustANGLE(const State &glState,
4134                                                  bool isCallValid,
4135                                                  QueryID idPacked,
4136                                                  GLenum pname,
4137                                                  GLsizei bufSize,
4138                                                  GLsizei *length,
4139                                                  GLint64 *params)
4140 {
4141     ParamBuffer paramBuffer;
4142 
4143     paramBuffer.addValueParam("idPacked", ParamType::TQueryID, idPacked);
4144     paramBuffer.addEnumParam("pname", GLenumGroup::DefaultGroup, ParamType::TGLenum, pname);
4145     paramBuffer.addValueParam("bufSize", ParamType::TGLsizei, bufSize);
4146 
4147     if (isCallValid)
4148     {
4149         ParamCapture lengthParam("length", ParamType::TGLsizeiPointer);
4150         InitParamValue(ParamType::TGLsizeiPointer, length, &lengthParam.value);
4151         CaptureGetQueryObjecti64vRobustANGLE_length(glState, isCallValid, idPacked, pname, bufSize,
4152                                                     length, params, &lengthParam);
4153         paramBuffer.addParam(std::move(lengthParam));
4154     }
4155     else
4156     {
4157         ParamCapture lengthParam("length", ParamType::TGLsizeiPointer);
4158         InitParamValue(ParamType::TGLsizeiPointer, static_cast<GLsizei *>(nullptr),
4159                        &lengthParam.value);
4160         paramBuffer.addParam(std::move(lengthParam));
4161     }
4162 
4163     if (isCallValid)
4164     {
4165         ParamCapture paramsParam("params", ParamType::TGLint64Pointer);
4166         InitParamValue(ParamType::TGLint64Pointer, params, &paramsParam.value);
4167         CaptureGetQueryObjecti64vRobustANGLE_params(glState, isCallValid, idPacked, pname, bufSize,
4168                                                     length, params, &paramsParam);
4169         paramBuffer.addParam(std::move(paramsParam));
4170     }
4171     else
4172     {
4173         ParamCapture paramsParam("params", ParamType::TGLint64Pointer);
4174         InitParamValue(ParamType::TGLint64Pointer, static_cast<GLint64 *>(nullptr),
4175                        &paramsParam.value);
4176         paramBuffer.addParam(std::move(paramsParam));
4177     }
4178 
4179     return CallCapture(angle::EntryPoint::GLGetQueryObjecti64vRobustANGLE, std::move(paramBuffer));
4180 }
4181 
CaptureGetQueryObjectui64vRobustANGLE(const State & glState,bool isCallValid,QueryID idPacked,GLenum pname,GLsizei bufSize,GLsizei * length,GLuint64 * params)4182 CallCapture CaptureGetQueryObjectui64vRobustANGLE(const State &glState,
4183                                                   bool isCallValid,
4184                                                   QueryID idPacked,
4185                                                   GLenum pname,
4186                                                   GLsizei bufSize,
4187                                                   GLsizei *length,
4188                                                   GLuint64 *params)
4189 {
4190     ParamBuffer paramBuffer;
4191 
4192     paramBuffer.addValueParam("idPacked", ParamType::TQueryID, idPacked);
4193     paramBuffer.addEnumParam("pname", GLenumGroup::DefaultGroup, ParamType::TGLenum, pname);
4194     paramBuffer.addValueParam("bufSize", ParamType::TGLsizei, bufSize);
4195 
4196     if (isCallValid)
4197     {
4198         ParamCapture lengthParam("length", ParamType::TGLsizeiPointer);
4199         InitParamValue(ParamType::TGLsizeiPointer, length, &lengthParam.value);
4200         CaptureGetQueryObjectui64vRobustANGLE_length(glState, isCallValid, idPacked, pname, bufSize,
4201                                                      length, params, &lengthParam);
4202         paramBuffer.addParam(std::move(lengthParam));
4203     }
4204     else
4205     {
4206         ParamCapture lengthParam("length", ParamType::TGLsizeiPointer);
4207         InitParamValue(ParamType::TGLsizeiPointer, static_cast<GLsizei *>(nullptr),
4208                        &lengthParam.value);
4209         paramBuffer.addParam(std::move(lengthParam));
4210     }
4211 
4212     if (isCallValid)
4213     {
4214         ParamCapture paramsParam("params", ParamType::TGLuint64Pointer);
4215         InitParamValue(ParamType::TGLuint64Pointer, params, &paramsParam.value);
4216         CaptureGetQueryObjectui64vRobustANGLE_params(glState, isCallValid, idPacked, pname, bufSize,
4217                                                      length, params, &paramsParam);
4218         paramBuffer.addParam(std::move(paramsParam));
4219     }
4220     else
4221     {
4222         ParamCapture paramsParam("params", ParamType::TGLuint64Pointer);
4223         InitParamValue(ParamType::TGLuint64Pointer, static_cast<GLuint64 *>(nullptr),
4224                        &paramsParam.value);
4225         paramBuffer.addParam(std::move(paramsParam));
4226     }
4227 
4228     return CallCapture(angle::EntryPoint::GLGetQueryObjectui64vRobustANGLE, std::move(paramBuffer));
4229 }
4230 
CaptureImportSemaphoreZirconHandleANGLE(const State & glState,bool isCallValid,SemaphoreID semaphorePacked,HandleType handleTypePacked,GLuint handle)4231 CallCapture CaptureImportSemaphoreZirconHandleANGLE(const State &glState,
4232                                                     bool isCallValid,
4233                                                     SemaphoreID semaphorePacked,
4234                                                     HandleType handleTypePacked,
4235                                                     GLuint handle)
4236 {
4237     ParamBuffer paramBuffer;
4238 
4239     paramBuffer.addValueParam("semaphorePacked", ParamType::TSemaphoreID, semaphorePacked);
4240     paramBuffer.addValueParam("handleTypePacked", ParamType::THandleType, handleTypePacked);
4241     paramBuffer.addValueParam("handle", ParamType::TGLuint, handle);
4242 
4243     return CallCapture(angle::EntryPoint::GLImportSemaphoreZirconHandleANGLE,
4244                        std::move(paramBuffer));
4245 }
4246 
CaptureTexImage2DExternalANGLE(const State & glState,bool isCallValid,TextureTarget targetPacked,GLint level,GLint internalformat,GLsizei width,GLsizei height,GLint border,GLenum format,GLenum type)4247 CallCapture CaptureTexImage2DExternalANGLE(const State &glState,
4248                                            bool isCallValid,
4249                                            TextureTarget targetPacked,
4250                                            GLint level,
4251                                            GLint internalformat,
4252                                            GLsizei width,
4253                                            GLsizei height,
4254                                            GLint border,
4255                                            GLenum format,
4256                                            GLenum type)
4257 {
4258     ParamBuffer paramBuffer;
4259 
4260     paramBuffer.addValueParam("targetPacked", ParamType::TTextureTarget, targetPacked);
4261     paramBuffer.addValueParam("level", ParamType::TGLint, level);
4262     paramBuffer.addValueParam("internalformat", ParamType::TGLint, internalformat);
4263     paramBuffer.addValueParam("width", ParamType::TGLsizei, width);
4264     paramBuffer.addValueParam("height", ParamType::TGLsizei, height);
4265     paramBuffer.addValueParam("border", ParamType::TGLint, border);
4266     paramBuffer.addEnumParam("format", GLenumGroup::PixelFormat, ParamType::TGLenum, format);
4267     paramBuffer.addEnumParam("type", GLenumGroup::PixelType, ParamType::TGLenum, type);
4268 
4269     return CallCapture(angle::EntryPoint::GLTexImage2DExternalANGLE, std::move(paramBuffer));
4270 }
4271 
CaptureInvalidateTextureANGLE(const State & glState,bool isCallValid,TextureType targetPacked)4272 CallCapture CaptureInvalidateTextureANGLE(const State &glState,
4273                                           bool isCallValid,
4274                                           TextureType targetPacked)
4275 {
4276     ParamBuffer paramBuffer;
4277 
4278     paramBuffer.addValueParam("targetPacked", ParamType::TTextureType, targetPacked);
4279 
4280     return CallCapture(angle::EntryPoint::GLInvalidateTextureANGLE, std::move(paramBuffer));
4281 }
4282 
CaptureTexStorage2DMultisampleANGLE(const State & glState,bool isCallValid,TextureType targetPacked,GLsizei samples,GLenum internalformat,GLsizei width,GLsizei height,GLboolean fixedsamplelocations)4283 CallCapture CaptureTexStorage2DMultisampleANGLE(const State &glState,
4284                                                 bool isCallValid,
4285                                                 TextureType targetPacked,
4286                                                 GLsizei samples,
4287                                                 GLenum internalformat,
4288                                                 GLsizei width,
4289                                                 GLsizei height,
4290                                                 GLboolean fixedsamplelocations)
4291 {
4292     ParamBuffer paramBuffer;
4293 
4294     paramBuffer.addValueParam("targetPacked", ParamType::TTextureType, targetPacked);
4295     paramBuffer.addValueParam("samples", ParamType::TGLsizei, samples);
4296     paramBuffer.addEnumParam("internalformat", GLenumGroup::DefaultGroup, ParamType::TGLenum,
4297                              internalformat);
4298     paramBuffer.addValueParam("width", ParamType::TGLsizei, width);
4299     paramBuffer.addValueParam("height", ParamType::TGLsizei, height);
4300     paramBuffer.addValueParam("fixedsamplelocations", ParamType::TGLboolean, fixedsamplelocations);
4301 
4302     return CallCapture(angle::EntryPoint::GLTexStorage2DMultisampleANGLE, std::move(paramBuffer));
4303 }
4304 
CaptureGetMultisamplefvANGLE(const State & glState,bool isCallValid,GLenum pname,GLuint index,GLfloat * val)4305 CallCapture CaptureGetMultisamplefvANGLE(const State &glState,
4306                                          bool isCallValid,
4307                                          GLenum pname,
4308                                          GLuint index,
4309                                          GLfloat *val)
4310 {
4311     ParamBuffer paramBuffer;
4312 
4313     paramBuffer.addEnumParam("pname", GLenumGroup::DefaultGroup, ParamType::TGLenum, pname);
4314     paramBuffer.addValueParam("index", ParamType::TGLuint, index);
4315 
4316     if (isCallValid)
4317     {
4318         ParamCapture valParam("val", ParamType::TGLfloatPointer);
4319         InitParamValue(ParamType::TGLfloatPointer, val, &valParam.value);
4320         CaptureGetMultisamplefvANGLE_val(glState, isCallValid, pname, index, val, &valParam);
4321         paramBuffer.addParam(std::move(valParam));
4322     }
4323     else
4324     {
4325         ParamCapture valParam("val", ParamType::TGLfloatPointer);
4326         InitParamValue(ParamType::TGLfloatPointer, static_cast<GLfloat *>(nullptr),
4327                        &valParam.value);
4328         paramBuffer.addParam(std::move(valParam));
4329     }
4330 
4331     return CallCapture(angle::EntryPoint::GLGetMultisamplefvANGLE, std::move(paramBuffer));
4332 }
4333 
CaptureSampleMaskiANGLE(const State & glState,bool isCallValid,GLuint maskNumber,GLbitfield mask)4334 CallCapture CaptureSampleMaskiANGLE(const State &glState,
4335                                     bool isCallValid,
4336                                     GLuint maskNumber,
4337                                     GLbitfield mask)
4338 {
4339     ParamBuffer paramBuffer;
4340 
4341     paramBuffer.addValueParam("maskNumber", ParamType::TGLuint, maskNumber);
4342     paramBuffer.addEnumParam("mask", GLenumGroup::DefaultGroup, ParamType::TGLbitfield, mask);
4343 
4344     return CallCapture(angle::EntryPoint::GLSampleMaskiANGLE, std::move(paramBuffer));
4345 }
4346 
CaptureGetTranslatedShaderSourceANGLE(const State & glState,bool isCallValid,ShaderProgramID shaderPacked,GLsizei bufsize,GLsizei * length,GLchar * source)4347 CallCapture CaptureGetTranslatedShaderSourceANGLE(const State &glState,
4348                                                   bool isCallValid,
4349                                                   ShaderProgramID shaderPacked,
4350                                                   GLsizei bufsize,
4351                                                   GLsizei *length,
4352                                                   GLchar *source)
4353 {
4354     ParamBuffer paramBuffer;
4355 
4356     paramBuffer.addValueParam("shaderPacked", ParamType::TShaderProgramID, shaderPacked);
4357     paramBuffer.addValueParam("bufsize", ParamType::TGLsizei, bufsize);
4358 
4359     if (isCallValid)
4360     {
4361         ParamCapture lengthParam("length", ParamType::TGLsizeiPointer);
4362         InitParamValue(ParamType::TGLsizeiPointer, length, &lengthParam.value);
4363         CaptureGetTranslatedShaderSourceANGLE_length(glState, isCallValid, shaderPacked, bufsize,
4364                                                      length, source, &lengthParam);
4365         paramBuffer.addParam(std::move(lengthParam));
4366     }
4367     else
4368     {
4369         ParamCapture lengthParam("length", ParamType::TGLsizeiPointer);
4370         InitParamValue(ParamType::TGLsizeiPointer, static_cast<GLsizei *>(nullptr),
4371                        &lengthParam.value);
4372         paramBuffer.addParam(std::move(lengthParam));
4373     }
4374 
4375     if (isCallValid)
4376     {
4377         ParamCapture sourceParam("source", ParamType::TGLcharPointer);
4378         InitParamValue(ParamType::TGLcharPointer, source, &sourceParam.value);
4379         CaptureGetTranslatedShaderSourceANGLE_source(glState, isCallValid, shaderPacked, bufsize,
4380                                                      length, source, &sourceParam);
4381         paramBuffer.addParam(std::move(sourceParam));
4382     }
4383     else
4384     {
4385         ParamCapture sourceParam("source", ParamType::TGLcharPointer);
4386         InitParamValue(ParamType::TGLcharPointer, static_cast<GLchar *>(nullptr),
4387                        &sourceParam.value);
4388         paramBuffer.addParam(std::move(sourceParam));
4389     }
4390 
4391     return CallCapture(angle::EntryPoint::GLGetTranslatedShaderSourceANGLE, std::move(paramBuffer));
4392 }
4393 
CaptureAcquireTexturesANGLE(const State & glState,bool isCallValid,GLuint numTextures,const TextureID * texturesPacked,const GLenum * layouts)4394 CallCapture CaptureAcquireTexturesANGLE(const State &glState,
4395                                         bool isCallValid,
4396                                         GLuint numTextures,
4397                                         const TextureID *texturesPacked,
4398                                         const GLenum *layouts)
4399 {
4400     ParamBuffer paramBuffer;
4401 
4402     paramBuffer.addValueParam("numTextures", ParamType::TGLuint, numTextures);
4403 
4404     if (isCallValid)
4405     {
4406         ParamCapture texturesPackedParam("texturesPacked", ParamType::TTextureIDConstPointer);
4407         InitParamValue(ParamType::TTextureIDConstPointer, texturesPacked,
4408                        &texturesPackedParam.value);
4409         CaptureAcquireTexturesANGLE_texturesPacked(glState, isCallValid, numTextures,
4410                                                    texturesPacked, layouts, &texturesPackedParam);
4411         paramBuffer.addParam(std::move(texturesPackedParam));
4412     }
4413     else
4414     {
4415         ParamCapture texturesPackedParam("texturesPacked", ParamType::TTextureIDConstPointer);
4416         InitParamValue(ParamType::TTextureIDConstPointer, static_cast<const TextureID *>(nullptr),
4417                        &texturesPackedParam.value);
4418         paramBuffer.addParam(std::move(texturesPackedParam));
4419     }
4420 
4421     if (isCallValid)
4422     {
4423         ParamCapture layoutsParam("layouts", ParamType::TGLenumConstPointer);
4424         InitParamValue(ParamType::TGLenumConstPointer, layouts, &layoutsParam.value);
4425         CaptureAcquireTexturesANGLE_layouts(glState, isCallValid, numTextures, texturesPacked,
4426                                             layouts, &layoutsParam);
4427         paramBuffer.addParam(std::move(layoutsParam));
4428     }
4429     else
4430     {
4431         ParamCapture layoutsParam("layouts", ParamType::TGLenumConstPointer);
4432         InitParamValue(ParamType::TGLenumConstPointer, static_cast<const GLenum *>(nullptr),
4433                        &layoutsParam.value);
4434         paramBuffer.addParam(std::move(layoutsParam));
4435     }
4436 
4437     return CallCapture(angle::EntryPoint::GLAcquireTexturesANGLE, std::move(paramBuffer));
4438 }
4439 
CaptureReleaseTexturesANGLE(const State & glState,bool isCallValid,GLuint numTextures,const TextureID * texturesPacked,GLenum * layouts)4440 CallCapture CaptureReleaseTexturesANGLE(const State &glState,
4441                                         bool isCallValid,
4442                                         GLuint numTextures,
4443                                         const TextureID *texturesPacked,
4444                                         GLenum *layouts)
4445 {
4446     ParamBuffer paramBuffer;
4447 
4448     paramBuffer.addValueParam("numTextures", ParamType::TGLuint, numTextures);
4449 
4450     if (isCallValid)
4451     {
4452         ParamCapture texturesPackedParam("texturesPacked", ParamType::TTextureIDConstPointer);
4453         InitParamValue(ParamType::TTextureIDConstPointer, texturesPacked,
4454                        &texturesPackedParam.value);
4455         CaptureReleaseTexturesANGLE_texturesPacked(glState, isCallValid, numTextures,
4456                                                    texturesPacked, layouts, &texturesPackedParam);
4457         paramBuffer.addParam(std::move(texturesPackedParam));
4458     }
4459     else
4460     {
4461         ParamCapture texturesPackedParam("texturesPacked", ParamType::TTextureIDConstPointer);
4462         InitParamValue(ParamType::TTextureIDConstPointer, static_cast<const TextureID *>(nullptr),
4463                        &texturesPackedParam.value);
4464         paramBuffer.addParam(std::move(texturesPackedParam));
4465     }
4466 
4467     if (isCallValid)
4468     {
4469         ParamCapture layoutsParam("layouts", ParamType::TGLenumPointer);
4470         InitParamValue(ParamType::TGLenumPointer, layouts, &layoutsParam.value);
4471         CaptureReleaseTexturesANGLE_layouts(glState, isCallValid, numTextures, texturesPacked,
4472                                             layouts, &layoutsParam);
4473         paramBuffer.addParam(std::move(layoutsParam));
4474     }
4475     else
4476     {
4477         ParamCapture layoutsParam("layouts", ParamType::TGLenumPointer);
4478         InitParamValue(ParamType::TGLenumPointer, static_cast<GLenum *>(nullptr),
4479                        &layoutsParam.value);
4480         paramBuffer.addParam(std::move(layoutsParam));
4481     }
4482 
4483     return CallCapture(angle::EntryPoint::GLReleaseTexturesANGLE, std::move(paramBuffer));
4484 }
4485 
CaptureBindUniformLocationCHROMIUM(const State & glState,bool isCallValid,ShaderProgramID programPacked,UniformLocation locationPacked,const GLchar * name)4486 CallCapture CaptureBindUniformLocationCHROMIUM(const State &glState,
4487                                                bool isCallValid,
4488                                                ShaderProgramID programPacked,
4489                                                UniformLocation locationPacked,
4490                                                const GLchar *name)
4491 {
4492     ParamBuffer paramBuffer;
4493 
4494     paramBuffer.addValueParam("programPacked", ParamType::TShaderProgramID, programPacked);
4495     paramBuffer.addValueParam("locationPacked", ParamType::TUniformLocation, locationPacked);
4496 
4497     if (isCallValid)
4498     {
4499         ParamCapture nameParam("name", ParamType::TGLcharConstPointer);
4500         InitParamValue(ParamType::TGLcharConstPointer, name, &nameParam.value);
4501         CaptureBindUniformLocationCHROMIUM_name(glState, isCallValid, programPacked, locationPacked,
4502                                                 name, &nameParam);
4503         paramBuffer.addParam(std::move(nameParam));
4504     }
4505     else
4506     {
4507         ParamCapture nameParam("name", ParamType::TGLcharConstPointer);
4508         InitParamValue(ParamType::TGLcharConstPointer, static_cast<const GLchar *>(nullptr),
4509                        &nameParam.value);
4510         paramBuffer.addParam(std::move(nameParam));
4511     }
4512 
4513     return CallCapture(angle::EntryPoint::GLBindUniformLocationCHROMIUM, std::move(paramBuffer));
4514 }
4515 
CaptureCompressedCopyTextureCHROMIUM(const State & glState,bool isCallValid,TextureID sourceIdPacked,TextureID destIdPacked)4516 CallCapture CaptureCompressedCopyTextureCHROMIUM(const State &glState,
4517                                                  bool isCallValid,
4518                                                  TextureID sourceIdPacked,
4519                                                  TextureID destIdPacked)
4520 {
4521     ParamBuffer paramBuffer;
4522 
4523     paramBuffer.addValueParam("sourceIdPacked", ParamType::TTextureID, sourceIdPacked);
4524     paramBuffer.addValueParam("destIdPacked", ParamType::TTextureID, destIdPacked);
4525 
4526     return CallCapture(angle::EntryPoint::GLCompressedCopyTextureCHROMIUM, std::move(paramBuffer));
4527 }
4528 
CaptureCopyTextureCHROMIUM(const State & glState,bool isCallValid,TextureID sourceIdPacked,GLint sourceLevel,TextureTarget destTargetPacked,TextureID destIdPacked,GLint destLevel,GLint internalFormat,GLenum destType,GLboolean unpackFlipY,GLboolean unpackPremultiplyAlpha,GLboolean unpackUnmultiplyAlpha)4529 CallCapture CaptureCopyTextureCHROMIUM(const State &glState,
4530                                        bool isCallValid,
4531                                        TextureID sourceIdPacked,
4532                                        GLint sourceLevel,
4533                                        TextureTarget destTargetPacked,
4534                                        TextureID destIdPacked,
4535                                        GLint destLevel,
4536                                        GLint internalFormat,
4537                                        GLenum destType,
4538                                        GLboolean unpackFlipY,
4539                                        GLboolean unpackPremultiplyAlpha,
4540                                        GLboolean unpackUnmultiplyAlpha)
4541 {
4542     ParamBuffer paramBuffer;
4543 
4544     paramBuffer.addValueParam("sourceIdPacked", ParamType::TTextureID, sourceIdPacked);
4545     paramBuffer.addValueParam("sourceLevel", ParamType::TGLint, sourceLevel);
4546     paramBuffer.addValueParam("destTargetPacked", ParamType::TTextureTarget, destTargetPacked);
4547     paramBuffer.addValueParam("destIdPacked", ParamType::TTextureID, destIdPacked);
4548     paramBuffer.addValueParam("destLevel", ParamType::TGLint, destLevel);
4549     paramBuffer.addValueParam("internalFormat", ParamType::TGLint, internalFormat);
4550     paramBuffer.addEnumParam("destType", GLenumGroup::DefaultGroup, ParamType::TGLenum, destType);
4551     paramBuffer.addValueParam("unpackFlipY", ParamType::TGLboolean, unpackFlipY);
4552     paramBuffer.addValueParam("unpackPremultiplyAlpha", ParamType::TGLboolean,
4553                               unpackPremultiplyAlpha);
4554     paramBuffer.addValueParam("unpackUnmultiplyAlpha", ParamType::TGLboolean,
4555                               unpackUnmultiplyAlpha);
4556 
4557     return CallCapture(angle::EntryPoint::GLCopyTextureCHROMIUM, std::move(paramBuffer));
4558 }
4559 
CaptureCopySubTextureCHROMIUM(const State & glState,bool isCallValid,TextureID sourceIdPacked,GLint sourceLevel,TextureTarget destTargetPacked,TextureID destIdPacked,GLint destLevel,GLint xoffset,GLint yoffset,GLint x,GLint y,GLint width,GLint height,GLboolean unpackFlipY,GLboolean unpackPremultiplyAlpha,GLboolean unpackUnmultiplyAlpha)4560 CallCapture CaptureCopySubTextureCHROMIUM(const State &glState,
4561                                           bool isCallValid,
4562                                           TextureID sourceIdPacked,
4563                                           GLint sourceLevel,
4564                                           TextureTarget destTargetPacked,
4565                                           TextureID destIdPacked,
4566                                           GLint destLevel,
4567                                           GLint xoffset,
4568                                           GLint yoffset,
4569                                           GLint x,
4570                                           GLint y,
4571                                           GLint width,
4572                                           GLint height,
4573                                           GLboolean unpackFlipY,
4574                                           GLboolean unpackPremultiplyAlpha,
4575                                           GLboolean unpackUnmultiplyAlpha)
4576 {
4577     ParamBuffer paramBuffer;
4578 
4579     paramBuffer.addValueParam("sourceIdPacked", ParamType::TTextureID, sourceIdPacked);
4580     paramBuffer.addValueParam("sourceLevel", ParamType::TGLint, sourceLevel);
4581     paramBuffer.addValueParam("destTargetPacked", ParamType::TTextureTarget, destTargetPacked);
4582     paramBuffer.addValueParam("destIdPacked", ParamType::TTextureID, destIdPacked);
4583     paramBuffer.addValueParam("destLevel", ParamType::TGLint, destLevel);
4584     paramBuffer.addValueParam("xoffset", ParamType::TGLint, xoffset);
4585     paramBuffer.addValueParam("yoffset", ParamType::TGLint, yoffset);
4586     paramBuffer.addValueParam("x", ParamType::TGLint, x);
4587     paramBuffer.addValueParam("y", ParamType::TGLint, y);
4588     paramBuffer.addValueParam("width", ParamType::TGLint, width);
4589     paramBuffer.addValueParam("height", ParamType::TGLint, height);
4590     paramBuffer.addValueParam("unpackFlipY", ParamType::TGLboolean, unpackFlipY);
4591     paramBuffer.addValueParam("unpackPremultiplyAlpha", ParamType::TGLboolean,
4592                               unpackPremultiplyAlpha);
4593     paramBuffer.addValueParam("unpackUnmultiplyAlpha", ParamType::TGLboolean,
4594                               unpackUnmultiplyAlpha);
4595 
4596     return CallCapture(angle::EntryPoint::GLCopySubTextureCHROMIUM, std::move(paramBuffer));
4597 }
4598 
CaptureCoverageModulationCHROMIUM(const State & glState,bool isCallValid,GLenum components)4599 CallCapture CaptureCoverageModulationCHROMIUM(const State &glState,
4600                                               bool isCallValid,
4601                                               GLenum components)
4602 {
4603     ParamBuffer paramBuffer;
4604 
4605     paramBuffer.addEnumParam("components", GLenumGroup::DefaultGroup, ParamType::TGLenum,
4606                              components);
4607 
4608     return CallCapture(angle::EntryPoint::GLCoverageModulationCHROMIUM, std::move(paramBuffer));
4609 }
4610 
CaptureLoseContextCHROMIUM(const State & glState,bool isCallValid,GraphicsResetStatus currentPacked,GraphicsResetStatus otherPacked)4611 CallCapture CaptureLoseContextCHROMIUM(const State &glState,
4612                                        bool isCallValid,
4613                                        GraphicsResetStatus currentPacked,
4614                                        GraphicsResetStatus otherPacked)
4615 {
4616     ParamBuffer paramBuffer;
4617 
4618     paramBuffer.addValueParam("currentPacked", ParamType::TGraphicsResetStatus, currentPacked);
4619     paramBuffer.addValueParam("otherPacked", ParamType::TGraphicsResetStatus, otherPacked);
4620 
4621     return CallCapture(angle::EntryPoint::GLLoseContextCHROMIUM, std::move(paramBuffer));
4622 }
4623 
CaptureEGLImageTargetTexStorageEXT(const State & glState,bool isCallValid,GLenum target,GLeglImageOES image,const GLint * attrib_list)4624 CallCapture CaptureEGLImageTargetTexStorageEXT(const State &glState,
4625                                                bool isCallValid,
4626                                                GLenum target,
4627                                                GLeglImageOES image,
4628                                                const GLint *attrib_list)
4629 {
4630     ParamBuffer paramBuffer;
4631 
4632     paramBuffer.addEnumParam("target", GLenumGroup::DefaultGroup, ParamType::TGLenum, target);
4633     paramBuffer.addValueParam("image", ParamType::TGLeglImageOES, image);
4634 
4635     if (isCallValid)
4636     {
4637         ParamCapture attrib_listParam("attrib_list", ParamType::TGLintConstPointer);
4638         InitParamValue(ParamType::TGLintConstPointer, attrib_list, &attrib_listParam.value);
4639         CaptureEGLImageTargetTexStorageEXT_attrib_list(glState, isCallValid, target, image,
4640                                                        attrib_list, &attrib_listParam);
4641         paramBuffer.addParam(std::move(attrib_listParam));
4642     }
4643     else
4644     {
4645         ParamCapture attrib_listParam("attrib_list", ParamType::TGLintConstPointer);
4646         InitParamValue(ParamType::TGLintConstPointer, static_cast<const GLint *>(nullptr),
4647                        &attrib_listParam.value);
4648         paramBuffer.addParam(std::move(attrib_listParam));
4649     }
4650 
4651     return CallCapture(angle::EntryPoint::GLEGLImageTargetTexStorageEXT, std::move(paramBuffer));
4652 }
4653 
CaptureEGLImageTargetTextureStorageEXT(const State & glState,bool isCallValid,GLuint texture,GLeglImageOES image,const GLint * attrib_list)4654 CallCapture CaptureEGLImageTargetTextureStorageEXT(const State &glState,
4655                                                    bool isCallValid,
4656                                                    GLuint texture,
4657                                                    GLeglImageOES image,
4658                                                    const GLint *attrib_list)
4659 {
4660     ParamBuffer paramBuffer;
4661 
4662     paramBuffer.addValueParam("texture", ParamType::TGLuint, texture);
4663     paramBuffer.addValueParam("image", ParamType::TGLeglImageOES, image);
4664 
4665     if (isCallValid)
4666     {
4667         ParamCapture attrib_listParam("attrib_list", ParamType::TGLintConstPointer);
4668         InitParamValue(ParamType::TGLintConstPointer, attrib_list, &attrib_listParam.value);
4669         CaptureEGLImageTargetTextureStorageEXT_attrib_list(glState, isCallValid, texture, image,
4670                                                            attrib_list, &attrib_listParam);
4671         paramBuffer.addParam(std::move(attrib_listParam));
4672     }
4673     else
4674     {
4675         ParamCapture attrib_listParam("attrib_list", ParamType::TGLintConstPointer);
4676         InitParamValue(ParamType::TGLintConstPointer, static_cast<const GLint *>(nullptr),
4677                        &attrib_listParam.value);
4678         paramBuffer.addParam(std::move(attrib_listParam));
4679     }
4680 
4681     return CallCapture(angle::EntryPoint::GLEGLImageTargetTextureStorageEXT,
4682                        std::move(paramBuffer));
4683 }
4684 
CaptureBindFragDataLocationEXT(const State & glState,bool isCallValid,ShaderProgramID programPacked,GLuint color,const GLchar * name)4685 CallCapture CaptureBindFragDataLocationEXT(const State &glState,
4686                                            bool isCallValid,
4687                                            ShaderProgramID programPacked,
4688                                            GLuint color,
4689                                            const GLchar *name)
4690 {
4691     ParamBuffer paramBuffer;
4692 
4693     paramBuffer.addValueParam("programPacked", ParamType::TShaderProgramID, programPacked);
4694     paramBuffer.addValueParam("color", ParamType::TGLuint, color);
4695 
4696     if (isCallValid)
4697     {
4698         ParamCapture nameParam("name", ParamType::TGLcharConstPointer);
4699         InitParamValue(ParamType::TGLcharConstPointer, name, &nameParam.value);
4700         CaptureBindFragDataLocationEXT_name(glState, isCallValid, programPacked, color, name,
4701                                             &nameParam);
4702         paramBuffer.addParam(std::move(nameParam));
4703     }
4704     else
4705     {
4706         ParamCapture nameParam("name", ParamType::TGLcharConstPointer);
4707         InitParamValue(ParamType::TGLcharConstPointer, static_cast<const GLchar *>(nullptr),
4708                        &nameParam.value);
4709         paramBuffer.addParam(std::move(nameParam));
4710     }
4711 
4712     return CallCapture(angle::EntryPoint::GLBindFragDataLocationEXT, std::move(paramBuffer));
4713 }
4714 
CaptureBindFragDataLocationIndexedEXT(const State & glState,bool isCallValid,ShaderProgramID programPacked,GLuint colorNumber,GLuint index,const GLchar * name)4715 CallCapture CaptureBindFragDataLocationIndexedEXT(const State &glState,
4716                                                   bool isCallValid,
4717                                                   ShaderProgramID programPacked,
4718                                                   GLuint colorNumber,
4719                                                   GLuint index,
4720                                                   const GLchar *name)
4721 {
4722     ParamBuffer paramBuffer;
4723 
4724     paramBuffer.addValueParam("programPacked", ParamType::TShaderProgramID, programPacked);
4725     paramBuffer.addValueParam("colorNumber", ParamType::TGLuint, colorNumber);
4726     paramBuffer.addValueParam("index", ParamType::TGLuint, index);
4727 
4728     if (isCallValid)
4729     {
4730         ParamCapture nameParam("name", ParamType::TGLcharConstPointer);
4731         InitParamValue(ParamType::TGLcharConstPointer, name, &nameParam.value);
4732         CaptureBindFragDataLocationIndexedEXT_name(glState, isCallValid, programPacked, colorNumber,
4733                                                    index, name, &nameParam);
4734         paramBuffer.addParam(std::move(nameParam));
4735     }
4736     else
4737     {
4738         ParamCapture nameParam("name", ParamType::TGLcharConstPointer);
4739         InitParamValue(ParamType::TGLcharConstPointer, static_cast<const GLchar *>(nullptr),
4740                        &nameParam.value);
4741         paramBuffer.addParam(std::move(nameParam));
4742     }
4743 
4744     return CallCapture(angle::EntryPoint::GLBindFragDataLocationIndexedEXT, std::move(paramBuffer));
4745 }
4746 
CaptureGetFragDataIndexEXT(const State & glState,bool isCallValid,ShaderProgramID programPacked,const GLchar * name,GLint returnValue)4747 CallCapture CaptureGetFragDataIndexEXT(const State &glState,
4748                                        bool isCallValid,
4749                                        ShaderProgramID programPacked,
4750                                        const GLchar *name,
4751                                        GLint returnValue)
4752 {
4753     ParamBuffer paramBuffer;
4754 
4755     paramBuffer.addValueParam("programPacked", ParamType::TShaderProgramID, programPacked);
4756 
4757     if (isCallValid)
4758     {
4759         ParamCapture nameParam("name", ParamType::TGLcharConstPointer);
4760         InitParamValue(ParamType::TGLcharConstPointer, name, &nameParam.value);
4761         CaptureGetFragDataIndexEXT_name(glState, isCallValid, programPacked, name, &nameParam);
4762         paramBuffer.addParam(std::move(nameParam));
4763     }
4764     else
4765     {
4766         ParamCapture nameParam("name", ParamType::TGLcharConstPointer);
4767         InitParamValue(ParamType::TGLcharConstPointer, static_cast<const GLchar *>(nullptr),
4768                        &nameParam.value);
4769         paramBuffer.addParam(std::move(nameParam));
4770     }
4771 
4772     ParamCapture returnValueCapture("returnValue", ParamType::TGLint);
4773     InitParamValue(ParamType::TGLint, returnValue, &returnValueCapture.value);
4774     paramBuffer.addReturnValue(std::move(returnValueCapture));
4775 
4776     return CallCapture(angle::EntryPoint::GLGetFragDataIndexEXT, std::move(paramBuffer));
4777 }
4778 
CaptureGetProgramResourceLocationIndexEXT(const State & glState,bool isCallValid,ShaderProgramID programPacked,GLenum programInterface,const GLchar * name,GLint returnValue)4779 CallCapture CaptureGetProgramResourceLocationIndexEXT(const State &glState,
4780                                                       bool isCallValid,
4781                                                       ShaderProgramID programPacked,
4782                                                       GLenum programInterface,
4783                                                       const GLchar *name,
4784                                                       GLint returnValue)
4785 {
4786     ParamBuffer paramBuffer;
4787 
4788     paramBuffer.addValueParam("programPacked", ParamType::TShaderProgramID, programPacked);
4789     paramBuffer.addEnumParam("programInterface", GLenumGroup::ProgramInterface, ParamType::TGLenum,
4790                              programInterface);
4791 
4792     if (isCallValid)
4793     {
4794         ParamCapture nameParam("name", ParamType::TGLcharConstPointer);
4795         InitParamValue(ParamType::TGLcharConstPointer, name, &nameParam.value);
4796         CaptureGetProgramResourceLocationIndexEXT_name(glState, isCallValid, programPacked,
4797                                                        programInterface, name, &nameParam);
4798         paramBuffer.addParam(std::move(nameParam));
4799     }
4800     else
4801     {
4802         ParamCapture nameParam("name", ParamType::TGLcharConstPointer);
4803         InitParamValue(ParamType::TGLcharConstPointer, static_cast<const GLchar *>(nullptr),
4804                        &nameParam.value);
4805         paramBuffer.addParam(std::move(nameParam));
4806     }
4807 
4808     ParamCapture returnValueCapture("returnValue", ParamType::TGLint);
4809     InitParamValue(ParamType::TGLint, returnValue, &returnValueCapture.value);
4810     paramBuffer.addReturnValue(std::move(returnValueCapture));
4811 
4812     return CallCapture(angle::EntryPoint::GLGetProgramResourceLocationIndexEXT,
4813                        std::move(paramBuffer));
4814 }
4815 
CaptureBufferStorageEXT(const State & glState,bool isCallValid,BufferBinding targetPacked,GLsizeiptr size,const void * data,GLbitfield flags)4816 CallCapture CaptureBufferStorageEXT(const State &glState,
4817                                     bool isCallValid,
4818                                     BufferBinding targetPacked,
4819                                     GLsizeiptr size,
4820                                     const void *data,
4821                                     GLbitfield flags)
4822 {
4823     ParamBuffer paramBuffer;
4824 
4825     paramBuffer.addValueParam("targetPacked", ParamType::TBufferBinding, targetPacked);
4826     paramBuffer.addValueParam("size", ParamType::TGLsizeiptr, size);
4827 
4828     if (isCallValid)
4829     {
4830         ParamCapture dataParam("data", ParamType::TvoidConstPointer);
4831         InitParamValue(ParamType::TvoidConstPointer, data, &dataParam.value);
4832         CaptureBufferStorageEXT_data(glState, isCallValid, targetPacked, size, data, flags,
4833                                      &dataParam);
4834         paramBuffer.addParam(std::move(dataParam));
4835     }
4836     else
4837     {
4838         ParamCapture dataParam("data", ParamType::TvoidConstPointer);
4839         InitParamValue(ParamType::TvoidConstPointer, static_cast<const void *>(nullptr),
4840                        &dataParam.value);
4841         paramBuffer.addParam(std::move(dataParam));
4842     }
4843 
4844     paramBuffer.addEnumParam("flags", GLenumGroup::MapBufferUsageMask, ParamType::TGLbitfield,
4845                              flags);
4846 
4847     return CallCapture(angle::EntryPoint::GLBufferStorageEXT, std::move(paramBuffer));
4848 }
4849 
CaptureClipControlEXT(const State & glState,bool isCallValid,GLenum origin,GLenum depth)4850 CallCapture CaptureClipControlEXT(const State &glState,
4851                                   bool isCallValid,
4852                                   GLenum origin,
4853                                   GLenum depth)
4854 {
4855     ParamBuffer paramBuffer;
4856 
4857     paramBuffer.addEnumParam("origin", GLenumGroup::DefaultGroup, ParamType::TGLenum, origin);
4858     paramBuffer.addEnumParam("depth", GLenumGroup::DefaultGroup, ParamType::TGLenum, depth);
4859 
4860     return CallCapture(angle::EntryPoint::GLClipControlEXT, std::move(paramBuffer));
4861 }
4862 
CaptureCopyImageSubDataEXT(const State & glState,bool isCallValid,GLuint srcName,GLenum srcTarget,GLint srcLevel,GLint srcX,GLint srcY,GLint srcZ,GLuint dstName,GLenum dstTarget,GLint dstLevel,GLint dstX,GLint dstY,GLint dstZ,GLsizei srcWidth,GLsizei srcHeight,GLsizei srcDepth)4863 CallCapture CaptureCopyImageSubDataEXT(const State &glState,
4864                                        bool isCallValid,
4865                                        GLuint srcName,
4866                                        GLenum srcTarget,
4867                                        GLint srcLevel,
4868                                        GLint srcX,
4869                                        GLint srcY,
4870                                        GLint srcZ,
4871                                        GLuint dstName,
4872                                        GLenum dstTarget,
4873                                        GLint dstLevel,
4874                                        GLint dstX,
4875                                        GLint dstY,
4876                                        GLint dstZ,
4877                                        GLsizei srcWidth,
4878                                        GLsizei srcHeight,
4879                                        GLsizei srcDepth)
4880 {
4881     ParamBuffer paramBuffer;
4882 
4883     paramBuffer.addValueParam("srcName", ParamType::TGLuint, srcName);
4884     paramBuffer.addEnumParam("srcTarget", GLenumGroup::CopyBufferSubDataTarget, ParamType::TGLenum,
4885                              srcTarget);
4886     paramBuffer.addValueParam("srcLevel", ParamType::TGLint, srcLevel);
4887     paramBuffer.addValueParam("srcX", ParamType::TGLint, srcX);
4888     paramBuffer.addValueParam("srcY", ParamType::TGLint, srcY);
4889     paramBuffer.addValueParam("srcZ", ParamType::TGLint, srcZ);
4890     paramBuffer.addValueParam("dstName", ParamType::TGLuint, dstName);
4891     paramBuffer.addEnumParam("dstTarget", GLenumGroup::CopyBufferSubDataTarget, ParamType::TGLenum,
4892                              dstTarget);
4893     paramBuffer.addValueParam("dstLevel", ParamType::TGLint, dstLevel);
4894     paramBuffer.addValueParam("dstX", ParamType::TGLint, dstX);
4895     paramBuffer.addValueParam("dstY", ParamType::TGLint, dstY);
4896     paramBuffer.addValueParam("dstZ", ParamType::TGLint, dstZ);
4897     paramBuffer.addValueParam("srcWidth", ParamType::TGLsizei, srcWidth);
4898     paramBuffer.addValueParam("srcHeight", ParamType::TGLsizei, srcHeight);
4899     paramBuffer.addValueParam("srcDepth", ParamType::TGLsizei, srcDepth);
4900 
4901     return CallCapture(angle::EntryPoint::GLCopyImageSubDataEXT, std::move(paramBuffer));
4902 }
4903 
CaptureGetObjectLabelEXT(const State & glState,bool isCallValid,GLenum type,GLuint object,GLsizei bufSize,GLsizei * length,GLchar * label)4904 CallCapture CaptureGetObjectLabelEXT(const State &glState,
4905                                      bool isCallValid,
4906                                      GLenum type,
4907                                      GLuint object,
4908                                      GLsizei bufSize,
4909                                      GLsizei *length,
4910                                      GLchar *label)
4911 {
4912     ParamBuffer paramBuffer;
4913 
4914     paramBuffer.addEnumParam("type", GLenumGroup::DefaultGroup, ParamType::TGLenum, type);
4915     paramBuffer.addValueParam("object", ParamType::TGLuint, object);
4916     paramBuffer.addValueParam("bufSize", ParamType::TGLsizei, bufSize);
4917 
4918     if (isCallValid)
4919     {
4920         ParamCapture lengthParam("length", ParamType::TGLsizeiPointer);
4921         InitParamValue(ParamType::TGLsizeiPointer, length, &lengthParam.value);
4922         CaptureGetObjectLabelEXT_length(glState, isCallValid, type, object, bufSize, length, label,
4923                                         &lengthParam);
4924         paramBuffer.addParam(std::move(lengthParam));
4925     }
4926     else
4927     {
4928         ParamCapture lengthParam("length", ParamType::TGLsizeiPointer);
4929         InitParamValue(ParamType::TGLsizeiPointer, static_cast<GLsizei *>(nullptr),
4930                        &lengthParam.value);
4931         paramBuffer.addParam(std::move(lengthParam));
4932     }
4933 
4934     if (isCallValid)
4935     {
4936         ParamCapture labelParam("label", ParamType::TGLcharPointer);
4937         InitParamValue(ParamType::TGLcharPointer, label, &labelParam.value);
4938         CaptureGetObjectLabelEXT_label(glState, isCallValid, type, object, bufSize, length, label,
4939                                        &labelParam);
4940         paramBuffer.addParam(std::move(labelParam));
4941     }
4942     else
4943     {
4944         ParamCapture labelParam("label", ParamType::TGLcharPointer);
4945         InitParamValue(ParamType::TGLcharPointer, static_cast<GLchar *>(nullptr),
4946                        &labelParam.value);
4947         paramBuffer.addParam(std::move(labelParam));
4948     }
4949 
4950     return CallCapture(angle::EntryPoint::GLGetObjectLabelEXT, std::move(paramBuffer));
4951 }
4952 
CaptureLabelObjectEXT(const State & glState,bool isCallValid,GLenum type,GLuint object,GLsizei length,const GLchar * label)4953 CallCapture CaptureLabelObjectEXT(const State &glState,
4954                                   bool isCallValid,
4955                                   GLenum type,
4956                                   GLuint object,
4957                                   GLsizei length,
4958                                   const GLchar *label)
4959 {
4960     ParamBuffer paramBuffer;
4961 
4962     paramBuffer.addEnumParam("type", GLenumGroup::DefaultGroup, ParamType::TGLenum, type);
4963     paramBuffer.addValueParam("object", ParamType::TGLuint, object);
4964     paramBuffer.addValueParam("length", ParamType::TGLsizei, length);
4965 
4966     if (isCallValid)
4967     {
4968         ParamCapture labelParam("label", ParamType::TGLcharConstPointer);
4969         InitParamValue(ParamType::TGLcharConstPointer, label, &labelParam.value);
4970         CaptureLabelObjectEXT_label(glState, isCallValid, type, object, length, label, &labelParam);
4971         paramBuffer.addParam(std::move(labelParam));
4972     }
4973     else
4974     {
4975         ParamCapture labelParam("label", ParamType::TGLcharConstPointer);
4976         InitParamValue(ParamType::TGLcharConstPointer, static_cast<const GLchar *>(nullptr),
4977                        &labelParam.value);
4978         paramBuffer.addParam(std::move(labelParam));
4979     }
4980 
4981     return CallCapture(angle::EntryPoint::GLLabelObjectEXT, std::move(paramBuffer));
4982 }
4983 
CaptureInsertEventMarkerEXT(const State & glState,bool isCallValid,GLsizei length,const GLchar * marker)4984 CallCapture CaptureInsertEventMarkerEXT(const State &glState,
4985                                         bool isCallValid,
4986                                         GLsizei length,
4987                                         const GLchar *marker)
4988 {
4989     ParamBuffer paramBuffer;
4990 
4991     paramBuffer.addValueParam("length", ParamType::TGLsizei, length);
4992 
4993     if (isCallValid)
4994     {
4995         ParamCapture markerParam("marker", ParamType::TGLcharConstPointer);
4996         InitParamValue(ParamType::TGLcharConstPointer, marker, &markerParam.value);
4997         CaptureInsertEventMarkerEXT_marker(glState, isCallValid, length, marker, &markerParam);
4998         paramBuffer.addParam(std::move(markerParam));
4999     }
5000     else
5001     {
5002         ParamCapture markerParam("marker", ParamType::TGLcharConstPointer);
5003         InitParamValue(ParamType::TGLcharConstPointer, static_cast<const GLchar *>(nullptr),
5004                        &markerParam.value);
5005         paramBuffer.addParam(std::move(markerParam));
5006     }
5007 
5008     return CallCapture(angle::EntryPoint::GLInsertEventMarkerEXT, std::move(paramBuffer));
5009 }
5010 
CapturePopGroupMarkerEXT(const State & glState,bool isCallValid)5011 CallCapture CapturePopGroupMarkerEXT(const State &glState, bool isCallValid)
5012 {
5013     ParamBuffer paramBuffer;
5014 
5015     return CallCapture(angle::EntryPoint::GLPopGroupMarkerEXT, std::move(paramBuffer));
5016 }
5017 
CapturePushGroupMarkerEXT(const State & glState,bool isCallValid,GLsizei length,const GLchar * marker)5018 CallCapture CapturePushGroupMarkerEXT(const State &glState,
5019                                       bool isCallValid,
5020                                       GLsizei length,
5021                                       const GLchar *marker)
5022 {
5023     ParamBuffer paramBuffer;
5024 
5025     paramBuffer.addValueParam("length", ParamType::TGLsizei, length);
5026 
5027     if (isCallValid)
5028     {
5029         ParamCapture markerParam("marker", ParamType::TGLcharConstPointer);
5030         InitParamValue(ParamType::TGLcharConstPointer, marker, &markerParam.value);
5031         CapturePushGroupMarkerEXT_marker(glState, isCallValid, length, marker, &markerParam);
5032         paramBuffer.addParam(std::move(markerParam));
5033     }
5034     else
5035     {
5036         ParamCapture markerParam("marker", ParamType::TGLcharConstPointer);
5037         InitParamValue(ParamType::TGLcharConstPointer, static_cast<const GLchar *>(nullptr),
5038                        &markerParam.value);
5039         paramBuffer.addParam(std::move(markerParam));
5040     }
5041 
5042     return CallCapture(angle::EntryPoint::GLPushGroupMarkerEXT, std::move(paramBuffer));
5043 }
5044 
CaptureDiscardFramebufferEXT(const State & glState,bool isCallValid,GLenum target,GLsizei numAttachments,const GLenum * attachments)5045 CallCapture CaptureDiscardFramebufferEXT(const State &glState,
5046                                          bool isCallValid,
5047                                          GLenum target,
5048                                          GLsizei numAttachments,
5049                                          const GLenum *attachments)
5050 {
5051     ParamBuffer paramBuffer;
5052 
5053     paramBuffer.addEnumParam("target", GLenumGroup::FramebufferTarget, ParamType::TGLenum, target);
5054     paramBuffer.addValueParam("numAttachments", ParamType::TGLsizei, numAttachments);
5055 
5056     if (isCallValid)
5057     {
5058         ParamCapture attachmentsParam("attachments", ParamType::TGLenumConstPointer);
5059         InitParamValue(ParamType::TGLenumConstPointer, attachments, &attachmentsParam.value);
5060         CaptureDiscardFramebufferEXT_attachments(glState, isCallValid, target, numAttachments,
5061                                                  attachments, &attachmentsParam);
5062         paramBuffer.addParam(std::move(attachmentsParam));
5063     }
5064     else
5065     {
5066         ParamCapture attachmentsParam("attachments", ParamType::TGLenumConstPointer);
5067         InitParamValue(ParamType::TGLenumConstPointer, static_cast<const GLenum *>(nullptr),
5068                        &attachmentsParam.value);
5069         paramBuffer.addParam(std::move(attachmentsParam));
5070     }
5071 
5072     return CallCapture(angle::EntryPoint::GLDiscardFramebufferEXT, std::move(paramBuffer));
5073 }
5074 
CaptureBeginQueryEXT(const State & glState,bool isCallValid,QueryType targetPacked,QueryID idPacked)5075 CallCapture CaptureBeginQueryEXT(const State &glState,
5076                                  bool isCallValid,
5077                                  QueryType targetPacked,
5078                                  QueryID idPacked)
5079 {
5080     ParamBuffer paramBuffer;
5081 
5082     paramBuffer.addValueParam("targetPacked", ParamType::TQueryType, targetPacked);
5083     paramBuffer.addValueParam("idPacked", ParamType::TQueryID, idPacked);
5084 
5085     return CallCapture(angle::EntryPoint::GLBeginQueryEXT, std::move(paramBuffer));
5086 }
5087 
CaptureDeleteQueriesEXT(const State & glState,bool isCallValid,GLsizei n,const QueryID * idsPacked)5088 CallCapture CaptureDeleteQueriesEXT(const State &glState,
5089                                     bool isCallValid,
5090                                     GLsizei n,
5091                                     const QueryID *idsPacked)
5092 {
5093     ParamBuffer paramBuffer;
5094 
5095     paramBuffer.addValueParam("n", ParamType::TGLsizei, n);
5096 
5097     if (isCallValid)
5098     {
5099         ParamCapture idsPackedParam("idsPacked", ParamType::TQueryIDConstPointer);
5100         InitParamValue(ParamType::TQueryIDConstPointer, idsPacked, &idsPackedParam.value);
5101         CaptureDeleteQueriesEXT_idsPacked(glState, isCallValid, n, idsPacked, &idsPackedParam);
5102         paramBuffer.addParam(std::move(idsPackedParam));
5103     }
5104     else
5105     {
5106         ParamCapture idsPackedParam("idsPacked", ParamType::TQueryIDConstPointer);
5107         InitParamValue(ParamType::TQueryIDConstPointer, static_cast<const QueryID *>(nullptr),
5108                        &idsPackedParam.value);
5109         paramBuffer.addParam(std::move(idsPackedParam));
5110     }
5111 
5112     return CallCapture(angle::EntryPoint::GLDeleteQueriesEXT, std::move(paramBuffer));
5113 }
5114 
CaptureEndQueryEXT(const State & glState,bool isCallValid,QueryType targetPacked)5115 CallCapture CaptureEndQueryEXT(const State &glState, bool isCallValid, QueryType targetPacked)
5116 {
5117     ParamBuffer paramBuffer;
5118 
5119     paramBuffer.addValueParam("targetPacked", ParamType::TQueryType, targetPacked);
5120 
5121     return CallCapture(angle::EntryPoint::GLEndQueryEXT, std::move(paramBuffer));
5122 }
5123 
CaptureGenQueriesEXT(const State & glState,bool isCallValid,GLsizei n,QueryID * idsPacked)5124 CallCapture CaptureGenQueriesEXT(const State &glState,
5125                                  bool isCallValid,
5126                                  GLsizei n,
5127                                  QueryID *idsPacked)
5128 {
5129     ParamBuffer paramBuffer;
5130 
5131     paramBuffer.addValueParam("n", ParamType::TGLsizei, n);
5132 
5133     if (isCallValid)
5134     {
5135         ParamCapture idsPackedParam("idsPacked", ParamType::TQueryIDPointer);
5136         InitParamValue(ParamType::TQueryIDPointer, idsPacked, &idsPackedParam.value);
5137         CaptureGenQueriesEXT_idsPacked(glState, isCallValid, n, idsPacked, &idsPackedParam);
5138         paramBuffer.addParam(std::move(idsPackedParam));
5139     }
5140     else
5141     {
5142         ParamCapture idsPackedParam("idsPacked", ParamType::TQueryIDPointer);
5143         InitParamValue(ParamType::TQueryIDPointer, static_cast<QueryID *>(nullptr),
5144                        &idsPackedParam.value);
5145         paramBuffer.addParam(std::move(idsPackedParam));
5146     }
5147 
5148     return CallCapture(angle::EntryPoint::GLGenQueriesEXT, std::move(paramBuffer));
5149 }
5150 
CaptureGetInteger64vEXT(const State & glState,bool isCallValid,GLenum pname,GLint64 * data)5151 CallCapture CaptureGetInteger64vEXT(const State &glState,
5152                                     bool isCallValid,
5153                                     GLenum pname,
5154                                     GLint64 *data)
5155 {
5156     ParamBuffer paramBuffer;
5157 
5158     paramBuffer.addEnumParam("pname", GLenumGroup::GetPName, ParamType::TGLenum, pname);
5159 
5160     if (isCallValid)
5161     {
5162         ParamCapture dataParam("data", ParamType::TGLint64Pointer);
5163         InitParamValue(ParamType::TGLint64Pointer, data, &dataParam.value);
5164         CaptureGetInteger64vEXT_data(glState, isCallValid, pname, data, &dataParam);
5165         paramBuffer.addParam(std::move(dataParam));
5166     }
5167     else
5168     {
5169         ParamCapture dataParam("data", ParamType::TGLint64Pointer);
5170         InitParamValue(ParamType::TGLint64Pointer, static_cast<GLint64 *>(nullptr),
5171                        &dataParam.value);
5172         paramBuffer.addParam(std::move(dataParam));
5173     }
5174 
5175     return CallCapture(angle::EntryPoint::GLGetInteger64vEXT, std::move(paramBuffer));
5176 }
5177 
CaptureGetQueryObjecti64vEXT(const State & glState,bool isCallValid,QueryID idPacked,GLenum pname,GLint64 * params)5178 CallCapture CaptureGetQueryObjecti64vEXT(const State &glState,
5179                                          bool isCallValid,
5180                                          QueryID idPacked,
5181                                          GLenum pname,
5182                                          GLint64 *params)
5183 {
5184     ParamBuffer paramBuffer;
5185 
5186     paramBuffer.addValueParam("idPacked", ParamType::TQueryID, idPacked);
5187     paramBuffer.addEnumParam("pname", GLenumGroup::QueryObjectParameterName, ParamType::TGLenum,
5188                              pname);
5189 
5190     if (isCallValid)
5191     {
5192         ParamCapture paramsParam("params", ParamType::TGLint64Pointer);
5193         InitParamValue(ParamType::TGLint64Pointer, params, &paramsParam.value);
5194         CaptureGetQueryObjecti64vEXT_params(glState, isCallValid, idPacked, pname, params,
5195                                             &paramsParam);
5196         paramBuffer.addParam(std::move(paramsParam));
5197     }
5198     else
5199     {
5200         ParamCapture paramsParam("params", ParamType::TGLint64Pointer);
5201         InitParamValue(ParamType::TGLint64Pointer, static_cast<GLint64 *>(nullptr),
5202                        &paramsParam.value);
5203         paramBuffer.addParam(std::move(paramsParam));
5204     }
5205 
5206     return CallCapture(angle::EntryPoint::GLGetQueryObjecti64vEXT, std::move(paramBuffer));
5207 }
5208 
CaptureGetQueryObjectivEXT(const State & glState,bool isCallValid,QueryID idPacked,GLenum pname,GLint * params)5209 CallCapture CaptureGetQueryObjectivEXT(const State &glState,
5210                                        bool isCallValid,
5211                                        QueryID idPacked,
5212                                        GLenum pname,
5213                                        GLint *params)
5214 {
5215     ParamBuffer paramBuffer;
5216 
5217     paramBuffer.addValueParam("idPacked", ParamType::TQueryID, idPacked);
5218     paramBuffer.addEnumParam("pname", GLenumGroup::QueryObjectParameterName, ParamType::TGLenum,
5219                              pname);
5220 
5221     if (isCallValid)
5222     {
5223         ParamCapture paramsParam("params", ParamType::TGLintPointer);
5224         InitParamValue(ParamType::TGLintPointer, params, &paramsParam.value);
5225         CaptureGetQueryObjectivEXT_params(glState, isCallValid, idPacked, pname, params,
5226                                           &paramsParam);
5227         paramBuffer.addParam(std::move(paramsParam));
5228     }
5229     else
5230     {
5231         ParamCapture paramsParam("params", ParamType::TGLintPointer);
5232         InitParamValue(ParamType::TGLintPointer, static_cast<GLint *>(nullptr), &paramsParam.value);
5233         paramBuffer.addParam(std::move(paramsParam));
5234     }
5235 
5236     return CallCapture(angle::EntryPoint::GLGetQueryObjectivEXT, std::move(paramBuffer));
5237 }
5238 
CaptureGetQueryObjectui64vEXT(const State & glState,bool isCallValid,QueryID idPacked,GLenum pname,GLuint64 * params)5239 CallCapture CaptureGetQueryObjectui64vEXT(const State &glState,
5240                                           bool isCallValid,
5241                                           QueryID idPacked,
5242                                           GLenum pname,
5243                                           GLuint64 *params)
5244 {
5245     ParamBuffer paramBuffer;
5246 
5247     paramBuffer.addValueParam("idPacked", ParamType::TQueryID, idPacked);
5248     paramBuffer.addEnumParam("pname", GLenumGroup::QueryObjectParameterName, ParamType::TGLenum,
5249                              pname);
5250 
5251     if (isCallValid)
5252     {
5253         ParamCapture paramsParam("params", ParamType::TGLuint64Pointer);
5254         InitParamValue(ParamType::TGLuint64Pointer, params, &paramsParam.value);
5255         CaptureGetQueryObjectui64vEXT_params(glState, isCallValid, idPacked, pname, params,
5256                                              &paramsParam);
5257         paramBuffer.addParam(std::move(paramsParam));
5258     }
5259     else
5260     {
5261         ParamCapture paramsParam("params", ParamType::TGLuint64Pointer);
5262         InitParamValue(ParamType::TGLuint64Pointer, static_cast<GLuint64 *>(nullptr),
5263                        &paramsParam.value);
5264         paramBuffer.addParam(std::move(paramsParam));
5265     }
5266 
5267     return CallCapture(angle::EntryPoint::GLGetQueryObjectui64vEXT, std::move(paramBuffer));
5268 }
5269 
CaptureGetQueryObjectuivEXT(const State & glState,bool isCallValid,QueryID idPacked,GLenum pname,GLuint * params)5270 CallCapture CaptureGetQueryObjectuivEXT(const State &glState,
5271                                         bool isCallValid,
5272                                         QueryID idPacked,
5273                                         GLenum pname,
5274                                         GLuint *params)
5275 {
5276     ParamBuffer paramBuffer;
5277 
5278     paramBuffer.addValueParam("idPacked", ParamType::TQueryID, idPacked);
5279     paramBuffer.addEnumParam("pname", GLenumGroup::QueryObjectParameterName, ParamType::TGLenum,
5280                              pname);
5281 
5282     if (isCallValid)
5283     {
5284         ParamCapture paramsParam("params", ParamType::TGLuintPointer);
5285         InitParamValue(ParamType::TGLuintPointer, params, &paramsParam.value);
5286         CaptureGetQueryObjectuivEXT_params(glState, isCallValid, idPacked, pname, params,
5287                                            &paramsParam);
5288         paramBuffer.addParam(std::move(paramsParam));
5289     }
5290     else
5291     {
5292         ParamCapture paramsParam("params", ParamType::TGLuintPointer);
5293         InitParamValue(ParamType::TGLuintPointer, static_cast<GLuint *>(nullptr),
5294                        &paramsParam.value);
5295         paramBuffer.addParam(std::move(paramsParam));
5296     }
5297 
5298     return CallCapture(angle::EntryPoint::GLGetQueryObjectuivEXT, std::move(paramBuffer));
5299 }
5300 
CaptureGetQueryivEXT(const State & glState,bool isCallValid,QueryType targetPacked,GLenum pname,GLint * params)5301 CallCapture CaptureGetQueryivEXT(const State &glState,
5302                                  bool isCallValid,
5303                                  QueryType targetPacked,
5304                                  GLenum pname,
5305                                  GLint *params)
5306 {
5307     ParamBuffer paramBuffer;
5308 
5309     paramBuffer.addValueParam("targetPacked", ParamType::TQueryType, targetPacked);
5310     paramBuffer.addEnumParam("pname", GLenumGroup::QueryParameterName, ParamType::TGLenum, pname);
5311 
5312     if (isCallValid)
5313     {
5314         ParamCapture paramsParam("params", ParamType::TGLintPointer);
5315         InitParamValue(ParamType::TGLintPointer, params, &paramsParam.value);
5316         CaptureGetQueryivEXT_params(glState, isCallValid, targetPacked, pname, params,
5317                                     &paramsParam);
5318         paramBuffer.addParam(std::move(paramsParam));
5319     }
5320     else
5321     {
5322         ParamCapture paramsParam("params", ParamType::TGLintPointer);
5323         InitParamValue(ParamType::TGLintPointer, static_cast<GLint *>(nullptr), &paramsParam.value);
5324         paramBuffer.addParam(std::move(paramsParam));
5325     }
5326 
5327     return CallCapture(angle::EntryPoint::GLGetQueryivEXT, std::move(paramBuffer));
5328 }
5329 
CaptureIsQueryEXT(const State & glState,bool isCallValid,QueryID idPacked,GLboolean returnValue)5330 CallCapture CaptureIsQueryEXT(const State &glState,
5331                               bool isCallValid,
5332                               QueryID idPacked,
5333                               GLboolean returnValue)
5334 {
5335     ParamBuffer paramBuffer;
5336 
5337     paramBuffer.addValueParam("idPacked", ParamType::TQueryID, idPacked);
5338 
5339     ParamCapture returnValueCapture("returnValue", ParamType::TGLboolean);
5340     InitParamValue(ParamType::TGLboolean, returnValue, &returnValueCapture.value);
5341     paramBuffer.addReturnValue(std::move(returnValueCapture));
5342 
5343     return CallCapture(angle::EntryPoint::GLIsQueryEXT, std::move(paramBuffer));
5344 }
5345 
CaptureQueryCounterEXT(const State & glState,bool isCallValid,QueryID idPacked,QueryType targetPacked)5346 CallCapture CaptureQueryCounterEXT(const State &glState,
5347                                    bool isCallValid,
5348                                    QueryID idPacked,
5349                                    QueryType targetPacked)
5350 {
5351     ParamBuffer paramBuffer;
5352 
5353     paramBuffer.addValueParam("idPacked", ParamType::TQueryID, idPacked);
5354     paramBuffer.addValueParam("targetPacked", ParamType::TQueryType, targetPacked);
5355 
5356     return CallCapture(angle::EntryPoint::GLQueryCounterEXT, std::move(paramBuffer));
5357 }
5358 
CaptureDrawBuffersEXT(const State & glState,bool isCallValid,GLsizei n,const GLenum * bufs)5359 CallCapture CaptureDrawBuffersEXT(const State &glState,
5360                                   bool isCallValid,
5361                                   GLsizei n,
5362                                   const GLenum *bufs)
5363 {
5364     ParamBuffer paramBuffer;
5365 
5366     paramBuffer.addValueParam("n", ParamType::TGLsizei, n);
5367 
5368     if (isCallValid)
5369     {
5370         ParamCapture bufsParam("bufs", ParamType::TGLenumConstPointer);
5371         InitParamValue(ParamType::TGLenumConstPointer, bufs, &bufsParam.value);
5372         CaptureDrawBuffersEXT_bufs(glState, isCallValid, n, bufs, &bufsParam);
5373         paramBuffer.addParam(std::move(bufsParam));
5374     }
5375     else
5376     {
5377         ParamCapture bufsParam("bufs", ParamType::TGLenumConstPointer);
5378         InitParamValue(ParamType::TGLenumConstPointer, static_cast<const GLenum *>(nullptr),
5379                        &bufsParam.value);
5380         paramBuffer.addParam(std::move(bufsParam));
5381     }
5382 
5383     return CallCapture(angle::EntryPoint::GLDrawBuffersEXT, std::move(paramBuffer));
5384 }
5385 
CaptureBlendEquationSeparateiEXT(const State & glState,bool isCallValid,GLuint buf,GLenum modeRGB,GLenum modeAlpha)5386 CallCapture CaptureBlendEquationSeparateiEXT(const State &glState,
5387                                              bool isCallValid,
5388                                              GLuint buf,
5389                                              GLenum modeRGB,
5390                                              GLenum modeAlpha)
5391 {
5392     ParamBuffer paramBuffer;
5393 
5394     paramBuffer.addValueParam("buf", ParamType::TGLuint, buf);
5395     paramBuffer.addEnumParam("modeRGB", GLenumGroup::BlendEquationModeEXT, ParamType::TGLenum,
5396                              modeRGB);
5397     paramBuffer.addEnumParam("modeAlpha", GLenumGroup::BlendEquationModeEXT, ParamType::TGLenum,
5398                              modeAlpha);
5399 
5400     return CallCapture(angle::EntryPoint::GLBlendEquationSeparateiEXT, std::move(paramBuffer));
5401 }
5402 
CaptureBlendEquationiEXT(const State & glState,bool isCallValid,GLuint buf,GLenum mode)5403 CallCapture CaptureBlendEquationiEXT(const State &glState,
5404                                      bool isCallValid,
5405                                      GLuint buf,
5406                                      GLenum mode)
5407 {
5408     ParamBuffer paramBuffer;
5409 
5410     paramBuffer.addValueParam("buf", ParamType::TGLuint, buf);
5411     paramBuffer.addEnumParam("mode", GLenumGroup::BlendEquationModeEXT, ParamType::TGLenum, mode);
5412 
5413     return CallCapture(angle::EntryPoint::GLBlendEquationiEXT, std::move(paramBuffer));
5414 }
5415 
CaptureBlendFuncSeparateiEXT(const State & glState,bool isCallValid,GLuint buf,GLenum srcRGB,GLenum dstRGB,GLenum srcAlpha,GLenum dstAlpha)5416 CallCapture CaptureBlendFuncSeparateiEXT(const State &glState,
5417                                          bool isCallValid,
5418                                          GLuint buf,
5419                                          GLenum srcRGB,
5420                                          GLenum dstRGB,
5421                                          GLenum srcAlpha,
5422                                          GLenum dstAlpha)
5423 {
5424     ParamBuffer paramBuffer;
5425 
5426     paramBuffer.addValueParam("buf", ParamType::TGLuint, buf);
5427     paramBuffer.addEnumParam("srcRGB", GLenumGroup::BlendingFactor, ParamType::TGLenum, srcRGB);
5428     paramBuffer.addEnumParam("dstRGB", GLenumGroup::BlendingFactor, ParamType::TGLenum, dstRGB);
5429     paramBuffer.addEnumParam("srcAlpha", GLenumGroup::BlendingFactor, ParamType::TGLenum, srcAlpha);
5430     paramBuffer.addEnumParam("dstAlpha", GLenumGroup::BlendingFactor, ParamType::TGLenum, dstAlpha);
5431 
5432     return CallCapture(angle::EntryPoint::GLBlendFuncSeparateiEXT, std::move(paramBuffer));
5433 }
5434 
CaptureBlendFunciEXT(const State & glState,bool isCallValid,GLuint buf,GLenum src,GLenum dst)5435 CallCapture CaptureBlendFunciEXT(const State &glState,
5436                                  bool isCallValid,
5437                                  GLuint buf,
5438                                  GLenum src,
5439                                  GLenum dst)
5440 {
5441     ParamBuffer paramBuffer;
5442 
5443     paramBuffer.addValueParam("buf", ParamType::TGLuint, buf);
5444     paramBuffer.addEnumParam("src", GLenumGroup::BlendingFactor, ParamType::TGLenum, src);
5445     paramBuffer.addEnumParam("dst", GLenumGroup::BlendingFactor, ParamType::TGLenum, dst);
5446 
5447     return CallCapture(angle::EntryPoint::GLBlendFunciEXT, std::move(paramBuffer));
5448 }
5449 
CaptureColorMaskiEXT(const State & glState,bool isCallValid,GLuint index,GLboolean r,GLboolean g,GLboolean b,GLboolean a)5450 CallCapture CaptureColorMaskiEXT(const State &glState,
5451                                  bool isCallValid,
5452                                  GLuint index,
5453                                  GLboolean r,
5454                                  GLboolean g,
5455                                  GLboolean b,
5456                                  GLboolean a)
5457 {
5458     ParamBuffer paramBuffer;
5459 
5460     paramBuffer.addValueParam("index", ParamType::TGLuint, index);
5461     paramBuffer.addValueParam("r", ParamType::TGLboolean, r);
5462     paramBuffer.addValueParam("g", ParamType::TGLboolean, g);
5463     paramBuffer.addValueParam("b", ParamType::TGLboolean, b);
5464     paramBuffer.addValueParam("a", ParamType::TGLboolean, a);
5465 
5466     return CallCapture(angle::EntryPoint::GLColorMaskiEXT, std::move(paramBuffer));
5467 }
5468 
CaptureDisableiEXT(const State & glState,bool isCallValid,GLenum target,GLuint index)5469 CallCapture CaptureDisableiEXT(const State &glState, bool isCallValid, GLenum target, GLuint index)
5470 {
5471     ParamBuffer paramBuffer;
5472 
5473     paramBuffer.addEnumParam("target", GLenumGroup::EnableCap, ParamType::TGLenum, target);
5474     paramBuffer.addValueParam("index", ParamType::TGLuint, index);
5475 
5476     return CallCapture(angle::EntryPoint::GLDisableiEXT, std::move(paramBuffer));
5477 }
5478 
CaptureEnableiEXT(const State & glState,bool isCallValid,GLenum target,GLuint index)5479 CallCapture CaptureEnableiEXT(const State &glState, bool isCallValid, GLenum target, GLuint index)
5480 {
5481     ParamBuffer paramBuffer;
5482 
5483     paramBuffer.addEnumParam("target", GLenumGroup::EnableCap, ParamType::TGLenum, target);
5484     paramBuffer.addValueParam("index", ParamType::TGLuint, index);
5485 
5486     return CallCapture(angle::EntryPoint::GLEnableiEXT, std::move(paramBuffer));
5487 }
5488 
CaptureIsEnablediEXT(const State & glState,bool isCallValid,GLenum target,GLuint index,GLboolean returnValue)5489 CallCapture CaptureIsEnablediEXT(const State &glState,
5490                                  bool isCallValid,
5491                                  GLenum target,
5492                                  GLuint index,
5493                                  GLboolean returnValue)
5494 {
5495     ParamBuffer paramBuffer;
5496 
5497     paramBuffer.addEnumParam("target", GLenumGroup::EnableCap, ParamType::TGLenum, target);
5498     paramBuffer.addValueParam("index", ParamType::TGLuint, index);
5499 
5500     ParamCapture returnValueCapture("returnValue", ParamType::TGLboolean);
5501     InitParamValue(ParamType::TGLboolean, returnValue, &returnValueCapture.value);
5502     paramBuffer.addReturnValue(std::move(returnValueCapture));
5503 
5504     return CallCapture(angle::EntryPoint::GLIsEnablediEXT, std::move(paramBuffer));
5505 }
5506 
CaptureDrawElementsBaseVertexEXT(const State & glState,bool isCallValid,PrimitiveMode modePacked,GLsizei count,DrawElementsType typePacked,const void * indices,GLint basevertex)5507 CallCapture CaptureDrawElementsBaseVertexEXT(const State &glState,
5508                                              bool isCallValid,
5509                                              PrimitiveMode modePacked,
5510                                              GLsizei count,
5511                                              DrawElementsType typePacked,
5512                                              const void *indices,
5513                                              GLint basevertex)
5514 {
5515     ParamBuffer paramBuffer;
5516 
5517     paramBuffer.addValueParam("modePacked", ParamType::TPrimitiveMode, modePacked);
5518     paramBuffer.addValueParam("count", ParamType::TGLsizei, count);
5519     paramBuffer.addValueParam("typePacked", ParamType::TDrawElementsType, typePacked);
5520 
5521     if (isCallValid)
5522     {
5523         ParamCapture indicesParam("indices", ParamType::TvoidConstPointer);
5524         InitParamValue(ParamType::TvoidConstPointer, indices, &indicesParam.value);
5525         CaptureDrawElementsBaseVertexEXT_indices(glState, isCallValid, modePacked, count,
5526                                                  typePacked, indices, basevertex, &indicesParam);
5527         paramBuffer.addParam(std::move(indicesParam));
5528     }
5529     else
5530     {
5531         ParamCapture indicesParam("indices", ParamType::TvoidConstPointer);
5532         InitParamValue(ParamType::TvoidConstPointer, static_cast<const void *>(nullptr),
5533                        &indicesParam.value);
5534         paramBuffer.addParam(std::move(indicesParam));
5535     }
5536 
5537     paramBuffer.addValueParam("basevertex", ParamType::TGLint, basevertex);
5538 
5539     return CallCapture(angle::EntryPoint::GLDrawElementsBaseVertexEXT, std::move(paramBuffer));
5540 }
5541 
CaptureDrawElementsInstancedBaseVertexEXT(const State & glState,bool isCallValid,PrimitiveMode modePacked,GLsizei count,DrawElementsType typePacked,const void * indices,GLsizei instancecount,GLint basevertex)5542 CallCapture CaptureDrawElementsInstancedBaseVertexEXT(const State &glState,
5543                                                       bool isCallValid,
5544                                                       PrimitiveMode modePacked,
5545                                                       GLsizei count,
5546                                                       DrawElementsType typePacked,
5547                                                       const void *indices,
5548                                                       GLsizei instancecount,
5549                                                       GLint basevertex)
5550 {
5551     ParamBuffer paramBuffer;
5552 
5553     paramBuffer.addValueParam("modePacked", ParamType::TPrimitiveMode, modePacked);
5554     paramBuffer.addValueParam("count", ParamType::TGLsizei, count);
5555     paramBuffer.addValueParam("typePacked", ParamType::TDrawElementsType, typePacked);
5556 
5557     if (isCallValid)
5558     {
5559         ParamCapture indicesParam("indices", ParamType::TvoidConstPointer);
5560         InitParamValue(ParamType::TvoidConstPointer, indices, &indicesParam.value);
5561         CaptureDrawElementsInstancedBaseVertexEXT_indices(glState, isCallValid, modePacked, count,
5562                                                           typePacked, indices, instancecount,
5563                                                           basevertex, &indicesParam);
5564         paramBuffer.addParam(std::move(indicesParam));
5565     }
5566     else
5567     {
5568         ParamCapture indicesParam("indices", ParamType::TvoidConstPointer);
5569         InitParamValue(ParamType::TvoidConstPointer, static_cast<const void *>(nullptr),
5570                        &indicesParam.value);
5571         paramBuffer.addParam(std::move(indicesParam));
5572     }
5573 
5574     paramBuffer.addValueParam("instancecount", ParamType::TGLsizei, instancecount);
5575     paramBuffer.addValueParam("basevertex", ParamType::TGLint, basevertex);
5576 
5577     return CallCapture(angle::EntryPoint::GLDrawElementsInstancedBaseVertexEXT,
5578                        std::move(paramBuffer));
5579 }
5580 
CaptureDrawRangeElementsBaseVertexEXT(const State & glState,bool isCallValid,PrimitiveMode modePacked,GLuint start,GLuint end,GLsizei count,DrawElementsType typePacked,const void * indices,GLint basevertex)5581 CallCapture CaptureDrawRangeElementsBaseVertexEXT(const State &glState,
5582                                                   bool isCallValid,
5583                                                   PrimitiveMode modePacked,
5584                                                   GLuint start,
5585                                                   GLuint end,
5586                                                   GLsizei count,
5587                                                   DrawElementsType typePacked,
5588                                                   const void *indices,
5589                                                   GLint basevertex)
5590 {
5591     ParamBuffer paramBuffer;
5592 
5593     paramBuffer.addValueParam("modePacked", ParamType::TPrimitiveMode, modePacked);
5594     paramBuffer.addValueParam("start", ParamType::TGLuint, start);
5595     paramBuffer.addValueParam("end", ParamType::TGLuint, end);
5596     paramBuffer.addValueParam("count", ParamType::TGLsizei, count);
5597     paramBuffer.addValueParam("typePacked", ParamType::TDrawElementsType, typePacked);
5598 
5599     if (isCallValid)
5600     {
5601         ParamCapture indicesParam("indices", ParamType::TvoidConstPointer);
5602         InitParamValue(ParamType::TvoidConstPointer, indices, &indicesParam.value);
5603         CaptureDrawRangeElementsBaseVertexEXT_indices(glState, isCallValid, modePacked, start, end,
5604                                                       count, typePacked, indices, basevertex,
5605                                                       &indicesParam);
5606         paramBuffer.addParam(std::move(indicesParam));
5607     }
5608     else
5609     {
5610         ParamCapture indicesParam("indices", ParamType::TvoidConstPointer);
5611         InitParamValue(ParamType::TvoidConstPointer, static_cast<const void *>(nullptr),
5612                        &indicesParam.value);
5613         paramBuffer.addParam(std::move(indicesParam));
5614     }
5615 
5616     paramBuffer.addValueParam("basevertex", ParamType::TGLint, basevertex);
5617 
5618     return CallCapture(angle::EntryPoint::GLDrawRangeElementsBaseVertexEXT, std::move(paramBuffer));
5619 }
5620 
CaptureMultiDrawElementsBaseVertexEXT(const State & glState,bool isCallValid,PrimitiveMode modePacked,const GLsizei * count,DrawElementsType typePacked,const void * const * indices,GLsizei primcount,const GLint * basevertex)5621 CallCapture CaptureMultiDrawElementsBaseVertexEXT(const State &glState,
5622                                                   bool isCallValid,
5623                                                   PrimitiveMode modePacked,
5624                                                   const GLsizei *count,
5625                                                   DrawElementsType typePacked,
5626                                                   const void *const *indices,
5627                                                   GLsizei primcount,
5628                                                   const GLint *basevertex)
5629 {
5630     ParamBuffer paramBuffer;
5631 
5632     paramBuffer.addValueParam("modePacked", ParamType::TPrimitiveMode, modePacked);
5633 
5634     if (isCallValid)
5635     {
5636         ParamCapture countParam("count", ParamType::TGLsizeiConstPointer);
5637         InitParamValue(ParamType::TGLsizeiConstPointer, count, &countParam.value);
5638         CaptureMultiDrawElementsBaseVertexEXT_count(glState, isCallValid, modePacked, count,
5639                                                     typePacked, indices, primcount, basevertex,
5640                                                     &countParam);
5641         paramBuffer.addParam(std::move(countParam));
5642     }
5643     else
5644     {
5645         ParamCapture countParam("count", ParamType::TGLsizeiConstPointer);
5646         InitParamValue(ParamType::TGLsizeiConstPointer, static_cast<const GLsizei *>(nullptr),
5647                        &countParam.value);
5648         paramBuffer.addParam(std::move(countParam));
5649     }
5650 
5651     paramBuffer.addValueParam("typePacked", ParamType::TDrawElementsType, typePacked);
5652 
5653     if (isCallValid)
5654     {
5655         ParamCapture indicesParam("indices", ParamType::TvoidConstPointerPointer);
5656         InitParamValue(ParamType::TvoidConstPointerPointer, indices, &indicesParam.value);
5657         CaptureMultiDrawElementsBaseVertexEXT_indices(glState, isCallValid, modePacked, count,
5658                                                       typePacked, indices, primcount, basevertex,
5659                                                       &indicesParam);
5660         paramBuffer.addParam(std::move(indicesParam));
5661     }
5662     else
5663     {
5664         ParamCapture indicesParam("indices", ParamType::TvoidConstPointerPointer);
5665         InitParamValue(ParamType::TvoidConstPointerPointer,
5666                        static_cast<const void *const *>(nullptr), &indicesParam.value);
5667         paramBuffer.addParam(std::move(indicesParam));
5668     }
5669 
5670     paramBuffer.addValueParam("primcount", ParamType::TGLsizei, primcount);
5671 
5672     if (isCallValid)
5673     {
5674         ParamCapture basevertexParam("basevertex", ParamType::TGLintConstPointer);
5675         InitParamValue(ParamType::TGLintConstPointer, basevertex, &basevertexParam.value);
5676         CaptureMultiDrawElementsBaseVertexEXT_basevertex(glState, isCallValid, modePacked, count,
5677                                                          typePacked, indices, primcount, basevertex,
5678                                                          &basevertexParam);
5679         paramBuffer.addParam(std::move(basevertexParam));
5680     }
5681     else
5682     {
5683         ParamCapture basevertexParam("basevertex", ParamType::TGLintConstPointer);
5684         InitParamValue(ParamType::TGLintConstPointer, static_cast<const GLint *>(nullptr),
5685                        &basevertexParam.value);
5686         paramBuffer.addParam(std::move(basevertexParam));
5687     }
5688 
5689     return CallCapture(angle::EntryPoint::GLMultiDrawElementsBaseVertexEXT, std::move(paramBuffer));
5690 }
5691 
CaptureBufferStorageExternalEXT(const State & glState,bool isCallValid,BufferBinding targetPacked,GLintptr offset,GLsizeiptr size,GLeglClientBufferEXT clientBuffer,GLbitfield flags)5692 CallCapture CaptureBufferStorageExternalEXT(const State &glState,
5693                                             bool isCallValid,
5694                                             BufferBinding targetPacked,
5695                                             GLintptr offset,
5696                                             GLsizeiptr size,
5697                                             GLeglClientBufferEXT clientBuffer,
5698                                             GLbitfield flags)
5699 {
5700     ParamBuffer paramBuffer;
5701 
5702     paramBuffer.addValueParam("targetPacked", ParamType::TBufferBinding, targetPacked);
5703     paramBuffer.addValueParam("offset", ParamType::TGLintptr, offset);
5704     paramBuffer.addValueParam("size", ParamType::TGLsizeiptr, size);
5705     paramBuffer.addValueParam("clientBuffer", ParamType::TGLeglClientBufferEXT, clientBuffer);
5706     paramBuffer.addEnumParam("flags", GLenumGroup::MapBufferUsageMask, ParamType::TGLbitfield,
5707                              flags);
5708 
5709     return CallCapture(angle::EntryPoint::GLBufferStorageExternalEXT, std::move(paramBuffer));
5710 }
5711 
CaptureNamedBufferStorageExternalEXT(const State & glState,bool isCallValid,GLuint buffer,GLintptr offset,GLsizeiptr size,GLeglClientBufferEXT clientBuffer,GLbitfield flags)5712 CallCapture CaptureNamedBufferStorageExternalEXT(const State &glState,
5713                                                  bool isCallValid,
5714                                                  GLuint buffer,
5715                                                  GLintptr offset,
5716                                                  GLsizeiptr size,
5717                                                  GLeglClientBufferEXT clientBuffer,
5718                                                  GLbitfield flags)
5719 {
5720     ParamBuffer paramBuffer;
5721 
5722     paramBuffer.addValueParam("buffer", ParamType::TGLuint, buffer);
5723     paramBuffer.addValueParam("offset", ParamType::TGLintptr, offset);
5724     paramBuffer.addValueParam("size", ParamType::TGLsizeiptr, size);
5725     paramBuffer.addValueParam("clientBuffer", ParamType::TGLeglClientBufferEXT, clientBuffer);
5726     paramBuffer.addEnumParam("flags", GLenumGroup::MapBufferUsageMask, ParamType::TGLbitfield,
5727                              flags);
5728 
5729     return CallCapture(angle::EntryPoint::GLNamedBufferStorageExternalEXT, std::move(paramBuffer));
5730 }
5731 
CaptureFramebufferTextureEXT(const State & glState,bool isCallValid,GLenum target,GLenum attachment,TextureID texturePacked,GLint level)5732 CallCapture CaptureFramebufferTextureEXT(const State &glState,
5733                                          bool isCallValid,
5734                                          GLenum target,
5735                                          GLenum attachment,
5736                                          TextureID texturePacked,
5737                                          GLint level)
5738 {
5739     ParamBuffer paramBuffer;
5740 
5741     paramBuffer.addEnumParam("target", GLenumGroup::FramebufferTarget, ParamType::TGLenum, target);
5742     paramBuffer.addEnumParam("attachment", GLenumGroup::FramebufferAttachment, ParamType::TGLenum,
5743                              attachment);
5744     paramBuffer.addValueParam("texturePacked", ParamType::TTextureID, texturePacked);
5745     paramBuffer.addValueParam("level", ParamType::TGLint, level);
5746 
5747     return CallCapture(angle::EntryPoint::GLFramebufferTextureEXT, std::move(paramBuffer));
5748 }
5749 
CaptureDrawArraysInstancedEXT(const State & glState,bool isCallValid,PrimitiveMode modePacked,GLint start,GLsizei count,GLsizei primcount)5750 CallCapture CaptureDrawArraysInstancedEXT(const State &glState,
5751                                           bool isCallValid,
5752                                           PrimitiveMode modePacked,
5753                                           GLint start,
5754                                           GLsizei count,
5755                                           GLsizei primcount)
5756 {
5757     ParamBuffer paramBuffer;
5758 
5759     paramBuffer.addValueParam("modePacked", ParamType::TPrimitiveMode, modePacked);
5760     paramBuffer.addValueParam("start", ParamType::TGLint, start);
5761     paramBuffer.addValueParam("count", ParamType::TGLsizei, count);
5762     paramBuffer.addValueParam("primcount", ParamType::TGLsizei, primcount);
5763 
5764     return CallCapture(angle::EntryPoint::GLDrawArraysInstancedEXT, std::move(paramBuffer));
5765 }
5766 
CaptureDrawElementsInstancedEXT(const State & glState,bool isCallValid,PrimitiveMode modePacked,GLsizei count,DrawElementsType typePacked,const void * indices,GLsizei primcount)5767 CallCapture CaptureDrawElementsInstancedEXT(const State &glState,
5768                                             bool isCallValid,
5769                                             PrimitiveMode modePacked,
5770                                             GLsizei count,
5771                                             DrawElementsType typePacked,
5772                                             const void *indices,
5773                                             GLsizei primcount)
5774 {
5775     ParamBuffer paramBuffer;
5776 
5777     paramBuffer.addValueParam("modePacked", ParamType::TPrimitiveMode, modePacked);
5778     paramBuffer.addValueParam("count", ParamType::TGLsizei, count);
5779     paramBuffer.addValueParam("typePacked", ParamType::TDrawElementsType, typePacked);
5780 
5781     if (isCallValid)
5782     {
5783         ParamCapture indicesParam("indices", ParamType::TvoidConstPointer);
5784         InitParamValue(ParamType::TvoidConstPointer, indices, &indicesParam.value);
5785         CaptureDrawElementsInstancedEXT_indices(glState, isCallValid, modePacked, count, typePacked,
5786                                                 indices, primcount, &indicesParam);
5787         paramBuffer.addParam(std::move(indicesParam));
5788     }
5789     else
5790     {
5791         ParamCapture indicesParam("indices", ParamType::TvoidConstPointer);
5792         InitParamValue(ParamType::TvoidConstPointer, static_cast<const void *>(nullptr),
5793                        &indicesParam.value);
5794         paramBuffer.addParam(std::move(indicesParam));
5795     }
5796 
5797     paramBuffer.addValueParam("primcount", ParamType::TGLsizei, primcount);
5798 
5799     return CallCapture(angle::EntryPoint::GLDrawElementsInstancedEXT, std::move(paramBuffer));
5800 }
5801 
CaptureVertexAttribDivisorEXT(const State & glState,bool isCallValid,GLuint index,GLuint divisor)5802 CallCapture CaptureVertexAttribDivisorEXT(const State &glState,
5803                                           bool isCallValid,
5804                                           GLuint index,
5805                                           GLuint divisor)
5806 {
5807     ParamBuffer paramBuffer;
5808 
5809     paramBuffer.addValueParam("index", ParamType::TGLuint, index);
5810     paramBuffer.addValueParam("divisor", ParamType::TGLuint, divisor);
5811 
5812     return CallCapture(angle::EntryPoint::GLVertexAttribDivisorEXT, std::move(paramBuffer));
5813 }
5814 
CaptureFlushMappedBufferRangeEXT(const State & glState,bool isCallValid,BufferBinding targetPacked,GLintptr offset,GLsizeiptr length)5815 CallCapture CaptureFlushMappedBufferRangeEXT(const State &glState,
5816                                              bool isCallValid,
5817                                              BufferBinding targetPacked,
5818                                              GLintptr offset,
5819                                              GLsizeiptr length)
5820 {
5821     ParamBuffer paramBuffer;
5822 
5823     paramBuffer.addValueParam("targetPacked", ParamType::TBufferBinding, targetPacked);
5824     paramBuffer.addValueParam("offset", ParamType::TGLintptr, offset);
5825     paramBuffer.addValueParam("length", ParamType::TGLsizeiptr, length);
5826 
5827     return CallCapture(angle::EntryPoint::GLFlushMappedBufferRangeEXT, std::move(paramBuffer));
5828 }
5829 
CaptureMapBufferRangeEXT(const State & glState,bool isCallValid,BufferBinding targetPacked,GLintptr offset,GLsizeiptr length,GLbitfield access,void * returnValue)5830 CallCapture CaptureMapBufferRangeEXT(const State &glState,
5831                                      bool isCallValid,
5832                                      BufferBinding targetPacked,
5833                                      GLintptr offset,
5834                                      GLsizeiptr length,
5835                                      GLbitfield access,
5836                                      void *returnValue)
5837 {
5838     ParamBuffer paramBuffer;
5839 
5840     paramBuffer.addValueParam("targetPacked", ParamType::TBufferBinding, targetPacked);
5841     paramBuffer.addValueParam("offset", ParamType::TGLintptr, offset);
5842     paramBuffer.addValueParam("length", ParamType::TGLsizeiptr, length);
5843     paramBuffer.addEnumParam("access", GLenumGroup::BufferAccessMask, ParamType::TGLbitfield,
5844                              access);
5845 
5846     ParamCapture returnValueCapture("returnValue", ParamType::TvoidPointer);
5847     InitParamValue(ParamType::TvoidPointer, returnValue, &returnValueCapture.value);
5848     paramBuffer.addReturnValue(std::move(returnValueCapture));
5849 
5850     return CallCapture(angle::EntryPoint::GLMapBufferRangeEXT, std::move(paramBuffer));
5851 }
5852 
CaptureBufferStorageMemEXT(const State & glState,bool isCallValid,TextureType targetPacked,GLsizeiptr size,MemoryObjectID memoryPacked,GLuint64 offset)5853 CallCapture CaptureBufferStorageMemEXT(const State &glState,
5854                                        bool isCallValid,
5855                                        TextureType targetPacked,
5856                                        GLsizeiptr size,
5857                                        MemoryObjectID memoryPacked,
5858                                        GLuint64 offset)
5859 {
5860     ParamBuffer paramBuffer;
5861 
5862     paramBuffer.addValueParam("targetPacked", ParamType::TTextureType, targetPacked);
5863     paramBuffer.addValueParam("size", ParamType::TGLsizeiptr, size);
5864     paramBuffer.addValueParam("memoryPacked", ParamType::TMemoryObjectID, memoryPacked);
5865     paramBuffer.addValueParam("offset", ParamType::TGLuint64, offset);
5866 
5867     return CallCapture(angle::EntryPoint::GLBufferStorageMemEXT, std::move(paramBuffer));
5868 }
5869 
CaptureCreateMemoryObjectsEXT(const State & glState,bool isCallValid,GLsizei n,MemoryObjectID * memoryObjectsPacked)5870 CallCapture CaptureCreateMemoryObjectsEXT(const State &glState,
5871                                           bool isCallValid,
5872                                           GLsizei n,
5873                                           MemoryObjectID *memoryObjectsPacked)
5874 {
5875     ParamBuffer paramBuffer;
5876 
5877     paramBuffer.addValueParam("n", ParamType::TGLsizei, n);
5878 
5879     if (isCallValid)
5880     {
5881         ParamCapture memoryObjectsPackedParam("memoryObjectsPacked",
5882                                               ParamType::TMemoryObjectIDPointer);
5883         InitParamValue(ParamType::TMemoryObjectIDPointer, memoryObjectsPacked,
5884                        &memoryObjectsPackedParam.value);
5885         CaptureCreateMemoryObjectsEXT_memoryObjectsPacked(
5886             glState, isCallValid, n, memoryObjectsPacked, &memoryObjectsPackedParam);
5887         paramBuffer.addParam(std::move(memoryObjectsPackedParam));
5888     }
5889     else
5890     {
5891         ParamCapture memoryObjectsPackedParam("memoryObjectsPacked",
5892                                               ParamType::TMemoryObjectIDPointer);
5893         InitParamValue(ParamType::TMemoryObjectIDPointer, static_cast<MemoryObjectID *>(nullptr),
5894                        &memoryObjectsPackedParam.value);
5895         paramBuffer.addParam(std::move(memoryObjectsPackedParam));
5896     }
5897 
5898     return CallCapture(angle::EntryPoint::GLCreateMemoryObjectsEXT, std::move(paramBuffer));
5899 }
5900 
CaptureDeleteMemoryObjectsEXT(const State & glState,bool isCallValid,GLsizei n,const MemoryObjectID * memoryObjectsPacked)5901 CallCapture CaptureDeleteMemoryObjectsEXT(const State &glState,
5902                                           bool isCallValid,
5903                                           GLsizei n,
5904                                           const MemoryObjectID *memoryObjectsPacked)
5905 {
5906     ParamBuffer paramBuffer;
5907 
5908     paramBuffer.addValueParam("n", ParamType::TGLsizei, n);
5909 
5910     if (isCallValid)
5911     {
5912         ParamCapture memoryObjectsPackedParam("memoryObjectsPacked",
5913                                               ParamType::TMemoryObjectIDConstPointer);
5914         InitParamValue(ParamType::TMemoryObjectIDConstPointer, memoryObjectsPacked,
5915                        &memoryObjectsPackedParam.value);
5916         CaptureDeleteMemoryObjectsEXT_memoryObjectsPacked(
5917             glState, isCallValid, n, memoryObjectsPacked, &memoryObjectsPackedParam);
5918         paramBuffer.addParam(std::move(memoryObjectsPackedParam));
5919     }
5920     else
5921     {
5922         ParamCapture memoryObjectsPackedParam("memoryObjectsPacked",
5923                                               ParamType::TMemoryObjectIDConstPointer);
5924         InitParamValue(ParamType::TMemoryObjectIDConstPointer,
5925                        static_cast<const MemoryObjectID *>(nullptr),
5926                        &memoryObjectsPackedParam.value);
5927         paramBuffer.addParam(std::move(memoryObjectsPackedParam));
5928     }
5929 
5930     return CallCapture(angle::EntryPoint::GLDeleteMemoryObjectsEXT, std::move(paramBuffer));
5931 }
5932 
CaptureGetMemoryObjectParameterivEXT(const State & glState,bool isCallValid,MemoryObjectID memoryObjectPacked,GLenum pname,GLint * params)5933 CallCapture CaptureGetMemoryObjectParameterivEXT(const State &glState,
5934                                                  bool isCallValid,
5935                                                  MemoryObjectID memoryObjectPacked,
5936                                                  GLenum pname,
5937                                                  GLint *params)
5938 {
5939     ParamBuffer paramBuffer;
5940 
5941     paramBuffer.addValueParam("memoryObjectPacked", ParamType::TMemoryObjectID, memoryObjectPacked);
5942     paramBuffer.addEnumParam("pname", GLenumGroup::MemoryObjectParameterName, ParamType::TGLenum,
5943                              pname);
5944 
5945     if (isCallValid)
5946     {
5947         ParamCapture paramsParam("params", ParamType::TGLintPointer);
5948         InitParamValue(ParamType::TGLintPointer, params, &paramsParam.value);
5949         CaptureGetMemoryObjectParameterivEXT_params(glState, isCallValid, memoryObjectPacked, pname,
5950                                                     params, &paramsParam);
5951         paramBuffer.addParam(std::move(paramsParam));
5952     }
5953     else
5954     {
5955         ParamCapture paramsParam("params", ParamType::TGLintPointer);
5956         InitParamValue(ParamType::TGLintPointer, static_cast<GLint *>(nullptr), &paramsParam.value);
5957         paramBuffer.addParam(std::move(paramsParam));
5958     }
5959 
5960     return CallCapture(angle::EntryPoint::GLGetMemoryObjectParameterivEXT, std::move(paramBuffer));
5961 }
5962 
CaptureGetUnsignedBytevEXT(const State & glState,bool isCallValid,GLenum pname,GLubyte * data)5963 CallCapture CaptureGetUnsignedBytevEXT(const State &glState,
5964                                        bool isCallValid,
5965                                        GLenum pname,
5966                                        GLubyte *data)
5967 {
5968     ParamBuffer paramBuffer;
5969 
5970     paramBuffer.addEnumParam("pname", GLenumGroup::GetPName, ParamType::TGLenum, pname);
5971 
5972     if (isCallValid)
5973     {
5974         ParamCapture dataParam("data", ParamType::TGLubytePointer);
5975         InitParamValue(ParamType::TGLubytePointer, data, &dataParam.value);
5976         CaptureGetUnsignedBytevEXT_data(glState, isCallValid, pname, data, &dataParam);
5977         paramBuffer.addParam(std::move(dataParam));
5978     }
5979     else
5980     {
5981         ParamCapture dataParam("data", ParamType::TGLubytePointer);
5982         InitParamValue(ParamType::TGLubytePointer, static_cast<GLubyte *>(nullptr),
5983                        &dataParam.value);
5984         paramBuffer.addParam(std::move(dataParam));
5985     }
5986 
5987     return CallCapture(angle::EntryPoint::GLGetUnsignedBytevEXT, std::move(paramBuffer));
5988 }
5989 
CaptureGetUnsignedBytei_vEXT(const State & glState,bool isCallValid,GLenum target,GLuint index,GLubyte * data)5990 CallCapture CaptureGetUnsignedBytei_vEXT(const State &glState,
5991                                          bool isCallValid,
5992                                          GLenum target,
5993                                          GLuint index,
5994                                          GLubyte *data)
5995 {
5996     ParamBuffer paramBuffer;
5997 
5998     paramBuffer.addEnumParam("target", GLenumGroup::DefaultGroup, ParamType::TGLenum, target);
5999     paramBuffer.addValueParam("index", ParamType::TGLuint, index);
6000 
6001     if (isCallValid)
6002     {
6003         ParamCapture dataParam("data", ParamType::TGLubytePointer);
6004         InitParamValue(ParamType::TGLubytePointer, data, &dataParam.value);
6005         CaptureGetUnsignedBytei_vEXT_data(glState, isCallValid, target, index, data, &dataParam);
6006         paramBuffer.addParam(std::move(dataParam));
6007     }
6008     else
6009     {
6010         ParamCapture dataParam("data", ParamType::TGLubytePointer);
6011         InitParamValue(ParamType::TGLubytePointer, static_cast<GLubyte *>(nullptr),
6012                        &dataParam.value);
6013         paramBuffer.addParam(std::move(dataParam));
6014     }
6015 
6016     return CallCapture(angle::EntryPoint::GLGetUnsignedBytei_vEXT, std::move(paramBuffer));
6017 }
6018 
CaptureIsMemoryObjectEXT(const State & glState,bool isCallValid,MemoryObjectID memoryObjectPacked,GLboolean returnValue)6019 CallCapture CaptureIsMemoryObjectEXT(const State &glState,
6020                                      bool isCallValid,
6021                                      MemoryObjectID memoryObjectPacked,
6022                                      GLboolean returnValue)
6023 {
6024     ParamBuffer paramBuffer;
6025 
6026     paramBuffer.addValueParam("memoryObjectPacked", ParamType::TMemoryObjectID, memoryObjectPacked);
6027 
6028     ParamCapture returnValueCapture("returnValue", ParamType::TGLboolean);
6029     InitParamValue(ParamType::TGLboolean, returnValue, &returnValueCapture.value);
6030     paramBuffer.addReturnValue(std::move(returnValueCapture));
6031 
6032     return CallCapture(angle::EntryPoint::GLIsMemoryObjectEXT, std::move(paramBuffer));
6033 }
6034 
CaptureMemoryObjectParameterivEXT(const State & glState,bool isCallValid,MemoryObjectID memoryObjectPacked,GLenum pname,const GLint * params)6035 CallCapture CaptureMemoryObjectParameterivEXT(const State &glState,
6036                                               bool isCallValid,
6037                                               MemoryObjectID memoryObjectPacked,
6038                                               GLenum pname,
6039                                               const GLint *params)
6040 {
6041     ParamBuffer paramBuffer;
6042 
6043     paramBuffer.addValueParam("memoryObjectPacked", ParamType::TMemoryObjectID, memoryObjectPacked);
6044     paramBuffer.addEnumParam("pname", GLenumGroup::MemoryObjectParameterName, ParamType::TGLenum,
6045                              pname);
6046 
6047     if (isCallValid)
6048     {
6049         ParamCapture paramsParam("params", ParamType::TGLintConstPointer);
6050         InitParamValue(ParamType::TGLintConstPointer, params, &paramsParam.value);
6051         CaptureMemoryObjectParameterivEXT_params(glState, isCallValid, memoryObjectPacked, pname,
6052                                                  params, &paramsParam);
6053         paramBuffer.addParam(std::move(paramsParam));
6054     }
6055     else
6056     {
6057         ParamCapture paramsParam("params", ParamType::TGLintConstPointer);
6058         InitParamValue(ParamType::TGLintConstPointer, static_cast<const GLint *>(nullptr),
6059                        &paramsParam.value);
6060         paramBuffer.addParam(std::move(paramsParam));
6061     }
6062 
6063     return CallCapture(angle::EntryPoint::GLMemoryObjectParameterivEXT, std::move(paramBuffer));
6064 }
6065 
CaptureTexStorageMem2DEXT(const State & glState,bool isCallValid,TextureType targetPacked,GLsizei levels,GLenum internalFormat,GLsizei width,GLsizei height,MemoryObjectID memoryPacked,GLuint64 offset)6066 CallCapture CaptureTexStorageMem2DEXT(const State &glState,
6067                                       bool isCallValid,
6068                                       TextureType targetPacked,
6069                                       GLsizei levels,
6070                                       GLenum internalFormat,
6071                                       GLsizei width,
6072                                       GLsizei height,
6073                                       MemoryObjectID memoryPacked,
6074                                       GLuint64 offset)
6075 {
6076     ParamBuffer paramBuffer;
6077 
6078     paramBuffer.addValueParam("targetPacked", ParamType::TTextureType, targetPacked);
6079     paramBuffer.addValueParam("levels", ParamType::TGLsizei, levels);
6080     paramBuffer.addEnumParam("internalFormat", GLenumGroup::DefaultGroup, ParamType::TGLenum,
6081                              internalFormat);
6082     paramBuffer.addValueParam("width", ParamType::TGLsizei, width);
6083     paramBuffer.addValueParam("height", ParamType::TGLsizei, height);
6084     paramBuffer.addValueParam("memoryPacked", ParamType::TMemoryObjectID, memoryPacked);
6085     paramBuffer.addValueParam("offset", ParamType::TGLuint64, offset);
6086 
6087     return CallCapture(angle::EntryPoint::GLTexStorageMem2DEXT, std::move(paramBuffer));
6088 }
6089 
CaptureTexStorageMem2DMultisampleEXT(const State & glState,bool isCallValid,TextureType targetPacked,GLsizei samples,GLenum internalFormat,GLsizei width,GLsizei height,GLboolean fixedSampleLocations,MemoryObjectID memoryPacked,GLuint64 offset)6090 CallCapture CaptureTexStorageMem2DMultisampleEXT(const State &glState,
6091                                                  bool isCallValid,
6092                                                  TextureType targetPacked,
6093                                                  GLsizei samples,
6094                                                  GLenum internalFormat,
6095                                                  GLsizei width,
6096                                                  GLsizei height,
6097                                                  GLboolean fixedSampleLocations,
6098                                                  MemoryObjectID memoryPacked,
6099                                                  GLuint64 offset)
6100 {
6101     ParamBuffer paramBuffer;
6102 
6103     paramBuffer.addValueParam("targetPacked", ParamType::TTextureType, targetPacked);
6104     paramBuffer.addValueParam("samples", ParamType::TGLsizei, samples);
6105     paramBuffer.addEnumParam("internalFormat", GLenumGroup::DefaultGroup, ParamType::TGLenum,
6106                              internalFormat);
6107     paramBuffer.addValueParam("width", ParamType::TGLsizei, width);
6108     paramBuffer.addValueParam("height", ParamType::TGLsizei, height);
6109     paramBuffer.addValueParam("fixedSampleLocations", ParamType::TGLboolean, fixedSampleLocations);
6110     paramBuffer.addValueParam("memoryPacked", ParamType::TMemoryObjectID, memoryPacked);
6111     paramBuffer.addValueParam("offset", ParamType::TGLuint64, offset);
6112 
6113     return CallCapture(angle::EntryPoint::GLTexStorageMem2DMultisampleEXT, std::move(paramBuffer));
6114 }
6115 
CaptureTexStorageMem3DEXT(const State & glState,bool isCallValid,TextureType targetPacked,GLsizei levels,GLenum internalFormat,GLsizei width,GLsizei height,GLsizei depth,MemoryObjectID memoryPacked,GLuint64 offset)6116 CallCapture CaptureTexStorageMem3DEXT(const State &glState,
6117                                       bool isCallValid,
6118                                       TextureType targetPacked,
6119                                       GLsizei levels,
6120                                       GLenum internalFormat,
6121                                       GLsizei width,
6122                                       GLsizei height,
6123                                       GLsizei depth,
6124                                       MemoryObjectID memoryPacked,
6125                                       GLuint64 offset)
6126 {
6127     ParamBuffer paramBuffer;
6128 
6129     paramBuffer.addValueParam("targetPacked", ParamType::TTextureType, targetPacked);
6130     paramBuffer.addValueParam("levels", ParamType::TGLsizei, levels);
6131     paramBuffer.addEnumParam("internalFormat", GLenumGroup::DefaultGroup, ParamType::TGLenum,
6132                              internalFormat);
6133     paramBuffer.addValueParam("width", ParamType::TGLsizei, width);
6134     paramBuffer.addValueParam("height", ParamType::TGLsizei, height);
6135     paramBuffer.addValueParam("depth", ParamType::TGLsizei, depth);
6136     paramBuffer.addValueParam("memoryPacked", ParamType::TMemoryObjectID, memoryPacked);
6137     paramBuffer.addValueParam("offset", ParamType::TGLuint64, offset);
6138 
6139     return CallCapture(angle::EntryPoint::GLTexStorageMem3DEXT, std::move(paramBuffer));
6140 }
6141 
CaptureTexStorageMem3DMultisampleEXT(const State & glState,bool isCallValid,TextureType targetPacked,GLsizei samples,GLenum internalFormat,GLsizei width,GLsizei height,GLsizei depth,GLboolean fixedSampleLocations,MemoryObjectID memoryPacked,GLuint64 offset)6142 CallCapture CaptureTexStorageMem3DMultisampleEXT(const State &glState,
6143                                                  bool isCallValid,
6144                                                  TextureType targetPacked,
6145                                                  GLsizei samples,
6146                                                  GLenum internalFormat,
6147                                                  GLsizei width,
6148                                                  GLsizei height,
6149                                                  GLsizei depth,
6150                                                  GLboolean fixedSampleLocations,
6151                                                  MemoryObjectID memoryPacked,
6152                                                  GLuint64 offset)
6153 {
6154     ParamBuffer paramBuffer;
6155 
6156     paramBuffer.addValueParam("targetPacked", ParamType::TTextureType, targetPacked);
6157     paramBuffer.addValueParam("samples", ParamType::TGLsizei, samples);
6158     paramBuffer.addEnumParam("internalFormat", GLenumGroup::DefaultGroup, ParamType::TGLenum,
6159                              internalFormat);
6160     paramBuffer.addValueParam("width", ParamType::TGLsizei, width);
6161     paramBuffer.addValueParam("height", ParamType::TGLsizei, height);
6162     paramBuffer.addValueParam("depth", ParamType::TGLsizei, depth);
6163     paramBuffer.addValueParam("fixedSampleLocations", ParamType::TGLboolean, fixedSampleLocations);
6164     paramBuffer.addValueParam("memoryPacked", ParamType::TMemoryObjectID, memoryPacked);
6165     paramBuffer.addValueParam("offset", ParamType::TGLuint64, offset);
6166 
6167     return CallCapture(angle::EntryPoint::GLTexStorageMem3DMultisampleEXT, std::move(paramBuffer));
6168 }
6169 
CaptureImportMemoryFdEXT(const State & glState,bool isCallValid,MemoryObjectID memoryPacked,GLuint64 size,HandleType handleTypePacked,GLint fd)6170 CallCapture CaptureImportMemoryFdEXT(const State &glState,
6171                                      bool isCallValid,
6172                                      MemoryObjectID memoryPacked,
6173                                      GLuint64 size,
6174                                      HandleType handleTypePacked,
6175                                      GLint fd)
6176 {
6177     ParamBuffer paramBuffer;
6178 
6179     paramBuffer.addValueParam("memoryPacked", ParamType::TMemoryObjectID, memoryPacked);
6180     paramBuffer.addValueParam("size", ParamType::TGLuint64, size);
6181     paramBuffer.addValueParam("handleTypePacked", ParamType::THandleType, handleTypePacked);
6182     paramBuffer.addValueParam("fd", ParamType::TGLint, fd);
6183 
6184     return CallCapture(angle::EntryPoint::GLImportMemoryFdEXT, std::move(paramBuffer));
6185 }
6186 
CaptureMultiDrawArraysIndirectEXT(const State & glState,bool isCallValid,GLenum mode,const void * indirect,GLsizei drawcount,GLsizei stride)6187 CallCapture CaptureMultiDrawArraysIndirectEXT(const State &glState,
6188                                               bool isCallValid,
6189                                               GLenum mode,
6190                                               const void *indirect,
6191                                               GLsizei drawcount,
6192                                               GLsizei stride)
6193 {
6194     ParamBuffer paramBuffer;
6195 
6196     paramBuffer.addEnumParam("mode", GLenumGroup::PrimitiveType, ParamType::TGLenum, mode);
6197 
6198     if (isCallValid)
6199     {
6200         ParamCapture indirectParam("indirect", ParamType::TvoidConstPointer);
6201         InitParamValue(ParamType::TvoidConstPointer, indirect, &indirectParam.value);
6202         CaptureMultiDrawArraysIndirectEXT_indirect(glState, isCallValid, mode, indirect, drawcount,
6203                                                    stride, &indirectParam);
6204         paramBuffer.addParam(std::move(indirectParam));
6205     }
6206     else
6207     {
6208         ParamCapture indirectParam("indirect", ParamType::TvoidConstPointer);
6209         InitParamValue(ParamType::TvoidConstPointer, static_cast<const void *>(nullptr),
6210                        &indirectParam.value);
6211         paramBuffer.addParam(std::move(indirectParam));
6212     }
6213 
6214     paramBuffer.addValueParam("drawcount", ParamType::TGLsizei, drawcount);
6215     paramBuffer.addValueParam("stride", ParamType::TGLsizei, stride);
6216 
6217     return CallCapture(angle::EntryPoint::GLMultiDrawArraysIndirectEXT, std::move(paramBuffer));
6218 }
6219 
CaptureMultiDrawElementsIndirectEXT(const State & glState,bool isCallValid,GLenum mode,GLenum type,const void * indirect,GLsizei drawcount,GLsizei stride)6220 CallCapture CaptureMultiDrawElementsIndirectEXT(const State &glState,
6221                                                 bool isCallValid,
6222                                                 GLenum mode,
6223                                                 GLenum type,
6224                                                 const void *indirect,
6225                                                 GLsizei drawcount,
6226                                                 GLsizei stride)
6227 {
6228     ParamBuffer paramBuffer;
6229 
6230     paramBuffer.addEnumParam("mode", GLenumGroup::PrimitiveType, ParamType::TGLenum, mode);
6231     paramBuffer.addEnumParam("type", GLenumGroup::DrawElementsType, ParamType::TGLenum, type);
6232 
6233     if (isCallValid)
6234     {
6235         ParamCapture indirectParam("indirect", ParamType::TvoidConstPointer);
6236         InitParamValue(ParamType::TvoidConstPointer, indirect, &indirectParam.value);
6237         CaptureMultiDrawElementsIndirectEXT_indirect(glState, isCallValid, mode, type, indirect,
6238                                                      drawcount, stride, &indirectParam);
6239         paramBuffer.addParam(std::move(indirectParam));
6240     }
6241     else
6242     {
6243         ParamCapture indirectParam("indirect", ParamType::TvoidConstPointer);
6244         InitParamValue(ParamType::TvoidConstPointer, static_cast<const void *>(nullptr),
6245                        &indirectParam.value);
6246         paramBuffer.addParam(std::move(indirectParam));
6247     }
6248 
6249     paramBuffer.addValueParam("drawcount", ParamType::TGLsizei, drawcount);
6250     paramBuffer.addValueParam("stride", ParamType::TGLsizei, stride);
6251 
6252     return CallCapture(angle::EntryPoint::GLMultiDrawElementsIndirectEXT, std::move(paramBuffer));
6253 }
6254 
CaptureFramebufferTexture2DMultisampleEXT(const State & glState,bool isCallValid,GLenum target,GLenum attachment,TextureTarget textargetPacked,TextureID texturePacked,GLint level,GLsizei samples)6255 CallCapture CaptureFramebufferTexture2DMultisampleEXT(const State &glState,
6256                                                       bool isCallValid,
6257                                                       GLenum target,
6258                                                       GLenum attachment,
6259                                                       TextureTarget textargetPacked,
6260                                                       TextureID texturePacked,
6261                                                       GLint level,
6262                                                       GLsizei samples)
6263 {
6264     ParamBuffer paramBuffer;
6265 
6266     paramBuffer.addEnumParam("target", GLenumGroup::FramebufferTarget, ParamType::TGLenum, target);
6267     paramBuffer.addEnumParam("attachment", GLenumGroup::FramebufferAttachment, ParamType::TGLenum,
6268                              attachment);
6269     paramBuffer.addValueParam("textargetPacked", ParamType::TTextureTarget, textargetPacked);
6270     paramBuffer.addValueParam("texturePacked", ParamType::TTextureID, texturePacked);
6271     paramBuffer.addValueParam("level", ParamType::TGLint, level);
6272     paramBuffer.addValueParam("samples", ParamType::TGLsizei, samples);
6273 
6274     return CallCapture(angle::EntryPoint::GLFramebufferTexture2DMultisampleEXT,
6275                        std::move(paramBuffer));
6276 }
6277 
CaptureRenderbufferStorageMultisampleEXT(const State & glState,bool isCallValid,GLenum target,GLsizei samples,GLenum internalformat,GLsizei width,GLsizei height)6278 CallCapture CaptureRenderbufferStorageMultisampleEXT(const State &glState,
6279                                                      bool isCallValid,
6280                                                      GLenum target,
6281                                                      GLsizei samples,
6282                                                      GLenum internalformat,
6283                                                      GLsizei width,
6284                                                      GLsizei height)
6285 {
6286     ParamBuffer paramBuffer;
6287 
6288     paramBuffer.addEnumParam("target", GLenumGroup::RenderbufferTarget, ParamType::TGLenum, target);
6289     paramBuffer.addValueParam("samples", ParamType::TGLsizei, samples);
6290     paramBuffer.addEnumParam("internalformat", GLenumGroup::InternalFormat, ParamType::TGLenum,
6291                              internalformat);
6292     paramBuffer.addValueParam("width", ParamType::TGLsizei, width);
6293     paramBuffer.addValueParam("height", ParamType::TGLsizei, height);
6294 
6295     return CallCapture(angle::EntryPoint::GLRenderbufferStorageMultisampleEXT,
6296                        std::move(paramBuffer));
6297 }
6298 
CapturePrimitiveBoundingBoxEXT(const State & glState,bool isCallValid,GLfloat minX,GLfloat minY,GLfloat minZ,GLfloat minW,GLfloat maxX,GLfloat maxY,GLfloat maxZ,GLfloat maxW)6299 CallCapture CapturePrimitiveBoundingBoxEXT(const State &glState,
6300                                            bool isCallValid,
6301                                            GLfloat minX,
6302                                            GLfloat minY,
6303                                            GLfloat minZ,
6304                                            GLfloat minW,
6305                                            GLfloat maxX,
6306                                            GLfloat maxY,
6307                                            GLfloat maxZ,
6308                                            GLfloat maxW)
6309 {
6310     ParamBuffer paramBuffer;
6311 
6312     paramBuffer.addValueParam("minX", ParamType::TGLfloat, minX);
6313     paramBuffer.addValueParam("minY", ParamType::TGLfloat, minY);
6314     paramBuffer.addValueParam("minZ", ParamType::TGLfloat, minZ);
6315     paramBuffer.addValueParam("minW", ParamType::TGLfloat, minW);
6316     paramBuffer.addValueParam("maxX", ParamType::TGLfloat, maxX);
6317     paramBuffer.addValueParam("maxY", ParamType::TGLfloat, maxY);
6318     paramBuffer.addValueParam("maxZ", ParamType::TGLfloat, maxZ);
6319     paramBuffer.addValueParam("maxW", ParamType::TGLfloat, maxW);
6320 
6321     return CallCapture(angle::EntryPoint::GLPrimitiveBoundingBoxEXT, std::move(paramBuffer));
6322 }
6323 
CaptureGetGraphicsResetStatusEXT(const State & glState,bool isCallValid,GLenum returnValue)6324 CallCapture CaptureGetGraphicsResetStatusEXT(const State &glState,
6325                                              bool isCallValid,
6326                                              GLenum returnValue)
6327 {
6328     ParamBuffer paramBuffer;
6329 
6330     ParamCapture returnValueCapture("returnValue", ParamType::TGLenum);
6331     InitParamValue(ParamType::TGLenum, returnValue, &returnValueCapture.value);
6332     paramBuffer.addReturnValue(std::move(returnValueCapture));
6333 
6334     return CallCapture(angle::EntryPoint::GLGetGraphicsResetStatusEXT, std::move(paramBuffer));
6335 }
6336 
CaptureGetnUniformfvEXT(const State & glState,bool isCallValid,ShaderProgramID programPacked,UniformLocation locationPacked,GLsizei bufSize,GLfloat * params)6337 CallCapture CaptureGetnUniformfvEXT(const State &glState,
6338                                     bool isCallValid,
6339                                     ShaderProgramID programPacked,
6340                                     UniformLocation locationPacked,
6341                                     GLsizei bufSize,
6342                                     GLfloat *params)
6343 {
6344     ParamBuffer paramBuffer;
6345 
6346     paramBuffer.addValueParam("programPacked", ParamType::TShaderProgramID, programPacked);
6347     paramBuffer.addValueParam("locationPacked", ParamType::TUniformLocation, locationPacked);
6348     paramBuffer.addValueParam("bufSize", ParamType::TGLsizei, bufSize);
6349 
6350     if (isCallValid)
6351     {
6352         ParamCapture paramsParam("params", ParamType::TGLfloatPointer);
6353         InitParamValue(ParamType::TGLfloatPointer, params, &paramsParam.value);
6354         CaptureGetnUniformfvEXT_params(glState, isCallValid, programPacked, locationPacked, bufSize,
6355                                        params, &paramsParam);
6356         paramBuffer.addParam(std::move(paramsParam));
6357     }
6358     else
6359     {
6360         ParamCapture paramsParam("params", ParamType::TGLfloatPointer);
6361         InitParamValue(ParamType::TGLfloatPointer, static_cast<GLfloat *>(nullptr),
6362                        &paramsParam.value);
6363         paramBuffer.addParam(std::move(paramsParam));
6364     }
6365 
6366     return CallCapture(angle::EntryPoint::GLGetnUniformfvEXT, std::move(paramBuffer));
6367 }
6368 
CaptureGetnUniformivEXT(const State & glState,bool isCallValid,ShaderProgramID programPacked,UniformLocation locationPacked,GLsizei bufSize,GLint * params)6369 CallCapture CaptureGetnUniformivEXT(const State &glState,
6370                                     bool isCallValid,
6371                                     ShaderProgramID programPacked,
6372                                     UniformLocation locationPacked,
6373                                     GLsizei bufSize,
6374                                     GLint *params)
6375 {
6376     ParamBuffer paramBuffer;
6377 
6378     paramBuffer.addValueParam("programPacked", ParamType::TShaderProgramID, programPacked);
6379     paramBuffer.addValueParam("locationPacked", ParamType::TUniformLocation, locationPacked);
6380     paramBuffer.addValueParam("bufSize", ParamType::TGLsizei, bufSize);
6381 
6382     if (isCallValid)
6383     {
6384         ParamCapture paramsParam("params", ParamType::TGLintPointer);
6385         InitParamValue(ParamType::TGLintPointer, params, &paramsParam.value);
6386         CaptureGetnUniformivEXT_params(glState, isCallValid, programPacked, locationPacked, bufSize,
6387                                        params, &paramsParam);
6388         paramBuffer.addParam(std::move(paramsParam));
6389     }
6390     else
6391     {
6392         ParamCapture paramsParam("params", ParamType::TGLintPointer);
6393         InitParamValue(ParamType::TGLintPointer, static_cast<GLint *>(nullptr), &paramsParam.value);
6394         paramBuffer.addParam(std::move(paramsParam));
6395     }
6396 
6397     return CallCapture(angle::EntryPoint::GLGetnUniformivEXT, std::move(paramBuffer));
6398 }
6399 
CaptureReadnPixelsEXT(const State & glState,bool isCallValid,GLint x,GLint y,GLsizei width,GLsizei height,GLenum format,GLenum type,GLsizei bufSize,void * data)6400 CallCapture CaptureReadnPixelsEXT(const State &glState,
6401                                   bool isCallValid,
6402                                   GLint x,
6403                                   GLint y,
6404                                   GLsizei width,
6405                                   GLsizei height,
6406                                   GLenum format,
6407                                   GLenum type,
6408                                   GLsizei bufSize,
6409                                   void *data)
6410 {
6411     ParamBuffer paramBuffer;
6412 
6413     paramBuffer.addValueParam("x", ParamType::TGLint, x);
6414     paramBuffer.addValueParam("y", ParamType::TGLint, y);
6415     paramBuffer.addValueParam("width", ParamType::TGLsizei, width);
6416     paramBuffer.addValueParam("height", ParamType::TGLsizei, height);
6417     paramBuffer.addEnumParam("format", GLenumGroup::PixelFormat, ParamType::TGLenum, format);
6418     paramBuffer.addEnumParam("type", GLenumGroup::PixelType, ParamType::TGLenum, type);
6419     paramBuffer.addValueParam("bufSize", ParamType::TGLsizei, bufSize);
6420 
6421     if (isCallValid)
6422     {
6423         ParamCapture dataParam("data", ParamType::TvoidPointer);
6424         InitParamValue(ParamType::TvoidPointer, data, &dataParam.value);
6425         CaptureReadnPixelsEXT_data(glState, isCallValid, x, y, width, height, format, type, bufSize,
6426                                    data, &dataParam);
6427         paramBuffer.addParam(std::move(dataParam));
6428     }
6429     else
6430     {
6431         ParamCapture dataParam("data", ParamType::TvoidPointer);
6432         InitParamValue(ParamType::TvoidPointer, static_cast<void *>(nullptr), &dataParam.value);
6433         paramBuffer.addParam(std::move(dataParam));
6434     }
6435 
6436     return CallCapture(angle::EntryPoint::GLReadnPixelsEXT, std::move(paramBuffer));
6437 }
6438 
CaptureDeleteSemaphoresEXT(const State & glState,bool isCallValid,GLsizei n,const SemaphoreID * semaphoresPacked)6439 CallCapture CaptureDeleteSemaphoresEXT(const State &glState,
6440                                        bool isCallValid,
6441                                        GLsizei n,
6442                                        const SemaphoreID *semaphoresPacked)
6443 {
6444     ParamBuffer paramBuffer;
6445 
6446     paramBuffer.addValueParam("n", ParamType::TGLsizei, n);
6447 
6448     if (isCallValid)
6449     {
6450         ParamCapture semaphoresPackedParam("semaphoresPacked", ParamType::TSemaphoreIDConstPointer);
6451         InitParamValue(ParamType::TSemaphoreIDConstPointer, semaphoresPacked,
6452                        &semaphoresPackedParam.value);
6453         CaptureDeleteSemaphoresEXT_semaphoresPacked(glState, isCallValid, n, semaphoresPacked,
6454                                                     &semaphoresPackedParam);
6455         paramBuffer.addParam(std::move(semaphoresPackedParam));
6456     }
6457     else
6458     {
6459         ParamCapture semaphoresPackedParam("semaphoresPacked", ParamType::TSemaphoreIDConstPointer);
6460         InitParamValue(ParamType::TSemaphoreIDConstPointer,
6461                        static_cast<const SemaphoreID *>(nullptr), &semaphoresPackedParam.value);
6462         paramBuffer.addParam(std::move(semaphoresPackedParam));
6463     }
6464 
6465     return CallCapture(angle::EntryPoint::GLDeleteSemaphoresEXT, std::move(paramBuffer));
6466 }
6467 
CaptureGenSemaphoresEXT(const State & glState,bool isCallValid,GLsizei n,SemaphoreID * semaphoresPacked)6468 CallCapture CaptureGenSemaphoresEXT(const State &glState,
6469                                     bool isCallValid,
6470                                     GLsizei n,
6471                                     SemaphoreID *semaphoresPacked)
6472 {
6473     ParamBuffer paramBuffer;
6474 
6475     paramBuffer.addValueParam("n", ParamType::TGLsizei, n);
6476 
6477     if (isCallValid)
6478     {
6479         ParamCapture semaphoresPackedParam("semaphoresPacked", ParamType::TSemaphoreIDPointer);
6480         InitParamValue(ParamType::TSemaphoreIDPointer, semaphoresPacked,
6481                        &semaphoresPackedParam.value);
6482         CaptureGenSemaphoresEXT_semaphoresPacked(glState, isCallValid, n, semaphoresPacked,
6483                                                  &semaphoresPackedParam);
6484         paramBuffer.addParam(std::move(semaphoresPackedParam));
6485     }
6486     else
6487     {
6488         ParamCapture semaphoresPackedParam("semaphoresPacked", ParamType::TSemaphoreIDPointer);
6489         InitParamValue(ParamType::TSemaphoreIDPointer, static_cast<SemaphoreID *>(nullptr),
6490                        &semaphoresPackedParam.value);
6491         paramBuffer.addParam(std::move(semaphoresPackedParam));
6492     }
6493 
6494     return CallCapture(angle::EntryPoint::GLGenSemaphoresEXT, std::move(paramBuffer));
6495 }
6496 
CaptureGetSemaphoreParameterui64vEXT(const State & glState,bool isCallValid,SemaphoreID semaphorePacked,GLenum pname,GLuint64 * params)6497 CallCapture CaptureGetSemaphoreParameterui64vEXT(const State &glState,
6498                                                  bool isCallValid,
6499                                                  SemaphoreID semaphorePacked,
6500                                                  GLenum pname,
6501                                                  GLuint64 *params)
6502 {
6503     ParamBuffer paramBuffer;
6504 
6505     paramBuffer.addValueParam("semaphorePacked", ParamType::TSemaphoreID, semaphorePacked);
6506     paramBuffer.addEnumParam("pname", GLenumGroup::SemaphoreParameterName, ParamType::TGLenum,
6507                              pname);
6508 
6509     if (isCallValid)
6510     {
6511         ParamCapture paramsParam("params", ParamType::TGLuint64Pointer);
6512         InitParamValue(ParamType::TGLuint64Pointer, params, &paramsParam.value);
6513         CaptureGetSemaphoreParameterui64vEXT_params(glState, isCallValid, semaphorePacked, pname,
6514                                                     params, &paramsParam);
6515         paramBuffer.addParam(std::move(paramsParam));
6516     }
6517     else
6518     {
6519         ParamCapture paramsParam("params", ParamType::TGLuint64Pointer);
6520         InitParamValue(ParamType::TGLuint64Pointer, static_cast<GLuint64 *>(nullptr),
6521                        &paramsParam.value);
6522         paramBuffer.addParam(std::move(paramsParam));
6523     }
6524 
6525     return CallCapture(angle::EntryPoint::GLGetSemaphoreParameterui64vEXT, std::move(paramBuffer));
6526 }
6527 
CaptureIsSemaphoreEXT(const State & glState,bool isCallValid,SemaphoreID semaphorePacked,GLboolean returnValue)6528 CallCapture CaptureIsSemaphoreEXT(const State &glState,
6529                                   bool isCallValid,
6530                                   SemaphoreID semaphorePacked,
6531                                   GLboolean returnValue)
6532 {
6533     ParamBuffer paramBuffer;
6534 
6535     paramBuffer.addValueParam("semaphorePacked", ParamType::TSemaphoreID, semaphorePacked);
6536 
6537     ParamCapture returnValueCapture("returnValue", ParamType::TGLboolean);
6538     InitParamValue(ParamType::TGLboolean, returnValue, &returnValueCapture.value);
6539     paramBuffer.addReturnValue(std::move(returnValueCapture));
6540 
6541     return CallCapture(angle::EntryPoint::GLIsSemaphoreEXT, std::move(paramBuffer));
6542 }
6543 
CaptureSemaphoreParameterui64vEXT(const State & glState,bool isCallValid,SemaphoreID semaphorePacked,GLenum pname,const GLuint64 * params)6544 CallCapture CaptureSemaphoreParameterui64vEXT(const State &glState,
6545                                               bool isCallValid,
6546                                               SemaphoreID semaphorePacked,
6547                                               GLenum pname,
6548                                               const GLuint64 *params)
6549 {
6550     ParamBuffer paramBuffer;
6551 
6552     paramBuffer.addValueParam("semaphorePacked", ParamType::TSemaphoreID, semaphorePacked);
6553     paramBuffer.addEnumParam("pname", GLenumGroup::SemaphoreParameterName, ParamType::TGLenum,
6554                              pname);
6555 
6556     if (isCallValid)
6557     {
6558         ParamCapture paramsParam("params", ParamType::TGLuint64ConstPointer);
6559         InitParamValue(ParamType::TGLuint64ConstPointer, params, &paramsParam.value);
6560         CaptureSemaphoreParameterui64vEXT_params(glState, isCallValid, semaphorePacked, pname,
6561                                                  params, &paramsParam);
6562         paramBuffer.addParam(std::move(paramsParam));
6563     }
6564     else
6565     {
6566         ParamCapture paramsParam("params", ParamType::TGLuint64ConstPointer);
6567         InitParamValue(ParamType::TGLuint64ConstPointer, static_cast<const GLuint64 *>(nullptr),
6568                        &paramsParam.value);
6569         paramBuffer.addParam(std::move(paramsParam));
6570     }
6571 
6572     return CallCapture(angle::EntryPoint::GLSemaphoreParameterui64vEXT, std::move(paramBuffer));
6573 }
6574 
CaptureSignalSemaphoreEXT(const State & glState,bool isCallValid,SemaphoreID semaphorePacked,GLuint numBufferBarriers,const BufferID * buffersPacked,GLuint numTextureBarriers,const TextureID * texturesPacked,const GLenum * dstLayouts)6575 CallCapture CaptureSignalSemaphoreEXT(const State &glState,
6576                                       bool isCallValid,
6577                                       SemaphoreID semaphorePacked,
6578                                       GLuint numBufferBarriers,
6579                                       const BufferID *buffersPacked,
6580                                       GLuint numTextureBarriers,
6581                                       const TextureID *texturesPacked,
6582                                       const GLenum *dstLayouts)
6583 {
6584     ParamBuffer paramBuffer;
6585 
6586     paramBuffer.addValueParam("semaphorePacked", ParamType::TSemaphoreID, semaphorePacked);
6587     paramBuffer.addValueParam("numBufferBarriers", ParamType::TGLuint, numBufferBarriers);
6588 
6589     if (isCallValid)
6590     {
6591         ParamCapture buffersPackedParam("buffersPacked", ParamType::TBufferIDConstPointer);
6592         InitParamValue(ParamType::TBufferIDConstPointer, buffersPacked, &buffersPackedParam.value);
6593         CaptureSignalSemaphoreEXT_buffersPacked(
6594             glState, isCallValid, semaphorePacked, numBufferBarriers, buffersPacked,
6595             numTextureBarriers, texturesPacked, dstLayouts, &buffersPackedParam);
6596         paramBuffer.addParam(std::move(buffersPackedParam));
6597     }
6598     else
6599     {
6600         ParamCapture buffersPackedParam("buffersPacked", ParamType::TBufferIDConstPointer);
6601         InitParamValue(ParamType::TBufferIDConstPointer, static_cast<const BufferID *>(nullptr),
6602                        &buffersPackedParam.value);
6603         paramBuffer.addParam(std::move(buffersPackedParam));
6604     }
6605 
6606     paramBuffer.addValueParam("numTextureBarriers", ParamType::TGLuint, numTextureBarriers);
6607 
6608     if (isCallValid)
6609     {
6610         ParamCapture texturesPackedParam("texturesPacked", ParamType::TTextureIDConstPointer);
6611         InitParamValue(ParamType::TTextureIDConstPointer, texturesPacked,
6612                        &texturesPackedParam.value);
6613         CaptureSignalSemaphoreEXT_texturesPacked(
6614             glState, isCallValid, semaphorePacked, numBufferBarriers, buffersPacked,
6615             numTextureBarriers, texturesPacked, dstLayouts, &texturesPackedParam);
6616         paramBuffer.addParam(std::move(texturesPackedParam));
6617     }
6618     else
6619     {
6620         ParamCapture texturesPackedParam("texturesPacked", ParamType::TTextureIDConstPointer);
6621         InitParamValue(ParamType::TTextureIDConstPointer, static_cast<const TextureID *>(nullptr),
6622                        &texturesPackedParam.value);
6623         paramBuffer.addParam(std::move(texturesPackedParam));
6624     }
6625 
6626     if (isCallValid)
6627     {
6628         ParamCapture dstLayoutsParam("dstLayouts", ParamType::TGLenumConstPointer);
6629         InitParamValue(ParamType::TGLenumConstPointer, dstLayouts, &dstLayoutsParam.value);
6630         CaptureSignalSemaphoreEXT_dstLayouts(glState, isCallValid, semaphorePacked,
6631                                              numBufferBarriers, buffersPacked, numTextureBarriers,
6632                                              texturesPacked, dstLayouts, &dstLayoutsParam);
6633         paramBuffer.addParam(std::move(dstLayoutsParam));
6634     }
6635     else
6636     {
6637         ParamCapture dstLayoutsParam("dstLayouts", ParamType::TGLenumConstPointer);
6638         InitParamValue(ParamType::TGLenumConstPointer, static_cast<const GLenum *>(nullptr),
6639                        &dstLayoutsParam.value);
6640         paramBuffer.addParam(std::move(dstLayoutsParam));
6641     }
6642 
6643     return CallCapture(angle::EntryPoint::GLSignalSemaphoreEXT, std::move(paramBuffer));
6644 }
6645 
CaptureWaitSemaphoreEXT(const State & glState,bool isCallValid,SemaphoreID semaphorePacked,GLuint numBufferBarriers,const BufferID * buffersPacked,GLuint numTextureBarriers,const TextureID * texturesPacked,const GLenum * srcLayouts)6646 CallCapture CaptureWaitSemaphoreEXT(const State &glState,
6647                                     bool isCallValid,
6648                                     SemaphoreID semaphorePacked,
6649                                     GLuint numBufferBarriers,
6650                                     const BufferID *buffersPacked,
6651                                     GLuint numTextureBarriers,
6652                                     const TextureID *texturesPacked,
6653                                     const GLenum *srcLayouts)
6654 {
6655     ParamBuffer paramBuffer;
6656 
6657     paramBuffer.addValueParam("semaphorePacked", ParamType::TSemaphoreID, semaphorePacked);
6658     paramBuffer.addValueParam("numBufferBarriers", ParamType::TGLuint, numBufferBarriers);
6659 
6660     if (isCallValid)
6661     {
6662         ParamCapture buffersPackedParam("buffersPacked", ParamType::TBufferIDConstPointer);
6663         InitParamValue(ParamType::TBufferIDConstPointer, buffersPacked, &buffersPackedParam.value);
6664         CaptureWaitSemaphoreEXT_buffersPacked(glState, isCallValid, semaphorePacked,
6665                                               numBufferBarriers, buffersPacked, numTextureBarriers,
6666                                               texturesPacked, srcLayouts, &buffersPackedParam);
6667         paramBuffer.addParam(std::move(buffersPackedParam));
6668     }
6669     else
6670     {
6671         ParamCapture buffersPackedParam("buffersPacked", ParamType::TBufferIDConstPointer);
6672         InitParamValue(ParamType::TBufferIDConstPointer, static_cast<const BufferID *>(nullptr),
6673                        &buffersPackedParam.value);
6674         paramBuffer.addParam(std::move(buffersPackedParam));
6675     }
6676 
6677     paramBuffer.addValueParam("numTextureBarriers", ParamType::TGLuint, numTextureBarriers);
6678 
6679     if (isCallValid)
6680     {
6681         ParamCapture texturesPackedParam("texturesPacked", ParamType::TTextureIDConstPointer);
6682         InitParamValue(ParamType::TTextureIDConstPointer, texturesPacked,
6683                        &texturesPackedParam.value);
6684         CaptureWaitSemaphoreEXT_texturesPacked(glState, isCallValid, semaphorePacked,
6685                                                numBufferBarriers, buffersPacked, numTextureBarriers,
6686                                                texturesPacked, srcLayouts, &texturesPackedParam);
6687         paramBuffer.addParam(std::move(texturesPackedParam));
6688     }
6689     else
6690     {
6691         ParamCapture texturesPackedParam("texturesPacked", ParamType::TTextureIDConstPointer);
6692         InitParamValue(ParamType::TTextureIDConstPointer, static_cast<const TextureID *>(nullptr),
6693                        &texturesPackedParam.value);
6694         paramBuffer.addParam(std::move(texturesPackedParam));
6695     }
6696 
6697     if (isCallValid)
6698     {
6699         ParamCapture srcLayoutsParam("srcLayouts", ParamType::TGLenumConstPointer);
6700         InitParamValue(ParamType::TGLenumConstPointer, srcLayouts, &srcLayoutsParam.value);
6701         CaptureWaitSemaphoreEXT_srcLayouts(glState, isCallValid, semaphorePacked, numBufferBarriers,
6702                                            buffersPacked, numTextureBarriers, texturesPacked,
6703                                            srcLayouts, &srcLayoutsParam);
6704         paramBuffer.addParam(std::move(srcLayoutsParam));
6705     }
6706     else
6707     {
6708         ParamCapture srcLayoutsParam("srcLayouts", ParamType::TGLenumConstPointer);
6709         InitParamValue(ParamType::TGLenumConstPointer, static_cast<const GLenum *>(nullptr),
6710                        &srcLayoutsParam.value);
6711         paramBuffer.addParam(std::move(srcLayoutsParam));
6712     }
6713 
6714     return CallCapture(angle::EntryPoint::GLWaitSemaphoreEXT, std::move(paramBuffer));
6715 }
6716 
CaptureImportSemaphoreFdEXT(const State & glState,bool isCallValid,SemaphoreID semaphorePacked,HandleType handleTypePacked,GLint fd)6717 CallCapture CaptureImportSemaphoreFdEXT(const State &glState,
6718                                         bool isCallValid,
6719                                         SemaphoreID semaphorePacked,
6720                                         HandleType handleTypePacked,
6721                                         GLint fd)
6722 {
6723     ParamBuffer paramBuffer;
6724 
6725     paramBuffer.addValueParam("semaphorePacked", ParamType::TSemaphoreID, semaphorePacked);
6726     paramBuffer.addValueParam("handleTypePacked", ParamType::THandleType, handleTypePacked);
6727     paramBuffer.addValueParam("fd", ParamType::TGLint, fd);
6728 
6729     return CallCapture(angle::EntryPoint::GLImportSemaphoreFdEXT, std::move(paramBuffer));
6730 }
6731 
CaptureActiveShaderProgramEXT(const State & glState,bool isCallValid,ProgramPipelineID pipelinePacked,ShaderProgramID programPacked)6732 CallCapture CaptureActiveShaderProgramEXT(const State &glState,
6733                                           bool isCallValid,
6734                                           ProgramPipelineID pipelinePacked,
6735                                           ShaderProgramID programPacked)
6736 {
6737     ParamBuffer paramBuffer;
6738 
6739     paramBuffer.addValueParam("pipelinePacked", ParamType::TProgramPipelineID, pipelinePacked);
6740     paramBuffer.addValueParam("programPacked", ParamType::TShaderProgramID, programPacked);
6741 
6742     return CallCapture(angle::EntryPoint::GLActiveShaderProgramEXT, std::move(paramBuffer));
6743 }
6744 
CaptureBindProgramPipelineEXT(const State & glState,bool isCallValid,ProgramPipelineID pipelinePacked)6745 CallCapture CaptureBindProgramPipelineEXT(const State &glState,
6746                                           bool isCallValid,
6747                                           ProgramPipelineID pipelinePacked)
6748 {
6749     ParamBuffer paramBuffer;
6750 
6751     paramBuffer.addValueParam("pipelinePacked", ParamType::TProgramPipelineID, pipelinePacked);
6752 
6753     return CallCapture(angle::EntryPoint::GLBindProgramPipelineEXT, std::move(paramBuffer));
6754 }
6755 
CaptureCreateShaderProgramvEXT(const State & glState,bool isCallValid,ShaderType typePacked,GLsizei count,const GLchar ** strings,GLuint returnValue)6756 CallCapture CaptureCreateShaderProgramvEXT(const State &glState,
6757                                            bool isCallValid,
6758                                            ShaderType typePacked,
6759                                            GLsizei count,
6760                                            const GLchar **strings,
6761                                            GLuint returnValue)
6762 {
6763     ParamBuffer paramBuffer;
6764 
6765     paramBuffer.addValueParam("typePacked", ParamType::TShaderType, typePacked);
6766     paramBuffer.addValueParam("count", ParamType::TGLsizei, count);
6767 
6768     if (isCallValid)
6769     {
6770         ParamCapture stringsParam("strings", ParamType::TGLcharConstPointerPointer);
6771         InitParamValue(ParamType::TGLcharConstPointerPointer, strings, &stringsParam.value);
6772         CaptureCreateShaderProgramvEXT_strings(glState, isCallValid, typePacked, count, strings,
6773                                                &stringsParam);
6774         paramBuffer.addParam(std::move(stringsParam));
6775     }
6776     else
6777     {
6778         ParamCapture stringsParam("strings", ParamType::TGLcharConstPointerPointer);
6779         InitParamValue(ParamType::TGLcharConstPointerPointer, static_cast<const GLchar **>(nullptr),
6780                        &stringsParam.value);
6781         paramBuffer.addParam(std::move(stringsParam));
6782     }
6783 
6784     ParamCapture returnValueCapture("returnValue", ParamType::TGLuint);
6785     InitParamValue(ParamType::TGLuint, returnValue, &returnValueCapture.value);
6786     paramBuffer.addReturnValue(std::move(returnValueCapture));
6787 
6788     return CallCapture(angle::EntryPoint::GLCreateShaderProgramvEXT, std::move(paramBuffer));
6789 }
6790 
CaptureDeleteProgramPipelinesEXT(const State & glState,bool isCallValid,GLsizei n,const ProgramPipelineID * pipelinesPacked)6791 CallCapture CaptureDeleteProgramPipelinesEXT(const State &glState,
6792                                              bool isCallValid,
6793                                              GLsizei n,
6794                                              const ProgramPipelineID *pipelinesPacked)
6795 {
6796     ParamBuffer paramBuffer;
6797 
6798     paramBuffer.addValueParam("n", ParamType::TGLsizei, n);
6799 
6800     if (isCallValid)
6801     {
6802         ParamCapture pipelinesPackedParam("pipelinesPacked",
6803                                           ParamType::TProgramPipelineIDConstPointer);
6804         InitParamValue(ParamType::TProgramPipelineIDConstPointer, pipelinesPacked,
6805                        &pipelinesPackedParam.value);
6806         CaptureDeleteProgramPipelinesEXT_pipelinesPacked(glState, isCallValid, n, pipelinesPacked,
6807                                                          &pipelinesPackedParam);
6808         paramBuffer.addParam(std::move(pipelinesPackedParam));
6809     }
6810     else
6811     {
6812         ParamCapture pipelinesPackedParam("pipelinesPacked",
6813                                           ParamType::TProgramPipelineIDConstPointer);
6814         InitParamValue(ParamType::TProgramPipelineIDConstPointer,
6815                        static_cast<const ProgramPipelineID *>(nullptr),
6816                        &pipelinesPackedParam.value);
6817         paramBuffer.addParam(std::move(pipelinesPackedParam));
6818     }
6819 
6820     return CallCapture(angle::EntryPoint::GLDeleteProgramPipelinesEXT, std::move(paramBuffer));
6821 }
6822 
CaptureGenProgramPipelinesEXT(const State & glState,bool isCallValid,GLsizei n,ProgramPipelineID * pipelinesPacked)6823 CallCapture CaptureGenProgramPipelinesEXT(const State &glState,
6824                                           bool isCallValid,
6825                                           GLsizei n,
6826                                           ProgramPipelineID *pipelinesPacked)
6827 {
6828     ParamBuffer paramBuffer;
6829 
6830     paramBuffer.addValueParam("n", ParamType::TGLsizei, n);
6831 
6832     if (isCallValid)
6833     {
6834         ParamCapture pipelinesPackedParam("pipelinesPacked", ParamType::TProgramPipelineIDPointer);
6835         InitParamValue(ParamType::TProgramPipelineIDPointer, pipelinesPacked,
6836                        &pipelinesPackedParam.value);
6837         CaptureGenProgramPipelinesEXT_pipelinesPacked(glState, isCallValid, n, pipelinesPacked,
6838                                                       &pipelinesPackedParam);
6839         paramBuffer.addParam(std::move(pipelinesPackedParam));
6840     }
6841     else
6842     {
6843         ParamCapture pipelinesPackedParam("pipelinesPacked", ParamType::TProgramPipelineIDPointer);
6844         InitParamValue(ParamType::TProgramPipelineIDPointer,
6845                        static_cast<ProgramPipelineID *>(nullptr), &pipelinesPackedParam.value);
6846         paramBuffer.addParam(std::move(pipelinesPackedParam));
6847     }
6848 
6849     return CallCapture(angle::EntryPoint::GLGenProgramPipelinesEXT, std::move(paramBuffer));
6850 }
6851 
CaptureGetProgramPipelineInfoLogEXT(const State & glState,bool isCallValid,ProgramPipelineID pipelinePacked,GLsizei bufSize,GLsizei * length,GLchar * infoLog)6852 CallCapture CaptureGetProgramPipelineInfoLogEXT(const State &glState,
6853                                                 bool isCallValid,
6854                                                 ProgramPipelineID pipelinePacked,
6855                                                 GLsizei bufSize,
6856                                                 GLsizei *length,
6857                                                 GLchar *infoLog)
6858 {
6859     ParamBuffer paramBuffer;
6860 
6861     paramBuffer.addValueParam("pipelinePacked", ParamType::TProgramPipelineID, pipelinePacked);
6862     paramBuffer.addValueParam("bufSize", ParamType::TGLsizei, bufSize);
6863 
6864     if (isCallValid)
6865     {
6866         ParamCapture lengthParam("length", ParamType::TGLsizeiPointer);
6867         InitParamValue(ParamType::TGLsizeiPointer, length, &lengthParam.value);
6868         CaptureGetProgramPipelineInfoLogEXT_length(glState, isCallValid, pipelinePacked, bufSize,
6869                                                    length, infoLog, &lengthParam);
6870         paramBuffer.addParam(std::move(lengthParam));
6871     }
6872     else
6873     {
6874         ParamCapture lengthParam("length", ParamType::TGLsizeiPointer);
6875         InitParamValue(ParamType::TGLsizeiPointer, static_cast<GLsizei *>(nullptr),
6876                        &lengthParam.value);
6877         paramBuffer.addParam(std::move(lengthParam));
6878     }
6879 
6880     if (isCallValid)
6881     {
6882         ParamCapture infoLogParam("infoLog", ParamType::TGLcharPointer);
6883         InitParamValue(ParamType::TGLcharPointer, infoLog, &infoLogParam.value);
6884         CaptureGetProgramPipelineInfoLogEXT_infoLog(glState, isCallValid, pipelinePacked, bufSize,
6885                                                     length, infoLog, &infoLogParam);
6886         paramBuffer.addParam(std::move(infoLogParam));
6887     }
6888     else
6889     {
6890         ParamCapture infoLogParam("infoLog", ParamType::TGLcharPointer);
6891         InitParamValue(ParamType::TGLcharPointer, static_cast<GLchar *>(nullptr),
6892                        &infoLogParam.value);
6893         paramBuffer.addParam(std::move(infoLogParam));
6894     }
6895 
6896     return CallCapture(angle::EntryPoint::GLGetProgramPipelineInfoLogEXT, std::move(paramBuffer));
6897 }
6898 
CaptureGetProgramPipelineivEXT(const State & glState,bool isCallValid,ProgramPipelineID pipelinePacked,GLenum pname,GLint * params)6899 CallCapture CaptureGetProgramPipelineivEXT(const State &glState,
6900                                            bool isCallValid,
6901                                            ProgramPipelineID pipelinePacked,
6902                                            GLenum pname,
6903                                            GLint *params)
6904 {
6905     ParamBuffer paramBuffer;
6906 
6907     paramBuffer.addValueParam("pipelinePacked", ParamType::TProgramPipelineID, pipelinePacked);
6908     paramBuffer.addEnumParam("pname", GLenumGroup::PipelineParameterName, ParamType::TGLenum,
6909                              pname);
6910 
6911     if (isCallValid)
6912     {
6913         ParamCapture paramsParam("params", ParamType::TGLintPointer);
6914         InitParamValue(ParamType::TGLintPointer, params, &paramsParam.value);
6915         CaptureGetProgramPipelineivEXT_params(glState, isCallValid, pipelinePacked, pname, params,
6916                                               &paramsParam);
6917         paramBuffer.addParam(std::move(paramsParam));
6918     }
6919     else
6920     {
6921         ParamCapture paramsParam("params", ParamType::TGLintPointer);
6922         InitParamValue(ParamType::TGLintPointer, static_cast<GLint *>(nullptr), &paramsParam.value);
6923         paramBuffer.addParam(std::move(paramsParam));
6924     }
6925 
6926     return CallCapture(angle::EntryPoint::GLGetProgramPipelineivEXT, std::move(paramBuffer));
6927 }
6928 
CaptureIsProgramPipelineEXT(const State & glState,bool isCallValid,ProgramPipelineID pipelinePacked,GLboolean returnValue)6929 CallCapture CaptureIsProgramPipelineEXT(const State &glState,
6930                                         bool isCallValid,
6931                                         ProgramPipelineID pipelinePacked,
6932                                         GLboolean returnValue)
6933 {
6934     ParamBuffer paramBuffer;
6935 
6936     paramBuffer.addValueParam("pipelinePacked", ParamType::TProgramPipelineID, pipelinePacked);
6937 
6938     ParamCapture returnValueCapture("returnValue", ParamType::TGLboolean);
6939     InitParamValue(ParamType::TGLboolean, returnValue, &returnValueCapture.value);
6940     paramBuffer.addReturnValue(std::move(returnValueCapture));
6941 
6942     return CallCapture(angle::EntryPoint::GLIsProgramPipelineEXT, std::move(paramBuffer));
6943 }
6944 
CaptureProgramParameteriEXT(const State & glState,bool isCallValid,ShaderProgramID programPacked,GLenum pname,GLint value)6945 CallCapture CaptureProgramParameteriEXT(const State &glState,
6946                                         bool isCallValid,
6947                                         ShaderProgramID programPacked,
6948                                         GLenum pname,
6949                                         GLint value)
6950 {
6951     ParamBuffer paramBuffer;
6952 
6953     paramBuffer.addValueParam("programPacked", ParamType::TShaderProgramID, programPacked);
6954     paramBuffer.addEnumParam("pname", GLenumGroup::ProgramParameterPName, ParamType::TGLenum,
6955                              pname);
6956     paramBuffer.addValueParam("value", ParamType::TGLint, value);
6957 
6958     return CallCapture(angle::EntryPoint::GLProgramParameteriEXT, std::move(paramBuffer));
6959 }
6960 
CaptureProgramUniform1fEXT(const State & glState,bool isCallValid,ShaderProgramID programPacked,UniformLocation locationPacked,GLfloat v0)6961 CallCapture CaptureProgramUniform1fEXT(const State &glState,
6962                                        bool isCallValid,
6963                                        ShaderProgramID programPacked,
6964                                        UniformLocation locationPacked,
6965                                        GLfloat v0)
6966 {
6967     ParamBuffer paramBuffer;
6968 
6969     paramBuffer.addValueParam("programPacked", ParamType::TShaderProgramID, programPacked);
6970     paramBuffer.addValueParam("locationPacked", ParamType::TUniformLocation, locationPacked);
6971     paramBuffer.addValueParam("v0", ParamType::TGLfloat, v0);
6972 
6973     return CallCapture(angle::EntryPoint::GLProgramUniform1fEXT, std::move(paramBuffer));
6974 }
6975 
CaptureProgramUniform1fvEXT(const State & glState,bool isCallValid,ShaderProgramID programPacked,UniformLocation locationPacked,GLsizei count,const GLfloat * value)6976 CallCapture CaptureProgramUniform1fvEXT(const State &glState,
6977                                         bool isCallValid,
6978                                         ShaderProgramID programPacked,
6979                                         UniformLocation locationPacked,
6980                                         GLsizei count,
6981                                         const GLfloat *value)
6982 {
6983     ParamBuffer paramBuffer;
6984 
6985     paramBuffer.addValueParam("programPacked", ParamType::TShaderProgramID, programPacked);
6986     paramBuffer.addValueParam("locationPacked", ParamType::TUniformLocation, locationPacked);
6987     paramBuffer.addValueParam("count", ParamType::TGLsizei, count);
6988 
6989     if (isCallValid)
6990     {
6991         ParamCapture valueParam("value", ParamType::TGLfloatConstPointer);
6992         InitParamValue(ParamType::TGLfloatConstPointer, value, &valueParam.value);
6993         CaptureProgramUniform1fvEXT_value(glState, isCallValid, programPacked, locationPacked,
6994                                           count, value, &valueParam);
6995         paramBuffer.addParam(std::move(valueParam));
6996     }
6997     else
6998     {
6999         ParamCapture valueParam("value", ParamType::TGLfloatConstPointer);
7000         InitParamValue(ParamType::TGLfloatConstPointer, static_cast<const GLfloat *>(nullptr),
7001                        &valueParam.value);
7002         paramBuffer.addParam(std::move(valueParam));
7003     }
7004 
7005     return CallCapture(angle::EntryPoint::GLProgramUniform1fvEXT, std::move(paramBuffer));
7006 }
7007 
CaptureProgramUniform1iEXT(const State & glState,bool isCallValid,ShaderProgramID programPacked,UniformLocation locationPacked,GLint v0)7008 CallCapture CaptureProgramUniform1iEXT(const State &glState,
7009                                        bool isCallValid,
7010                                        ShaderProgramID programPacked,
7011                                        UniformLocation locationPacked,
7012                                        GLint v0)
7013 {
7014     ParamBuffer paramBuffer;
7015 
7016     paramBuffer.addValueParam("programPacked", ParamType::TShaderProgramID, programPacked);
7017     paramBuffer.addValueParam("locationPacked", ParamType::TUniformLocation, locationPacked);
7018     paramBuffer.addValueParam("v0", ParamType::TGLint, v0);
7019 
7020     return CallCapture(angle::EntryPoint::GLProgramUniform1iEXT, std::move(paramBuffer));
7021 }
7022 
CaptureProgramUniform1ivEXT(const State & glState,bool isCallValid,ShaderProgramID programPacked,UniformLocation locationPacked,GLsizei count,const GLint * value)7023 CallCapture CaptureProgramUniform1ivEXT(const State &glState,
7024                                         bool isCallValid,
7025                                         ShaderProgramID programPacked,
7026                                         UniformLocation locationPacked,
7027                                         GLsizei count,
7028                                         const GLint *value)
7029 {
7030     ParamBuffer paramBuffer;
7031 
7032     paramBuffer.addValueParam("programPacked", ParamType::TShaderProgramID, programPacked);
7033     paramBuffer.addValueParam("locationPacked", ParamType::TUniformLocation, locationPacked);
7034     paramBuffer.addValueParam("count", ParamType::TGLsizei, count);
7035 
7036     if (isCallValid)
7037     {
7038         ParamCapture valueParam("value", ParamType::TGLintConstPointer);
7039         InitParamValue(ParamType::TGLintConstPointer, value, &valueParam.value);
7040         CaptureProgramUniform1ivEXT_value(glState, isCallValid, programPacked, locationPacked,
7041                                           count, value, &valueParam);
7042         paramBuffer.addParam(std::move(valueParam));
7043     }
7044     else
7045     {
7046         ParamCapture valueParam("value", ParamType::TGLintConstPointer);
7047         InitParamValue(ParamType::TGLintConstPointer, static_cast<const GLint *>(nullptr),
7048                        &valueParam.value);
7049         paramBuffer.addParam(std::move(valueParam));
7050     }
7051 
7052     return CallCapture(angle::EntryPoint::GLProgramUniform1ivEXT, std::move(paramBuffer));
7053 }
7054 
CaptureProgramUniform1uiEXT(const State & glState,bool isCallValid,ShaderProgramID programPacked,UniformLocation locationPacked,GLuint v0)7055 CallCapture CaptureProgramUniform1uiEXT(const State &glState,
7056                                         bool isCallValid,
7057                                         ShaderProgramID programPacked,
7058                                         UniformLocation locationPacked,
7059                                         GLuint v0)
7060 {
7061     ParamBuffer paramBuffer;
7062 
7063     paramBuffer.addValueParam("programPacked", ParamType::TShaderProgramID, programPacked);
7064     paramBuffer.addValueParam("locationPacked", ParamType::TUniformLocation, locationPacked);
7065     paramBuffer.addValueParam("v0", ParamType::TGLuint, v0);
7066 
7067     return CallCapture(angle::EntryPoint::GLProgramUniform1uiEXT, std::move(paramBuffer));
7068 }
7069 
CaptureProgramUniform1uivEXT(const State & glState,bool isCallValid,ShaderProgramID programPacked,UniformLocation locationPacked,GLsizei count,const GLuint * value)7070 CallCapture CaptureProgramUniform1uivEXT(const State &glState,
7071                                          bool isCallValid,
7072                                          ShaderProgramID programPacked,
7073                                          UniformLocation locationPacked,
7074                                          GLsizei count,
7075                                          const GLuint *value)
7076 {
7077     ParamBuffer paramBuffer;
7078 
7079     paramBuffer.addValueParam("programPacked", ParamType::TShaderProgramID, programPacked);
7080     paramBuffer.addValueParam("locationPacked", ParamType::TUniformLocation, locationPacked);
7081     paramBuffer.addValueParam("count", ParamType::TGLsizei, count);
7082 
7083     if (isCallValid)
7084     {
7085         ParamCapture valueParam("value", ParamType::TGLuintConstPointer);
7086         InitParamValue(ParamType::TGLuintConstPointer, value, &valueParam.value);
7087         CaptureProgramUniform1uivEXT_value(glState, isCallValid, programPacked, locationPacked,
7088                                            count, value, &valueParam);
7089         paramBuffer.addParam(std::move(valueParam));
7090     }
7091     else
7092     {
7093         ParamCapture valueParam("value", ParamType::TGLuintConstPointer);
7094         InitParamValue(ParamType::TGLuintConstPointer, static_cast<const GLuint *>(nullptr),
7095                        &valueParam.value);
7096         paramBuffer.addParam(std::move(valueParam));
7097     }
7098 
7099     return CallCapture(angle::EntryPoint::GLProgramUniform1uivEXT, std::move(paramBuffer));
7100 }
7101 
CaptureProgramUniform2fEXT(const State & glState,bool isCallValid,ShaderProgramID programPacked,UniformLocation locationPacked,GLfloat v0,GLfloat v1)7102 CallCapture CaptureProgramUniform2fEXT(const State &glState,
7103                                        bool isCallValid,
7104                                        ShaderProgramID programPacked,
7105                                        UniformLocation locationPacked,
7106                                        GLfloat v0,
7107                                        GLfloat v1)
7108 {
7109     ParamBuffer paramBuffer;
7110 
7111     paramBuffer.addValueParam("programPacked", ParamType::TShaderProgramID, programPacked);
7112     paramBuffer.addValueParam("locationPacked", ParamType::TUniformLocation, locationPacked);
7113     paramBuffer.addValueParam("v0", ParamType::TGLfloat, v0);
7114     paramBuffer.addValueParam("v1", ParamType::TGLfloat, v1);
7115 
7116     return CallCapture(angle::EntryPoint::GLProgramUniform2fEXT, std::move(paramBuffer));
7117 }
7118 
CaptureProgramUniform2fvEXT(const State & glState,bool isCallValid,ShaderProgramID programPacked,UniformLocation locationPacked,GLsizei count,const GLfloat * value)7119 CallCapture CaptureProgramUniform2fvEXT(const State &glState,
7120                                         bool isCallValid,
7121                                         ShaderProgramID programPacked,
7122                                         UniformLocation locationPacked,
7123                                         GLsizei count,
7124                                         const GLfloat *value)
7125 {
7126     ParamBuffer paramBuffer;
7127 
7128     paramBuffer.addValueParam("programPacked", ParamType::TShaderProgramID, programPacked);
7129     paramBuffer.addValueParam("locationPacked", ParamType::TUniformLocation, locationPacked);
7130     paramBuffer.addValueParam("count", ParamType::TGLsizei, count);
7131 
7132     if (isCallValid)
7133     {
7134         ParamCapture valueParam("value", ParamType::TGLfloatConstPointer);
7135         InitParamValue(ParamType::TGLfloatConstPointer, value, &valueParam.value);
7136         CaptureProgramUniform2fvEXT_value(glState, isCallValid, programPacked, locationPacked,
7137                                           count, value, &valueParam);
7138         paramBuffer.addParam(std::move(valueParam));
7139     }
7140     else
7141     {
7142         ParamCapture valueParam("value", ParamType::TGLfloatConstPointer);
7143         InitParamValue(ParamType::TGLfloatConstPointer, static_cast<const GLfloat *>(nullptr),
7144                        &valueParam.value);
7145         paramBuffer.addParam(std::move(valueParam));
7146     }
7147 
7148     return CallCapture(angle::EntryPoint::GLProgramUniform2fvEXT, std::move(paramBuffer));
7149 }
7150 
CaptureProgramUniform2iEXT(const State & glState,bool isCallValid,ShaderProgramID programPacked,UniformLocation locationPacked,GLint v0,GLint v1)7151 CallCapture CaptureProgramUniform2iEXT(const State &glState,
7152                                        bool isCallValid,
7153                                        ShaderProgramID programPacked,
7154                                        UniformLocation locationPacked,
7155                                        GLint v0,
7156                                        GLint v1)
7157 {
7158     ParamBuffer paramBuffer;
7159 
7160     paramBuffer.addValueParam("programPacked", ParamType::TShaderProgramID, programPacked);
7161     paramBuffer.addValueParam("locationPacked", ParamType::TUniformLocation, locationPacked);
7162     paramBuffer.addValueParam("v0", ParamType::TGLint, v0);
7163     paramBuffer.addValueParam("v1", ParamType::TGLint, v1);
7164 
7165     return CallCapture(angle::EntryPoint::GLProgramUniform2iEXT, std::move(paramBuffer));
7166 }
7167 
CaptureProgramUniform2ivEXT(const State & glState,bool isCallValid,ShaderProgramID programPacked,UniformLocation locationPacked,GLsizei count,const GLint * value)7168 CallCapture CaptureProgramUniform2ivEXT(const State &glState,
7169                                         bool isCallValid,
7170                                         ShaderProgramID programPacked,
7171                                         UniformLocation locationPacked,
7172                                         GLsizei count,
7173                                         const GLint *value)
7174 {
7175     ParamBuffer paramBuffer;
7176 
7177     paramBuffer.addValueParam("programPacked", ParamType::TShaderProgramID, programPacked);
7178     paramBuffer.addValueParam("locationPacked", ParamType::TUniformLocation, locationPacked);
7179     paramBuffer.addValueParam("count", ParamType::TGLsizei, count);
7180 
7181     if (isCallValid)
7182     {
7183         ParamCapture valueParam("value", ParamType::TGLintConstPointer);
7184         InitParamValue(ParamType::TGLintConstPointer, value, &valueParam.value);
7185         CaptureProgramUniform2ivEXT_value(glState, isCallValid, programPacked, locationPacked,
7186                                           count, value, &valueParam);
7187         paramBuffer.addParam(std::move(valueParam));
7188     }
7189     else
7190     {
7191         ParamCapture valueParam("value", ParamType::TGLintConstPointer);
7192         InitParamValue(ParamType::TGLintConstPointer, static_cast<const GLint *>(nullptr),
7193                        &valueParam.value);
7194         paramBuffer.addParam(std::move(valueParam));
7195     }
7196 
7197     return CallCapture(angle::EntryPoint::GLProgramUniform2ivEXT, std::move(paramBuffer));
7198 }
7199 
CaptureProgramUniform2uiEXT(const State & glState,bool isCallValid,ShaderProgramID programPacked,UniformLocation locationPacked,GLuint v0,GLuint v1)7200 CallCapture CaptureProgramUniform2uiEXT(const State &glState,
7201                                         bool isCallValid,
7202                                         ShaderProgramID programPacked,
7203                                         UniformLocation locationPacked,
7204                                         GLuint v0,
7205                                         GLuint v1)
7206 {
7207     ParamBuffer paramBuffer;
7208 
7209     paramBuffer.addValueParam("programPacked", ParamType::TShaderProgramID, programPacked);
7210     paramBuffer.addValueParam("locationPacked", ParamType::TUniformLocation, locationPacked);
7211     paramBuffer.addValueParam("v0", ParamType::TGLuint, v0);
7212     paramBuffer.addValueParam("v1", ParamType::TGLuint, v1);
7213 
7214     return CallCapture(angle::EntryPoint::GLProgramUniform2uiEXT, std::move(paramBuffer));
7215 }
7216 
CaptureProgramUniform2uivEXT(const State & glState,bool isCallValid,ShaderProgramID programPacked,UniformLocation locationPacked,GLsizei count,const GLuint * value)7217 CallCapture CaptureProgramUniform2uivEXT(const State &glState,
7218                                          bool isCallValid,
7219                                          ShaderProgramID programPacked,
7220                                          UniformLocation locationPacked,
7221                                          GLsizei count,
7222                                          const GLuint *value)
7223 {
7224     ParamBuffer paramBuffer;
7225 
7226     paramBuffer.addValueParam("programPacked", ParamType::TShaderProgramID, programPacked);
7227     paramBuffer.addValueParam("locationPacked", ParamType::TUniformLocation, locationPacked);
7228     paramBuffer.addValueParam("count", ParamType::TGLsizei, count);
7229 
7230     if (isCallValid)
7231     {
7232         ParamCapture valueParam("value", ParamType::TGLuintConstPointer);
7233         InitParamValue(ParamType::TGLuintConstPointer, value, &valueParam.value);
7234         CaptureProgramUniform2uivEXT_value(glState, isCallValid, programPacked, locationPacked,
7235                                            count, value, &valueParam);
7236         paramBuffer.addParam(std::move(valueParam));
7237     }
7238     else
7239     {
7240         ParamCapture valueParam("value", ParamType::TGLuintConstPointer);
7241         InitParamValue(ParamType::TGLuintConstPointer, static_cast<const GLuint *>(nullptr),
7242                        &valueParam.value);
7243         paramBuffer.addParam(std::move(valueParam));
7244     }
7245 
7246     return CallCapture(angle::EntryPoint::GLProgramUniform2uivEXT, std::move(paramBuffer));
7247 }
7248 
CaptureProgramUniform3fEXT(const State & glState,bool isCallValid,ShaderProgramID programPacked,UniformLocation locationPacked,GLfloat v0,GLfloat v1,GLfloat v2)7249 CallCapture CaptureProgramUniform3fEXT(const State &glState,
7250                                        bool isCallValid,
7251                                        ShaderProgramID programPacked,
7252                                        UniformLocation locationPacked,
7253                                        GLfloat v0,
7254                                        GLfloat v1,
7255                                        GLfloat v2)
7256 {
7257     ParamBuffer paramBuffer;
7258 
7259     paramBuffer.addValueParam("programPacked", ParamType::TShaderProgramID, programPacked);
7260     paramBuffer.addValueParam("locationPacked", ParamType::TUniformLocation, locationPacked);
7261     paramBuffer.addValueParam("v0", ParamType::TGLfloat, v0);
7262     paramBuffer.addValueParam("v1", ParamType::TGLfloat, v1);
7263     paramBuffer.addValueParam("v2", ParamType::TGLfloat, v2);
7264 
7265     return CallCapture(angle::EntryPoint::GLProgramUniform3fEXT, std::move(paramBuffer));
7266 }
7267 
CaptureProgramUniform3fvEXT(const State & glState,bool isCallValid,ShaderProgramID programPacked,UniformLocation locationPacked,GLsizei count,const GLfloat * value)7268 CallCapture CaptureProgramUniform3fvEXT(const State &glState,
7269                                         bool isCallValid,
7270                                         ShaderProgramID programPacked,
7271                                         UniformLocation locationPacked,
7272                                         GLsizei count,
7273                                         const GLfloat *value)
7274 {
7275     ParamBuffer paramBuffer;
7276 
7277     paramBuffer.addValueParam("programPacked", ParamType::TShaderProgramID, programPacked);
7278     paramBuffer.addValueParam("locationPacked", ParamType::TUniformLocation, locationPacked);
7279     paramBuffer.addValueParam("count", ParamType::TGLsizei, count);
7280 
7281     if (isCallValid)
7282     {
7283         ParamCapture valueParam("value", ParamType::TGLfloatConstPointer);
7284         InitParamValue(ParamType::TGLfloatConstPointer, value, &valueParam.value);
7285         CaptureProgramUniform3fvEXT_value(glState, isCallValid, programPacked, locationPacked,
7286                                           count, value, &valueParam);
7287         paramBuffer.addParam(std::move(valueParam));
7288     }
7289     else
7290     {
7291         ParamCapture valueParam("value", ParamType::TGLfloatConstPointer);
7292         InitParamValue(ParamType::TGLfloatConstPointer, static_cast<const GLfloat *>(nullptr),
7293                        &valueParam.value);
7294         paramBuffer.addParam(std::move(valueParam));
7295     }
7296 
7297     return CallCapture(angle::EntryPoint::GLProgramUniform3fvEXT, std::move(paramBuffer));
7298 }
7299 
CaptureProgramUniform3iEXT(const State & glState,bool isCallValid,ShaderProgramID programPacked,UniformLocation locationPacked,GLint v0,GLint v1,GLint v2)7300 CallCapture CaptureProgramUniform3iEXT(const State &glState,
7301                                        bool isCallValid,
7302                                        ShaderProgramID programPacked,
7303                                        UniformLocation locationPacked,
7304                                        GLint v0,
7305                                        GLint v1,
7306                                        GLint v2)
7307 {
7308     ParamBuffer paramBuffer;
7309 
7310     paramBuffer.addValueParam("programPacked", ParamType::TShaderProgramID, programPacked);
7311     paramBuffer.addValueParam("locationPacked", ParamType::TUniformLocation, locationPacked);
7312     paramBuffer.addValueParam("v0", ParamType::TGLint, v0);
7313     paramBuffer.addValueParam("v1", ParamType::TGLint, v1);
7314     paramBuffer.addValueParam("v2", ParamType::TGLint, v2);
7315 
7316     return CallCapture(angle::EntryPoint::GLProgramUniform3iEXT, std::move(paramBuffer));
7317 }
7318 
CaptureProgramUniform3ivEXT(const State & glState,bool isCallValid,ShaderProgramID programPacked,UniformLocation locationPacked,GLsizei count,const GLint * value)7319 CallCapture CaptureProgramUniform3ivEXT(const State &glState,
7320                                         bool isCallValid,
7321                                         ShaderProgramID programPacked,
7322                                         UniformLocation locationPacked,
7323                                         GLsizei count,
7324                                         const GLint *value)
7325 {
7326     ParamBuffer paramBuffer;
7327 
7328     paramBuffer.addValueParam("programPacked", ParamType::TShaderProgramID, programPacked);
7329     paramBuffer.addValueParam("locationPacked", ParamType::TUniformLocation, locationPacked);
7330     paramBuffer.addValueParam("count", ParamType::TGLsizei, count);
7331 
7332     if (isCallValid)
7333     {
7334         ParamCapture valueParam("value", ParamType::TGLintConstPointer);
7335         InitParamValue(ParamType::TGLintConstPointer, value, &valueParam.value);
7336         CaptureProgramUniform3ivEXT_value(glState, isCallValid, programPacked, locationPacked,
7337                                           count, value, &valueParam);
7338         paramBuffer.addParam(std::move(valueParam));
7339     }
7340     else
7341     {
7342         ParamCapture valueParam("value", ParamType::TGLintConstPointer);
7343         InitParamValue(ParamType::TGLintConstPointer, static_cast<const GLint *>(nullptr),
7344                        &valueParam.value);
7345         paramBuffer.addParam(std::move(valueParam));
7346     }
7347 
7348     return CallCapture(angle::EntryPoint::GLProgramUniform3ivEXT, std::move(paramBuffer));
7349 }
7350 
CaptureProgramUniform3uiEXT(const State & glState,bool isCallValid,ShaderProgramID programPacked,UniformLocation locationPacked,GLuint v0,GLuint v1,GLuint v2)7351 CallCapture CaptureProgramUniform3uiEXT(const State &glState,
7352                                         bool isCallValid,
7353                                         ShaderProgramID programPacked,
7354                                         UniformLocation locationPacked,
7355                                         GLuint v0,
7356                                         GLuint v1,
7357                                         GLuint v2)
7358 {
7359     ParamBuffer paramBuffer;
7360 
7361     paramBuffer.addValueParam("programPacked", ParamType::TShaderProgramID, programPacked);
7362     paramBuffer.addValueParam("locationPacked", ParamType::TUniformLocation, locationPacked);
7363     paramBuffer.addValueParam("v0", ParamType::TGLuint, v0);
7364     paramBuffer.addValueParam("v1", ParamType::TGLuint, v1);
7365     paramBuffer.addValueParam("v2", ParamType::TGLuint, v2);
7366 
7367     return CallCapture(angle::EntryPoint::GLProgramUniform3uiEXT, std::move(paramBuffer));
7368 }
7369 
CaptureProgramUniform3uivEXT(const State & glState,bool isCallValid,ShaderProgramID programPacked,UniformLocation locationPacked,GLsizei count,const GLuint * value)7370 CallCapture CaptureProgramUniform3uivEXT(const State &glState,
7371                                          bool isCallValid,
7372                                          ShaderProgramID programPacked,
7373                                          UniformLocation locationPacked,
7374                                          GLsizei count,
7375                                          const GLuint *value)
7376 {
7377     ParamBuffer paramBuffer;
7378 
7379     paramBuffer.addValueParam("programPacked", ParamType::TShaderProgramID, programPacked);
7380     paramBuffer.addValueParam("locationPacked", ParamType::TUniformLocation, locationPacked);
7381     paramBuffer.addValueParam("count", ParamType::TGLsizei, count);
7382 
7383     if (isCallValid)
7384     {
7385         ParamCapture valueParam("value", ParamType::TGLuintConstPointer);
7386         InitParamValue(ParamType::TGLuintConstPointer, value, &valueParam.value);
7387         CaptureProgramUniform3uivEXT_value(glState, isCallValid, programPacked, locationPacked,
7388                                            count, value, &valueParam);
7389         paramBuffer.addParam(std::move(valueParam));
7390     }
7391     else
7392     {
7393         ParamCapture valueParam("value", ParamType::TGLuintConstPointer);
7394         InitParamValue(ParamType::TGLuintConstPointer, static_cast<const GLuint *>(nullptr),
7395                        &valueParam.value);
7396         paramBuffer.addParam(std::move(valueParam));
7397     }
7398 
7399     return CallCapture(angle::EntryPoint::GLProgramUniform3uivEXT, std::move(paramBuffer));
7400 }
7401 
CaptureProgramUniform4fEXT(const State & glState,bool isCallValid,ShaderProgramID programPacked,UniformLocation locationPacked,GLfloat v0,GLfloat v1,GLfloat v2,GLfloat v3)7402 CallCapture CaptureProgramUniform4fEXT(const State &glState,
7403                                        bool isCallValid,
7404                                        ShaderProgramID programPacked,
7405                                        UniformLocation locationPacked,
7406                                        GLfloat v0,
7407                                        GLfloat v1,
7408                                        GLfloat v2,
7409                                        GLfloat v3)
7410 {
7411     ParamBuffer paramBuffer;
7412 
7413     paramBuffer.addValueParam("programPacked", ParamType::TShaderProgramID, programPacked);
7414     paramBuffer.addValueParam("locationPacked", ParamType::TUniformLocation, locationPacked);
7415     paramBuffer.addValueParam("v0", ParamType::TGLfloat, v0);
7416     paramBuffer.addValueParam("v1", ParamType::TGLfloat, v1);
7417     paramBuffer.addValueParam("v2", ParamType::TGLfloat, v2);
7418     paramBuffer.addValueParam("v3", ParamType::TGLfloat, v3);
7419 
7420     return CallCapture(angle::EntryPoint::GLProgramUniform4fEXT, std::move(paramBuffer));
7421 }
7422 
CaptureProgramUniform4fvEXT(const State & glState,bool isCallValid,ShaderProgramID programPacked,UniformLocation locationPacked,GLsizei count,const GLfloat * value)7423 CallCapture CaptureProgramUniform4fvEXT(const State &glState,
7424                                         bool isCallValid,
7425                                         ShaderProgramID programPacked,
7426                                         UniformLocation locationPacked,
7427                                         GLsizei count,
7428                                         const GLfloat *value)
7429 {
7430     ParamBuffer paramBuffer;
7431 
7432     paramBuffer.addValueParam("programPacked", ParamType::TShaderProgramID, programPacked);
7433     paramBuffer.addValueParam("locationPacked", ParamType::TUniformLocation, locationPacked);
7434     paramBuffer.addValueParam("count", ParamType::TGLsizei, count);
7435 
7436     if (isCallValid)
7437     {
7438         ParamCapture valueParam("value", ParamType::TGLfloatConstPointer);
7439         InitParamValue(ParamType::TGLfloatConstPointer, value, &valueParam.value);
7440         CaptureProgramUniform4fvEXT_value(glState, isCallValid, programPacked, locationPacked,
7441                                           count, value, &valueParam);
7442         paramBuffer.addParam(std::move(valueParam));
7443     }
7444     else
7445     {
7446         ParamCapture valueParam("value", ParamType::TGLfloatConstPointer);
7447         InitParamValue(ParamType::TGLfloatConstPointer, static_cast<const GLfloat *>(nullptr),
7448                        &valueParam.value);
7449         paramBuffer.addParam(std::move(valueParam));
7450     }
7451 
7452     return CallCapture(angle::EntryPoint::GLProgramUniform4fvEXT, std::move(paramBuffer));
7453 }
7454 
CaptureProgramUniform4iEXT(const State & glState,bool isCallValid,ShaderProgramID programPacked,UniformLocation locationPacked,GLint v0,GLint v1,GLint v2,GLint v3)7455 CallCapture CaptureProgramUniform4iEXT(const State &glState,
7456                                        bool isCallValid,
7457                                        ShaderProgramID programPacked,
7458                                        UniformLocation locationPacked,
7459                                        GLint v0,
7460                                        GLint v1,
7461                                        GLint v2,
7462                                        GLint v3)
7463 {
7464     ParamBuffer paramBuffer;
7465 
7466     paramBuffer.addValueParam("programPacked", ParamType::TShaderProgramID, programPacked);
7467     paramBuffer.addValueParam("locationPacked", ParamType::TUniformLocation, locationPacked);
7468     paramBuffer.addValueParam("v0", ParamType::TGLint, v0);
7469     paramBuffer.addValueParam("v1", ParamType::TGLint, v1);
7470     paramBuffer.addValueParam("v2", ParamType::TGLint, v2);
7471     paramBuffer.addValueParam("v3", ParamType::TGLint, v3);
7472 
7473     return CallCapture(angle::EntryPoint::GLProgramUniform4iEXT, std::move(paramBuffer));
7474 }
7475 
CaptureProgramUniform4ivEXT(const State & glState,bool isCallValid,ShaderProgramID programPacked,UniformLocation locationPacked,GLsizei count,const GLint * value)7476 CallCapture CaptureProgramUniform4ivEXT(const State &glState,
7477                                         bool isCallValid,
7478                                         ShaderProgramID programPacked,
7479                                         UniformLocation locationPacked,
7480                                         GLsizei count,
7481                                         const GLint *value)
7482 {
7483     ParamBuffer paramBuffer;
7484 
7485     paramBuffer.addValueParam("programPacked", ParamType::TShaderProgramID, programPacked);
7486     paramBuffer.addValueParam("locationPacked", ParamType::TUniformLocation, locationPacked);
7487     paramBuffer.addValueParam("count", ParamType::TGLsizei, count);
7488 
7489     if (isCallValid)
7490     {
7491         ParamCapture valueParam("value", ParamType::TGLintConstPointer);
7492         InitParamValue(ParamType::TGLintConstPointer, value, &valueParam.value);
7493         CaptureProgramUniform4ivEXT_value(glState, isCallValid, programPacked, locationPacked,
7494                                           count, value, &valueParam);
7495         paramBuffer.addParam(std::move(valueParam));
7496     }
7497     else
7498     {
7499         ParamCapture valueParam("value", ParamType::TGLintConstPointer);
7500         InitParamValue(ParamType::TGLintConstPointer, static_cast<const GLint *>(nullptr),
7501                        &valueParam.value);
7502         paramBuffer.addParam(std::move(valueParam));
7503     }
7504 
7505     return CallCapture(angle::EntryPoint::GLProgramUniform4ivEXT, std::move(paramBuffer));
7506 }
7507 
CaptureProgramUniform4uiEXT(const State & glState,bool isCallValid,ShaderProgramID programPacked,UniformLocation locationPacked,GLuint v0,GLuint v1,GLuint v2,GLuint v3)7508 CallCapture CaptureProgramUniform4uiEXT(const State &glState,
7509                                         bool isCallValid,
7510                                         ShaderProgramID programPacked,
7511                                         UniformLocation locationPacked,
7512                                         GLuint v0,
7513                                         GLuint v1,
7514                                         GLuint v2,
7515                                         GLuint v3)
7516 {
7517     ParamBuffer paramBuffer;
7518 
7519     paramBuffer.addValueParam("programPacked", ParamType::TShaderProgramID, programPacked);
7520     paramBuffer.addValueParam("locationPacked", ParamType::TUniformLocation, locationPacked);
7521     paramBuffer.addValueParam("v0", ParamType::TGLuint, v0);
7522     paramBuffer.addValueParam("v1", ParamType::TGLuint, v1);
7523     paramBuffer.addValueParam("v2", ParamType::TGLuint, v2);
7524     paramBuffer.addValueParam("v3", ParamType::TGLuint, v3);
7525 
7526     return CallCapture(angle::EntryPoint::GLProgramUniform4uiEXT, std::move(paramBuffer));
7527 }
7528 
CaptureProgramUniform4uivEXT(const State & glState,bool isCallValid,ShaderProgramID programPacked,UniformLocation locationPacked,GLsizei count,const GLuint * value)7529 CallCapture CaptureProgramUniform4uivEXT(const State &glState,
7530                                          bool isCallValid,
7531                                          ShaderProgramID programPacked,
7532                                          UniformLocation locationPacked,
7533                                          GLsizei count,
7534                                          const GLuint *value)
7535 {
7536     ParamBuffer paramBuffer;
7537 
7538     paramBuffer.addValueParam("programPacked", ParamType::TShaderProgramID, programPacked);
7539     paramBuffer.addValueParam("locationPacked", ParamType::TUniformLocation, locationPacked);
7540     paramBuffer.addValueParam("count", ParamType::TGLsizei, count);
7541 
7542     if (isCallValid)
7543     {
7544         ParamCapture valueParam("value", ParamType::TGLuintConstPointer);
7545         InitParamValue(ParamType::TGLuintConstPointer, value, &valueParam.value);
7546         CaptureProgramUniform4uivEXT_value(glState, isCallValid, programPacked, locationPacked,
7547                                            count, value, &valueParam);
7548         paramBuffer.addParam(std::move(valueParam));
7549     }
7550     else
7551     {
7552         ParamCapture valueParam("value", ParamType::TGLuintConstPointer);
7553         InitParamValue(ParamType::TGLuintConstPointer, static_cast<const GLuint *>(nullptr),
7554                        &valueParam.value);
7555         paramBuffer.addParam(std::move(valueParam));
7556     }
7557 
7558     return CallCapture(angle::EntryPoint::GLProgramUniform4uivEXT, std::move(paramBuffer));
7559 }
7560 
CaptureProgramUniformMatrix2fvEXT(const State & glState,bool isCallValid,ShaderProgramID programPacked,UniformLocation locationPacked,GLsizei count,GLboolean transpose,const GLfloat * value)7561 CallCapture CaptureProgramUniformMatrix2fvEXT(const State &glState,
7562                                               bool isCallValid,
7563                                               ShaderProgramID programPacked,
7564                                               UniformLocation locationPacked,
7565                                               GLsizei count,
7566                                               GLboolean transpose,
7567                                               const GLfloat *value)
7568 {
7569     ParamBuffer paramBuffer;
7570 
7571     paramBuffer.addValueParam("programPacked", ParamType::TShaderProgramID, programPacked);
7572     paramBuffer.addValueParam("locationPacked", ParamType::TUniformLocation, locationPacked);
7573     paramBuffer.addValueParam("count", ParamType::TGLsizei, count);
7574     paramBuffer.addValueParam("transpose", ParamType::TGLboolean, transpose);
7575 
7576     if (isCallValid)
7577     {
7578         ParamCapture valueParam("value", ParamType::TGLfloatConstPointer);
7579         InitParamValue(ParamType::TGLfloatConstPointer, value, &valueParam.value);
7580         CaptureProgramUniformMatrix2fvEXT_value(glState, isCallValid, programPacked, locationPacked,
7581                                                 count, transpose, value, &valueParam);
7582         paramBuffer.addParam(std::move(valueParam));
7583     }
7584     else
7585     {
7586         ParamCapture valueParam("value", ParamType::TGLfloatConstPointer);
7587         InitParamValue(ParamType::TGLfloatConstPointer, static_cast<const GLfloat *>(nullptr),
7588                        &valueParam.value);
7589         paramBuffer.addParam(std::move(valueParam));
7590     }
7591 
7592     return CallCapture(angle::EntryPoint::GLProgramUniformMatrix2fvEXT, std::move(paramBuffer));
7593 }
7594 
CaptureProgramUniformMatrix2x3fvEXT(const State & glState,bool isCallValid,ShaderProgramID programPacked,UniformLocation locationPacked,GLsizei count,GLboolean transpose,const GLfloat * value)7595 CallCapture CaptureProgramUniformMatrix2x3fvEXT(const State &glState,
7596                                                 bool isCallValid,
7597                                                 ShaderProgramID programPacked,
7598                                                 UniformLocation locationPacked,
7599                                                 GLsizei count,
7600                                                 GLboolean transpose,
7601                                                 const GLfloat *value)
7602 {
7603     ParamBuffer paramBuffer;
7604 
7605     paramBuffer.addValueParam("programPacked", ParamType::TShaderProgramID, programPacked);
7606     paramBuffer.addValueParam("locationPacked", ParamType::TUniformLocation, locationPacked);
7607     paramBuffer.addValueParam("count", ParamType::TGLsizei, count);
7608     paramBuffer.addValueParam("transpose", ParamType::TGLboolean, transpose);
7609 
7610     if (isCallValid)
7611     {
7612         ParamCapture valueParam("value", ParamType::TGLfloatConstPointer);
7613         InitParamValue(ParamType::TGLfloatConstPointer, value, &valueParam.value);
7614         CaptureProgramUniformMatrix2x3fvEXT_value(glState, isCallValid, programPacked,
7615                                                   locationPacked, count, transpose, value,
7616                                                   &valueParam);
7617         paramBuffer.addParam(std::move(valueParam));
7618     }
7619     else
7620     {
7621         ParamCapture valueParam("value", ParamType::TGLfloatConstPointer);
7622         InitParamValue(ParamType::TGLfloatConstPointer, static_cast<const GLfloat *>(nullptr),
7623                        &valueParam.value);
7624         paramBuffer.addParam(std::move(valueParam));
7625     }
7626 
7627     return CallCapture(angle::EntryPoint::GLProgramUniformMatrix2x3fvEXT, std::move(paramBuffer));
7628 }
7629 
CaptureProgramUniformMatrix2x4fvEXT(const State & glState,bool isCallValid,ShaderProgramID programPacked,UniformLocation locationPacked,GLsizei count,GLboolean transpose,const GLfloat * value)7630 CallCapture CaptureProgramUniformMatrix2x4fvEXT(const State &glState,
7631                                                 bool isCallValid,
7632                                                 ShaderProgramID programPacked,
7633                                                 UniformLocation locationPacked,
7634                                                 GLsizei count,
7635                                                 GLboolean transpose,
7636                                                 const GLfloat *value)
7637 {
7638     ParamBuffer paramBuffer;
7639 
7640     paramBuffer.addValueParam("programPacked", ParamType::TShaderProgramID, programPacked);
7641     paramBuffer.addValueParam("locationPacked", ParamType::TUniformLocation, locationPacked);
7642     paramBuffer.addValueParam("count", ParamType::TGLsizei, count);
7643     paramBuffer.addValueParam("transpose", ParamType::TGLboolean, transpose);
7644 
7645     if (isCallValid)
7646     {
7647         ParamCapture valueParam("value", ParamType::TGLfloatConstPointer);
7648         InitParamValue(ParamType::TGLfloatConstPointer, value, &valueParam.value);
7649         CaptureProgramUniformMatrix2x4fvEXT_value(glState, isCallValid, programPacked,
7650                                                   locationPacked, count, transpose, value,
7651                                                   &valueParam);
7652         paramBuffer.addParam(std::move(valueParam));
7653     }
7654     else
7655     {
7656         ParamCapture valueParam("value", ParamType::TGLfloatConstPointer);
7657         InitParamValue(ParamType::TGLfloatConstPointer, static_cast<const GLfloat *>(nullptr),
7658                        &valueParam.value);
7659         paramBuffer.addParam(std::move(valueParam));
7660     }
7661 
7662     return CallCapture(angle::EntryPoint::GLProgramUniformMatrix2x4fvEXT, std::move(paramBuffer));
7663 }
7664 
CaptureProgramUniformMatrix3fvEXT(const State & glState,bool isCallValid,ShaderProgramID programPacked,UniformLocation locationPacked,GLsizei count,GLboolean transpose,const GLfloat * value)7665 CallCapture CaptureProgramUniformMatrix3fvEXT(const State &glState,
7666                                               bool isCallValid,
7667                                               ShaderProgramID programPacked,
7668                                               UniformLocation locationPacked,
7669                                               GLsizei count,
7670                                               GLboolean transpose,
7671                                               const GLfloat *value)
7672 {
7673     ParamBuffer paramBuffer;
7674 
7675     paramBuffer.addValueParam("programPacked", ParamType::TShaderProgramID, programPacked);
7676     paramBuffer.addValueParam("locationPacked", ParamType::TUniformLocation, locationPacked);
7677     paramBuffer.addValueParam("count", ParamType::TGLsizei, count);
7678     paramBuffer.addValueParam("transpose", ParamType::TGLboolean, transpose);
7679 
7680     if (isCallValid)
7681     {
7682         ParamCapture valueParam("value", ParamType::TGLfloatConstPointer);
7683         InitParamValue(ParamType::TGLfloatConstPointer, value, &valueParam.value);
7684         CaptureProgramUniformMatrix3fvEXT_value(glState, isCallValid, programPacked, locationPacked,
7685                                                 count, transpose, value, &valueParam);
7686         paramBuffer.addParam(std::move(valueParam));
7687     }
7688     else
7689     {
7690         ParamCapture valueParam("value", ParamType::TGLfloatConstPointer);
7691         InitParamValue(ParamType::TGLfloatConstPointer, static_cast<const GLfloat *>(nullptr),
7692                        &valueParam.value);
7693         paramBuffer.addParam(std::move(valueParam));
7694     }
7695 
7696     return CallCapture(angle::EntryPoint::GLProgramUniformMatrix3fvEXT, std::move(paramBuffer));
7697 }
7698 
CaptureProgramUniformMatrix3x2fvEXT(const State & glState,bool isCallValid,ShaderProgramID programPacked,UniformLocation locationPacked,GLsizei count,GLboolean transpose,const GLfloat * value)7699 CallCapture CaptureProgramUniformMatrix3x2fvEXT(const State &glState,
7700                                                 bool isCallValid,
7701                                                 ShaderProgramID programPacked,
7702                                                 UniformLocation locationPacked,
7703                                                 GLsizei count,
7704                                                 GLboolean transpose,
7705                                                 const GLfloat *value)
7706 {
7707     ParamBuffer paramBuffer;
7708 
7709     paramBuffer.addValueParam("programPacked", ParamType::TShaderProgramID, programPacked);
7710     paramBuffer.addValueParam("locationPacked", ParamType::TUniformLocation, locationPacked);
7711     paramBuffer.addValueParam("count", ParamType::TGLsizei, count);
7712     paramBuffer.addValueParam("transpose", ParamType::TGLboolean, transpose);
7713 
7714     if (isCallValid)
7715     {
7716         ParamCapture valueParam("value", ParamType::TGLfloatConstPointer);
7717         InitParamValue(ParamType::TGLfloatConstPointer, value, &valueParam.value);
7718         CaptureProgramUniformMatrix3x2fvEXT_value(glState, isCallValid, programPacked,
7719                                                   locationPacked, count, transpose, value,
7720                                                   &valueParam);
7721         paramBuffer.addParam(std::move(valueParam));
7722     }
7723     else
7724     {
7725         ParamCapture valueParam("value", ParamType::TGLfloatConstPointer);
7726         InitParamValue(ParamType::TGLfloatConstPointer, static_cast<const GLfloat *>(nullptr),
7727                        &valueParam.value);
7728         paramBuffer.addParam(std::move(valueParam));
7729     }
7730 
7731     return CallCapture(angle::EntryPoint::GLProgramUniformMatrix3x2fvEXT, std::move(paramBuffer));
7732 }
7733 
CaptureProgramUniformMatrix3x4fvEXT(const State & glState,bool isCallValid,ShaderProgramID programPacked,UniformLocation locationPacked,GLsizei count,GLboolean transpose,const GLfloat * value)7734 CallCapture CaptureProgramUniformMatrix3x4fvEXT(const State &glState,
7735                                                 bool isCallValid,
7736                                                 ShaderProgramID programPacked,
7737                                                 UniformLocation locationPacked,
7738                                                 GLsizei count,
7739                                                 GLboolean transpose,
7740                                                 const GLfloat *value)
7741 {
7742     ParamBuffer paramBuffer;
7743 
7744     paramBuffer.addValueParam("programPacked", ParamType::TShaderProgramID, programPacked);
7745     paramBuffer.addValueParam("locationPacked", ParamType::TUniformLocation, locationPacked);
7746     paramBuffer.addValueParam("count", ParamType::TGLsizei, count);
7747     paramBuffer.addValueParam("transpose", ParamType::TGLboolean, transpose);
7748 
7749     if (isCallValid)
7750     {
7751         ParamCapture valueParam("value", ParamType::TGLfloatConstPointer);
7752         InitParamValue(ParamType::TGLfloatConstPointer, value, &valueParam.value);
7753         CaptureProgramUniformMatrix3x4fvEXT_value(glState, isCallValid, programPacked,
7754                                                   locationPacked, count, transpose, value,
7755                                                   &valueParam);
7756         paramBuffer.addParam(std::move(valueParam));
7757     }
7758     else
7759     {
7760         ParamCapture valueParam("value", ParamType::TGLfloatConstPointer);
7761         InitParamValue(ParamType::TGLfloatConstPointer, static_cast<const GLfloat *>(nullptr),
7762                        &valueParam.value);
7763         paramBuffer.addParam(std::move(valueParam));
7764     }
7765 
7766     return CallCapture(angle::EntryPoint::GLProgramUniformMatrix3x4fvEXT, std::move(paramBuffer));
7767 }
7768 
CaptureProgramUniformMatrix4fvEXT(const State & glState,bool isCallValid,ShaderProgramID programPacked,UniformLocation locationPacked,GLsizei count,GLboolean transpose,const GLfloat * value)7769 CallCapture CaptureProgramUniformMatrix4fvEXT(const State &glState,
7770                                               bool isCallValid,
7771                                               ShaderProgramID programPacked,
7772                                               UniformLocation locationPacked,
7773                                               GLsizei count,
7774                                               GLboolean transpose,
7775                                               const GLfloat *value)
7776 {
7777     ParamBuffer paramBuffer;
7778 
7779     paramBuffer.addValueParam("programPacked", ParamType::TShaderProgramID, programPacked);
7780     paramBuffer.addValueParam("locationPacked", ParamType::TUniformLocation, locationPacked);
7781     paramBuffer.addValueParam("count", ParamType::TGLsizei, count);
7782     paramBuffer.addValueParam("transpose", ParamType::TGLboolean, transpose);
7783 
7784     if (isCallValid)
7785     {
7786         ParamCapture valueParam("value", ParamType::TGLfloatConstPointer);
7787         InitParamValue(ParamType::TGLfloatConstPointer, value, &valueParam.value);
7788         CaptureProgramUniformMatrix4fvEXT_value(glState, isCallValid, programPacked, locationPacked,
7789                                                 count, transpose, value, &valueParam);
7790         paramBuffer.addParam(std::move(valueParam));
7791     }
7792     else
7793     {
7794         ParamCapture valueParam("value", ParamType::TGLfloatConstPointer);
7795         InitParamValue(ParamType::TGLfloatConstPointer, static_cast<const GLfloat *>(nullptr),
7796                        &valueParam.value);
7797         paramBuffer.addParam(std::move(valueParam));
7798     }
7799 
7800     return CallCapture(angle::EntryPoint::GLProgramUniformMatrix4fvEXT, std::move(paramBuffer));
7801 }
7802 
CaptureProgramUniformMatrix4x2fvEXT(const State & glState,bool isCallValid,ShaderProgramID programPacked,UniformLocation locationPacked,GLsizei count,GLboolean transpose,const GLfloat * value)7803 CallCapture CaptureProgramUniformMatrix4x2fvEXT(const State &glState,
7804                                                 bool isCallValid,
7805                                                 ShaderProgramID programPacked,
7806                                                 UniformLocation locationPacked,
7807                                                 GLsizei count,
7808                                                 GLboolean transpose,
7809                                                 const GLfloat *value)
7810 {
7811     ParamBuffer paramBuffer;
7812 
7813     paramBuffer.addValueParam("programPacked", ParamType::TShaderProgramID, programPacked);
7814     paramBuffer.addValueParam("locationPacked", ParamType::TUniformLocation, locationPacked);
7815     paramBuffer.addValueParam("count", ParamType::TGLsizei, count);
7816     paramBuffer.addValueParam("transpose", ParamType::TGLboolean, transpose);
7817 
7818     if (isCallValid)
7819     {
7820         ParamCapture valueParam("value", ParamType::TGLfloatConstPointer);
7821         InitParamValue(ParamType::TGLfloatConstPointer, value, &valueParam.value);
7822         CaptureProgramUniformMatrix4x2fvEXT_value(glState, isCallValid, programPacked,
7823                                                   locationPacked, count, transpose, value,
7824                                                   &valueParam);
7825         paramBuffer.addParam(std::move(valueParam));
7826     }
7827     else
7828     {
7829         ParamCapture valueParam("value", ParamType::TGLfloatConstPointer);
7830         InitParamValue(ParamType::TGLfloatConstPointer, static_cast<const GLfloat *>(nullptr),
7831                        &valueParam.value);
7832         paramBuffer.addParam(std::move(valueParam));
7833     }
7834 
7835     return CallCapture(angle::EntryPoint::GLProgramUniformMatrix4x2fvEXT, std::move(paramBuffer));
7836 }
7837 
CaptureProgramUniformMatrix4x3fvEXT(const State & glState,bool isCallValid,ShaderProgramID programPacked,UniformLocation locationPacked,GLsizei count,GLboolean transpose,const GLfloat * value)7838 CallCapture CaptureProgramUniformMatrix4x3fvEXT(const State &glState,
7839                                                 bool isCallValid,
7840                                                 ShaderProgramID programPacked,
7841                                                 UniformLocation locationPacked,
7842                                                 GLsizei count,
7843                                                 GLboolean transpose,
7844                                                 const GLfloat *value)
7845 {
7846     ParamBuffer paramBuffer;
7847 
7848     paramBuffer.addValueParam("programPacked", ParamType::TShaderProgramID, programPacked);
7849     paramBuffer.addValueParam("locationPacked", ParamType::TUniformLocation, locationPacked);
7850     paramBuffer.addValueParam("count", ParamType::TGLsizei, count);
7851     paramBuffer.addValueParam("transpose", ParamType::TGLboolean, transpose);
7852 
7853     if (isCallValid)
7854     {
7855         ParamCapture valueParam("value", ParamType::TGLfloatConstPointer);
7856         InitParamValue(ParamType::TGLfloatConstPointer, value, &valueParam.value);
7857         CaptureProgramUniformMatrix4x3fvEXT_value(glState, isCallValid, programPacked,
7858                                                   locationPacked, count, transpose, value,
7859                                                   &valueParam);
7860         paramBuffer.addParam(std::move(valueParam));
7861     }
7862     else
7863     {
7864         ParamCapture valueParam("value", ParamType::TGLfloatConstPointer);
7865         InitParamValue(ParamType::TGLfloatConstPointer, static_cast<const GLfloat *>(nullptr),
7866                        &valueParam.value);
7867         paramBuffer.addParam(std::move(valueParam));
7868     }
7869 
7870     return CallCapture(angle::EntryPoint::GLProgramUniformMatrix4x3fvEXT, std::move(paramBuffer));
7871 }
7872 
CaptureUseProgramStagesEXT(const State & glState,bool isCallValid,ProgramPipelineID pipelinePacked,GLbitfield stages,ShaderProgramID programPacked)7873 CallCapture CaptureUseProgramStagesEXT(const State &glState,
7874                                        bool isCallValid,
7875                                        ProgramPipelineID pipelinePacked,
7876                                        GLbitfield stages,
7877                                        ShaderProgramID programPacked)
7878 {
7879     ParamBuffer paramBuffer;
7880 
7881     paramBuffer.addValueParam("pipelinePacked", ParamType::TProgramPipelineID, pipelinePacked);
7882     paramBuffer.addEnumParam("stages", GLenumGroup::UseProgramStageMask, ParamType::TGLbitfield,
7883                              stages);
7884     paramBuffer.addValueParam("programPacked", ParamType::TShaderProgramID, programPacked);
7885 
7886     return CallCapture(angle::EntryPoint::GLUseProgramStagesEXT, std::move(paramBuffer));
7887 }
7888 
CaptureValidateProgramPipelineEXT(const State & glState,bool isCallValid,ProgramPipelineID pipelinePacked)7889 CallCapture CaptureValidateProgramPipelineEXT(const State &glState,
7890                                               bool isCallValid,
7891                                               ProgramPipelineID pipelinePacked)
7892 {
7893     ParamBuffer paramBuffer;
7894 
7895     paramBuffer.addValueParam("pipelinePacked", ParamType::TProgramPipelineID, pipelinePacked);
7896 
7897     return CallCapture(angle::EntryPoint::GLValidateProgramPipelineEXT, std::move(paramBuffer));
7898 }
7899 
CaptureFramebufferFetchBarrierEXT(const State & glState,bool isCallValid)7900 CallCapture CaptureFramebufferFetchBarrierEXT(const State &glState, bool isCallValid)
7901 {
7902     ParamBuffer paramBuffer;
7903 
7904     return CallCapture(angle::EntryPoint::GLFramebufferFetchBarrierEXT, std::move(paramBuffer));
7905 }
7906 
CapturePatchParameteriEXT(const State & glState,bool isCallValid,GLenum pname,GLint value)7907 CallCapture CapturePatchParameteriEXT(const State &glState,
7908                                       bool isCallValid,
7909                                       GLenum pname,
7910                                       GLint value)
7911 {
7912     ParamBuffer paramBuffer;
7913 
7914     paramBuffer.addEnumParam("pname", GLenumGroup::PatchParameterName, ParamType::TGLenum, pname);
7915     paramBuffer.addValueParam("value", ParamType::TGLint, value);
7916 
7917     return CallCapture(angle::EntryPoint::GLPatchParameteriEXT, std::move(paramBuffer));
7918 }
7919 
CaptureGetSamplerParameterIivEXT(const State & glState,bool isCallValid,SamplerID samplerPacked,GLenum pname,GLint * params)7920 CallCapture CaptureGetSamplerParameterIivEXT(const State &glState,
7921                                              bool isCallValid,
7922                                              SamplerID samplerPacked,
7923                                              GLenum pname,
7924                                              GLint *params)
7925 {
7926     ParamBuffer paramBuffer;
7927 
7928     paramBuffer.addValueParam("samplerPacked", ParamType::TSamplerID, samplerPacked);
7929     paramBuffer.addEnumParam("pname", GLenumGroup::SamplerParameterName, ParamType::TGLenum, pname);
7930 
7931     if (isCallValid)
7932     {
7933         ParamCapture paramsParam("params", ParamType::TGLintPointer);
7934         InitParamValue(ParamType::TGLintPointer, params, &paramsParam.value);
7935         CaptureGetSamplerParameterIivEXT_params(glState, isCallValid, samplerPacked, pname, params,
7936                                                 &paramsParam);
7937         paramBuffer.addParam(std::move(paramsParam));
7938     }
7939     else
7940     {
7941         ParamCapture paramsParam("params", ParamType::TGLintPointer);
7942         InitParamValue(ParamType::TGLintPointer, static_cast<GLint *>(nullptr), &paramsParam.value);
7943         paramBuffer.addParam(std::move(paramsParam));
7944     }
7945 
7946     return CallCapture(angle::EntryPoint::GLGetSamplerParameterIivEXT, std::move(paramBuffer));
7947 }
7948 
CaptureGetSamplerParameterIuivEXT(const State & glState,bool isCallValid,SamplerID samplerPacked,GLenum pname,GLuint * params)7949 CallCapture CaptureGetSamplerParameterIuivEXT(const State &glState,
7950                                               bool isCallValid,
7951                                               SamplerID samplerPacked,
7952                                               GLenum pname,
7953                                               GLuint *params)
7954 {
7955     ParamBuffer paramBuffer;
7956 
7957     paramBuffer.addValueParam("samplerPacked", ParamType::TSamplerID, samplerPacked);
7958     paramBuffer.addEnumParam("pname", GLenumGroup::SamplerParameterName, ParamType::TGLenum, pname);
7959 
7960     if (isCallValid)
7961     {
7962         ParamCapture paramsParam("params", ParamType::TGLuintPointer);
7963         InitParamValue(ParamType::TGLuintPointer, params, &paramsParam.value);
7964         CaptureGetSamplerParameterIuivEXT_params(glState, isCallValid, samplerPacked, pname, params,
7965                                                  &paramsParam);
7966         paramBuffer.addParam(std::move(paramsParam));
7967     }
7968     else
7969     {
7970         ParamCapture paramsParam("params", ParamType::TGLuintPointer);
7971         InitParamValue(ParamType::TGLuintPointer, static_cast<GLuint *>(nullptr),
7972                        &paramsParam.value);
7973         paramBuffer.addParam(std::move(paramsParam));
7974     }
7975 
7976     return CallCapture(angle::EntryPoint::GLGetSamplerParameterIuivEXT, std::move(paramBuffer));
7977 }
7978 
CaptureGetTexParameterIivEXT(const State & glState,bool isCallValid,TextureType targetPacked,GLenum pname,GLint * params)7979 CallCapture CaptureGetTexParameterIivEXT(const State &glState,
7980                                          bool isCallValid,
7981                                          TextureType targetPacked,
7982                                          GLenum pname,
7983                                          GLint *params)
7984 {
7985     ParamBuffer paramBuffer;
7986 
7987     paramBuffer.addValueParam("targetPacked", ParamType::TTextureType, targetPacked);
7988     paramBuffer.addEnumParam("pname", GLenumGroup::GetTextureParameter, ParamType::TGLenum, pname);
7989 
7990     if (isCallValid)
7991     {
7992         ParamCapture paramsParam("params", ParamType::TGLintPointer);
7993         InitParamValue(ParamType::TGLintPointer, params, &paramsParam.value);
7994         CaptureGetTexParameterIivEXT_params(glState, isCallValid, targetPacked, pname, params,
7995                                             &paramsParam);
7996         paramBuffer.addParam(std::move(paramsParam));
7997     }
7998     else
7999     {
8000         ParamCapture paramsParam("params", ParamType::TGLintPointer);
8001         InitParamValue(ParamType::TGLintPointer, static_cast<GLint *>(nullptr), &paramsParam.value);
8002         paramBuffer.addParam(std::move(paramsParam));
8003     }
8004 
8005     return CallCapture(angle::EntryPoint::GLGetTexParameterIivEXT, std::move(paramBuffer));
8006 }
8007 
CaptureGetTexParameterIuivEXT(const State & glState,bool isCallValid,TextureType targetPacked,GLenum pname,GLuint * params)8008 CallCapture CaptureGetTexParameterIuivEXT(const State &glState,
8009                                           bool isCallValid,
8010                                           TextureType targetPacked,
8011                                           GLenum pname,
8012                                           GLuint *params)
8013 {
8014     ParamBuffer paramBuffer;
8015 
8016     paramBuffer.addValueParam("targetPacked", ParamType::TTextureType, targetPacked);
8017     paramBuffer.addEnumParam("pname", GLenumGroup::GetTextureParameter, ParamType::TGLenum, pname);
8018 
8019     if (isCallValid)
8020     {
8021         ParamCapture paramsParam("params", ParamType::TGLuintPointer);
8022         InitParamValue(ParamType::TGLuintPointer, params, &paramsParam.value);
8023         CaptureGetTexParameterIuivEXT_params(glState, isCallValid, targetPacked, pname, params,
8024                                              &paramsParam);
8025         paramBuffer.addParam(std::move(paramsParam));
8026     }
8027     else
8028     {
8029         ParamCapture paramsParam("params", ParamType::TGLuintPointer);
8030         InitParamValue(ParamType::TGLuintPointer, static_cast<GLuint *>(nullptr),
8031                        &paramsParam.value);
8032         paramBuffer.addParam(std::move(paramsParam));
8033     }
8034 
8035     return CallCapture(angle::EntryPoint::GLGetTexParameterIuivEXT, std::move(paramBuffer));
8036 }
8037 
CaptureSamplerParameterIivEXT(const State & glState,bool isCallValid,SamplerID samplerPacked,GLenum pname,const GLint * param)8038 CallCapture CaptureSamplerParameterIivEXT(const State &glState,
8039                                           bool isCallValid,
8040                                           SamplerID samplerPacked,
8041                                           GLenum pname,
8042                                           const GLint *param)
8043 {
8044     ParamBuffer paramBuffer;
8045 
8046     paramBuffer.addValueParam("samplerPacked", ParamType::TSamplerID, samplerPacked);
8047     paramBuffer.addEnumParam("pname", GLenumGroup::SamplerParameterName, ParamType::TGLenum, pname);
8048 
8049     if (isCallValid)
8050     {
8051         ParamCapture paramParam("param", ParamType::TGLintConstPointer);
8052         InitParamValue(ParamType::TGLintConstPointer, param, &paramParam.value);
8053         CaptureSamplerParameterIivEXT_param(glState, isCallValid, samplerPacked, pname, param,
8054                                             &paramParam);
8055         paramBuffer.addParam(std::move(paramParam));
8056     }
8057     else
8058     {
8059         ParamCapture paramParam("param", ParamType::TGLintConstPointer);
8060         InitParamValue(ParamType::TGLintConstPointer, static_cast<const GLint *>(nullptr),
8061                        &paramParam.value);
8062         paramBuffer.addParam(std::move(paramParam));
8063     }
8064 
8065     return CallCapture(angle::EntryPoint::GLSamplerParameterIivEXT, std::move(paramBuffer));
8066 }
8067 
CaptureSamplerParameterIuivEXT(const State & glState,bool isCallValid,SamplerID samplerPacked,GLenum pname,const GLuint * param)8068 CallCapture CaptureSamplerParameterIuivEXT(const State &glState,
8069                                            bool isCallValid,
8070                                            SamplerID samplerPacked,
8071                                            GLenum pname,
8072                                            const GLuint *param)
8073 {
8074     ParamBuffer paramBuffer;
8075 
8076     paramBuffer.addValueParam("samplerPacked", ParamType::TSamplerID, samplerPacked);
8077     paramBuffer.addEnumParam("pname", GLenumGroup::SamplerParameterName, ParamType::TGLenum, pname);
8078 
8079     if (isCallValid)
8080     {
8081         ParamCapture paramParam("param", ParamType::TGLuintConstPointer);
8082         InitParamValue(ParamType::TGLuintConstPointer, param, &paramParam.value);
8083         CaptureSamplerParameterIuivEXT_param(glState, isCallValid, samplerPacked, pname, param,
8084                                              &paramParam);
8085         paramBuffer.addParam(std::move(paramParam));
8086     }
8087     else
8088     {
8089         ParamCapture paramParam("param", ParamType::TGLuintConstPointer);
8090         InitParamValue(ParamType::TGLuintConstPointer, static_cast<const GLuint *>(nullptr),
8091                        &paramParam.value);
8092         paramBuffer.addParam(std::move(paramParam));
8093     }
8094 
8095     return CallCapture(angle::EntryPoint::GLSamplerParameterIuivEXT, std::move(paramBuffer));
8096 }
8097 
CaptureTexParameterIivEXT(const State & glState,bool isCallValid,TextureType targetPacked,GLenum pname,const GLint * params)8098 CallCapture CaptureTexParameterIivEXT(const State &glState,
8099                                       bool isCallValid,
8100                                       TextureType targetPacked,
8101                                       GLenum pname,
8102                                       const GLint *params)
8103 {
8104     ParamBuffer paramBuffer;
8105 
8106     paramBuffer.addValueParam("targetPacked", ParamType::TTextureType, targetPacked);
8107     paramBuffer.addEnumParam("pname", GLenumGroup::TextureParameterName, ParamType::TGLenum, pname);
8108 
8109     if (isCallValid)
8110     {
8111         ParamCapture paramsParam("params", ParamType::TGLintConstPointer);
8112         InitParamValue(ParamType::TGLintConstPointer, params, &paramsParam.value);
8113         CaptureTexParameterIivEXT_params(glState, isCallValid, targetPacked, pname, params,
8114                                          &paramsParam);
8115         paramBuffer.addParam(std::move(paramsParam));
8116     }
8117     else
8118     {
8119         ParamCapture paramsParam("params", ParamType::TGLintConstPointer);
8120         InitParamValue(ParamType::TGLintConstPointer, static_cast<const GLint *>(nullptr),
8121                        &paramsParam.value);
8122         paramBuffer.addParam(std::move(paramsParam));
8123     }
8124 
8125     return CallCapture(angle::EntryPoint::GLTexParameterIivEXT, std::move(paramBuffer));
8126 }
8127 
CaptureTexParameterIuivEXT(const State & glState,bool isCallValid,TextureType targetPacked,GLenum pname,const GLuint * params)8128 CallCapture CaptureTexParameterIuivEXT(const State &glState,
8129                                        bool isCallValid,
8130                                        TextureType targetPacked,
8131                                        GLenum pname,
8132                                        const GLuint *params)
8133 {
8134     ParamBuffer paramBuffer;
8135 
8136     paramBuffer.addValueParam("targetPacked", ParamType::TTextureType, targetPacked);
8137     paramBuffer.addEnumParam("pname", GLenumGroup::TextureParameterName, ParamType::TGLenum, pname);
8138 
8139     if (isCallValid)
8140     {
8141         ParamCapture paramsParam("params", ParamType::TGLuintConstPointer);
8142         InitParamValue(ParamType::TGLuintConstPointer, params, &paramsParam.value);
8143         CaptureTexParameterIuivEXT_params(glState, isCallValid, targetPacked, pname, params,
8144                                           &paramsParam);
8145         paramBuffer.addParam(std::move(paramsParam));
8146     }
8147     else
8148     {
8149         ParamCapture paramsParam("params", ParamType::TGLuintConstPointer);
8150         InitParamValue(ParamType::TGLuintConstPointer, static_cast<const GLuint *>(nullptr),
8151                        &paramsParam.value);
8152         paramBuffer.addParam(std::move(paramsParam));
8153     }
8154 
8155     return CallCapture(angle::EntryPoint::GLTexParameterIuivEXT, std::move(paramBuffer));
8156 }
8157 
CaptureTexBufferEXT(const State & glState,bool isCallValid,TextureType targetPacked,GLenum internalformat,BufferID bufferPacked)8158 CallCapture CaptureTexBufferEXT(const State &glState,
8159                                 bool isCallValid,
8160                                 TextureType targetPacked,
8161                                 GLenum internalformat,
8162                                 BufferID bufferPacked)
8163 {
8164     ParamBuffer paramBuffer;
8165 
8166     paramBuffer.addValueParam("targetPacked", ParamType::TTextureType, targetPacked);
8167     paramBuffer.addEnumParam("internalformat", GLenumGroup::InternalFormat, ParamType::TGLenum,
8168                              internalformat);
8169     paramBuffer.addValueParam("bufferPacked", ParamType::TBufferID, bufferPacked);
8170 
8171     return CallCapture(angle::EntryPoint::GLTexBufferEXT, std::move(paramBuffer));
8172 }
8173 
CaptureTexBufferRangeEXT(const State & glState,bool isCallValid,TextureType targetPacked,GLenum internalformat,BufferID bufferPacked,GLintptr offset,GLsizeiptr size)8174 CallCapture CaptureTexBufferRangeEXT(const State &glState,
8175                                      bool isCallValid,
8176                                      TextureType targetPacked,
8177                                      GLenum internalformat,
8178                                      BufferID bufferPacked,
8179                                      GLintptr offset,
8180                                      GLsizeiptr size)
8181 {
8182     ParamBuffer paramBuffer;
8183 
8184     paramBuffer.addValueParam("targetPacked", ParamType::TTextureType, targetPacked);
8185     paramBuffer.addEnumParam("internalformat", GLenumGroup::InternalFormat, ParamType::TGLenum,
8186                              internalformat);
8187     paramBuffer.addValueParam("bufferPacked", ParamType::TBufferID, bufferPacked);
8188     paramBuffer.addValueParam("offset", ParamType::TGLintptr, offset);
8189     paramBuffer.addValueParam("size", ParamType::TGLsizeiptr, size);
8190 
8191     return CallCapture(angle::EntryPoint::GLTexBufferRangeEXT, std::move(paramBuffer));
8192 }
8193 
CaptureTexStorage1DEXT(const State & glState,bool isCallValid,GLenum target,GLsizei levels,GLenum internalformat,GLsizei width)8194 CallCapture CaptureTexStorage1DEXT(const State &glState,
8195                                    bool isCallValid,
8196                                    GLenum target,
8197                                    GLsizei levels,
8198                                    GLenum internalformat,
8199                                    GLsizei width)
8200 {
8201     ParamBuffer paramBuffer;
8202 
8203     paramBuffer.addEnumParam("target", GLenumGroup::TextureTarget, ParamType::TGLenum, target);
8204     paramBuffer.addValueParam("levels", ParamType::TGLsizei, levels);
8205     paramBuffer.addEnumParam("internalformat", GLenumGroup::InternalFormat, ParamType::TGLenum,
8206                              internalformat);
8207     paramBuffer.addValueParam("width", ParamType::TGLsizei, width);
8208 
8209     return CallCapture(angle::EntryPoint::GLTexStorage1DEXT, std::move(paramBuffer));
8210 }
8211 
CaptureTexStorage2DEXT(const State & glState,bool isCallValid,TextureType targetPacked,GLsizei levels,GLenum internalformat,GLsizei width,GLsizei height)8212 CallCapture CaptureTexStorage2DEXT(const State &glState,
8213                                    bool isCallValid,
8214                                    TextureType targetPacked,
8215                                    GLsizei levels,
8216                                    GLenum internalformat,
8217                                    GLsizei width,
8218                                    GLsizei height)
8219 {
8220     ParamBuffer paramBuffer;
8221 
8222     paramBuffer.addValueParam("targetPacked", ParamType::TTextureType, targetPacked);
8223     paramBuffer.addValueParam("levels", ParamType::TGLsizei, levels);
8224     paramBuffer.addEnumParam("internalformat", GLenumGroup::InternalFormat, ParamType::TGLenum,
8225                              internalformat);
8226     paramBuffer.addValueParam("width", ParamType::TGLsizei, width);
8227     paramBuffer.addValueParam("height", ParamType::TGLsizei, height);
8228 
8229     return CallCapture(angle::EntryPoint::GLTexStorage2DEXT, std::move(paramBuffer));
8230 }
8231 
CaptureTexStorage3DEXT(const State & glState,bool isCallValid,TextureType targetPacked,GLsizei levels,GLenum internalformat,GLsizei width,GLsizei height,GLsizei depth)8232 CallCapture CaptureTexStorage3DEXT(const State &glState,
8233                                    bool isCallValid,
8234                                    TextureType targetPacked,
8235                                    GLsizei levels,
8236                                    GLenum internalformat,
8237                                    GLsizei width,
8238                                    GLsizei height,
8239                                    GLsizei depth)
8240 {
8241     ParamBuffer paramBuffer;
8242 
8243     paramBuffer.addValueParam("targetPacked", ParamType::TTextureType, targetPacked);
8244     paramBuffer.addValueParam("levels", ParamType::TGLsizei, levels);
8245     paramBuffer.addEnumParam("internalformat", GLenumGroup::InternalFormat, ParamType::TGLenum,
8246                              internalformat);
8247     paramBuffer.addValueParam("width", ParamType::TGLsizei, width);
8248     paramBuffer.addValueParam("height", ParamType::TGLsizei, height);
8249     paramBuffer.addValueParam("depth", ParamType::TGLsizei, depth);
8250 
8251     return CallCapture(angle::EntryPoint::GLTexStorage3DEXT, std::move(paramBuffer));
8252 }
8253 
CaptureBlendBarrierKHR(const State & glState,bool isCallValid)8254 CallCapture CaptureBlendBarrierKHR(const State &glState, bool isCallValid)
8255 {
8256     ParamBuffer paramBuffer;
8257 
8258     return CallCapture(angle::EntryPoint::GLBlendBarrierKHR, std::move(paramBuffer));
8259 }
8260 
CaptureDebugMessageCallbackKHR(const State & glState,bool isCallValid,GLDEBUGPROCKHR callback,const void * userParam)8261 CallCapture CaptureDebugMessageCallbackKHR(const State &glState,
8262                                            bool isCallValid,
8263                                            GLDEBUGPROCKHR callback,
8264                                            const void *userParam)
8265 {
8266     ParamBuffer paramBuffer;
8267 
8268     paramBuffer.addValueParam("callback", ParamType::TGLDEBUGPROCKHR, callback);
8269 
8270     if (isCallValid)
8271     {
8272         ParamCapture userParamParam("userParam", ParamType::TvoidConstPointer);
8273         InitParamValue(ParamType::TvoidConstPointer, userParam, &userParamParam.value);
8274         CaptureDebugMessageCallbackKHR_userParam(glState, isCallValid, callback, userParam,
8275                                                  &userParamParam);
8276         paramBuffer.addParam(std::move(userParamParam));
8277     }
8278     else
8279     {
8280         ParamCapture userParamParam("userParam", ParamType::TvoidConstPointer);
8281         InitParamValue(ParamType::TvoidConstPointer, static_cast<const void *>(nullptr),
8282                        &userParamParam.value);
8283         paramBuffer.addParam(std::move(userParamParam));
8284     }
8285 
8286     return CallCapture(angle::EntryPoint::GLDebugMessageCallbackKHR, std::move(paramBuffer));
8287 }
8288 
CaptureDebugMessageControlKHR(const State & glState,bool isCallValid,GLenum source,GLenum type,GLenum severity,GLsizei count,const GLuint * ids,GLboolean enabled)8289 CallCapture CaptureDebugMessageControlKHR(const State &glState,
8290                                           bool isCallValid,
8291                                           GLenum source,
8292                                           GLenum type,
8293                                           GLenum severity,
8294                                           GLsizei count,
8295                                           const GLuint *ids,
8296                                           GLboolean enabled)
8297 {
8298     ParamBuffer paramBuffer;
8299 
8300     paramBuffer.addEnumParam("source", GLenumGroup::DebugSource, ParamType::TGLenum, source);
8301     paramBuffer.addEnumParam("type", GLenumGroup::DebugType, ParamType::TGLenum, type);
8302     paramBuffer.addEnumParam("severity", GLenumGroup::DebugSeverity, ParamType::TGLenum, severity);
8303     paramBuffer.addValueParam("count", ParamType::TGLsizei, count);
8304 
8305     if (isCallValid)
8306     {
8307         ParamCapture idsParam("ids", ParamType::TGLuintConstPointer);
8308         InitParamValue(ParamType::TGLuintConstPointer, ids, &idsParam.value);
8309         CaptureDebugMessageControlKHR_ids(glState, isCallValid, source, type, severity, count, ids,
8310                                           enabled, &idsParam);
8311         paramBuffer.addParam(std::move(idsParam));
8312     }
8313     else
8314     {
8315         ParamCapture idsParam("ids", ParamType::TGLuintConstPointer);
8316         InitParamValue(ParamType::TGLuintConstPointer, static_cast<const GLuint *>(nullptr),
8317                        &idsParam.value);
8318         paramBuffer.addParam(std::move(idsParam));
8319     }
8320 
8321     paramBuffer.addValueParam("enabled", ParamType::TGLboolean, enabled);
8322 
8323     return CallCapture(angle::EntryPoint::GLDebugMessageControlKHR, std::move(paramBuffer));
8324 }
8325 
CaptureDebugMessageInsertKHR(const State & glState,bool isCallValid,GLenum source,GLenum type,GLuint id,GLenum severity,GLsizei length,const GLchar * buf)8326 CallCapture CaptureDebugMessageInsertKHR(const State &glState,
8327                                          bool isCallValid,
8328                                          GLenum source,
8329                                          GLenum type,
8330                                          GLuint id,
8331                                          GLenum severity,
8332                                          GLsizei length,
8333                                          const GLchar *buf)
8334 {
8335     ParamBuffer paramBuffer;
8336 
8337     paramBuffer.addEnumParam("source", GLenumGroup::DebugSource, ParamType::TGLenum, source);
8338     paramBuffer.addEnumParam("type", GLenumGroup::DebugType, ParamType::TGLenum, type);
8339     paramBuffer.addValueParam("id", ParamType::TGLuint, id);
8340     paramBuffer.addEnumParam("severity", GLenumGroup::DebugSeverity, ParamType::TGLenum, severity);
8341     paramBuffer.addValueParam("length", ParamType::TGLsizei, length);
8342 
8343     if (isCallValid)
8344     {
8345         ParamCapture bufParam("buf", ParamType::TGLcharConstPointer);
8346         InitParamValue(ParamType::TGLcharConstPointer, buf, &bufParam.value);
8347         CaptureDebugMessageInsertKHR_buf(glState, isCallValid, source, type, id, severity, length,
8348                                          buf, &bufParam);
8349         paramBuffer.addParam(std::move(bufParam));
8350     }
8351     else
8352     {
8353         ParamCapture bufParam("buf", ParamType::TGLcharConstPointer);
8354         InitParamValue(ParamType::TGLcharConstPointer, static_cast<const GLchar *>(nullptr),
8355                        &bufParam.value);
8356         paramBuffer.addParam(std::move(bufParam));
8357     }
8358 
8359     return CallCapture(angle::EntryPoint::GLDebugMessageInsertKHR, std::move(paramBuffer));
8360 }
8361 
CaptureGetDebugMessageLogKHR(const State & glState,bool isCallValid,GLuint count,GLsizei bufSize,GLenum * sources,GLenum * types,GLuint * ids,GLenum * severities,GLsizei * lengths,GLchar * messageLog,GLuint returnValue)8362 CallCapture CaptureGetDebugMessageLogKHR(const State &glState,
8363                                          bool isCallValid,
8364                                          GLuint count,
8365                                          GLsizei bufSize,
8366                                          GLenum *sources,
8367                                          GLenum *types,
8368                                          GLuint *ids,
8369                                          GLenum *severities,
8370                                          GLsizei *lengths,
8371                                          GLchar *messageLog,
8372                                          GLuint returnValue)
8373 {
8374     ParamBuffer paramBuffer;
8375 
8376     paramBuffer.addValueParam("count", ParamType::TGLuint, count);
8377     paramBuffer.addValueParam("bufSize", ParamType::TGLsizei, bufSize);
8378 
8379     if (isCallValid)
8380     {
8381         ParamCapture sourcesParam("sources", ParamType::TGLenumPointer);
8382         InitParamValue(ParamType::TGLenumPointer, sources, &sourcesParam.value);
8383         CaptureGetDebugMessageLogKHR_sources(glState, isCallValid, count, bufSize, sources, types,
8384                                              ids, severities, lengths, messageLog, &sourcesParam);
8385         paramBuffer.addParam(std::move(sourcesParam));
8386     }
8387     else
8388     {
8389         ParamCapture sourcesParam("sources", ParamType::TGLenumPointer);
8390         InitParamValue(ParamType::TGLenumPointer, static_cast<GLenum *>(nullptr),
8391                        &sourcesParam.value);
8392         paramBuffer.addParam(std::move(sourcesParam));
8393     }
8394 
8395     if (isCallValid)
8396     {
8397         ParamCapture typesParam("types", ParamType::TGLenumPointer);
8398         InitParamValue(ParamType::TGLenumPointer, types, &typesParam.value);
8399         CaptureGetDebugMessageLogKHR_types(glState, isCallValid, count, bufSize, sources, types,
8400                                            ids, severities, lengths, messageLog, &typesParam);
8401         paramBuffer.addParam(std::move(typesParam));
8402     }
8403     else
8404     {
8405         ParamCapture typesParam("types", ParamType::TGLenumPointer);
8406         InitParamValue(ParamType::TGLenumPointer, static_cast<GLenum *>(nullptr),
8407                        &typesParam.value);
8408         paramBuffer.addParam(std::move(typesParam));
8409     }
8410 
8411     if (isCallValid)
8412     {
8413         ParamCapture idsParam("ids", ParamType::TGLuintPointer);
8414         InitParamValue(ParamType::TGLuintPointer, ids, &idsParam.value);
8415         CaptureGetDebugMessageLogKHR_ids(glState, isCallValid, count, bufSize, sources, types, ids,
8416                                          severities, lengths, messageLog, &idsParam);
8417         paramBuffer.addParam(std::move(idsParam));
8418     }
8419     else
8420     {
8421         ParamCapture idsParam("ids", ParamType::TGLuintPointer);
8422         InitParamValue(ParamType::TGLuintPointer, static_cast<GLuint *>(nullptr), &idsParam.value);
8423         paramBuffer.addParam(std::move(idsParam));
8424     }
8425 
8426     if (isCallValid)
8427     {
8428         ParamCapture severitiesParam("severities", ParamType::TGLenumPointer);
8429         InitParamValue(ParamType::TGLenumPointer, severities, &severitiesParam.value);
8430         CaptureGetDebugMessageLogKHR_severities(glState, isCallValid, count, bufSize, sources,
8431                                                 types, ids, severities, lengths, messageLog,
8432                                                 &severitiesParam);
8433         paramBuffer.addParam(std::move(severitiesParam));
8434     }
8435     else
8436     {
8437         ParamCapture severitiesParam("severities", ParamType::TGLenumPointer);
8438         InitParamValue(ParamType::TGLenumPointer, static_cast<GLenum *>(nullptr),
8439                        &severitiesParam.value);
8440         paramBuffer.addParam(std::move(severitiesParam));
8441     }
8442 
8443     if (isCallValid)
8444     {
8445         ParamCapture lengthsParam("lengths", ParamType::TGLsizeiPointer);
8446         InitParamValue(ParamType::TGLsizeiPointer, lengths, &lengthsParam.value);
8447         CaptureGetDebugMessageLogKHR_lengths(glState, isCallValid, count, bufSize, sources, types,
8448                                              ids, severities, lengths, messageLog, &lengthsParam);
8449         paramBuffer.addParam(std::move(lengthsParam));
8450     }
8451     else
8452     {
8453         ParamCapture lengthsParam("lengths", ParamType::TGLsizeiPointer);
8454         InitParamValue(ParamType::TGLsizeiPointer, static_cast<GLsizei *>(nullptr),
8455                        &lengthsParam.value);
8456         paramBuffer.addParam(std::move(lengthsParam));
8457     }
8458 
8459     if (isCallValid)
8460     {
8461         ParamCapture messageLogParam("messageLog", ParamType::TGLcharPointer);
8462         InitParamValue(ParamType::TGLcharPointer, messageLog, &messageLogParam.value);
8463         CaptureGetDebugMessageLogKHR_messageLog(glState, isCallValid, count, bufSize, sources,
8464                                                 types, ids, severities, lengths, messageLog,
8465                                                 &messageLogParam);
8466         paramBuffer.addParam(std::move(messageLogParam));
8467     }
8468     else
8469     {
8470         ParamCapture messageLogParam("messageLog", ParamType::TGLcharPointer);
8471         InitParamValue(ParamType::TGLcharPointer, static_cast<GLchar *>(nullptr),
8472                        &messageLogParam.value);
8473         paramBuffer.addParam(std::move(messageLogParam));
8474     }
8475 
8476     ParamCapture returnValueCapture("returnValue", ParamType::TGLuint);
8477     InitParamValue(ParamType::TGLuint, returnValue, &returnValueCapture.value);
8478     paramBuffer.addReturnValue(std::move(returnValueCapture));
8479 
8480     return CallCapture(angle::EntryPoint::GLGetDebugMessageLogKHR, std::move(paramBuffer));
8481 }
8482 
CaptureGetObjectLabelKHR(const State & glState,bool isCallValid,GLenum identifier,GLuint name,GLsizei bufSize,GLsizei * length,GLchar * label)8483 CallCapture CaptureGetObjectLabelKHR(const State &glState,
8484                                      bool isCallValid,
8485                                      GLenum identifier,
8486                                      GLuint name,
8487                                      GLsizei bufSize,
8488                                      GLsizei *length,
8489                                      GLchar *label)
8490 {
8491     ParamBuffer paramBuffer;
8492 
8493     paramBuffer.addEnumParam("identifier", GLenumGroup::DefaultGroup, ParamType::TGLenum,
8494                              identifier);
8495     paramBuffer.addValueParam("name", ParamType::TGLuint, name);
8496     paramBuffer.addValueParam("bufSize", ParamType::TGLsizei, bufSize);
8497 
8498     if (isCallValid)
8499     {
8500         ParamCapture lengthParam("length", ParamType::TGLsizeiPointer);
8501         InitParamValue(ParamType::TGLsizeiPointer, length, &lengthParam.value);
8502         CaptureGetObjectLabelKHR_length(glState, isCallValid, identifier, name, bufSize, length,
8503                                         label, &lengthParam);
8504         paramBuffer.addParam(std::move(lengthParam));
8505     }
8506     else
8507     {
8508         ParamCapture lengthParam("length", ParamType::TGLsizeiPointer);
8509         InitParamValue(ParamType::TGLsizeiPointer, static_cast<GLsizei *>(nullptr),
8510                        &lengthParam.value);
8511         paramBuffer.addParam(std::move(lengthParam));
8512     }
8513 
8514     if (isCallValid)
8515     {
8516         ParamCapture labelParam("label", ParamType::TGLcharPointer);
8517         InitParamValue(ParamType::TGLcharPointer, label, &labelParam.value);
8518         CaptureGetObjectLabelKHR_label(glState, isCallValid, identifier, name, bufSize, length,
8519                                        label, &labelParam);
8520         paramBuffer.addParam(std::move(labelParam));
8521     }
8522     else
8523     {
8524         ParamCapture labelParam("label", ParamType::TGLcharPointer);
8525         InitParamValue(ParamType::TGLcharPointer, static_cast<GLchar *>(nullptr),
8526                        &labelParam.value);
8527         paramBuffer.addParam(std::move(labelParam));
8528     }
8529 
8530     return CallCapture(angle::EntryPoint::GLGetObjectLabelKHR, std::move(paramBuffer));
8531 }
8532 
CaptureGetObjectPtrLabelKHR(const State & glState,bool isCallValid,const void * ptr,GLsizei bufSize,GLsizei * length,GLchar * label)8533 CallCapture CaptureGetObjectPtrLabelKHR(const State &glState,
8534                                         bool isCallValid,
8535                                         const void *ptr,
8536                                         GLsizei bufSize,
8537                                         GLsizei *length,
8538                                         GLchar *label)
8539 {
8540     ParamBuffer paramBuffer;
8541 
8542     if (isCallValid)
8543     {
8544         ParamCapture ptrParam("ptr", ParamType::TvoidConstPointer);
8545         InitParamValue(ParamType::TvoidConstPointer, ptr, &ptrParam.value);
8546         CaptureGetObjectPtrLabelKHR_ptr(glState, isCallValid, ptr, bufSize, length, label,
8547                                         &ptrParam);
8548         paramBuffer.addParam(std::move(ptrParam));
8549     }
8550     else
8551     {
8552         ParamCapture ptrParam("ptr", ParamType::TvoidConstPointer);
8553         InitParamValue(ParamType::TvoidConstPointer, static_cast<const void *>(nullptr),
8554                        &ptrParam.value);
8555         paramBuffer.addParam(std::move(ptrParam));
8556     }
8557 
8558     paramBuffer.addValueParam("bufSize", ParamType::TGLsizei, bufSize);
8559 
8560     if (isCallValid)
8561     {
8562         ParamCapture lengthParam("length", ParamType::TGLsizeiPointer);
8563         InitParamValue(ParamType::TGLsizeiPointer, length, &lengthParam.value);
8564         CaptureGetObjectPtrLabelKHR_length(glState, isCallValid, ptr, bufSize, length, label,
8565                                            &lengthParam);
8566         paramBuffer.addParam(std::move(lengthParam));
8567     }
8568     else
8569     {
8570         ParamCapture lengthParam("length", ParamType::TGLsizeiPointer);
8571         InitParamValue(ParamType::TGLsizeiPointer, static_cast<GLsizei *>(nullptr),
8572                        &lengthParam.value);
8573         paramBuffer.addParam(std::move(lengthParam));
8574     }
8575 
8576     if (isCallValid)
8577     {
8578         ParamCapture labelParam("label", ParamType::TGLcharPointer);
8579         InitParamValue(ParamType::TGLcharPointer, label, &labelParam.value);
8580         CaptureGetObjectPtrLabelKHR_label(glState, isCallValid, ptr, bufSize, length, label,
8581                                           &labelParam);
8582         paramBuffer.addParam(std::move(labelParam));
8583     }
8584     else
8585     {
8586         ParamCapture labelParam("label", ParamType::TGLcharPointer);
8587         InitParamValue(ParamType::TGLcharPointer, static_cast<GLchar *>(nullptr),
8588                        &labelParam.value);
8589         paramBuffer.addParam(std::move(labelParam));
8590     }
8591 
8592     return CallCapture(angle::EntryPoint::GLGetObjectPtrLabelKHR, std::move(paramBuffer));
8593 }
8594 
CaptureGetPointervKHR(const State & glState,bool isCallValid,GLenum pname,void ** params)8595 CallCapture CaptureGetPointervKHR(const State &glState,
8596                                   bool isCallValid,
8597                                   GLenum pname,
8598                                   void **params)
8599 {
8600     ParamBuffer paramBuffer;
8601 
8602     paramBuffer.addEnumParam("pname", GLenumGroup::DefaultGroup, ParamType::TGLenum, pname);
8603 
8604     if (isCallValid)
8605     {
8606         ParamCapture paramsParam("params", ParamType::TvoidPointerPointer);
8607         InitParamValue(ParamType::TvoidPointerPointer, params, &paramsParam.value);
8608         CaptureGetPointervKHR_params(glState, isCallValid, pname, params, &paramsParam);
8609         paramBuffer.addParam(std::move(paramsParam));
8610     }
8611     else
8612     {
8613         ParamCapture paramsParam("params", ParamType::TvoidPointerPointer);
8614         InitParamValue(ParamType::TvoidPointerPointer, static_cast<void **>(nullptr),
8615                        &paramsParam.value);
8616         paramBuffer.addParam(std::move(paramsParam));
8617     }
8618 
8619     return CallCapture(angle::EntryPoint::GLGetPointervKHR, std::move(paramBuffer));
8620 }
8621 
CaptureObjectLabelKHR(const State & glState,bool isCallValid,GLenum identifier,GLuint name,GLsizei length,const GLchar * label)8622 CallCapture CaptureObjectLabelKHR(const State &glState,
8623                                   bool isCallValid,
8624                                   GLenum identifier,
8625                                   GLuint name,
8626                                   GLsizei length,
8627                                   const GLchar *label)
8628 {
8629     ParamBuffer paramBuffer;
8630 
8631     paramBuffer.addEnumParam("identifier", GLenumGroup::ObjectIdentifier, ParamType::TGLenum,
8632                              identifier);
8633     paramBuffer.addValueParam("name", ParamType::TGLuint, name);
8634     paramBuffer.addValueParam("length", ParamType::TGLsizei, length);
8635 
8636     if (isCallValid)
8637     {
8638         ParamCapture labelParam("label", ParamType::TGLcharConstPointer);
8639         InitParamValue(ParamType::TGLcharConstPointer, label, &labelParam.value);
8640         CaptureObjectLabelKHR_label(glState, isCallValid, identifier, name, length, label,
8641                                     &labelParam);
8642         paramBuffer.addParam(std::move(labelParam));
8643     }
8644     else
8645     {
8646         ParamCapture labelParam("label", ParamType::TGLcharConstPointer);
8647         InitParamValue(ParamType::TGLcharConstPointer, static_cast<const GLchar *>(nullptr),
8648                        &labelParam.value);
8649         paramBuffer.addParam(std::move(labelParam));
8650     }
8651 
8652     return CallCapture(angle::EntryPoint::GLObjectLabelKHR, std::move(paramBuffer));
8653 }
8654 
CaptureObjectPtrLabelKHR(const State & glState,bool isCallValid,const void * ptr,GLsizei length,const GLchar * label)8655 CallCapture CaptureObjectPtrLabelKHR(const State &glState,
8656                                      bool isCallValid,
8657                                      const void *ptr,
8658                                      GLsizei length,
8659                                      const GLchar *label)
8660 {
8661     ParamBuffer paramBuffer;
8662 
8663     if (isCallValid)
8664     {
8665         ParamCapture ptrParam("ptr", ParamType::TvoidConstPointer);
8666         InitParamValue(ParamType::TvoidConstPointer, ptr, &ptrParam.value);
8667         CaptureObjectPtrLabelKHR_ptr(glState, isCallValid, ptr, length, label, &ptrParam);
8668         paramBuffer.addParam(std::move(ptrParam));
8669     }
8670     else
8671     {
8672         ParamCapture ptrParam("ptr", ParamType::TvoidConstPointer);
8673         InitParamValue(ParamType::TvoidConstPointer, static_cast<const void *>(nullptr),
8674                        &ptrParam.value);
8675         paramBuffer.addParam(std::move(ptrParam));
8676     }
8677 
8678     paramBuffer.addValueParam("length", ParamType::TGLsizei, length);
8679 
8680     if (isCallValid)
8681     {
8682         ParamCapture labelParam("label", ParamType::TGLcharConstPointer);
8683         InitParamValue(ParamType::TGLcharConstPointer, label, &labelParam.value);
8684         CaptureObjectPtrLabelKHR_label(glState, isCallValid, ptr, length, label, &labelParam);
8685         paramBuffer.addParam(std::move(labelParam));
8686     }
8687     else
8688     {
8689         ParamCapture labelParam("label", ParamType::TGLcharConstPointer);
8690         InitParamValue(ParamType::TGLcharConstPointer, static_cast<const GLchar *>(nullptr),
8691                        &labelParam.value);
8692         paramBuffer.addParam(std::move(labelParam));
8693     }
8694 
8695     return CallCapture(angle::EntryPoint::GLObjectPtrLabelKHR, std::move(paramBuffer));
8696 }
8697 
CapturePopDebugGroupKHR(const State & glState,bool isCallValid)8698 CallCapture CapturePopDebugGroupKHR(const State &glState, bool isCallValid)
8699 {
8700     ParamBuffer paramBuffer;
8701 
8702     return CallCapture(angle::EntryPoint::GLPopDebugGroupKHR, std::move(paramBuffer));
8703 }
8704 
CapturePushDebugGroupKHR(const State & glState,bool isCallValid,GLenum source,GLuint id,GLsizei length,const GLchar * message)8705 CallCapture CapturePushDebugGroupKHR(const State &glState,
8706                                      bool isCallValid,
8707                                      GLenum source,
8708                                      GLuint id,
8709                                      GLsizei length,
8710                                      const GLchar *message)
8711 {
8712     ParamBuffer paramBuffer;
8713 
8714     paramBuffer.addEnumParam("source", GLenumGroup::DebugSource, ParamType::TGLenum, source);
8715     paramBuffer.addValueParam("id", ParamType::TGLuint, id);
8716     paramBuffer.addValueParam("length", ParamType::TGLsizei, length);
8717 
8718     if (isCallValid)
8719     {
8720         ParamCapture messageParam("message", ParamType::TGLcharConstPointer);
8721         InitParamValue(ParamType::TGLcharConstPointer, message, &messageParam.value);
8722         CapturePushDebugGroupKHR_message(glState, isCallValid, source, id, length, message,
8723                                          &messageParam);
8724         paramBuffer.addParam(std::move(messageParam));
8725     }
8726     else
8727     {
8728         ParamCapture messageParam("message", ParamType::TGLcharConstPointer);
8729         InitParamValue(ParamType::TGLcharConstPointer, static_cast<const GLchar *>(nullptr),
8730                        &messageParam.value);
8731         paramBuffer.addParam(std::move(messageParam));
8732     }
8733 
8734     return CallCapture(angle::EntryPoint::GLPushDebugGroupKHR, std::move(paramBuffer));
8735 }
8736 
CaptureMaxShaderCompilerThreadsKHR(const State & glState,bool isCallValid,GLuint count)8737 CallCapture CaptureMaxShaderCompilerThreadsKHR(const State &glState, bool isCallValid, GLuint count)
8738 {
8739     ParamBuffer paramBuffer;
8740 
8741     paramBuffer.addValueParam("count", ParamType::TGLuint, count);
8742 
8743     return CallCapture(angle::EntryPoint::GLMaxShaderCompilerThreadsKHR, std::move(paramBuffer));
8744 }
8745 
CaptureDeleteFencesNV(const State & glState,bool isCallValid,GLsizei n,const FenceNVID * fencesPacked)8746 CallCapture CaptureDeleteFencesNV(const State &glState,
8747                                   bool isCallValid,
8748                                   GLsizei n,
8749                                   const FenceNVID *fencesPacked)
8750 {
8751     ParamBuffer paramBuffer;
8752 
8753     paramBuffer.addValueParam("n", ParamType::TGLsizei, n);
8754 
8755     if (isCallValid)
8756     {
8757         ParamCapture fencesPackedParam("fencesPacked", ParamType::TFenceNVIDConstPointer);
8758         InitParamValue(ParamType::TFenceNVIDConstPointer, fencesPacked, &fencesPackedParam.value);
8759         CaptureDeleteFencesNV_fencesPacked(glState, isCallValid, n, fencesPacked,
8760                                            &fencesPackedParam);
8761         paramBuffer.addParam(std::move(fencesPackedParam));
8762     }
8763     else
8764     {
8765         ParamCapture fencesPackedParam("fencesPacked", ParamType::TFenceNVIDConstPointer);
8766         InitParamValue(ParamType::TFenceNVIDConstPointer, static_cast<const FenceNVID *>(nullptr),
8767                        &fencesPackedParam.value);
8768         paramBuffer.addParam(std::move(fencesPackedParam));
8769     }
8770 
8771     return CallCapture(angle::EntryPoint::GLDeleteFencesNV, std::move(paramBuffer));
8772 }
8773 
CaptureFinishFenceNV(const State & glState,bool isCallValid,FenceNVID fencePacked)8774 CallCapture CaptureFinishFenceNV(const State &glState, bool isCallValid, FenceNVID fencePacked)
8775 {
8776     ParamBuffer paramBuffer;
8777 
8778     paramBuffer.addValueParam("fencePacked", ParamType::TFenceNVID, fencePacked);
8779 
8780     return CallCapture(angle::EntryPoint::GLFinishFenceNV, std::move(paramBuffer));
8781 }
8782 
CaptureGenFencesNV(const State & glState,bool isCallValid,GLsizei n,FenceNVID * fencesPacked)8783 CallCapture CaptureGenFencesNV(const State &glState,
8784                                bool isCallValid,
8785                                GLsizei n,
8786                                FenceNVID *fencesPacked)
8787 {
8788     ParamBuffer paramBuffer;
8789 
8790     paramBuffer.addValueParam("n", ParamType::TGLsizei, n);
8791 
8792     if (isCallValid)
8793     {
8794         ParamCapture fencesPackedParam("fencesPacked", ParamType::TFenceNVIDPointer);
8795         InitParamValue(ParamType::TFenceNVIDPointer, fencesPacked, &fencesPackedParam.value);
8796         CaptureGenFencesNV_fencesPacked(glState, isCallValid, n, fencesPacked, &fencesPackedParam);
8797         paramBuffer.addParam(std::move(fencesPackedParam));
8798     }
8799     else
8800     {
8801         ParamCapture fencesPackedParam("fencesPacked", ParamType::TFenceNVIDPointer);
8802         InitParamValue(ParamType::TFenceNVIDPointer, static_cast<FenceNVID *>(nullptr),
8803                        &fencesPackedParam.value);
8804         paramBuffer.addParam(std::move(fencesPackedParam));
8805     }
8806 
8807     return CallCapture(angle::EntryPoint::GLGenFencesNV, std::move(paramBuffer));
8808 }
8809 
CaptureGetFenceivNV(const State & glState,bool isCallValid,FenceNVID fencePacked,GLenum pname,GLint * params)8810 CallCapture CaptureGetFenceivNV(const State &glState,
8811                                 bool isCallValid,
8812                                 FenceNVID fencePacked,
8813                                 GLenum pname,
8814                                 GLint *params)
8815 {
8816     ParamBuffer paramBuffer;
8817 
8818     paramBuffer.addValueParam("fencePacked", ParamType::TFenceNVID, fencePacked);
8819     paramBuffer.addEnumParam("pname", GLenumGroup::DefaultGroup, ParamType::TGLenum, pname);
8820 
8821     if (isCallValid)
8822     {
8823         ParamCapture paramsParam("params", ParamType::TGLintPointer);
8824         InitParamValue(ParamType::TGLintPointer, params, &paramsParam.value);
8825         CaptureGetFenceivNV_params(glState, isCallValid, fencePacked, pname, params, &paramsParam);
8826         paramBuffer.addParam(std::move(paramsParam));
8827     }
8828     else
8829     {
8830         ParamCapture paramsParam("params", ParamType::TGLintPointer);
8831         InitParamValue(ParamType::TGLintPointer, static_cast<GLint *>(nullptr), &paramsParam.value);
8832         paramBuffer.addParam(std::move(paramsParam));
8833     }
8834 
8835     return CallCapture(angle::EntryPoint::GLGetFenceivNV, std::move(paramBuffer));
8836 }
8837 
CaptureIsFenceNV(const State & glState,bool isCallValid,FenceNVID fencePacked,GLboolean returnValue)8838 CallCapture CaptureIsFenceNV(const State &glState,
8839                              bool isCallValid,
8840                              FenceNVID fencePacked,
8841                              GLboolean returnValue)
8842 {
8843     ParamBuffer paramBuffer;
8844 
8845     paramBuffer.addValueParam("fencePacked", ParamType::TFenceNVID, fencePacked);
8846 
8847     ParamCapture returnValueCapture("returnValue", ParamType::TGLboolean);
8848     InitParamValue(ParamType::TGLboolean, returnValue, &returnValueCapture.value);
8849     paramBuffer.addReturnValue(std::move(returnValueCapture));
8850 
8851     return CallCapture(angle::EntryPoint::GLIsFenceNV, std::move(paramBuffer));
8852 }
8853 
CaptureSetFenceNV(const State & glState,bool isCallValid,FenceNVID fencePacked,GLenum condition)8854 CallCapture CaptureSetFenceNV(const State &glState,
8855                               bool isCallValid,
8856                               FenceNVID fencePacked,
8857                               GLenum condition)
8858 {
8859     ParamBuffer paramBuffer;
8860 
8861     paramBuffer.addValueParam("fencePacked", ParamType::TFenceNVID, fencePacked);
8862     paramBuffer.addEnumParam("condition", GLenumGroup::DefaultGroup, ParamType::TGLenum, condition);
8863 
8864     return CallCapture(angle::EntryPoint::GLSetFenceNV, std::move(paramBuffer));
8865 }
8866 
CaptureTestFenceNV(const State & glState,bool isCallValid,FenceNVID fencePacked,GLboolean returnValue)8867 CallCapture CaptureTestFenceNV(const State &glState,
8868                                bool isCallValid,
8869                                FenceNVID fencePacked,
8870                                GLboolean returnValue)
8871 {
8872     ParamBuffer paramBuffer;
8873 
8874     paramBuffer.addValueParam("fencePacked", ParamType::TFenceNVID, fencePacked);
8875 
8876     ParamCapture returnValueCapture("returnValue", ParamType::TGLboolean);
8877     InitParamValue(ParamType::TGLboolean, returnValue, &returnValueCapture.value);
8878     paramBuffer.addReturnValue(std::move(returnValueCapture));
8879 
8880     return CallCapture(angle::EntryPoint::GLTestFenceNV, std::move(paramBuffer));
8881 }
8882 
CaptureBlitFramebufferNV(const State & glState,bool isCallValid,GLint srcX0,GLint srcY0,GLint srcX1,GLint srcY1,GLint dstX0,GLint dstY0,GLint dstX1,GLint dstY1,GLbitfield mask,GLenum filter)8883 CallCapture CaptureBlitFramebufferNV(const State &glState,
8884                                      bool isCallValid,
8885                                      GLint srcX0,
8886                                      GLint srcY0,
8887                                      GLint srcX1,
8888                                      GLint srcY1,
8889                                      GLint dstX0,
8890                                      GLint dstY0,
8891                                      GLint dstX1,
8892                                      GLint dstY1,
8893                                      GLbitfield mask,
8894                                      GLenum filter)
8895 {
8896     ParamBuffer paramBuffer;
8897 
8898     paramBuffer.addValueParam("srcX0", ParamType::TGLint, srcX0);
8899     paramBuffer.addValueParam("srcY0", ParamType::TGLint, srcY0);
8900     paramBuffer.addValueParam("srcX1", ParamType::TGLint, srcX1);
8901     paramBuffer.addValueParam("srcY1", ParamType::TGLint, srcY1);
8902     paramBuffer.addValueParam("dstX0", ParamType::TGLint, dstX0);
8903     paramBuffer.addValueParam("dstY0", ParamType::TGLint, dstY0);
8904     paramBuffer.addValueParam("dstX1", ParamType::TGLint, dstX1);
8905     paramBuffer.addValueParam("dstY1", ParamType::TGLint, dstY1);
8906     paramBuffer.addEnumParam("mask", GLenumGroup::ClearBufferMask, ParamType::TGLbitfield, mask);
8907     paramBuffer.addEnumParam("filter", GLenumGroup::BlitFramebufferFilter, ParamType::TGLenum,
8908                              filter);
8909 
8910     return CallCapture(angle::EntryPoint::GLBlitFramebufferNV, std::move(paramBuffer));
8911 }
8912 
CaptureEGLImageTargetRenderbufferStorageOES(const State & glState,bool isCallValid,GLenum target,GLeglImageOES image)8913 CallCapture CaptureEGLImageTargetRenderbufferStorageOES(const State &glState,
8914                                                         bool isCallValid,
8915                                                         GLenum target,
8916                                                         GLeglImageOES image)
8917 {
8918     ParamBuffer paramBuffer;
8919 
8920     paramBuffer.addEnumParam("target", GLenumGroup::DefaultGroup, ParamType::TGLenum, target);
8921     paramBuffer.addValueParam("image", ParamType::TGLeglImageOES, image);
8922 
8923     return CallCapture(angle::EntryPoint::GLEGLImageTargetRenderbufferStorageOES,
8924                        std::move(paramBuffer));
8925 }
8926 
CaptureEGLImageTargetTexture2DOES(const State & glState,bool isCallValid,TextureType targetPacked,GLeglImageOES image)8927 CallCapture CaptureEGLImageTargetTexture2DOES(const State &glState,
8928                                               bool isCallValid,
8929                                               TextureType targetPacked,
8930                                               GLeglImageOES image)
8931 {
8932     ParamBuffer paramBuffer;
8933 
8934     paramBuffer.addValueParam("targetPacked", ParamType::TTextureType, targetPacked);
8935     paramBuffer.addValueParam("image", ParamType::TGLeglImageOES, image);
8936 
8937     return CallCapture(angle::EntryPoint::GLEGLImageTargetTexture2DOES, std::move(paramBuffer));
8938 }
8939 
CaptureCopyImageSubDataOES(const State & glState,bool isCallValid,GLuint srcName,GLenum srcTarget,GLint srcLevel,GLint srcX,GLint srcY,GLint srcZ,GLuint dstName,GLenum dstTarget,GLint dstLevel,GLint dstX,GLint dstY,GLint dstZ,GLsizei srcWidth,GLsizei srcHeight,GLsizei srcDepth)8940 CallCapture CaptureCopyImageSubDataOES(const State &glState,
8941                                        bool isCallValid,
8942                                        GLuint srcName,
8943                                        GLenum srcTarget,
8944                                        GLint srcLevel,
8945                                        GLint srcX,
8946                                        GLint srcY,
8947                                        GLint srcZ,
8948                                        GLuint dstName,
8949                                        GLenum dstTarget,
8950                                        GLint dstLevel,
8951                                        GLint dstX,
8952                                        GLint dstY,
8953                                        GLint dstZ,
8954                                        GLsizei srcWidth,
8955                                        GLsizei srcHeight,
8956                                        GLsizei srcDepth)
8957 {
8958     ParamBuffer paramBuffer;
8959 
8960     paramBuffer.addValueParam("srcName", ParamType::TGLuint, srcName);
8961     paramBuffer.addEnumParam("srcTarget", GLenumGroup::CopyBufferSubDataTarget, ParamType::TGLenum,
8962                              srcTarget);
8963     paramBuffer.addValueParam("srcLevel", ParamType::TGLint, srcLevel);
8964     paramBuffer.addValueParam("srcX", ParamType::TGLint, srcX);
8965     paramBuffer.addValueParam("srcY", ParamType::TGLint, srcY);
8966     paramBuffer.addValueParam("srcZ", ParamType::TGLint, srcZ);
8967     paramBuffer.addValueParam("dstName", ParamType::TGLuint, dstName);
8968     paramBuffer.addEnumParam("dstTarget", GLenumGroup::CopyBufferSubDataTarget, ParamType::TGLenum,
8969                              dstTarget);
8970     paramBuffer.addValueParam("dstLevel", ParamType::TGLint, dstLevel);
8971     paramBuffer.addValueParam("dstX", ParamType::TGLint, dstX);
8972     paramBuffer.addValueParam("dstY", ParamType::TGLint, dstY);
8973     paramBuffer.addValueParam("dstZ", ParamType::TGLint, dstZ);
8974     paramBuffer.addValueParam("srcWidth", ParamType::TGLsizei, srcWidth);
8975     paramBuffer.addValueParam("srcHeight", ParamType::TGLsizei, srcHeight);
8976     paramBuffer.addValueParam("srcDepth", ParamType::TGLsizei, srcDepth);
8977 
8978     return CallCapture(angle::EntryPoint::GLCopyImageSubDataOES, std::move(paramBuffer));
8979 }
8980 
CaptureBlendEquationSeparateiOES(const State & glState,bool isCallValid,GLuint buf,GLenum modeRGB,GLenum modeAlpha)8981 CallCapture CaptureBlendEquationSeparateiOES(const State &glState,
8982                                              bool isCallValid,
8983                                              GLuint buf,
8984                                              GLenum modeRGB,
8985                                              GLenum modeAlpha)
8986 {
8987     ParamBuffer paramBuffer;
8988 
8989     paramBuffer.addValueParam("buf", ParamType::TGLuint, buf);
8990     paramBuffer.addEnumParam("modeRGB", GLenumGroup::BlendEquationModeEXT, ParamType::TGLenum,
8991                              modeRGB);
8992     paramBuffer.addEnumParam("modeAlpha", GLenumGroup::BlendEquationModeEXT, ParamType::TGLenum,
8993                              modeAlpha);
8994 
8995     return CallCapture(angle::EntryPoint::GLBlendEquationSeparateiOES, std::move(paramBuffer));
8996 }
8997 
CaptureBlendEquationiOES(const State & glState,bool isCallValid,GLuint buf,GLenum mode)8998 CallCapture CaptureBlendEquationiOES(const State &glState,
8999                                      bool isCallValid,
9000                                      GLuint buf,
9001                                      GLenum mode)
9002 {
9003     ParamBuffer paramBuffer;
9004 
9005     paramBuffer.addValueParam("buf", ParamType::TGLuint, buf);
9006     paramBuffer.addEnumParam("mode", GLenumGroup::BlendEquationModeEXT, ParamType::TGLenum, mode);
9007 
9008     return CallCapture(angle::EntryPoint::GLBlendEquationiOES, std::move(paramBuffer));
9009 }
9010 
CaptureBlendFuncSeparateiOES(const State & glState,bool isCallValid,GLuint buf,GLenum srcRGB,GLenum dstRGB,GLenum srcAlpha,GLenum dstAlpha)9011 CallCapture CaptureBlendFuncSeparateiOES(const State &glState,
9012                                          bool isCallValid,
9013                                          GLuint buf,
9014                                          GLenum srcRGB,
9015                                          GLenum dstRGB,
9016                                          GLenum srcAlpha,
9017                                          GLenum dstAlpha)
9018 {
9019     ParamBuffer paramBuffer;
9020 
9021     paramBuffer.addValueParam("buf", ParamType::TGLuint, buf);
9022     paramBuffer.addEnumParam("srcRGB", GLenumGroup::BlendingFactor, ParamType::TGLenum, srcRGB);
9023     paramBuffer.addEnumParam("dstRGB", GLenumGroup::BlendingFactor, ParamType::TGLenum, dstRGB);
9024     paramBuffer.addEnumParam("srcAlpha", GLenumGroup::BlendingFactor, ParamType::TGLenum, srcAlpha);
9025     paramBuffer.addEnumParam("dstAlpha", GLenumGroup::BlendingFactor, ParamType::TGLenum, dstAlpha);
9026 
9027     return CallCapture(angle::EntryPoint::GLBlendFuncSeparateiOES, std::move(paramBuffer));
9028 }
9029 
CaptureBlendFunciOES(const State & glState,bool isCallValid,GLuint buf,GLenum src,GLenum dst)9030 CallCapture CaptureBlendFunciOES(const State &glState,
9031                                  bool isCallValid,
9032                                  GLuint buf,
9033                                  GLenum src,
9034                                  GLenum dst)
9035 {
9036     ParamBuffer paramBuffer;
9037 
9038     paramBuffer.addValueParam("buf", ParamType::TGLuint, buf);
9039     paramBuffer.addEnumParam("src", GLenumGroup::BlendingFactor, ParamType::TGLenum, src);
9040     paramBuffer.addEnumParam("dst", GLenumGroup::BlendingFactor, ParamType::TGLenum, dst);
9041 
9042     return CallCapture(angle::EntryPoint::GLBlendFunciOES, std::move(paramBuffer));
9043 }
9044 
CaptureColorMaskiOES(const State & glState,bool isCallValid,GLuint index,GLboolean r,GLboolean g,GLboolean b,GLboolean a)9045 CallCapture CaptureColorMaskiOES(const State &glState,
9046                                  bool isCallValid,
9047                                  GLuint index,
9048                                  GLboolean r,
9049                                  GLboolean g,
9050                                  GLboolean b,
9051                                  GLboolean a)
9052 {
9053     ParamBuffer paramBuffer;
9054 
9055     paramBuffer.addValueParam("index", ParamType::TGLuint, index);
9056     paramBuffer.addValueParam("r", ParamType::TGLboolean, r);
9057     paramBuffer.addValueParam("g", ParamType::TGLboolean, g);
9058     paramBuffer.addValueParam("b", ParamType::TGLboolean, b);
9059     paramBuffer.addValueParam("a", ParamType::TGLboolean, a);
9060 
9061     return CallCapture(angle::EntryPoint::GLColorMaskiOES, std::move(paramBuffer));
9062 }
9063 
CaptureDisableiOES(const State & glState,bool isCallValid,GLenum target,GLuint index)9064 CallCapture CaptureDisableiOES(const State &glState, bool isCallValid, GLenum target, GLuint index)
9065 {
9066     ParamBuffer paramBuffer;
9067 
9068     paramBuffer.addEnumParam("target", GLenumGroup::EnableCap, ParamType::TGLenum, target);
9069     paramBuffer.addValueParam("index", ParamType::TGLuint, index);
9070 
9071     return CallCapture(angle::EntryPoint::GLDisableiOES, std::move(paramBuffer));
9072 }
9073 
CaptureEnableiOES(const State & glState,bool isCallValid,GLenum target,GLuint index)9074 CallCapture CaptureEnableiOES(const State &glState, bool isCallValid, GLenum target, GLuint index)
9075 {
9076     ParamBuffer paramBuffer;
9077 
9078     paramBuffer.addEnumParam("target", GLenumGroup::EnableCap, ParamType::TGLenum, target);
9079     paramBuffer.addValueParam("index", ParamType::TGLuint, index);
9080 
9081     return CallCapture(angle::EntryPoint::GLEnableiOES, std::move(paramBuffer));
9082 }
9083 
CaptureIsEnablediOES(const State & glState,bool isCallValid,GLenum target,GLuint index,GLboolean returnValue)9084 CallCapture CaptureIsEnablediOES(const State &glState,
9085                                  bool isCallValid,
9086                                  GLenum target,
9087                                  GLuint index,
9088                                  GLboolean returnValue)
9089 {
9090     ParamBuffer paramBuffer;
9091 
9092     paramBuffer.addEnumParam("target", GLenumGroup::EnableCap, ParamType::TGLenum, target);
9093     paramBuffer.addValueParam("index", ParamType::TGLuint, index);
9094 
9095     ParamCapture returnValueCapture("returnValue", ParamType::TGLboolean);
9096     InitParamValue(ParamType::TGLboolean, returnValue, &returnValueCapture.value);
9097     paramBuffer.addReturnValue(std::move(returnValueCapture));
9098 
9099     return CallCapture(angle::EntryPoint::GLIsEnablediOES, std::move(paramBuffer));
9100 }
9101 
CaptureDrawElementsBaseVertexOES(const State & glState,bool isCallValid,PrimitiveMode modePacked,GLsizei count,DrawElementsType typePacked,const void * indices,GLint basevertex)9102 CallCapture CaptureDrawElementsBaseVertexOES(const State &glState,
9103                                              bool isCallValid,
9104                                              PrimitiveMode modePacked,
9105                                              GLsizei count,
9106                                              DrawElementsType typePacked,
9107                                              const void *indices,
9108                                              GLint basevertex)
9109 {
9110     ParamBuffer paramBuffer;
9111 
9112     paramBuffer.addValueParam("modePacked", ParamType::TPrimitiveMode, modePacked);
9113     paramBuffer.addValueParam("count", ParamType::TGLsizei, count);
9114     paramBuffer.addValueParam("typePacked", ParamType::TDrawElementsType, typePacked);
9115 
9116     if (isCallValid)
9117     {
9118         ParamCapture indicesParam("indices", ParamType::TvoidConstPointer);
9119         InitParamValue(ParamType::TvoidConstPointer, indices, &indicesParam.value);
9120         CaptureDrawElementsBaseVertexOES_indices(glState, isCallValid, modePacked, count,
9121                                                  typePacked, indices, basevertex, &indicesParam);
9122         paramBuffer.addParam(std::move(indicesParam));
9123     }
9124     else
9125     {
9126         ParamCapture indicesParam("indices", ParamType::TvoidConstPointer);
9127         InitParamValue(ParamType::TvoidConstPointer, static_cast<const void *>(nullptr),
9128                        &indicesParam.value);
9129         paramBuffer.addParam(std::move(indicesParam));
9130     }
9131 
9132     paramBuffer.addValueParam("basevertex", ParamType::TGLint, basevertex);
9133 
9134     return CallCapture(angle::EntryPoint::GLDrawElementsBaseVertexOES, std::move(paramBuffer));
9135 }
9136 
CaptureDrawElementsInstancedBaseVertexOES(const State & glState,bool isCallValid,PrimitiveMode modePacked,GLsizei count,DrawElementsType typePacked,const void * indices,GLsizei instancecount,GLint basevertex)9137 CallCapture CaptureDrawElementsInstancedBaseVertexOES(const State &glState,
9138                                                       bool isCallValid,
9139                                                       PrimitiveMode modePacked,
9140                                                       GLsizei count,
9141                                                       DrawElementsType typePacked,
9142                                                       const void *indices,
9143                                                       GLsizei instancecount,
9144                                                       GLint basevertex)
9145 {
9146     ParamBuffer paramBuffer;
9147 
9148     paramBuffer.addValueParam("modePacked", ParamType::TPrimitiveMode, modePacked);
9149     paramBuffer.addValueParam("count", ParamType::TGLsizei, count);
9150     paramBuffer.addValueParam("typePacked", ParamType::TDrawElementsType, typePacked);
9151 
9152     if (isCallValid)
9153     {
9154         ParamCapture indicesParam("indices", ParamType::TvoidConstPointer);
9155         InitParamValue(ParamType::TvoidConstPointer, indices, &indicesParam.value);
9156         CaptureDrawElementsInstancedBaseVertexOES_indices(glState, isCallValid, modePacked, count,
9157                                                           typePacked, indices, instancecount,
9158                                                           basevertex, &indicesParam);
9159         paramBuffer.addParam(std::move(indicesParam));
9160     }
9161     else
9162     {
9163         ParamCapture indicesParam("indices", ParamType::TvoidConstPointer);
9164         InitParamValue(ParamType::TvoidConstPointer, static_cast<const void *>(nullptr),
9165                        &indicesParam.value);
9166         paramBuffer.addParam(std::move(indicesParam));
9167     }
9168 
9169     paramBuffer.addValueParam("instancecount", ParamType::TGLsizei, instancecount);
9170     paramBuffer.addValueParam("basevertex", ParamType::TGLint, basevertex);
9171 
9172     return CallCapture(angle::EntryPoint::GLDrawElementsInstancedBaseVertexOES,
9173                        std::move(paramBuffer));
9174 }
9175 
CaptureDrawRangeElementsBaseVertexOES(const State & glState,bool isCallValid,PrimitiveMode modePacked,GLuint start,GLuint end,GLsizei count,DrawElementsType typePacked,const void * indices,GLint basevertex)9176 CallCapture CaptureDrawRangeElementsBaseVertexOES(const State &glState,
9177                                                   bool isCallValid,
9178                                                   PrimitiveMode modePacked,
9179                                                   GLuint start,
9180                                                   GLuint end,
9181                                                   GLsizei count,
9182                                                   DrawElementsType typePacked,
9183                                                   const void *indices,
9184                                                   GLint basevertex)
9185 {
9186     ParamBuffer paramBuffer;
9187 
9188     paramBuffer.addValueParam("modePacked", ParamType::TPrimitiveMode, modePacked);
9189     paramBuffer.addValueParam("start", ParamType::TGLuint, start);
9190     paramBuffer.addValueParam("end", ParamType::TGLuint, end);
9191     paramBuffer.addValueParam("count", ParamType::TGLsizei, count);
9192     paramBuffer.addValueParam("typePacked", ParamType::TDrawElementsType, typePacked);
9193 
9194     if (isCallValid)
9195     {
9196         ParamCapture indicesParam("indices", ParamType::TvoidConstPointer);
9197         InitParamValue(ParamType::TvoidConstPointer, indices, &indicesParam.value);
9198         CaptureDrawRangeElementsBaseVertexOES_indices(glState, isCallValid, modePacked, start, end,
9199                                                       count, typePacked, indices, basevertex,
9200                                                       &indicesParam);
9201         paramBuffer.addParam(std::move(indicesParam));
9202     }
9203     else
9204     {
9205         ParamCapture indicesParam("indices", ParamType::TvoidConstPointer);
9206         InitParamValue(ParamType::TvoidConstPointer, static_cast<const void *>(nullptr),
9207                        &indicesParam.value);
9208         paramBuffer.addParam(std::move(indicesParam));
9209     }
9210 
9211     paramBuffer.addValueParam("basevertex", ParamType::TGLint, basevertex);
9212 
9213     return CallCapture(angle::EntryPoint::GLDrawRangeElementsBaseVertexOES, std::move(paramBuffer));
9214 }
9215 
CaptureDrawTexfOES(const State & glState,bool isCallValid,GLfloat x,GLfloat y,GLfloat z,GLfloat width,GLfloat height)9216 CallCapture CaptureDrawTexfOES(const State &glState,
9217                                bool isCallValid,
9218                                GLfloat x,
9219                                GLfloat y,
9220                                GLfloat z,
9221                                GLfloat width,
9222                                GLfloat height)
9223 {
9224     ParamBuffer paramBuffer;
9225 
9226     paramBuffer.addValueParam("x", ParamType::TGLfloat, x);
9227     paramBuffer.addValueParam("y", ParamType::TGLfloat, y);
9228     paramBuffer.addValueParam("z", ParamType::TGLfloat, z);
9229     paramBuffer.addValueParam("width", ParamType::TGLfloat, width);
9230     paramBuffer.addValueParam("height", ParamType::TGLfloat, height);
9231 
9232     return CallCapture(angle::EntryPoint::GLDrawTexfOES, std::move(paramBuffer));
9233 }
9234 
CaptureDrawTexfvOES(const State & glState,bool isCallValid,const GLfloat * coords)9235 CallCapture CaptureDrawTexfvOES(const State &glState, bool isCallValid, const GLfloat *coords)
9236 {
9237     ParamBuffer paramBuffer;
9238 
9239     if (isCallValid)
9240     {
9241         ParamCapture coordsParam("coords", ParamType::TGLfloatConstPointer);
9242         InitParamValue(ParamType::TGLfloatConstPointer, coords, &coordsParam.value);
9243         CaptureDrawTexfvOES_coords(glState, isCallValid, coords, &coordsParam);
9244         paramBuffer.addParam(std::move(coordsParam));
9245     }
9246     else
9247     {
9248         ParamCapture coordsParam("coords", ParamType::TGLfloatConstPointer);
9249         InitParamValue(ParamType::TGLfloatConstPointer, static_cast<const GLfloat *>(nullptr),
9250                        &coordsParam.value);
9251         paramBuffer.addParam(std::move(coordsParam));
9252     }
9253 
9254     return CallCapture(angle::EntryPoint::GLDrawTexfvOES, std::move(paramBuffer));
9255 }
9256 
CaptureDrawTexiOES(const State & glState,bool isCallValid,GLint x,GLint y,GLint z,GLint width,GLint height)9257 CallCapture CaptureDrawTexiOES(const State &glState,
9258                                bool isCallValid,
9259                                GLint x,
9260                                GLint y,
9261                                GLint z,
9262                                GLint width,
9263                                GLint height)
9264 {
9265     ParamBuffer paramBuffer;
9266 
9267     paramBuffer.addValueParam("x", ParamType::TGLint, x);
9268     paramBuffer.addValueParam("y", ParamType::TGLint, y);
9269     paramBuffer.addValueParam("z", ParamType::TGLint, z);
9270     paramBuffer.addValueParam("width", ParamType::TGLint, width);
9271     paramBuffer.addValueParam("height", ParamType::TGLint, height);
9272 
9273     return CallCapture(angle::EntryPoint::GLDrawTexiOES, std::move(paramBuffer));
9274 }
9275 
CaptureDrawTexivOES(const State & glState,bool isCallValid,const GLint * coords)9276 CallCapture CaptureDrawTexivOES(const State &glState, bool isCallValid, const GLint *coords)
9277 {
9278     ParamBuffer paramBuffer;
9279 
9280     if (isCallValid)
9281     {
9282         ParamCapture coordsParam("coords", ParamType::TGLintConstPointer);
9283         InitParamValue(ParamType::TGLintConstPointer, coords, &coordsParam.value);
9284         CaptureDrawTexivOES_coords(glState, isCallValid, coords, &coordsParam);
9285         paramBuffer.addParam(std::move(coordsParam));
9286     }
9287     else
9288     {
9289         ParamCapture coordsParam("coords", ParamType::TGLintConstPointer);
9290         InitParamValue(ParamType::TGLintConstPointer, static_cast<const GLint *>(nullptr),
9291                        &coordsParam.value);
9292         paramBuffer.addParam(std::move(coordsParam));
9293     }
9294 
9295     return CallCapture(angle::EntryPoint::GLDrawTexivOES, std::move(paramBuffer));
9296 }
9297 
CaptureDrawTexsOES(const State & glState,bool isCallValid,GLshort x,GLshort y,GLshort z,GLshort width,GLshort height)9298 CallCapture CaptureDrawTexsOES(const State &glState,
9299                                bool isCallValid,
9300                                GLshort x,
9301                                GLshort y,
9302                                GLshort z,
9303                                GLshort width,
9304                                GLshort height)
9305 {
9306     ParamBuffer paramBuffer;
9307 
9308     paramBuffer.addValueParam("x", ParamType::TGLshort, x);
9309     paramBuffer.addValueParam("y", ParamType::TGLshort, y);
9310     paramBuffer.addValueParam("z", ParamType::TGLshort, z);
9311     paramBuffer.addValueParam("width", ParamType::TGLshort, width);
9312     paramBuffer.addValueParam("height", ParamType::TGLshort, height);
9313 
9314     return CallCapture(angle::EntryPoint::GLDrawTexsOES, std::move(paramBuffer));
9315 }
9316 
CaptureDrawTexsvOES(const State & glState,bool isCallValid,const GLshort * coords)9317 CallCapture CaptureDrawTexsvOES(const State &glState, bool isCallValid, const GLshort *coords)
9318 {
9319     ParamBuffer paramBuffer;
9320 
9321     if (isCallValid)
9322     {
9323         ParamCapture coordsParam("coords", ParamType::TGLshortConstPointer);
9324         InitParamValue(ParamType::TGLshortConstPointer, coords, &coordsParam.value);
9325         CaptureDrawTexsvOES_coords(glState, isCallValid, coords, &coordsParam);
9326         paramBuffer.addParam(std::move(coordsParam));
9327     }
9328     else
9329     {
9330         ParamCapture coordsParam("coords", ParamType::TGLshortConstPointer);
9331         InitParamValue(ParamType::TGLshortConstPointer, static_cast<const GLshort *>(nullptr),
9332                        &coordsParam.value);
9333         paramBuffer.addParam(std::move(coordsParam));
9334     }
9335 
9336     return CallCapture(angle::EntryPoint::GLDrawTexsvOES, std::move(paramBuffer));
9337 }
9338 
CaptureDrawTexxOES(const State & glState,bool isCallValid,GLfixed x,GLfixed y,GLfixed z,GLfixed width,GLfixed height)9339 CallCapture CaptureDrawTexxOES(const State &glState,
9340                                bool isCallValid,
9341                                GLfixed x,
9342                                GLfixed y,
9343                                GLfixed z,
9344                                GLfixed width,
9345                                GLfixed height)
9346 {
9347     ParamBuffer paramBuffer;
9348 
9349     paramBuffer.addValueParam("x", ParamType::TGLfixed, x);
9350     paramBuffer.addValueParam("y", ParamType::TGLfixed, y);
9351     paramBuffer.addValueParam("z", ParamType::TGLfixed, z);
9352     paramBuffer.addValueParam("width", ParamType::TGLfixed, width);
9353     paramBuffer.addValueParam("height", ParamType::TGLfixed, height);
9354 
9355     return CallCapture(angle::EntryPoint::GLDrawTexxOES, std::move(paramBuffer));
9356 }
9357 
CaptureDrawTexxvOES(const State & glState,bool isCallValid,const GLfixed * coords)9358 CallCapture CaptureDrawTexxvOES(const State &glState, bool isCallValid, const GLfixed *coords)
9359 {
9360     ParamBuffer paramBuffer;
9361 
9362     if (isCallValid)
9363     {
9364         ParamCapture coordsParam("coords", ParamType::TGLfixedConstPointer);
9365         InitParamValue(ParamType::TGLfixedConstPointer, coords, &coordsParam.value);
9366         CaptureDrawTexxvOES_coords(glState, isCallValid, coords, &coordsParam);
9367         paramBuffer.addParam(std::move(coordsParam));
9368     }
9369     else
9370     {
9371         ParamCapture coordsParam("coords", ParamType::TGLfixedConstPointer);
9372         InitParamValue(ParamType::TGLfixedConstPointer, static_cast<const GLfixed *>(nullptr),
9373                        &coordsParam.value);
9374         paramBuffer.addParam(std::move(coordsParam));
9375     }
9376 
9377     return CallCapture(angle::EntryPoint::GLDrawTexxvOES, std::move(paramBuffer));
9378 }
9379 
CaptureBindFramebufferOES(const State & glState,bool isCallValid,GLenum target,FramebufferID framebufferPacked)9380 CallCapture CaptureBindFramebufferOES(const State &glState,
9381                                       bool isCallValid,
9382                                       GLenum target,
9383                                       FramebufferID framebufferPacked)
9384 {
9385     ParamBuffer paramBuffer;
9386 
9387     paramBuffer.addEnumParam("target", GLenumGroup::FramebufferTarget, ParamType::TGLenum, target);
9388     paramBuffer.addValueParam("framebufferPacked", ParamType::TFramebufferID, framebufferPacked);
9389 
9390     return CallCapture(angle::EntryPoint::GLBindFramebufferOES, std::move(paramBuffer));
9391 }
9392 
CaptureBindRenderbufferOES(const State & glState,bool isCallValid,GLenum target,RenderbufferID renderbufferPacked)9393 CallCapture CaptureBindRenderbufferOES(const State &glState,
9394                                        bool isCallValid,
9395                                        GLenum target,
9396                                        RenderbufferID renderbufferPacked)
9397 {
9398     ParamBuffer paramBuffer;
9399 
9400     paramBuffer.addEnumParam("target", GLenumGroup::RenderbufferTarget, ParamType::TGLenum, target);
9401     paramBuffer.addValueParam("renderbufferPacked", ParamType::TRenderbufferID, renderbufferPacked);
9402 
9403     return CallCapture(angle::EntryPoint::GLBindRenderbufferOES, std::move(paramBuffer));
9404 }
9405 
CaptureCheckFramebufferStatusOES(const State & glState,bool isCallValid,GLenum target,GLenum returnValue)9406 CallCapture CaptureCheckFramebufferStatusOES(const State &glState,
9407                                              bool isCallValid,
9408                                              GLenum target,
9409                                              GLenum returnValue)
9410 {
9411     ParamBuffer paramBuffer;
9412 
9413     paramBuffer.addEnumParam("target", GLenumGroup::FramebufferTarget, ParamType::TGLenum, target);
9414 
9415     ParamCapture returnValueCapture("returnValue", ParamType::TGLenum);
9416     InitParamValue(ParamType::TGLenum, returnValue, &returnValueCapture.value);
9417     paramBuffer.addReturnValue(std::move(returnValueCapture));
9418 
9419     return CallCapture(angle::EntryPoint::GLCheckFramebufferStatusOES, std::move(paramBuffer));
9420 }
9421 
CaptureDeleteFramebuffersOES(const State & glState,bool isCallValid,GLsizei n,const FramebufferID * framebuffersPacked)9422 CallCapture CaptureDeleteFramebuffersOES(const State &glState,
9423                                          bool isCallValid,
9424                                          GLsizei n,
9425                                          const FramebufferID *framebuffersPacked)
9426 {
9427     ParamBuffer paramBuffer;
9428 
9429     paramBuffer.addValueParam("n", ParamType::TGLsizei, n);
9430 
9431     if (isCallValid)
9432     {
9433         ParamCapture framebuffersPackedParam("framebuffersPacked",
9434                                              ParamType::TFramebufferIDConstPointer);
9435         InitParamValue(ParamType::TFramebufferIDConstPointer, framebuffersPacked,
9436                        &framebuffersPackedParam.value);
9437         CaptureDeleteFramebuffersOES_framebuffersPacked(glState, isCallValid, n, framebuffersPacked,
9438                                                         &framebuffersPackedParam);
9439         paramBuffer.addParam(std::move(framebuffersPackedParam));
9440     }
9441     else
9442     {
9443         ParamCapture framebuffersPackedParam("framebuffersPacked",
9444                                              ParamType::TFramebufferIDConstPointer);
9445         InitParamValue(ParamType::TFramebufferIDConstPointer,
9446                        static_cast<const FramebufferID *>(nullptr), &framebuffersPackedParam.value);
9447         paramBuffer.addParam(std::move(framebuffersPackedParam));
9448     }
9449 
9450     return CallCapture(angle::EntryPoint::GLDeleteFramebuffersOES, std::move(paramBuffer));
9451 }
9452 
CaptureDeleteRenderbuffersOES(const State & glState,bool isCallValid,GLsizei n,const RenderbufferID * renderbuffersPacked)9453 CallCapture CaptureDeleteRenderbuffersOES(const State &glState,
9454                                           bool isCallValid,
9455                                           GLsizei n,
9456                                           const RenderbufferID *renderbuffersPacked)
9457 {
9458     ParamBuffer paramBuffer;
9459 
9460     paramBuffer.addValueParam("n", ParamType::TGLsizei, n);
9461 
9462     if (isCallValid)
9463     {
9464         ParamCapture renderbuffersPackedParam("renderbuffersPacked",
9465                                               ParamType::TRenderbufferIDConstPointer);
9466         InitParamValue(ParamType::TRenderbufferIDConstPointer, renderbuffersPacked,
9467                        &renderbuffersPackedParam.value);
9468         CaptureDeleteRenderbuffersOES_renderbuffersPacked(
9469             glState, isCallValid, n, renderbuffersPacked, &renderbuffersPackedParam);
9470         paramBuffer.addParam(std::move(renderbuffersPackedParam));
9471     }
9472     else
9473     {
9474         ParamCapture renderbuffersPackedParam("renderbuffersPacked",
9475                                               ParamType::TRenderbufferIDConstPointer);
9476         InitParamValue(ParamType::TRenderbufferIDConstPointer,
9477                        static_cast<const RenderbufferID *>(nullptr),
9478                        &renderbuffersPackedParam.value);
9479         paramBuffer.addParam(std::move(renderbuffersPackedParam));
9480     }
9481 
9482     return CallCapture(angle::EntryPoint::GLDeleteRenderbuffersOES, std::move(paramBuffer));
9483 }
9484 
CaptureFramebufferRenderbufferOES(const State & glState,bool isCallValid,GLenum target,GLenum attachment,GLenum renderbuffertarget,RenderbufferID renderbufferPacked)9485 CallCapture CaptureFramebufferRenderbufferOES(const State &glState,
9486                                               bool isCallValid,
9487                                               GLenum target,
9488                                               GLenum attachment,
9489                                               GLenum renderbuffertarget,
9490                                               RenderbufferID renderbufferPacked)
9491 {
9492     ParamBuffer paramBuffer;
9493 
9494     paramBuffer.addEnumParam("target", GLenumGroup::FramebufferTarget, ParamType::TGLenum, target);
9495     paramBuffer.addEnumParam("attachment", GLenumGroup::FramebufferAttachment, ParamType::TGLenum,
9496                              attachment);
9497     paramBuffer.addEnumParam("renderbuffertarget", GLenumGroup::RenderbufferTarget,
9498                              ParamType::TGLenum, renderbuffertarget);
9499     paramBuffer.addValueParam("renderbufferPacked", ParamType::TRenderbufferID, renderbufferPacked);
9500 
9501     return CallCapture(angle::EntryPoint::GLFramebufferRenderbufferOES, std::move(paramBuffer));
9502 }
9503 
CaptureFramebufferTexture2DOES(const State & glState,bool isCallValid,GLenum target,GLenum attachment,TextureTarget textargetPacked,TextureID texturePacked,GLint level)9504 CallCapture CaptureFramebufferTexture2DOES(const State &glState,
9505                                            bool isCallValid,
9506                                            GLenum target,
9507                                            GLenum attachment,
9508                                            TextureTarget textargetPacked,
9509                                            TextureID texturePacked,
9510                                            GLint level)
9511 {
9512     ParamBuffer paramBuffer;
9513 
9514     paramBuffer.addEnumParam("target", GLenumGroup::FramebufferTarget, ParamType::TGLenum, target);
9515     paramBuffer.addEnumParam("attachment", GLenumGroup::FramebufferAttachment, ParamType::TGLenum,
9516                              attachment);
9517     paramBuffer.addValueParam("textargetPacked", ParamType::TTextureTarget, textargetPacked);
9518     paramBuffer.addValueParam("texturePacked", ParamType::TTextureID, texturePacked);
9519     paramBuffer.addValueParam("level", ParamType::TGLint, level);
9520 
9521     return CallCapture(angle::EntryPoint::GLFramebufferTexture2DOES, std::move(paramBuffer));
9522 }
9523 
CaptureGenFramebuffersOES(const State & glState,bool isCallValid,GLsizei n,FramebufferID * framebuffersPacked)9524 CallCapture CaptureGenFramebuffersOES(const State &glState,
9525                                       bool isCallValid,
9526                                       GLsizei n,
9527                                       FramebufferID *framebuffersPacked)
9528 {
9529     ParamBuffer paramBuffer;
9530 
9531     paramBuffer.addValueParam("n", ParamType::TGLsizei, n);
9532 
9533     if (isCallValid)
9534     {
9535         ParamCapture framebuffersPackedParam("framebuffersPacked",
9536                                              ParamType::TFramebufferIDPointer);
9537         InitParamValue(ParamType::TFramebufferIDPointer, framebuffersPacked,
9538                        &framebuffersPackedParam.value);
9539         CaptureGenFramebuffersOES_framebuffersPacked(glState, isCallValid, n, framebuffersPacked,
9540                                                      &framebuffersPackedParam);
9541         paramBuffer.addParam(std::move(framebuffersPackedParam));
9542     }
9543     else
9544     {
9545         ParamCapture framebuffersPackedParam("framebuffersPacked",
9546                                              ParamType::TFramebufferIDPointer);
9547         InitParamValue(ParamType::TFramebufferIDPointer, static_cast<FramebufferID *>(nullptr),
9548                        &framebuffersPackedParam.value);
9549         paramBuffer.addParam(std::move(framebuffersPackedParam));
9550     }
9551 
9552     return CallCapture(angle::EntryPoint::GLGenFramebuffersOES, std::move(paramBuffer));
9553 }
9554 
CaptureGenRenderbuffersOES(const State & glState,bool isCallValid,GLsizei n,RenderbufferID * renderbuffersPacked)9555 CallCapture CaptureGenRenderbuffersOES(const State &glState,
9556                                        bool isCallValid,
9557                                        GLsizei n,
9558                                        RenderbufferID *renderbuffersPacked)
9559 {
9560     ParamBuffer paramBuffer;
9561 
9562     paramBuffer.addValueParam("n", ParamType::TGLsizei, n);
9563 
9564     if (isCallValid)
9565     {
9566         ParamCapture renderbuffersPackedParam("renderbuffersPacked",
9567                                               ParamType::TRenderbufferIDPointer);
9568         InitParamValue(ParamType::TRenderbufferIDPointer, renderbuffersPacked,
9569                        &renderbuffersPackedParam.value);
9570         CaptureGenRenderbuffersOES_renderbuffersPacked(glState, isCallValid, n, renderbuffersPacked,
9571                                                        &renderbuffersPackedParam);
9572         paramBuffer.addParam(std::move(renderbuffersPackedParam));
9573     }
9574     else
9575     {
9576         ParamCapture renderbuffersPackedParam("renderbuffersPacked",
9577                                               ParamType::TRenderbufferIDPointer);
9578         InitParamValue(ParamType::TRenderbufferIDPointer, static_cast<RenderbufferID *>(nullptr),
9579                        &renderbuffersPackedParam.value);
9580         paramBuffer.addParam(std::move(renderbuffersPackedParam));
9581     }
9582 
9583     return CallCapture(angle::EntryPoint::GLGenRenderbuffersOES, std::move(paramBuffer));
9584 }
9585 
CaptureGenerateMipmapOES(const State & glState,bool isCallValid,TextureType targetPacked)9586 CallCapture CaptureGenerateMipmapOES(const State &glState,
9587                                      bool isCallValid,
9588                                      TextureType targetPacked)
9589 {
9590     ParamBuffer paramBuffer;
9591 
9592     paramBuffer.addValueParam("targetPacked", ParamType::TTextureType, targetPacked);
9593 
9594     return CallCapture(angle::EntryPoint::GLGenerateMipmapOES, std::move(paramBuffer));
9595 }
9596 
CaptureGetFramebufferAttachmentParameterivOES(const State & glState,bool isCallValid,GLenum target,GLenum attachment,GLenum pname,GLint * params)9597 CallCapture CaptureGetFramebufferAttachmentParameterivOES(const State &glState,
9598                                                           bool isCallValid,
9599                                                           GLenum target,
9600                                                           GLenum attachment,
9601                                                           GLenum pname,
9602                                                           GLint *params)
9603 {
9604     ParamBuffer paramBuffer;
9605 
9606     paramBuffer.addEnumParam("target", GLenumGroup::FramebufferTarget, ParamType::TGLenum, target);
9607     paramBuffer.addEnumParam("attachment", GLenumGroup::FramebufferAttachment, ParamType::TGLenum,
9608                              attachment);
9609     paramBuffer.addEnumParam("pname", GLenumGroup::FramebufferAttachmentParameterName,
9610                              ParamType::TGLenum, pname);
9611 
9612     if (isCallValid)
9613     {
9614         ParamCapture paramsParam("params", ParamType::TGLintPointer);
9615         InitParamValue(ParamType::TGLintPointer, params, &paramsParam.value);
9616         CaptureGetFramebufferAttachmentParameterivOES_params(
9617             glState, isCallValid, target, attachment, pname, params, &paramsParam);
9618         paramBuffer.addParam(std::move(paramsParam));
9619     }
9620     else
9621     {
9622         ParamCapture paramsParam("params", ParamType::TGLintPointer);
9623         InitParamValue(ParamType::TGLintPointer, static_cast<GLint *>(nullptr), &paramsParam.value);
9624         paramBuffer.addParam(std::move(paramsParam));
9625     }
9626 
9627     return CallCapture(angle::EntryPoint::GLGetFramebufferAttachmentParameterivOES,
9628                        std::move(paramBuffer));
9629 }
9630 
CaptureGetRenderbufferParameterivOES(const State & glState,bool isCallValid,GLenum target,GLenum pname,GLint * params)9631 CallCapture CaptureGetRenderbufferParameterivOES(const State &glState,
9632                                                  bool isCallValid,
9633                                                  GLenum target,
9634                                                  GLenum pname,
9635                                                  GLint *params)
9636 {
9637     ParamBuffer paramBuffer;
9638 
9639     paramBuffer.addEnumParam("target", GLenumGroup::RenderbufferTarget, ParamType::TGLenum, target);
9640     paramBuffer.addEnumParam("pname", GLenumGroup::RenderbufferParameterName, ParamType::TGLenum,
9641                              pname);
9642 
9643     if (isCallValid)
9644     {
9645         ParamCapture paramsParam("params", ParamType::TGLintPointer);
9646         InitParamValue(ParamType::TGLintPointer, params, &paramsParam.value);
9647         CaptureGetRenderbufferParameterivOES_params(glState, isCallValid, target, pname, params,
9648                                                     &paramsParam);
9649         paramBuffer.addParam(std::move(paramsParam));
9650     }
9651     else
9652     {
9653         ParamCapture paramsParam("params", ParamType::TGLintPointer);
9654         InitParamValue(ParamType::TGLintPointer, static_cast<GLint *>(nullptr), &paramsParam.value);
9655         paramBuffer.addParam(std::move(paramsParam));
9656     }
9657 
9658     return CallCapture(angle::EntryPoint::GLGetRenderbufferParameterivOES, std::move(paramBuffer));
9659 }
9660 
CaptureIsFramebufferOES(const State & glState,bool isCallValid,FramebufferID framebufferPacked,GLboolean returnValue)9661 CallCapture CaptureIsFramebufferOES(const State &glState,
9662                                     bool isCallValid,
9663                                     FramebufferID framebufferPacked,
9664                                     GLboolean returnValue)
9665 {
9666     ParamBuffer paramBuffer;
9667 
9668     paramBuffer.addValueParam("framebufferPacked", ParamType::TFramebufferID, framebufferPacked);
9669 
9670     ParamCapture returnValueCapture("returnValue", ParamType::TGLboolean);
9671     InitParamValue(ParamType::TGLboolean, returnValue, &returnValueCapture.value);
9672     paramBuffer.addReturnValue(std::move(returnValueCapture));
9673 
9674     return CallCapture(angle::EntryPoint::GLIsFramebufferOES, std::move(paramBuffer));
9675 }
9676 
CaptureIsRenderbufferOES(const State & glState,bool isCallValid,RenderbufferID renderbufferPacked,GLboolean returnValue)9677 CallCapture CaptureIsRenderbufferOES(const State &glState,
9678                                      bool isCallValid,
9679                                      RenderbufferID renderbufferPacked,
9680                                      GLboolean returnValue)
9681 {
9682     ParamBuffer paramBuffer;
9683 
9684     paramBuffer.addValueParam("renderbufferPacked", ParamType::TRenderbufferID, renderbufferPacked);
9685 
9686     ParamCapture returnValueCapture("returnValue", ParamType::TGLboolean);
9687     InitParamValue(ParamType::TGLboolean, returnValue, &returnValueCapture.value);
9688     paramBuffer.addReturnValue(std::move(returnValueCapture));
9689 
9690     return CallCapture(angle::EntryPoint::GLIsRenderbufferOES, std::move(paramBuffer));
9691 }
9692 
CaptureRenderbufferStorageOES(const State & glState,bool isCallValid,GLenum target,GLenum internalformat,GLsizei width,GLsizei height)9693 CallCapture CaptureRenderbufferStorageOES(const State &glState,
9694                                           bool isCallValid,
9695                                           GLenum target,
9696                                           GLenum internalformat,
9697                                           GLsizei width,
9698                                           GLsizei height)
9699 {
9700     ParamBuffer paramBuffer;
9701 
9702     paramBuffer.addEnumParam("target", GLenumGroup::RenderbufferTarget, ParamType::TGLenum, target);
9703     paramBuffer.addEnumParam("internalformat", GLenumGroup::InternalFormat, ParamType::TGLenum,
9704                              internalformat);
9705     paramBuffer.addValueParam("width", ParamType::TGLsizei, width);
9706     paramBuffer.addValueParam("height", ParamType::TGLsizei, height);
9707 
9708     return CallCapture(angle::EntryPoint::GLRenderbufferStorageOES, std::move(paramBuffer));
9709 }
9710 
CaptureFramebufferTextureOES(const State & glState,bool isCallValid,GLenum target,GLenum attachment,TextureID texturePacked,GLint level)9711 CallCapture CaptureFramebufferTextureOES(const State &glState,
9712                                          bool isCallValid,
9713                                          GLenum target,
9714                                          GLenum attachment,
9715                                          TextureID texturePacked,
9716                                          GLint level)
9717 {
9718     ParamBuffer paramBuffer;
9719 
9720     paramBuffer.addEnumParam("target", GLenumGroup::FramebufferTarget, ParamType::TGLenum, target);
9721     paramBuffer.addEnumParam("attachment", GLenumGroup::FramebufferAttachment, ParamType::TGLenum,
9722                              attachment);
9723     paramBuffer.addValueParam("texturePacked", ParamType::TTextureID, texturePacked);
9724     paramBuffer.addValueParam("level", ParamType::TGLint, level);
9725 
9726     return CallCapture(angle::EntryPoint::GLFramebufferTextureOES, std::move(paramBuffer));
9727 }
9728 
CaptureGetProgramBinaryOES(const State & glState,bool isCallValid,ShaderProgramID programPacked,GLsizei bufSize,GLsizei * length,GLenum * binaryFormat,void * binary)9729 CallCapture CaptureGetProgramBinaryOES(const State &glState,
9730                                        bool isCallValid,
9731                                        ShaderProgramID programPacked,
9732                                        GLsizei bufSize,
9733                                        GLsizei *length,
9734                                        GLenum *binaryFormat,
9735                                        void *binary)
9736 {
9737     ParamBuffer paramBuffer;
9738 
9739     paramBuffer.addValueParam("programPacked", ParamType::TShaderProgramID, programPacked);
9740     paramBuffer.addValueParam("bufSize", ParamType::TGLsizei, bufSize);
9741 
9742     if (isCallValid)
9743     {
9744         ParamCapture lengthParam("length", ParamType::TGLsizeiPointer);
9745         InitParamValue(ParamType::TGLsizeiPointer, length, &lengthParam.value);
9746         CaptureGetProgramBinaryOES_length(glState, isCallValid, programPacked, bufSize, length,
9747                                           binaryFormat, binary, &lengthParam);
9748         paramBuffer.addParam(std::move(lengthParam));
9749     }
9750     else
9751     {
9752         ParamCapture lengthParam("length", ParamType::TGLsizeiPointer);
9753         InitParamValue(ParamType::TGLsizeiPointer, static_cast<GLsizei *>(nullptr),
9754                        &lengthParam.value);
9755         paramBuffer.addParam(std::move(lengthParam));
9756     }
9757 
9758     if (isCallValid)
9759     {
9760         ParamCapture binaryFormatParam("binaryFormat", ParamType::TGLenumPointer);
9761         InitParamValue(ParamType::TGLenumPointer, binaryFormat, &binaryFormatParam.value);
9762         CaptureGetProgramBinaryOES_binaryFormat(glState, isCallValid, programPacked, bufSize,
9763                                                 length, binaryFormat, binary, &binaryFormatParam);
9764         paramBuffer.addParam(std::move(binaryFormatParam));
9765     }
9766     else
9767     {
9768         ParamCapture binaryFormatParam("binaryFormat", ParamType::TGLenumPointer);
9769         InitParamValue(ParamType::TGLenumPointer, static_cast<GLenum *>(nullptr),
9770                        &binaryFormatParam.value);
9771         paramBuffer.addParam(std::move(binaryFormatParam));
9772     }
9773 
9774     if (isCallValid)
9775     {
9776         ParamCapture binaryParam("binary", ParamType::TvoidPointer);
9777         InitParamValue(ParamType::TvoidPointer, binary, &binaryParam.value);
9778         CaptureGetProgramBinaryOES_binary(glState, isCallValid, programPacked, bufSize, length,
9779                                           binaryFormat, binary, &binaryParam);
9780         paramBuffer.addParam(std::move(binaryParam));
9781     }
9782     else
9783     {
9784         ParamCapture binaryParam("binary", ParamType::TvoidPointer);
9785         InitParamValue(ParamType::TvoidPointer, static_cast<void *>(nullptr), &binaryParam.value);
9786         paramBuffer.addParam(std::move(binaryParam));
9787     }
9788 
9789     return CallCapture(angle::EntryPoint::GLGetProgramBinaryOES, std::move(paramBuffer));
9790 }
9791 
CaptureProgramBinaryOES(const State & glState,bool isCallValid,ShaderProgramID programPacked,GLenum binaryFormat,const void * binary,GLint length)9792 CallCapture CaptureProgramBinaryOES(const State &glState,
9793                                     bool isCallValid,
9794                                     ShaderProgramID programPacked,
9795                                     GLenum binaryFormat,
9796                                     const void *binary,
9797                                     GLint length)
9798 {
9799     ParamBuffer paramBuffer;
9800 
9801     paramBuffer.addValueParam("programPacked", ParamType::TShaderProgramID, programPacked);
9802     paramBuffer.addEnumParam("binaryFormat", GLenumGroup::DefaultGroup, ParamType::TGLenum,
9803                              binaryFormat);
9804 
9805     if (isCallValid)
9806     {
9807         ParamCapture binaryParam("binary", ParamType::TvoidConstPointer);
9808         InitParamValue(ParamType::TvoidConstPointer, binary, &binaryParam.value);
9809         CaptureProgramBinaryOES_binary(glState, isCallValid, programPacked, binaryFormat, binary,
9810                                        length, &binaryParam);
9811         paramBuffer.addParam(std::move(binaryParam));
9812     }
9813     else
9814     {
9815         ParamCapture binaryParam("binary", ParamType::TvoidConstPointer);
9816         InitParamValue(ParamType::TvoidConstPointer, static_cast<const void *>(nullptr),
9817                        &binaryParam.value);
9818         paramBuffer.addParam(std::move(binaryParam));
9819     }
9820 
9821     paramBuffer.addValueParam("length", ParamType::TGLint, length);
9822 
9823     return CallCapture(angle::EntryPoint::GLProgramBinaryOES, std::move(paramBuffer));
9824 }
9825 
CaptureGetBufferPointervOES(const State & glState,bool isCallValid,BufferBinding targetPacked,GLenum pname,void ** params)9826 CallCapture CaptureGetBufferPointervOES(const State &glState,
9827                                         bool isCallValid,
9828                                         BufferBinding targetPacked,
9829                                         GLenum pname,
9830                                         void **params)
9831 {
9832     ParamBuffer paramBuffer;
9833 
9834     paramBuffer.addValueParam("targetPacked", ParamType::TBufferBinding, targetPacked);
9835     paramBuffer.addEnumParam("pname", GLenumGroup::DefaultGroup, ParamType::TGLenum, pname);
9836 
9837     if (isCallValid)
9838     {
9839         ParamCapture paramsParam("params", ParamType::TvoidPointerPointer);
9840         InitParamValue(ParamType::TvoidPointerPointer, params, &paramsParam.value);
9841         CaptureGetBufferPointervOES_params(glState, isCallValid, targetPacked, pname, params,
9842                                            &paramsParam);
9843         paramBuffer.addParam(std::move(paramsParam));
9844     }
9845     else
9846     {
9847         ParamCapture paramsParam("params", ParamType::TvoidPointerPointer);
9848         InitParamValue(ParamType::TvoidPointerPointer, static_cast<void **>(nullptr),
9849                        &paramsParam.value);
9850         paramBuffer.addParam(std::move(paramsParam));
9851     }
9852 
9853     return CallCapture(angle::EntryPoint::GLGetBufferPointervOES, std::move(paramBuffer));
9854 }
9855 
CaptureMapBufferOES(const State & glState,bool isCallValid,BufferBinding targetPacked,GLenum access,void * returnValue)9856 CallCapture CaptureMapBufferOES(const State &glState,
9857                                 bool isCallValid,
9858                                 BufferBinding targetPacked,
9859                                 GLenum access,
9860                                 void *returnValue)
9861 {
9862     ParamBuffer paramBuffer;
9863 
9864     paramBuffer.addValueParam("targetPacked", ParamType::TBufferBinding, targetPacked);
9865     paramBuffer.addEnumParam("access", GLenumGroup::BufferAccessARB, ParamType::TGLenum, access);
9866 
9867     ParamCapture returnValueCapture("returnValue", ParamType::TvoidPointer);
9868     InitParamValue(ParamType::TvoidPointer, returnValue, &returnValueCapture.value);
9869     paramBuffer.addReturnValue(std::move(returnValueCapture));
9870 
9871     return CallCapture(angle::EntryPoint::GLMapBufferOES, std::move(paramBuffer));
9872 }
9873 
CaptureUnmapBufferOES(const State & glState,bool isCallValid,BufferBinding targetPacked,GLboolean returnValue)9874 CallCapture CaptureUnmapBufferOES(const State &glState,
9875                                   bool isCallValid,
9876                                   BufferBinding targetPacked,
9877                                   GLboolean returnValue)
9878 {
9879     ParamBuffer paramBuffer;
9880 
9881     paramBuffer.addValueParam("targetPacked", ParamType::TBufferBinding, targetPacked);
9882 
9883     ParamCapture returnValueCapture("returnValue", ParamType::TGLboolean);
9884     InitParamValue(ParamType::TGLboolean, returnValue, &returnValueCapture.value);
9885     paramBuffer.addReturnValue(std::move(returnValueCapture));
9886 
9887     return CallCapture(angle::EntryPoint::GLUnmapBufferOES, std::move(paramBuffer));
9888 }
9889 
CaptureCurrentPaletteMatrixOES(const State & glState,bool isCallValid,GLuint matrixpaletteindex)9890 CallCapture CaptureCurrentPaletteMatrixOES(const State &glState,
9891                                            bool isCallValid,
9892                                            GLuint matrixpaletteindex)
9893 {
9894     ParamBuffer paramBuffer;
9895 
9896     paramBuffer.addValueParam("matrixpaletteindex", ParamType::TGLuint, matrixpaletteindex);
9897 
9898     return CallCapture(angle::EntryPoint::GLCurrentPaletteMatrixOES, std::move(paramBuffer));
9899 }
9900 
CaptureLoadPaletteFromModelViewMatrixOES(const State & glState,bool isCallValid)9901 CallCapture CaptureLoadPaletteFromModelViewMatrixOES(const State &glState, bool isCallValid)
9902 {
9903     ParamBuffer paramBuffer;
9904 
9905     return CallCapture(angle::EntryPoint::GLLoadPaletteFromModelViewMatrixOES,
9906                        std::move(paramBuffer));
9907 }
9908 
CaptureMatrixIndexPointerOES(const State & glState,bool isCallValid,GLint size,GLenum type,GLsizei stride,const void * pointer)9909 CallCapture CaptureMatrixIndexPointerOES(const State &glState,
9910                                          bool isCallValid,
9911                                          GLint size,
9912                                          GLenum type,
9913                                          GLsizei stride,
9914                                          const void *pointer)
9915 {
9916     ParamBuffer paramBuffer;
9917 
9918     paramBuffer.addValueParam("size", ParamType::TGLint, size);
9919     paramBuffer.addEnumParam("type", GLenumGroup::DefaultGroup, ParamType::TGLenum, type);
9920     paramBuffer.addValueParam("stride", ParamType::TGLsizei, stride);
9921 
9922     if (isCallValid)
9923     {
9924         ParamCapture pointerParam("pointer", ParamType::TvoidConstPointer);
9925         InitParamValue(ParamType::TvoidConstPointer, pointer, &pointerParam.value);
9926         CaptureMatrixIndexPointerOES_pointer(glState, isCallValid, size, type, stride, pointer,
9927                                              &pointerParam);
9928         paramBuffer.addParam(std::move(pointerParam));
9929     }
9930     else
9931     {
9932         ParamCapture pointerParam("pointer", ParamType::TvoidConstPointer);
9933         InitParamValue(ParamType::TvoidConstPointer, static_cast<const void *>(nullptr),
9934                        &pointerParam.value);
9935         paramBuffer.addParam(std::move(pointerParam));
9936     }
9937 
9938     return CallCapture(angle::EntryPoint::GLMatrixIndexPointerOES, std::move(paramBuffer));
9939 }
9940 
CaptureWeightPointerOES(const State & glState,bool isCallValid,GLint size,GLenum type,GLsizei stride,const void * pointer)9941 CallCapture CaptureWeightPointerOES(const State &glState,
9942                                     bool isCallValid,
9943                                     GLint size,
9944                                     GLenum type,
9945                                     GLsizei stride,
9946                                     const void *pointer)
9947 {
9948     ParamBuffer paramBuffer;
9949 
9950     paramBuffer.addValueParam("size", ParamType::TGLint, size);
9951     paramBuffer.addEnumParam("type", GLenumGroup::DefaultGroup, ParamType::TGLenum, type);
9952     paramBuffer.addValueParam("stride", ParamType::TGLsizei, stride);
9953 
9954     if (isCallValid)
9955     {
9956         ParamCapture pointerParam("pointer", ParamType::TvoidConstPointer);
9957         InitParamValue(ParamType::TvoidConstPointer, pointer, &pointerParam.value);
9958         CaptureWeightPointerOES_pointer(glState, isCallValid, size, type, stride, pointer,
9959                                         &pointerParam);
9960         paramBuffer.addParam(std::move(pointerParam));
9961     }
9962     else
9963     {
9964         ParamCapture pointerParam("pointer", ParamType::TvoidConstPointer);
9965         InitParamValue(ParamType::TvoidConstPointer, static_cast<const void *>(nullptr),
9966                        &pointerParam.value);
9967         paramBuffer.addParam(std::move(pointerParam));
9968     }
9969 
9970     return CallCapture(angle::EntryPoint::GLWeightPointerOES, std::move(paramBuffer));
9971 }
9972 
CapturePointSizePointerOES(const State & glState,bool isCallValid,VertexAttribType typePacked,GLsizei stride,const void * pointer)9973 CallCapture CapturePointSizePointerOES(const State &glState,
9974                                        bool isCallValid,
9975                                        VertexAttribType typePacked,
9976                                        GLsizei stride,
9977                                        const void *pointer)
9978 {
9979     ParamBuffer paramBuffer;
9980 
9981     paramBuffer.addValueParam("typePacked", ParamType::TVertexAttribType, typePacked);
9982     paramBuffer.addValueParam("stride", ParamType::TGLsizei, stride);
9983 
9984     if (isCallValid)
9985     {
9986         ParamCapture pointerParam("pointer", ParamType::TvoidConstPointer);
9987         InitParamValue(ParamType::TvoidConstPointer, pointer, &pointerParam.value);
9988         CapturePointSizePointerOES_pointer(glState, isCallValid, typePacked, stride, pointer,
9989                                            &pointerParam);
9990         paramBuffer.addParam(std::move(pointerParam));
9991     }
9992     else
9993     {
9994         ParamCapture pointerParam("pointer", ParamType::TvoidConstPointer);
9995         InitParamValue(ParamType::TvoidConstPointer, static_cast<const void *>(nullptr),
9996                        &pointerParam.value);
9997         paramBuffer.addParam(std::move(pointerParam));
9998     }
9999 
10000     return CallCapture(angle::EntryPoint::GLPointSizePointerOES, std::move(paramBuffer));
10001 }
10002 
CaptureQueryMatrixxOES(const State & glState,bool isCallValid,GLfixed * mantissa,GLint * exponent,GLbitfield returnValue)10003 CallCapture CaptureQueryMatrixxOES(const State &glState,
10004                                    bool isCallValid,
10005                                    GLfixed *mantissa,
10006                                    GLint *exponent,
10007                                    GLbitfield returnValue)
10008 {
10009     ParamBuffer paramBuffer;
10010 
10011     if (isCallValid)
10012     {
10013         ParamCapture mantissaParam("mantissa", ParamType::TGLfixedPointer);
10014         InitParamValue(ParamType::TGLfixedPointer, mantissa, &mantissaParam.value);
10015         CaptureQueryMatrixxOES_mantissa(glState, isCallValid, mantissa, exponent, &mantissaParam);
10016         paramBuffer.addParam(std::move(mantissaParam));
10017     }
10018     else
10019     {
10020         ParamCapture mantissaParam("mantissa", ParamType::TGLfixedPointer);
10021         InitParamValue(ParamType::TGLfixedPointer, static_cast<GLfixed *>(nullptr),
10022                        &mantissaParam.value);
10023         paramBuffer.addParam(std::move(mantissaParam));
10024     }
10025 
10026     if (isCallValid)
10027     {
10028         ParamCapture exponentParam("exponent", ParamType::TGLintPointer);
10029         InitParamValue(ParamType::TGLintPointer, exponent, &exponentParam.value);
10030         CaptureQueryMatrixxOES_exponent(glState, isCallValid, mantissa, exponent, &exponentParam);
10031         paramBuffer.addParam(std::move(exponentParam));
10032     }
10033     else
10034     {
10035         ParamCapture exponentParam("exponent", ParamType::TGLintPointer);
10036         InitParamValue(ParamType::TGLintPointer, static_cast<GLint *>(nullptr),
10037                        &exponentParam.value);
10038         paramBuffer.addParam(std::move(exponentParam));
10039     }
10040 
10041     ParamCapture returnValueCapture("returnValue", ParamType::TGLbitfield);
10042     InitParamValue(ParamType::TGLbitfield, returnValue, &returnValueCapture.value);
10043     paramBuffer.addReturnValue(std::move(returnValueCapture));
10044 
10045     return CallCapture(angle::EntryPoint::GLQueryMatrixxOES, std::move(paramBuffer));
10046 }
10047 
CaptureMinSampleShadingOES(const State & glState,bool isCallValid,GLfloat value)10048 CallCapture CaptureMinSampleShadingOES(const State &glState, bool isCallValid, GLfloat value)
10049 {
10050     ParamBuffer paramBuffer;
10051 
10052     paramBuffer.addValueParam("value", ParamType::TGLfloat, value);
10053 
10054     return CallCapture(angle::EntryPoint::GLMinSampleShadingOES, std::move(paramBuffer));
10055 }
10056 
CaptureCompressedTexImage3DOES(const State & glState,bool isCallValid,TextureTarget targetPacked,GLint level,GLenum internalformat,GLsizei width,GLsizei height,GLsizei depth,GLint border,GLsizei imageSize,const void * data)10057 CallCapture CaptureCompressedTexImage3DOES(const State &glState,
10058                                            bool isCallValid,
10059                                            TextureTarget targetPacked,
10060                                            GLint level,
10061                                            GLenum internalformat,
10062                                            GLsizei width,
10063                                            GLsizei height,
10064                                            GLsizei depth,
10065                                            GLint border,
10066                                            GLsizei imageSize,
10067                                            const void *data)
10068 {
10069     ParamBuffer paramBuffer;
10070 
10071     paramBuffer.addValueParam("targetPacked", ParamType::TTextureTarget, targetPacked);
10072     paramBuffer.addValueParam("level", ParamType::TGLint, level);
10073     paramBuffer.addEnumParam("internalformat", GLenumGroup::InternalFormat, ParamType::TGLenum,
10074                              internalformat);
10075     paramBuffer.addValueParam("width", ParamType::TGLsizei, width);
10076     paramBuffer.addValueParam("height", ParamType::TGLsizei, height);
10077     paramBuffer.addValueParam("depth", ParamType::TGLsizei, depth);
10078     paramBuffer.addValueParam("border", ParamType::TGLint, border);
10079     paramBuffer.addValueParam("imageSize", ParamType::TGLsizei, imageSize);
10080 
10081     if (isCallValid)
10082     {
10083         ParamCapture dataParam("data", ParamType::TvoidConstPointer);
10084         InitParamValue(ParamType::TvoidConstPointer, data, &dataParam.value);
10085         CaptureCompressedTexImage3DOES_data(glState, isCallValid, targetPacked, level,
10086                                             internalformat, width, height, depth, border, imageSize,
10087                                             data, &dataParam);
10088         paramBuffer.addParam(std::move(dataParam));
10089     }
10090     else
10091     {
10092         ParamCapture dataParam("data", ParamType::TvoidConstPointer);
10093         InitParamValue(ParamType::TvoidConstPointer, static_cast<const void *>(nullptr),
10094                        &dataParam.value);
10095         paramBuffer.addParam(std::move(dataParam));
10096     }
10097 
10098     return CallCapture(angle::EntryPoint::GLCompressedTexImage3DOES, std::move(paramBuffer));
10099 }
10100 
CaptureCompressedTexSubImage3DOES(const State & glState,bool isCallValid,TextureTarget targetPacked,GLint level,GLint xoffset,GLint yoffset,GLint zoffset,GLsizei width,GLsizei height,GLsizei depth,GLenum format,GLsizei imageSize,const void * data)10101 CallCapture CaptureCompressedTexSubImage3DOES(const State &glState,
10102                                               bool isCallValid,
10103                                               TextureTarget targetPacked,
10104                                               GLint level,
10105                                               GLint xoffset,
10106                                               GLint yoffset,
10107                                               GLint zoffset,
10108                                               GLsizei width,
10109                                               GLsizei height,
10110                                               GLsizei depth,
10111                                               GLenum format,
10112                                               GLsizei imageSize,
10113                                               const void *data)
10114 {
10115     ParamBuffer paramBuffer;
10116 
10117     paramBuffer.addValueParam("targetPacked", ParamType::TTextureTarget, targetPacked);
10118     paramBuffer.addValueParam("level", ParamType::TGLint, level);
10119     paramBuffer.addValueParam("xoffset", ParamType::TGLint, xoffset);
10120     paramBuffer.addValueParam("yoffset", ParamType::TGLint, yoffset);
10121     paramBuffer.addValueParam("zoffset", ParamType::TGLint, zoffset);
10122     paramBuffer.addValueParam("width", ParamType::TGLsizei, width);
10123     paramBuffer.addValueParam("height", ParamType::TGLsizei, height);
10124     paramBuffer.addValueParam("depth", ParamType::TGLsizei, depth);
10125     paramBuffer.addEnumParam("format", GLenumGroup::PixelFormat, ParamType::TGLenum, format);
10126     paramBuffer.addValueParam("imageSize", ParamType::TGLsizei, imageSize);
10127 
10128     if (isCallValid)
10129     {
10130         ParamCapture dataParam("data", ParamType::TvoidConstPointer);
10131         InitParamValue(ParamType::TvoidConstPointer, data, &dataParam.value);
10132         CaptureCompressedTexSubImage3DOES_data(glState, isCallValid, targetPacked, level, xoffset,
10133                                                yoffset, zoffset, width, height, depth, format,
10134                                                imageSize, data, &dataParam);
10135         paramBuffer.addParam(std::move(dataParam));
10136     }
10137     else
10138     {
10139         ParamCapture dataParam("data", ParamType::TvoidConstPointer);
10140         InitParamValue(ParamType::TvoidConstPointer, static_cast<const void *>(nullptr),
10141                        &dataParam.value);
10142         paramBuffer.addParam(std::move(dataParam));
10143     }
10144 
10145     return CallCapture(angle::EntryPoint::GLCompressedTexSubImage3DOES, std::move(paramBuffer));
10146 }
10147 
CaptureCopyTexSubImage3DOES(const State & glState,bool isCallValid,TextureTarget targetPacked,GLint level,GLint xoffset,GLint yoffset,GLint zoffset,GLint x,GLint y,GLsizei width,GLsizei height)10148 CallCapture CaptureCopyTexSubImage3DOES(const State &glState,
10149                                         bool isCallValid,
10150                                         TextureTarget targetPacked,
10151                                         GLint level,
10152                                         GLint xoffset,
10153                                         GLint yoffset,
10154                                         GLint zoffset,
10155                                         GLint x,
10156                                         GLint y,
10157                                         GLsizei width,
10158                                         GLsizei height)
10159 {
10160     ParamBuffer paramBuffer;
10161 
10162     paramBuffer.addValueParam("targetPacked", ParamType::TTextureTarget, targetPacked);
10163     paramBuffer.addValueParam("level", ParamType::TGLint, level);
10164     paramBuffer.addValueParam("xoffset", ParamType::TGLint, xoffset);
10165     paramBuffer.addValueParam("yoffset", ParamType::TGLint, yoffset);
10166     paramBuffer.addValueParam("zoffset", ParamType::TGLint, zoffset);
10167     paramBuffer.addValueParam("x", ParamType::TGLint, x);
10168     paramBuffer.addValueParam("y", ParamType::TGLint, y);
10169     paramBuffer.addValueParam("width", ParamType::TGLsizei, width);
10170     paramBuffer.addValueParam("height", ParamType::TGLsizei, height);
10171 
10172     return CallCapture(angle::EntryPoint::GLCopyTexSubImage3DOES, std::move(paramBuffer));
10173 }
10174 
CaptureFramebufferTexture3DOES(const State & glState,bool isCallValid,GLenum target,GLenum attachment,TextureTarget textargetPacked,TextureID texturePacked,GLint level,GLint zoffset)10175 CallCapture CaptureFramebufferTexture3DOES(const State &glState,
10176                                            bool isCallValid,
10177                                            GLenum target,
10178                                            GLenum attachment,
10179                                            TextureTarget textargetPacked,
10180                                            TextureID texturePacked,
10181                                            GLint level,
10182                                            GLint zoffset)
10183 {
10184     ParamBuffer paramBuffer;
10185 
10186     paramBuffer.addEnumParam("target", GLenumGroup::FramebufferTarget, ParamType::TGLenum, target);
10187     paramBuffer.addEnumParam("attachment", GLenumGroup::FramebufferAttachment, ParamType::TGLenum,
10188                              attachment);
10189     paramBuffer.addValueParam("textargetPacked", ParamType::TTextureTarget, textargetPacked);
10190     paramBuffer.addValueParam("texturePacked", ParamType::TTextureID, texturePacked);
10191     paramBuffer.addValueParam("level", ParamType::TGLint, level);
10192     paramBuffer.addValueParam("zoffset", ParamType::TGLint, zoffset);
10193 
10194     return CallCapture(angle::EntryPoint::GLFramebufferTexture3DOES, std::move(paramBuffer));
10195 }
10196 
CaptureTexImage3DOES(const State & glState,bool isCallValid,TextureTarget targetPacked,GLint level,GLenum internalformat,GLsizei width,GLsizei height,GLsizei depth,GLint border,GLenum format,GLenum type,const void * pixels)10197 CallCapture CaptureTexImage3DOES(const State &glState,
10198                                  bool isCallValid,
10199                                  TextureTarget targetPacked,
10200                                  GLint level,
10201                                  GLenum internalformat,
10202                                  GLsizei width,
10203                                  GLsizei height,
10204                                  GLsizei depth,
10205                                  GLint border,
10206                                  GLenum format,
10207                                  GLenum type,
10208                                  const void *pixels)
10209 {
10210     ParamBuffer paramBuffer;
10211 
10212     paramBuffer.addValueParam("targetPacked", ParamType::TTextureTarget, targetPacked);
10213     paramBuffer.addValueParam("level", ParamType::TGLint, level);
10214     paramBuffer.addEnumParam("internalformat", GLenumGroup::InternalFormat, ParamType::TGLenum,
10215                              internalformat);
10216     paramBuffer.addValueParam("width", ParamType::TGLsizei, width);
10217     paramBuffer.addValueParam("height", ParamType::TGLsizei, height);
10218     paramBuffer.addValueParam("depth", ParamType::TGLsizei, depth);
10219     paramBuffer.addValueParam("border", ParamType::TGLint, border);
10220     paramBuffer.addEnumParam("format", GLenumGroup::PixelFormat, ParamType::TGLenum, format);
10221     paramBuffer.addEnumParam("type", GLenumGroup::PixelType, ParamType::TGLenum, type);
10222 
10223     if (isCallValid)
10224     {
10225         ParamCapture pixelsParam("pixels", ParamType::TvoidConstPointer);
10226         InitParamValue(ParamType::TvoidConstPointer, pixels, &pixelsParam.value);
10227         CaptureTexImage3DOES_pixels(glState, isCallValid, targetPacked, level, internalformat,
10228                                     width, height, depth, border, format, type, pixels,
10229                                     &pixelsParam);
10230         paramBuffer.addParam(std::move(pixelsParam));
10231     }
10232     else
10233     {
10234         ParamCapture pixelsParam("pixels", ParamType::TvoidConstPointer);
10235         InitParamValue(ParamType::TvoidConstPointer, static_cast<const void *>(nullptr),
10236                        &pixelsParam.value);
10237         paramBuffer.addParam(std::move(pixelsParam));
10238     }
10239 
10240     return CallCapture(angle::EntryPoint::GLTexImage3DOES, std::move(paramBuffer));
10241 }
10242 
CaptureTexSubImage3DOES(const State & glState,bool isCallValid,TextureTarget targetPacked,GLint level,GLint xoffset,GLint yoffset,GLint zoffset,GLsizei width,GLsizei height,GLsizei depth,GLenum format,GLenum type,const void * pixels)10243 CallCapture CaptureTexSubImage3DOES(const State &glState,
10244                                     bool isCallValid,
10245                                     TextureTarget targetPacked,
10246                                     GLint level,
10247                                     GLint xoffset,
10248                                     GLint yoffset,
10249                                     GLint zoffset,
10250                                     GLsizei width,
10251                                     GLsizei height,
10252                                     GLsizei depth,
10253                                     GLenum format,
10254                                     GLenum type,
10255                                     const void *pixels)
10256 {
10257     ParamBuffer paramBuffer;
10258 
10259     paramBuffer.addValueParam("targetPacked", ParamType::TTextureTarget, targetPacked);
10260     paramBuffer.addValueParam("level", ParamType::TGLint, level);
10261     paramBuffer.addValueParam("xoffset", ParamType::TGLint, xoffset);
10262     paramBuffer.addValueParam("yoffset", ParamType::TGLint, yoffset);
10263     paramBuffer.addValueParam("zoffset", ParamType::TGLint, zoffset);
10264     paramBuffer.addValueParam("width", ParamType::TGLsizei, width);
10265     paramBuffer.addValueParam("height", ParamType::TGLsizei, height);
10266     paramBuffer.addValueParam("depth", ParamType::TGLsizei, depth);
10267     paramBuffer.addEnumParam("format", GLenumGroup::PixelFormat, ParamType::TGLenum, format);
10268     paramBuffer.addEnumParam("type", GLenumGroup::PixelType, ParamType::TGLenum, type);
10269 
10270     if (isCallValid)
10271     {
10272         ParamCapture pixelsParam("pixels", ParamType::TvoidConstPointer);
10273         InitParamValue(ParamType::TvoidConstPointer, pixels, &pixelsParam.value);
10274         CaptureTexSubImage3DOES_pixels(glState, isCallValid, targetPacked, level, xoffset, yoffset,
10275                                        zoffset, width, height, depth, format, type, pixels,
10276                                        &pixelsParam);
10277         paramBuffer.addParam(std::move(pixelsParam));
10278     }
10279     else
10280     {
10281         ParamCapture pixelsParam("pixels", ParamType::TvoidConstPointer);
10282         InitParamValue(ParamType::TvoidConstPointer, static_cast<const void *>(nullptr),
10283                        &pixelsParam.value);
10284         paramBuffer.addParam(std::move(pixelsParam));
10285     }
10286 
10287     return CallCapture(angle::EntryPoint::GLTexSubImage3DOES, std::move(paramBuffer));
10288 }
10289 
CaptureGetSamplerParameterIivOES(const State & glState,bool isCallValid,SamplerID samplerPacked,GLenum pname,GLint * params)10290 CallCapture CaptureGetSamplerParameterIivOES(const State &glState,
10291                                              bool isCallValid,
10292                                              SamplerID samplerPacked,
10293                                              GLenum pname,
10294                                              GLint *params)
10295 {
10296     ParamBuffer paramBuffer;
10297 
10298     paramBuffer.addValueParam("samplerPacked", ParamType::TSamplerID, samplerPacked);
10299     paramBuffer.addEnumParam("pname", GLenumGroup::SamplerParameterName, ParamType::TGLenum, pname);
10300 
10301     if (isCallValid)
10302     {
10303         ParamCapture paramsParam("params", ParamType::TGLintPointer);
10304         InitParamValue(ParamType::TGLintPointer, params, &paramsParam.value);
10305         CaptureGetSamplerParameterIivOES_params(glState, isCallValid, samplerPacked, pname, params,
10306                                                 &paramsParam);
10307         paramBuffer.addParam(std::move(paramsParam));
10308     }
10309     else
10310     {
10311         ParamCapture paramsParam("params", ParamType::TGLintPointer);
10312         InitParamValue(ParamType::TGLintPointer, static_cast<GLint *>(nullptr), &paramsParam.value);
10313         paramBuffer.addParam(std::move(paramsParam));
10314     }
10315 
10316     return CallCapture(angle::EntryPoint::GLGetSamplerParameterIivOES, std::move(paramBuffer));
10317 }
10318 
CaptureGetSamplerParameterIuivOES(const State & glState,bool isCallValid,SamplerID samplerPacked,GLenum pname,GLuint * params)10319 CallCapture CaptureGetSamplerParameterIuivOES(const State &glState,
10320                                               bool isCallValid,
10321                                               SamplerID samplerPacked,
10322                                               GLenum pname,
10323                                               GLuint *params)
10324 {
10325     ParamBuffer paramBuffer;
10326 
10327     paramBuffer.addValueParam("samplerPacked", ParamType::TSamplerID, samplerPacked);
10328     paramBuffer.addEnumParam("pname", GLenumGroup::SamplerParameterName, ParamType::TGLenum, pname);
10329 
10330     if (isCallValid)
10331     {
10332         ParamCapture paramsParam("params", ParamType::TGLuintPointer);
10333         InitParamValue(ParamType::TGLuintPointer, params, &paramsParam.value);
10334         CaptureGetSamplerParameterIuivOES_params(glState, isCallValid, samplerPacked, pname, params,
10335                                                  &paramsParam);
10336         paramBuffer.addParam(std::move(paramsParam));
10337     }
10338     else
10339     {
10340         ParamCapture paramsParam("params", ParamType::TGLuintPointer);
10341         InitParamValue(ParamType::TGLuintPointer, static_cast<GLuint *>(nullptr),
10342                        &paramsParam.value);
10343         paramBuffer.addParam(std::move(paramsParam));
10344     }
10345 
10346     return CallCapture(angle::EntryPoint::GLGetSamplerParameterIuivOES, std::move(paramBuffer));
10347 }
10348 
CaptureGetTexParameterIivOES(const State & glState,bool isCallValid,TextureType targetPacked,GLenum pname,GLint * params)10349 CallCapture CaptureGetTexParameterIivOES(const State &glState,
10350                                          bool isCallValid,
10351                                          TextureType targetPacked,
10352                                          GLenum pname,
10353                                          GLint *params)
10354 {
10355     ParamBuffer paramBuffer;
10356 
10357     paramBuffer.addValueParam("targetPacked", ParamType::TTextureType, targetPacked);
10358     paramBuffer.addEnumParam("pname", GLenumGroup::GetTextureParameter, ParamType::TGLenum, pname);
10359 
10360     if (isCallValid)
10361     {
10362         ParamCapture paramsParam("params", ParamType::TGLintPointer);
10363         InitParamValue(ParamType::TGLintPointer, params, &paramsParam.value);
10364         CaptureGetTexParameterIivOES_params(glState, isCallValid, targetPacked, pname, params,
10365                                             &paramsParam);
10366         paramBuffer.addParam(std::move(paramsParam));
10367     }
10368     else
10369     {
10370         ParamCapture paramsParam("params", ParamType::TGLintPointer);
10371         InitParamValue(ParamType::TGLintPointer, static_cast<GLint *>(nullptr), &paramsParam.value);
10372         paramBuffer.addParam(std::move(paramsParam));
10373     }
10374 
10375     return CallCapture(angle::EntryPoint::GLGetTexParameterIivOES, std::move(paramBuffer));
10376 }
10377 
CaptureGetTexParameterIuivOES(const State & glState,bool isCallValid,TextureType targetPacked,GLenum pname,GLuint * params)10378 CallCapture CaptureGetTexParameterIuivOES(const State &glState,
10379                                           bool isCallValid,
10380                                           TextureType targetPacked,
10381                                           GLenum pname,
10382                                           GLuint *params)
10383 {
10384     ParamBuffer paramBuffer;
10385 
10386     paramBuffer.addValueParam("targetPacked", ParamType::TTextureType, targetPacked);
10387     paramBuffer.addEnumParam("pname", GLenumGroup::GetTextureParameter, ParamType::TGLenum, pname);
10388 
10389     if (isCallValid)
10390     {
10391         ParamCapture paramsParam("params", ParamType::TGLuintPointer);
10392         InitParamValue(ParamType::TGLuintPointer, params, &paramsParam.value);
10393         CaptureGetTexParameterIuivOES_params(glState, isCallValid, targetPacked, pname, params,
10394                                              &paramsParam);
10395         paramBuffer.addParam(std::move(paramsParam));
10396     }
10397     else
10398     {
10399         ParamCapture paramsParam("params", ParamType::TGLuintPointer);
10400         InitParamValue(ParamType::TGLuintPointer, static_cast<GLuint *>(nullptr),
10401                        &paramsParam.value);
10402         paramBuffer.addParam(std::move(paramsParam));
10403     }
10404 
10405     return CallCapture(angle::EntryPoint::GLGetTexParameterIuivOES, std::move(paramBuffer));
10406 }
10407 
CaptureSamplerParameterIivOES(const State & glState,bool isCallValid,SamplerID samplerPacked,GLenum pname,const GLint * param)10408 CallCapture CaptureSamplerParameterIivOES(const State &glState,
10409                                           bool isCallValid,
10410                                           SamplerID samplerPacked,
10411                                           GLenum pname,
10412                                           const GLint *param)
10413 {
10414     ParamBuffer paramBuffer;
10415 
10416     paramBuffer.addValueParam("samplerPacked", ParamType::TSamplerID, samplerPacked);
10417     paramBuffer.addEnumParam("pname", GLenumGroup::SamplerParameterName, ParamType::TGLenum, pname);
10418 
10419     if (isCallValid)
10420     {
10421         ParamCapture paramParam("param", ParamType::TGLintConstPointer);
10422         InitParamValue(ParamType::TGLintConstPointer, param, &paramParam.value);
10423         CaptureSamplerParameterIivOES_param(glState, isCallValid, samplerPacked, pname, param,
10424                                             &paramParam);
10425         paramBuffer.addParam(std::move(paramParam));
10426     }
10427     else
10428     {
10429         ParamCapture paramParam("param", ParamType::TGLintConstPointer);
10430         InitParamValue(ParamType::TGLintConstPointer, static_cast<const GLint *>(nullptr),
10431                        &paramParam.value);
10432         paramBuffer.addParam(std::move(paramParam));
10433     }
10434 
10435     return CallCapture(angle::EntryPoint::GLSamplerParameterIivOES, std::move(paramBuffer));
10436 }
10437 
CaptureSamplerParameterIuivOES(const State & glState,bool isCallValid,SamplerID samplerPacked,GLenum pname,const GLuint * param)10438 CallCapture CaptureSamplerParameterIuivOES(const State &glState,
10439                                            bool isCallValid,
10440                                            SamplerID samplerPacked,
10441                                            GLenum pname,
10442                                            const GLuint *param)
10443 {
10444     ParamBuffer paramBuffer;
10445 
10446     paramBuffer.addValueParam("samplerPacked", ParamType::TSamplerID, samplerPacked);
10447     paramBuffer.addEnumParam("pname", GLenumGroup::SamplerParameterName, ParamType::TGLenum, pname);
10448 
10449     if (isCallValid)
10450     {
10451         ParamCapture paramParam("param", ParamType::TGLuintConstPointer);
10452         InitParamValue(ParamType::TGLuintConstPointer, param, &paramParam.value);
10453         CaptureSamplerParameterIuivOES_param(glState, isCallValid, samplerPacked, pname, param,
10454                                              &paramParam);
10455         paramBuffer.addParam(std::move(paramParam));
10456     }
10457     else
10458     {
10459         ParamCapture paramParam("param", ParamType::TGLuintConstPointer);
10460         InitParamValue(ParamType::TGLuintConstPointer, static_cast<const GLuint *>(nullptr),
10461                        &paramParam.value);
10462         paramBuffer.addParam(std::move(paramParam));
10463     }
10464 
10465     return CallCapture(angle::EntryPoint::GLSamplerParameterIuivOES, std::move(paramBuffer));
10466 }
10467 
CaptureTexParameterIivOES(const State & glState,bool isCallValid,TextureType targetPacked,GLenum pname,const GLint * params)10468 CallCapture CaptureTexParameterIivOES(const State &glState,
10469                                       bool isCallValid,
10470                                       TextureType targetPacked,
10471                                       GLenum pname,
10472                                       const GLint *params)
10473 {
10474     ParamBuffer paramBuffer;
10475 
10476     paramBuffer.addValueParam("targetPacked", ParamType::TTextureType, targetPacked);
10477     paramBuffer.addEnumParam("pname", GLenumGroup::TextureParameterName, ParamType::TGLenum, pname);
10478 
10479     if (isCallValid)
10480     {
10481         ParamCapture paramsParam("params", ParamType::TGLintConstPointer);
10482         InitParamValue(ParamType::TGLintConstPointer, params, &paramsParam.value);
10483         CaptureTexParameterIivOES_params(glState, isCallValid, targetPacked, pname, params,
10484                                          &paramsParam);
10485         paramBuffer.addParam(std::move(paramsParam));
10486     }
10487     else
10488     {
10489         ParamCapture paramsParam("params", ParamType::TGLintConstPointer);
10490         InitParamValue(ParamType::TGLintConstPointer, static_cast<const GLint *>(nullptr),
10491                        &paramsParam.value);
10492         paramBuffer.addParam(std::move(paramsParam));
10493     }
10494 
10495     return CallCapture(angle::EntryPoint::GLTexParameterIivOES, std::move(paramBuffer));
10496 }
10497 
CaptureTexParameterIuivOES(const State & glState,bool isCallValid,TextureType targetPacked,GLenum pname,const GLuint * params)10498 CallCapture CaptureTexParameterIuivOES(const State &glState,
10499                                        bool isCallValid,
10500                                        TextureType targetPacked,
10501                                        GLenum pname,
10502                                        const GLuint *params)
10503 {
10504     ParamBuffer paramBuffer;
10505 
10506     paramBuffer.addValueParam("targetPacked", ParamType::TTextureType, targetPacked);
10507     paramBuffer.addEnumParam("pname", GLenumGroup::TextureParameterName, ParamType::TGLenum, pname);
10508 
10509     if (isCallValid)
10510     {
10511         ParamCapture paramsParam("params", ParamType::TGLuintConstPointer);
10512         InitParamValue(ParamType::TGLuintConstPointer, params, &paramsParam.value);
10513         CaptureTexParameterIuivOES_params(glState, isCallValid, targetPacked, pname, params,
10514                                           &paramsParam);
10515         paramBuffer.addParam(std::move(paramsParam));
10516     }
10517     else
10518     {
10519         ParamCapture paramsParam("params", ParamType::TGLuintConstPointer);
10520         InitParamValue(ParamType::TGLuintConstPointer, static_cast<const GLuint *>(nullptr),
10521                        &paramsParam.value);
10522         paramBuffer.addParam(std::move(paramsParam));
10523     }
10524 
10525     return CallCapture(angle::EntryPoint::GLTexParameterIuivOES, std::move(paramBuffer));
10526 }
10527 
CaptureTexBufferOES(const State & glState,bool isCallValid,TextureType targetPacked,GLenum internalformat,BufferID bufferPacked)10528 CallCapture CaptureTexBufferOES(const State &glState,
10529                                 bool isCallValid,
10530                                 TextureType targetPacked,
10531                                 GLenum internalformat,
10532                                 BufferID bufferPacked)
10533 {
10534     ParamBuffer paramBuffer;
10535 
10536     paramBuffer.addValueParam("targetPacked", ParamType::TTextureType, targetPacked);
10537     paramBuffer.addEnumParam("internalformat", GLenumGroup::InternalFormat, ParamType::TGLenum,
10538                              internalformat);
10539     paramBuffer.addValueParam("bufferPacked", ParamType::TBufferID, bufferPacked);
10540 
10541     return CallCapture(angle::EntryPoint::GLTexBufferOES, std::move(paramBuffer));
10542 }
10543 
CaptureTexBufferRangeOES(const State & glState,bool isCallValid,TextureType targetPacked,GLenum internalformat,BufferID bufferPacked,GLintptr offset,GLsizeiptr size)10544 CallCapture CaptureTexBufferRangeOES(const State &glState,
10545                                      bool isCallValid,
10546                                      TextureType targetPacked,
10547                                      GLenum internalformat,
10548                                      BufferID bufferPacked,
10549                                      GLintptr offset,
10550                                      GLsizeiptr size)
10551 {
10552     ParamBuffer paramBuffer;
10553 
10554     paramBuffer.addValueParam("targetPacked", ParamType::TTextureType, targetPacked);
10555     paramBuffer.addEnumParam("internalformat", GLenumGroup::InternalFormat, ParamType::TGLenum,
10556                              internalformat);
10557     paramBuffer.addValueParam("bufferPacked", ParamType::TBufferID, bufferPacked);
10558     paramBuffer.addValueParam("offset", ParamType::TGLintptr, offset);
10559     paramBuffer.addValueParam("size", ParamType::TGLsizeiptr, size);
10560 
10561     return CallCapture(angle::EntryPoint::GLTexBufferRangeOES, std::move(paramBuffer));
10562 }
10563 
CaptureGetTexGenfvOES(const State & glState,bool isCallValid,GLenum coord,GLenum pname,GLfloat * params)10564 CallCapture CaptureGetTexGenfvOES(const State &glState,
10565                                   bool isCallValid,
10566                                   GLenum coord,
10567                                   GLenum pname,
10568                                   GLfloat *params)
10569 {
10570     ParamBuffer paramBuffer;
10571 
10572     paramBuffer.addEnumParam("coord", GLenumGroup::TextureCoordName, ParamType::TGLenum, coord);
10573     paramBuffer.addEnumParam("pname", GLenumGroup::TextureGenParameter, ParamType::TGLenum, pname);
10574 
10575     if (isCallValid)
10576     {
10577         ParamCapture paramsParam("params", ParamType::TGLfloatPointer);
10578         InitParamValue(ParamType::TGLfloatPointer, params, &paramsParam.value);
10579         CaptureGetTexGenfvOES_params(glState, isCallValid, coord, pname, params, &paramsParam);
10580         paramBuffer.addParam(std::move(paramsParam));
10581     }
10582     else
10583     {
10584         ParamCapture paramsParam("params", ParamType::TGLfloatPointer);
10585         InitParamValue(ParamType::TGLfloatPointer, static_cast<GLfloat *>(nullptr),
10586                        &paramsParam.value);
10587         paramBuffer.addParam(std::move(paramsParam));
10588     }
10589 
10590     return CallCapture(angle::EntryPoint::GLGetTexGenfvOES, std::move(paramBuffer));
10591 }
10592 
CaptureGetTexGenivOES(const State & glState,bool isCallValid,GLenum coord,GLenum pname,GLint * params)10593 CallCapture CaptureGetTexGenivOES(const State &glState,
10594                                   bool isCallValid,
10595                                   GLenum coord,
10596                                   GLenum pname,
10597                                   GLint *params)
10598 {
10599     ParamBuffer paramBuffer;
10600 
10601     paramBuffer.addEnumParam("coord", GLenumGroup::TextureCoordName, ParamType::TGLenum, coord);
10602     paramBuffer.addEnumParam("pname", GLenumGroup::TextureGenParameter, ParamType::TGLenum, pname);
10603 
10604     if (isCallValid)
10605     {
10606         ParamCapture paramsParam("params", ParamType::TGLintPointer);
10607         InitParamValue(ParamType::TGLintPointer, params, &paramsParam.value);
10608         CaptureGetTexGenivOES_params(glState, isCallValid, coord, pname, params, &paramsParam);
10609         paramBuffer.addParam(std::move(paramsParam));
10610     }
10611     else
10612     {
10613         ParamCapture paramsParam("params", ParamType::TGLintPointer);
10614         InitParamValue(ParamType::TGLintPointer, static_cast<GLint *>(nullptr), &paramsParam.value);
10615         paramBuffer.addParam(std::move(paramsParam));
10616     }
10617 
10618     return CallCapture(angle::EntryPoint::GLGetTexGenivOES, std::move(paramBuffer));
10619 }
10620 
CaptureGetTexGenxvOES(const State & glState,bool isCallValid,GLenum coord,GLenum pname,GLfixed * params)10621 CallCapture CaptureGetTexGenxvOES(const State &glState,
10622                                   bool isCallValid,
10623                                   GLenum coord,
10624                                   GLenum pname,
10625                                   GLfixed *params)
10626 {
10627     ParamBuffer paramBuffer;
10628 
10629     paramBuffer.addEnumParam("coord", GLenumGroup::TextureCoordName, ParamType::TGLenum, coord);
10630     paramBuffer.addEnumParam("pname", GLenumGroup::TextureGenParameter, ParamType::TGLenum, pname);
10631 
10632     if (isCallValid)
10633     {
10634         ParamCapture paramsParam("params", ParamType::TGLfixedPointer);
10635         InitParamValue(ParamType::TGLfixedPointer, params, &paramsParam.value);
10636         CaptureGetTexGenxvOES_params(glState, isCallValid, coord, pname, params, &paramsParam);
10637         paramBuffer.addParam(std::move(paramsParam));
10638     }
10639     else
10640     {
10641         ParamCapture paramsParam("params", ParamType::TGLfixedPointer);
10642         InitParamValue(ParamType::TGLfixedPointer, static_cast<GLfixed *>(nullptr),
10643                        &paramsParam.value);
10644         paramBuffer.addParam(std::move(paramsParam));
10645     }
10646 
10647     return CallCapture(angle::EntryPoint::GLGetTexGenxvOES, std::move(paramBuffer));
10648 }
10649 
CaptureTexGenfOES(const State & glState,bool isCallValid,GLenum coord,GLenum pname,GLfloat param)10650 CallCapture CaptureTexGenfOES(const State &glState,
10651                               bool isCallValid,
10652                               GLenum coord,
10653                               GLenum pname,
10654                               GLfloat param)
10655 {
10656     ParamBuffer paramBuffer;
10657 
10658     paramBuffer.addEnumParam("coord", GLenumGroup::TextureCoordName, ParamType::TGLenum, coord);
10659     paramBuffer.addEnumParam("pname", GLenumGroup::TextureGenParameter, ParamType::TGLenum, pname);
10660     paramBuffer.addValueParam("param", ParamType::TGLfloat, param);
10661 
10662     return CallCapture(angle::EntryPoint::GLTexGenfOES, std::move(paramBuffer));
10663 }
10664 
CaptureTexGenfvOES(const State & glState,bool isCallValid,GLenum coord,GLenum pname,const GLfloat * params)10665 CallCapture CaptureTexGenfvOES(const State &glState,
10666                                bool isCallValid,
10667                                GLenum coord,
10668                                GLenum pname,
10669                                const GLfloat *params)
10670 {
10671     ParamBuffer paramBuffer;
10672 
10673     paramBuffer.addEnumParam("coord", GLenumGroup::TextureCoordName, ParamType::TGLenum, coord);
10674     paramBuffer.addEnumParam("pname", GLenumGroup::TextureGenParameter, ParamType::TGLenum, pname);
10675 
10676     if (isCallValid)
10677     {
10678         ParamCapture paramsParam("params", ParamType::TGLfloatConstPointer);
10679         InitParamValue(ParamType::TGLfloatConstPointer, params, &paramsParam.value);
10680         CaptureTexGenfvOES_params(glState, isCallValid, coord, pname, params, &paramsParam);
10681         paramBuffer.addParam(std::move(paramsParam));
10682     }
10683     else
10684     {
10685         ParamCapture paramsParam("params", ParamType::TGLfloatConstPointer);
10686         InitParamValue(ParamType::TGLfloatConstPointer, static_cast<const GLfloat *>(nullptr),
10687                        &paramsParam.value);
10688         paramBuffer.addParam(std::move(paramsParam));
10689     }
10690 
10691     return CallCapture(angle::EntryPoint::GLTexGenfvOES, std::move(paramBuffer));
10692 }
10693 
CaptureTexGeniOES(const State & glState,bool isCallValid,GLenum coord,GLenum pname,GLint param)10694 CallCapture CaptureTexGeniOES(const State &glState,
10695                               bool isCallValid,
10696                               GLenum coord,
10697                               GLenum pname,
10698                               GLint param)
10699 {
10700     ParamBuffer paramBuffer;
10701 
10702     paramBuffer.addEnumParam("coord", GLenumGroup::TextureCoordName, ParamType::TGLenum, coord);
10703     paramBuffer.addEnumParam("pname", GLenumGroup::TextureGenParameter, ParamType::TGLenum, pname);
10704     paramBuffer.addValueParam("param", ParamType::TGLint, param);
10705 
10706     return CallCapture(angle::EntryPoint::GLTexGeniOES, std::move(paramBuffer));
10707 }
10708 
CaptureTexGenivOES(const State & glState,bool isCallValid,GLenum coord,GLenum pname,const GLint * params)10709 CallCapture CaptureTexGenivOES(const State &glState,
10710                                bool isCallValid,
10711                                GLenum coord,
10712                                GLenum pname,
10713                                const GLint *params)
10714 {
10715     ParamBuffer paramBuffer;
10716 
10717     paramBuffer.addEnumParam("coord", GLenumGroup::TextureCoordName, ParamType::TGLenum, coord);
10718     paramBuffer.addEnumParam("pname", GLenumGroup::TextureGenParameter, ParamType::TGLenum, pname);
10719 
10720     if (isCallValid)
10721     {
10722         ParamCapture paramsParam("params", ParamType::TGLintConstPointer);
10723         InitParamValue(ParamType::TGLintConstPointer, params, &paramsParam.value);
10724         CaptureTexGenivOES_params(glState, isCallValid, coord, pname, params, &paramsParam);
10725         paramBuffer.addParam(std::move(paramsParam));
10726     }
10727     else
10728     {
10729         ParamCapture paramsParam("params", ParamType::TGLintConstPointer);
10730         InitParamValue(ParamType::TGLintConstPointer, static_cast<const GLint *>(nullptr),
10731                        &paramsParam.value);
10732         paramBuffer.addParam(std::move(paramsParam));
10733     }
10734 
10735     return CallCapture(angle::EntryPoint::GLTexGenivOES, std::move(paramBuffer));
10736 }
10737 
CaptureTexGenxOES(const State & glState,bool isCallValid,GLenum coord,GLenum pname,GLfixed param)10738 CallCapture CaptureTexGenxOES(const State &glState,
10739                               bool isCallValid,
10740                               GLenum coord,
10741                               GLenum pname,
10742                               GLfixed param)
10743 {
10744     ParamBuffer paramBuffer;
10745 
10746     paramBuffer.addEnumParam("coord", GLenumGroup::TextureCoordName, ParamType::TGLenum, coord);
10747     paramBuffer.addEnumParam("pname", GLenumGroup::TextureGenParameter, ParamType::TGLenum, pname);
10748     paramBuffer.addValueParam("param", ParamType::TGLfixed, param);
10749 
10750     return CallCapture(angle::EntryPoint::GLTexGenxOES, std::move(paramBuffer));
10751 }
10752 
CaptureTexGenxvOES(const State & glState,bool isCallValid,GLenum coord,GLenum pname,const GLfixed * params)10753 CallCapture CaptureTexGenxvOES(const State &glState,
10754                                bool isCallValid,
10755                                GLenum coord,
10756                                GLenum pname,
10757                                const GLfixed *params)
10758 {
10759     ParamBuffer paramBuffer;
10760 
10761     paramBuffer.addEnumParam("coord", GLenumGroup::TextureCoordName, ParamType::TGLenum, coord);
10762     paramBuffer.addEnumParam("pname", GLenumGroup::TextureGenParameter, ParamType::TGLenum, pname);
10763 
10764     if (isCallValid)
10765     {
10766         ParamCapture paramsParam("params", ParamType::TGLfixedConstPointer);
10767         InitParamValue(ParamType::TGLfixedConstPointer, params, &paramsParam.value);
10768         CaptureTexGenxvOES_params(glState, isCallValid, coord, pname, params, &paramsParam);
10769         paramBuffer.addParam(std::move(paramsParam));
10770     }
10771     else
10772     {
10773         ParamCapture paramsParam("params", ParamType::TGLfixedConstPointer);
10774         InitParamValue(ParamType::TGLfixedConstPointer, static_cast<const GLfixed *>(nullptr),
10775                        &paramsParam.value);
10776         paramBuffer.addParam(std::move(paramsParam));
10777     }
10778 
10779     return CallCapture(angle::EntryPoint::GLTexGenxvOES, std::move(paramBuffer));
10780 }
10781 
CaptureTexStorage3DMultisampleOES(const State & glState,bool isCallValid,TextureType targetPacked,GLsizei samples,GLenum internalformat,GLsizei width,GLsizei height,GLsizei depth,GLboolean fixedsamplelocations)10782 CallCapture CaptureTexStorage3DMultisampleOES(const State &glState,
10783                                               bool isCallValid,
10784                                               TextureType targetPacked,
10785                                               GLsizei samples,
10786                                               GLenum internalformat,
10787                                               GLsizei width,
10788                                               GLsizei height,
10789                                               GLsizei depth,
10790                                               GLboolean fixedsamplelocations)
10791 {
10792     ParamBuffer paramBuffer;
10793 
10794     paramBuffer.addValueParam("targetPacked", ParamType::TTextureType, targetPacked);
10795     paramBuffer.addValueParam("samples", ParamType::TGLsizei, samples);
10796     paramBuffer.addEnumParam("internalformat", GLenumGroup::InternalFormat, ParamType::TGLenum,
10797                              internalformat);
10798     paramBuffer.addValueParam("width", ParamType::TGLsizei, width);
10799     paramBuffer.addValueParam("height", ParamType::TGLsizei, height);
10800     paramBuffer.addValueParam("depth", ParamType::TGLsizei, depth);
10801     paramBuffer.addValueParam("fixedsamplelocations", ParamType::TGLboolean, fixedsamplelocations);
10802 
10803     return CallCapture(angle::EntryPoint::GLTexStorage3DMultisampleOES, std::move(paramBuffer));
10804 }
10805 
CaptureBindVertexArrayOES(const State & glState,bool isCallValid,VertexArrayID arrayPacked)10806 CallCapture CaptureBindVertexArrayOES(const State &glState,
10807                                       bool isCallValid,
10808                                       VertexArrayID arrayPacked)
10809 {
10810     ParamBuffer paramBuffer;
10811 
10812     paramBuffer.addValueParam("arrayPacked", ParamType::TVertexArrayID, arrayPacked);
10813 
10814     return CallCapture(angle::EntryPoint::GLBindVertexArrayOES, std::move(paramBuffer));
10815 }
10816 
CaptureDeleteVertexArraysOES(const State & glState,bool isCallValid,GLsizei n,const VertexArrayID * arraysPacked)10817 CallCapture CaptureDeleteVertexArraysOES(const State &glState,
10818                                          bool isCallValid,
10819                                          GLsizei n,
10820                                          const VertexArrayID *arraysPacked)
10821 {
10822     ParamBuffer paramBuffer;
10823 
10824     paramBuffer.addValueParam("n", ParamType::TGLsizei, n);
10825 
10826     if (isCallValid)
10827     {
10828         ParamCapture arraysPackedParam("arraysPacked", ParamType::TVertexArrayIDConstPointer);
10829         InitParamValue(ParamType::TVertexArrayIDConstPointer, arraysPacked,
10830                        &arraysPackedParam.value);
10831         CaptureDeleteVertexArraysOES_arraysPacked(glState, isCallValid, n, arraysPacked,
10832                                                   &arraysPackedParam);
10833         paramBuffer.addParam(std::move(arraysPackedParam));
10834     }
10835     else
10836     {
10837         ParamCapture arraysPackedParam("arraysPacked", ParamType::TVertexArrayIDConstPointer);
10838         InitParamValue(ParamType::TVertexArrayIDConstPointer,
10839                        static_cast<const VertexArrayID *>(nullptr), &arraysPackedParam.value);
10840         paramBuffer.addParam(std::move(arraysPackedParam));
10841     }
10842 
10843     return CallCapture(angle::EntryPoint::GLDeleteVertexArraysOES, std::move(paramBuffer));
10844 }
10845 
CaptureGenVertexArraysOES(const State & glState,bool isCallValid,GLsizei n,VertexArrayID * arraysPacked)10846 CallCapture CaptureGenVertexArraysOES(const State &glState,
10847                                       bool isCallValid,
10848                                       GLsizei n,
10849                                       VertexArrayID *arraysPacked)
10850 {
10851     ParamBuffer paramBuffer;
10852 
10853     paramBuffer.addValueParam("n", ParamType::TGLsizei, n);
10854 
10855     if (isCallValid)
10856     {
10857         ParamCapture arraysPackedParam("arraysPacked", ParamType::TVertexArrayIDPointer);
10858         InitParamValue(ParamType::TVertexArrayIDPointer, arraysPacked, &arraysPackedParam.value);
10859         CaptureGenVertexArraysOES_arraysPacked(glState, isCallValid, n, arraysPacked,
10860                                                &arraysPackedParam);
10861         paramBuffer.addParam(std::move(arraysPackedParam));
10862     }
10863     else
10864     {
10865         ParamCapture arraysPackedParam("arraysPacked", ParamType::TVertexArrayIDPointer);
10866         InitParamValue(ParamType::TVertexArrayIDPointer, static_cast<VertexArrayID *>(nullptr),
10867                        &arraysPackedParam.value);
10868         paramBuffer.addParam(std::move(arraysPackedParam));
10869     }
10870 
10871     return CallCapture(angle::EntryPoint::GLGenVertexArraysOES, std::move(paramBuffer));
10872 }
10873 
CaptureIsVertexArrayOES(const State & glState,bool isCallValid,VertexArrayID arrayPacked,GLboolean returnValue)10874 CallCapture CaptureIsVertexArrayOES(const State &glState,
10875                                     bool isCallValid,
10876                                     VertexArrayID arrayPacked,
10877                                     GLboolean returnValue)
10878 {
10879     ParamBuffer paramBuffer;
10880 
10881     paramBuffer.addValueParam("arrayPacked", ParamType::TVertexArrayID, arrayPacked);
10882 
10883     ParamCapture returnValueCapture("returnValue", ParamType::TGLboolean);
10884     InitParamValue(ParamType::TGLboolean, returnValue, &returnValueCapture.value);
10885     paramBuffer.addReturnValue(std::move(returnValueCapture));
10886 
10887     return CallCapture(angle::EntryPoint::GLIsVertexArrayOES, std::move(paramBuffer));
10888 }
10889 
CaptureFramebufferTextureMultiviewOVR(const State & glState,bool isCallValid,GLenum target,GLenum attachment,TextureID texturePacked,GLint level,GLint baseViewIndex,GLsizei numViews)10890 CallCapture CaptureFramebufferTextureMultiviewOVR(const State &glState,
10891                                                   bool isCallValid,
10892                                                   GLenum target,
10893                                                   GLenum attachment,
10894                                                   TextureID texturePacked,
10895                                                   GLint level,
10896                                                   GLint baseViewIndex,
10897                                                   GLsizei numViews)
10898 {
10899     ParamBuffer paramBuffer;
10900 
10901     paramBuffer.addEnumParam("target", GLenumGroup::FramebufferTarget, ParamType::TGLenum, target);
10902     paramBuffer.addEnumParam("attachment", GLenumGroup::FramebufferAttachment, ParamType::TGLenum,
10903                              attachment);
10904     paramBuffer.addValueParam("texturePacked", ParamType::TTextureID, texturePacked);
10905     paramBuffer.addValueParam("level", ParamType::TGLint, level);
10906     paramBuffer.addValueParam("baseViewIndex", ParamType::TGLint, baseViewIndex);
10907     paramBuffer.addValueParam("numViews", ParamType::TGLsizei, numViews);
10908 
10909     return CallCapture(angle::EntryPoint::GLFramebufferTextureMultiviewOVR, std::move(paramBuffer));
10910 }
10911 
10912 }  // namespace gl
10913