1 //
2 // Copyright 2019 The ANGLE Project Authors. All rights reserved.
3 // Use of this source code is governed by a BSD-style license that can be
4 // found in the LICENSE file.
5 //
6 // capture_gles31_params.cpp:
7 // Pointer parameter capture functions for the OpenGL ES 3.1 entry points.
8
9 #include "libANGLE/capture/capture_gles_3_1_autogen.h"
10
11 using namespace angle;
12
13 namespace gl
14 {
15
CaptureCreateShaderProgramv_strings(const State & glState,bool isCallValid,ShaderType typePacked,GLsizei count,const GLchar * const * strings,ParamCapture * paramCapture)16 void CaptureCreateShaderProgramv_strings(const State &glState,
17 bool isCallValid,
18 ShaderType typePacked,
19 GLsizei count,
20 const GLchar *const *strings,
21 ParamCapture *paramCapture)
22 {
23 CaptureShaderStrings(count, strings, nullptr, paramCapture);
24 }
25
CaptureDeleteProgramPipelines_pipelinesPacked(const State & glState,bool isCallValid,GLsizei n,const ProgramPipelineID * pipelines,ParamCapture * paramCapture)26 void CaptureDeleteProgramPipelines_pipelinesPacked(const State &glState,
27 bool isCallValid,
28 GLsizei n,
29 const ProgramPipelineID *pipelines,
30 ParamCapture *paramCapture)
31 {
32 CaptureArray(pipelines, n, paramCapture);
33 }
34
CaptureDrawArraysIndirect_indirect(const State & glState,bool isCallValid,PrimitiveMode modePacked,const void * indirect,ParamCapture * paramCapture)35 void CaptureDrawArraysIndirect_indirect(const State &glState,
36 bool isCallValid,
37 PrimitiveMode modePacked,
38 const void *indirect,
39 ParamCapture *paramCapture)
40 {
41 // DrawArraysIndirect requires that all data sourced for the command,
42 // including the DrawArraysIndirectCommand structure, be in buffer objects,
43 // and may not be called when the default vertex array object is bound.
44 // Indirect pointer is automatically captured in capture_gles_3_1_autogen.cpp
45 assert(!isCallValid || glState.getTargetBuffer(gl::BufferBinding::DrawIndirect));
46 }
47
CaptureDrawElementsIndirect_indirect(const State & glState,bool isCallValid,PrimitiveMode modePacked,DrawElementsType typePacked,const void * indirect,ParamCapture * paramCapture)48 void CaptureDrawElementsIndirect_indirect(const State &glState,
49 bool isCallValid,
50 PrimitiveMode modePacked,
51 DrawElementsType typePacked,
52 const void *indirect,
53 ParamCapture *paramCapture)
54 {
55 // DrawElementsIndirect requires that all data sourced for the command,
56 // including the DrawElementsIndirectCommand structure, be in buffer objects,
57 // and may not be called when the default vertex array object is bound
58 // Indirect pointer is automatically captured in capture_gles_3_1_autogen.cpp
59 assert(!isCallValid || glState.getTargetBuffer(gl::BufferBinding::DrawIndirect));
60 }
61
CaptureGenProgramPipelines_pipelinesPacked(const State & glState,bool isCallValid,GLsizei n,ProgramPipelineID * pipelines,ParamCapture * paramCapture)62 void CaptureGenProgramPipelines_pipelinesPacked(const State &glState,
63 bool isCallValid,
64 GLsizei n,
65 ProgramPipelineID *pipelines,
66 ParamCapture *paramCapture)
67 {
68 CaptureGenHandles(n, pipelines, paramCapture);
69 }
70
CaptureGetBooleani_v_data(const State & glState,bool isCallValid,GLenum target,GLuint index,GLboolean * data,ParamCapture * paramCapture)71 void CaptureGetBooleani_v_data(const State &glState,
72 bool isCallValid,
73 GLenum target,
74 GLuint index,
75 GLboolean *data,
76 ParamCapture *paramCapture)
77 {
78 CaptureMemory(data, sizeof(GLboolean), paramCapture);
79 }
80
CaptureGetFramebufferParameteriv_params(const State & glState,bool isCallValid,GLenum target,GLenum pname,GLint * params,ParamCapture * paramCapture)81 void CaptureGetFramebufferParameteriv_params(const State &glState,
82 bool isCallValid,
83 GLenum target,
84 GLenum pname,
85 GLint *params,
86 ParamCapture *paramCapture)
87 {
88 UNIMPLEMENTED();
89 }
90
CaptureGetMultisamplefv_val(const State & glState,bool isCallValid,GLenum pname,GLuint index,GLfloat * val,ParamCapture * paramCapture)91 void CaptureGetMultisamplefv_val(const State &glState,
92 bool isCallValid,
93 GLenum pname,
94 GLuint index,
95 GLfloat *val,
96 ParamCapture *paramCapture)
97 {
98 UNIMPLEMENTED();
99 }
100
CaptureGetProgramInterfaceiv_params(const State & glState,bool isCallValid,ShaderProgramID program,GLenum programInterface,GLenum pname,GLint * params,ParamCapture * paramCapture)101 void CaptureGetProgramInterfaceiv_params(const State &glState,
102 bool isCallValid,
103 ShaderProgramID program,
104 GLenum programInterface,
105 GLenum pname,
106 GLint *params,
107 ParamCapture *paramCapture)
108 {
109 CaptureMemory(params, sizeof(GLint), paramCapture);
110 }
111
CaptureGetProgramPipelineInfoLog_length(const State & glState,bool isCallValid,ProgramPipelineID pipeline,GLsizei bufSize,GLsizei * length,GLchar * infoLog,ParamCapture * paramCapture)112 void CaptureGetProgramPipelineInfoLog_length(const State &glState,
113 bool isCallValid,
114 ProgramPipelineID pipeline,
115 GLsizei bufSize,
116 GLsizei *length,
117 GLchar *infoLog,
118 ParamCapture *paramCapture)
119 {
120 if (length)
121 {
122 CaptureMemory(length, sizeof(GLsizei), paramCapture);
123 }
124 }
125
CaptureGetProgramPipelineInfoLog_infoLog(const State & glState,bool isCallValid,ProgramPipelineID pipeline,GLsizei bufSize,GLsizei * length,GLchar * infoLog,ParamCapture * paramCapture)126 void CaptureGetProgramPipelineInfoLog_infoLog(const State &glState,
127 bool isCallValid,
128 ProgramPipelineID pipeline,
129 GLsizei bufSize,
130 GLsizei *length,
131 GLchar *infoLog,
132 ParamCapture *paramCapture)
133 {
134 if (bufSize > 0)
135 {
136 ASSERT(infoLog);
137 if (length)
138 {
139 CaptureArray(infoLog, *length, paramCapture);
140 }
141 else
142 {
143 CaptureString(infoLog, paramCapture);
144 }
145 }
146 }
147
CaptureGetProgramPipelineiv_params(const State & glState,bool isCallValid,ProgramPipelineID pipeline,GLenum pname,GLint * params,ParamCapture * paramCapture)148 void CaptureGetProgramPipelineiv_params(const State &glState,
149 bool isCallValid,
150 ProgramPipelineID pipeline,
151 GLenum pname,
152 GLint *params,
153 ParamCapture *paramCapture)
154 {
155 CaptureMemory(params, sizeof(GLint), paramCapture);
156 }
157
CaptureGetProgramResourceIndex_name(const State & glState,bool isCallValid,ShaderProgramID program,GLenum programInterface,const GLchar * name,ParamCapture * paramCapture)158 void CaptureGetProgramResourceIndex_name(const State &glState,
159 bool isCallValid,
160 ShaderProgramID program,
161 GLenum programInterface,
162 const GLchar *name,
163 ParamCapture *paramCapture)
164 {
165 CaptureString(name, paramCapture);
166 }
167
CaptureGetProgramResourceLocation_name(const State & glState,bool isCallValid,ShaderProgramID program,GLenum programInterface,const GLchar * name,ParamCapture * paramCapture)168 void CaptureGetProgramResourceLocation_name(const State &glState,
169 bool isCallValid,
170 ShaderProgramID program,
171 GLenum programInterface,
172 const GLchar *name,
173 ParamCapture *paramCapture)
174 {
175 CaptureString(name, paramCapture);
176 }
177
CaptureGetProgramResourceName_length(const State & glState,bool isCallValid,ShaderProgramID program,GLenum programInterface,GLuint index,GLsizei bufSize,GLsizei * length,GLchar * name,ParamCapture * paramCapture)178 void CaptureGetProgramResourceName_length(const State &glState,
179 bool isCallValid,
180 ShaderProgramID program,
181 GLenum programInterface,
182 GLuint index,
183 GLsizei bufSize,
184 GLsizei *length,
185 GLchar *name,
186 ParamCapture *paramCapture)
187 {
188 paramCapture->readBufferSizeBytes = sizeof(GLsizei);
189 }
190
CaptureGetProgramResourceName_name(const State & glState,bool isCallValid,ShaderProgramID program,GLenum programInterface,GLuint index,GLsizei bufSize,GLsizei * length,GLchar * name,ParamCapture * paramCapture)191 void CaptureGetProgramResourceName_name(const State &glState,
192 bool isCallValid,
193 ShaderProgramID program,
194 GLenum programInterface,
195 GLuint index,
196 GLsizei bufSize,
197 GLsizei *length,
198 GLchar *name,
199 ParamCapture *paramCapture)
200 {
201 CaptureString(name, paramCapture);
202 }
203
CaptureGetProgramResourceiv_props(const State & glState,bool isCallValid,ShaderProgramID program,GLenum programInterface,GLuint index,GLsizei propCount,const GLenum * props,GLsizei bufSize,GLsizei * length,GLint * params,ParamCapture * paramCapture)204 void CaptureGetProgramResourceiv_props(const State &glState,
205 bool isCallValid,
206 ShaderProgramID program,
207 GLenum programInterface,
208 GLuint index,
209 GLsizei propCount,
210 const GLenum *props,
211 GLsizei bufSize,
212 GLsizei *length,
213 GLint *params,
214 ParamCapture *paramCapture)
215 {
216 CaptureMemory(props, sizeof(GLenum) * propCount, paramCapture);
217 }
218
CaptureGetProgramResourceiv_length(const State & glState,bool isCallValid,ShaderProgramID program,GLenum programInterface,GLuint index,GLsizei propCount,const GLenum * props,GLsizei bufSize,GLsizei * length,GLint * params,ParamCapture * paramCapture)219 void CaptureGetProgramResourceiv_length(const State &glState,
220 bool isCallValid,
221 ShaderProgramID program,
222 GLenum programInterface,
223 GLuint index,
224 GLsizei propCount,
225 const GLenum *props,
226 GLsizei bufSize,
227 GLsizei *length,
228 GLint *params,
229 ParamCapture *paramCapture)
230 {
231 paramCapture->readBufferSizeBytes = sizeof(GLsizei);
232 }
233
CaptureGetProgramResourceiv_params(const State & glState,bool isCallValid,ShaderProgramID program,GLenum programInterface,GLuint index,GLsizei propCount,const GLenum * props,GLsizei bufSize,GLsizei * length,GLint * params,ParamCapture * paramCapture)234 void CaptureGetProgramResourceiv_params(const State &glState,
235 bool isCallValid,
236 ShaderProgramID program,
237 GLenum programInterface,
238 GLuint index,
239 GLsizei propCount,
240 const GLenum *props,
241 GLsizei bufSize,
242 GLsizei *length,
243 GLint *params,
244 ParamCapture *paramCapture)
245 {
246 // Prefer to only capture as many parameters as are returned,
247 // but if this is not known, then capture the whole buffer
248 int paramLength = length != nullptr ? *length : bufSize;
249 CaptureMemory(params, sizeof(GLint) * paramLength, paramCapture);
250 }
251
CaptureGetTexLevelParameterfv_params(const State & glState,bool isCallValid,TextureTarget targetPacked,GLint level,GLenum pname,GLfloat * params,ParamCapture * paramCapture)252 void CaptureGetTexLevelParameterfv_params(const State &glState,
253 bool isCallValid,
254 TextureTarget targetPacked,
255 GLint level,
256 GLenum pname,
257 GLfloat *params,
258 ParamCapture *paramCapture)
259 {
260 CaptureMemory(params, sizeof(GLfloat), paramCapture);
261 }
262
CaptureGetTexLevelParameteriv_params(const State & glState,bool isCallValid,TextureTarget targetPacked,GLint level,GLenum pname,GLint * params,ParamCapture * paramCapture)263 void CaptureGetTexLevelParameteriv_params(const State &glState,
264 bool isCallValid,
265 TextureTarget targetPacked,
266 GLint level,
267 GLenum pname,
268 GLint *params,
269 ParamCapture *paramCapture)
270 {
271 CaptureMemory(params, sizeof(GLint), paramCapture);
272 }
273
CaptureProgramUniform1fv_value(const State & glState,bool isCallValid,ShaderProgramID program,UniformLocation location,GLsizei count,const GLfloat * value,ParamCapture * paramCapture)274 void CaptureProgramUniform1fv_value(const State &glState,
275 bool isCallValid,
276 ShaderProgramID program,
277 UniformLocation location,
278 GLsizei count,
279 const GLfloat *value,
280 ParamCapture *paramCapture)
281 {
282 CaptureMemory(value, sizeof(GLfloat) * count, paramCapture);
283 }
284
CaptureProgramUniform1iv_value(const State & glState,bool isCallValid,ShaderProgramID program,UniformLocation location,GLsizei count,const GLint * value,ParamCapture * paramCapture)285 void CaptureProgramUniform1iv_value(const State &glState,
286 bool isCallValid,
287 ShaderProgramID program,
288 UniformLocation location,
289 GLsizei count,
290 const GLint *value,
291 ParamCapture *paramCapture)
292 {
293 CaptureMemory(value, sizeof(GLint) * count, paramCapture);
294 }
295
CaptureProgramUniform1uiv_value(const State & glState,bool isCallValid,ShaderProgramID program,UniformLocation location,GLsizei count,const GLuint * value,ParamCapture * paramCapture)296 void CaptureProgramUniform1uiv_value(const State &glState,
297 bool isCallValid,
298 ShaderProgramID program,
299 UniformLocation location,
300 GLsizei count,
301 const GLuint *value,
302 ParamCapture *paramCapture)
303 {
304 CaptureMemory(value, sizeof(GLuint) * count, paramCapture);
305 }
306
CaptureProgramUniform2fv_value(const State & glState,bool isCallValid,ShaderProgramID program,UniformLocation location,GLsizei count,const GLfloat * value,ParamCapture * paramCapture)307 void CaptureProgramUniform2fv_value(const State &glState,
308 bool isCallValid,
309 ShaderProgramID program,
310 UniformLocation location,
311 GLsizei count,
312 const GLfloat *value,
313 ParamCapture *paramCapture)
314 {
315 CaptureMemory(value, sizeof(GLfloat) * 2 * count, paramCapture);
316 }
317
CaptureProgramUniform2iv_value(const State & glState,bool isCallValid,ShaderProgramID program,UniformLocation location,GLsizei count,const GLint * value,ParamCapture * paramCapture)318 void CaptureProgramUniform2iv_value(const State &glState,
319 bool isCallValid,
320 ShaderProgramID program,
321 UniformLocation location,
322 GLsizei count,
323 const GLint *value,
324 ParamCapture *paramCapture)
325 {
326 CaptureMemory(value, sizeof(GLint) * 2 * count, paramCapture);
327 }
328
CaptureProgramUniform2uiv_value(const State & glState,bool isCallValid,ShaderProgramID program,UniformLocation location,GLsizei count,const GLuint * value,ParamCapture * paramCapture)329 void CaptureProgramUniform2uiv_value(const State &glState,
330 bool isCallValid,
331 ShaderProgramID program,
332 UniformLocation location,
333 GLsizei count,
334 const GLuint *value,
335 ParamCapture *paramCapture)
336 {
337 CaptureMemory(value, sizeof(GLuint) * 2 * count, paramCapture);
338 }
339
CaptureProgramUniform3fv_value(const State & glState,bool isCallValid,ShaderProgramID program,UniformLocation location,GLsizei count,const GLfloat * value,ParamCapture * paramCapture)340 void CaptureProgramUniform3fv_value(const State &glState,
341 bool isCallValid,
342 ShaderProgramID program,
343 UniformLocation location,
344 GLsizei count,
345 const GLfloat *value,
346 ParamCapture *paramCapture)
347 {
348 CaptureMemory(value, sizeof(GLfloat) * 3 * count, paramCapture);
349 }
350
CaptureProgramUniform3iv_value(const State & glState,bool isCallValid,ShaderProgramID program,UniformLocation location,GLsizei count,const GLint * value,ParamCapture * paramCapture)351 void CaptureProgramUniform3iv_value(const State &glState,
352 bool isCallValid,
353 ShaderProgramID program,
354 UniformLocation location,
355 GLsizei count,
356 const GLint *value,
357 ParamCapture *paramCapture)
358 {
359 CaptureMemory(value, sizeof(GLint) * 3 * count, paramCapture);
360 }
361
CaptureProgramUniform3uiv_value(const State & glState,bool isCallValid,ShaderProgramID program,UniformLocation location,GLsizei count,const GLuint * value,ParamCapture * paramCapture)362 void CaptureProgramUniform3uiv_value(const State &glState,
363 bool isCallValid,
364 ShaderProgramID program,
365 UniformLocation location,
366 GLsizei count,
367 const GLuint *value,
368 ParamCapture *paramCapture)
369 {
370 CaptureMemory(value, sizeof(GLuint) * 3 * count, paramCapture);
371 }
372
CaptureProgramUniform4fv_value(const State & glState,bool isCallValid,ShaderProgramID program,UniformLocation location,GLsizei count,const GLfloat * value,ParamCapture * paramCapture)373 void CaptureProgramUniform4fv_value(const State &glState,
374 bool isCallValid,
375 ShaderProgramID program,
376 UniformLocation location,
377 GLsizei count,
378 const GLfloat *value,
379 ParamCapture *paramCapture)
380 {
381 CaptureMemory(value, sizeof(GLfloat) * 4 * count, paramCapture);
382 }
383
CaptureProgramUniform4iv_value(const State & glState,bool isCallValid,ShaderProgramID program,UniformLocation location,GLsizei count,const GLint * value,ParamCapture * paramCapture)384 void CaptureProgramUniform4iv_value(const State &glState,
385 bool isCallValid,
386 ShaderProgramID program,
387 UniformLocation location,
388 GLsizei count,
389 const GLint *value,
390 ParamCapture *paramCapture)
391 {
392 CaptureMemory(value, sizeof(GLint) * 4 * count, paramCapture);
393 }
394
CaptureProgramUniform4uiv_value(const State & glState,bool isCallValid,ShaderProgramID program,UniformLocation location,GLsizei count,const GLuint * value,ParamCapture * paramCapture)395 void CaptureProgramUniform4uiv_value(const State &glState,
396 bool isCallValid,
397 ShaderProgramID program,
398 UniformLocation location,
399 GLsizei count,
400 const GLuint *value,
401 ParamCapture *paramCapture)
402 {
403 CaptureMemory(value, sizeof(GLuint) * 4 * count, paramCapture);
404 }
405
CaptureProgramUniformMatrix2fv_value(const State & glState,bool isCallValid,ShaderProgramID program,UniformLocation location,GLsizei count,GLboolean transpose,const GLfloat * value,ParamCapture * paramCapture)406 void CaptureProgramUniformMatrix2fv_value(const State &glState,
407 bool isCallValid,
408 ShaderProgramID program,
409 UniformLocation location,
410 GLsizei count,
411 GLboolean transpose,
412 const GLfloat *value,
413 ParamCapture *paramCapture)
414 {
415 CaptureMemory(value, sizeof(GLfloat) * 2 * 2 * count, paramCapture);
416 }
417
CaptureProgramUniformMatrix2x3fv_value(const State & glState,bool isCallValid,ShaderProgramID program,UniformLocation location,GLsizei count,GLboolean transpose,const GLfloat * value,ParamCapture * paramCapture)418 void CaptureProgramUniformMatrix2x3fv_value(const State &glState,
419 bool isCallValid,
420 ShaderProgramID program,
421 UniformLocation location,
422 GLsizei count,
423 GLboolean transpose,
424 const GLfloat *value,
425 ParamCapture *paramCapture)
426 {
427 CaptureMemory(value, sizeof(GLfloat) * 2 * 3 * count, paramCapture);
428 }
429
CaptureProgramUniformMatrix2x4fv_value(const State & glState,bool isCallValid,ShaderProgramID program,UniformLocation location,GLsizei count,GLboolean transpose,const GLfloat * value,ParamCapture * paramCapture)430 void CaptureProgramUniformMatrix2x4fv_value(const State &glState,
431 bool isCallValid,
432 ShaderProgramID program,
433 UniformLocation location,
434 GLsizei count,
435 GLboolean transpose,
436 const GLfloat *value,
437 ParamCapture *paramCapture)
438 {
439 CaptureMemory(value, sizeof(GLfloat) * 2 * 4 * count, paramCapture);
440 }
441
CaptureProgramUniformMatrix3fv_value(const State & glState,bool isCallValid,ShaderProgramID program,UniformLocation location,GLsizei count,GLboolean transpose,const GLfloat * value,ParamCapture * paramCapture)442 void CaptureProgramUniformMatrix3fv_value(const State &glState,
443 bool isCallValid,
444 ShaderProgramID program,
445 UniformLocation location,
446 GLsizei count,
447 GLboolean transpose,
448 const GLfloat *value,
449 ParamCapture *paramCapture)
450 {
451 CaptureMemory(value, sizeof(GLfloat) * 3 * 3 * count, paramCapture);
452 }
453
CaptureProgramUniformMatrix3x2fv_value(const State & glState,bool isCallValid,ShaderProgramID program,UniformLocation location,GLsizei count,GLboolean transpose,const GLfloat * value,ParamCapture * paramCapture)454 void CaptureProgramUniformMatrix3x2fv_value(const State &glState,
455 bool isCallValid,
456 ShaderProgramID program,
457 UniformLocation location,
458 GLsizei count,
459 GLboolean transpose,
460 const GLfloat *value,
461 ParamCapture *paramCapture)
462 {
463 CaptureMemory(value, sizeof(GLfloat) * 3 * 2 * count, paramCapture);
464 }
465
CaptureProgramUniformMatrix3x4fv_value(const State & glState,bool isCallValid,ShaderProgramID program,UniformLocation location,GLsizei count,GLboolean transpose,const GLfloat * value,ParamCapture * paramCapture)466 void CaptureProgramUniformMatrix3x4fv_value(const State &glState,
467 bool isCallValid,
468 ShaderProgramID program,
469 UniformLocation location,
470 GLsizei count,
471 GLboolean transpose,
472 const GLfloat *value,
473 ParamCapture *paramCapture)
474 {
475 CaptureMemory(value, sizeof(GLfloat) * 3 * 4 * count, paramCapture);
476 }
477
CaptureProgramUniformMatrix4fv_value(const State & glState,bool isCallValid,ShaderProgramID program,UniformLocation location,GLsizei count,GLboolean transpose,const GLfloat * value,ParamCapture * paramCapture)478 void CaptureProgramUniformMatrix4fv_value(const State &glState,
479 bool isCallValid,
480 ShaderProgramID program,
481 UniformLocation location,
482 GLsizei count,
483 GLboolean transpose,
484 const GLfloat *value,
485 ParamCapture *paramCapture)
486 {
487 CaptureMemory(value, sizeof(GLfloat) * 4 * 4 * count, paramCapture);
488 }
489
CaptureProgramUniformMatrix4x2fv_value(const State & glState,bool isCallValid,ShaderProgramID program,UniformLocation location,GLsizei count,GLboolean transpose,const GLfloat * value,ParamCapture * paramCapture)490 void CaptureProgramUniformMatrix4x2fv_value(const State &glState,
491 bool isCallValid,
492 ShaderProgramID program,
493 UniformLocation location,
494 GLsizei count,
495 GLboolean transpose,
496 const GLfloat *value,
497 ParamCapture *paramCapture)
498 {
499 CaptureMemory(value, sizeof(GLfloat) * 4 * 2 * count, paramCapture);
500 }
501
CaptureProgramUniformMatrix4x3fv_value(const State & glState,bool isCallValid,ShaderProgramID program,UniformLocation location,GLsizei count,GLboolean transpose,const GLfloat * value,ParamCapture * paramCapture)502 void CaptureProgramUniformMatrix4x3fv_value(const State &glState,
503 bool isCallValid,
504 ShaderProgramID program,
505 UniformLocation location,
506 GLsizei count,
507 GLboolean transpose,
508 const GLfloat *value,
509 ParamCapture *paramCapture)
510 {
511 CaptureMemory(value, sizeof(GLfloat) * 4 * 3 * count, paramCapture);
512 }
513
514 } // namespace gl
515