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