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 // frame_capture_utils_autogen.h:
9 // ANGLE Frame capture types and helper functions.
10
11 #ifndef LIBANGLE_FRAME_CAPTURE_UTILS_AUTOGEN_H_
12 #define LIBANGLE_FRAME_CAPTURE_UTILS_AUTOGEN_H_
13
14 #include "common/PackedEnums.h"
15
16 namespace angle
17 {
18 enum class ParamType
19 {
20 TAlphaTestFunc,
21 TBufferBinding,
22 TBufferID,
23 TBufferIDConstPointer,
24 TBufferIDPointer,
25 TBufferUsage,
26 TClientVertexArrayType,
27 TCullFaceMode,
28 TDrawElementsType,
29 TFenceNVID,
30 TFenceNVIDConstPointer,
31 TFenceNVIDPointer,
32 TFramebufferID,
33 TFramebufferIDConstPointer,
34 TFramebufferIDPointer,
35 TGLDEBUGPROC,
36 TGLDEBUGPROCKHR,
37 TGLbitfield,
38 TGLboolean,
39 TGLbooleanConstPointer,
40 TGLbooleanPointer,
41 TGLbyte,
42 TGLbyteConstPointer,
43 TGLcharConstPointer,
44 TGLcharConstPointerPointer,
45 TGLcharPointer,
46 TGLclampx,
47 TGLdouble,
48 TGLdoubleConstPointer,
49 TGLdoublePointer,
50 TGLeglClientBufferEXT,
51 TGLeglImageOES,
52 TGLenum,
53 TGLenumConstPointer,
54 TGLenumPointer,
55 TGLfixed,
56 TGLfixedConstPointer,
57 TGLfixedPointer,
58 TGLfloat,
59 TGLfloatConstPointer,
60 TGLfloatPointer,
61 TGLint,
62 TGLint64Pointer,
63 TGLintConstPointer,
64 TGLintPointer,
65 TGLintptr,
66 TGLintptrConstPointer,
67 TGLshort,
68 TGLshortConstPointer,
69 TGLsizei,
70 TGLsizeiConstPointer,
71 TGLsizeiPointer,
72 TGLsizeiptr,
73 TGLsizeiptrConstPointer,
74 TGLsync,
75 TGLubyte,
76 TGLubyteConstPointer,
77 TGLubytePointer,
78 TGLuint,
79 TGLuint64,
80 TGLuint64ConstPointer,
81 TGLuint64Pointer,
82 TGLuintConstPointer,
83 TGLuintPointer,
84 TGLushort,
85 TGLushortConstPointer,
86 TGLushortPointer,
87 TGLvoidConstPointer,
88 TGLvoidConstPointerPointer,
89 TGraphicsResetStatus,
90 THandleType,
91 TLightParameter,
92 TLogicalOperation,
93 TMaterialParameter,
94 TMatrixType,
95 TMemoryObjectID,
96 TMemoryObjectIDConstPointer,
97 TMemoryObjectIDPointer,
98 TPointParameter,
99 TPrimitiveMode,
100 TProgramPipelineID,
101 TProgramPipelineIDConstPointer,
102 TProgramPipelineIDPointer,
103 TProvokingVertexConvention,
104 TQueryID,
105 TQueryIDConstPointer,
106 TQueryIDPointer,
107 TQueryType,
108 TRenderbufferID,
109 TRenderbufferIDConstPointer,
110 TRenderbufferIDPointer,
111 TSamplerID,
112 TSamplerIDConstPointer,
113 TSamplerIDPointer,
114 TSemaphoreID,
115 TSemaphoreIDConstPointer,
116 TSemaphoreIDPointer,
117 TShaderProgramID,
118 TShaderProgramIDConstPointer,
119 TShaderProgramIDPointer,
120 TShaderType,
121 TShadingModel,
122 TTextureEnvParameter,
123 TTextureEnvTarget,
124 TTextureID,
125 TTextureIDConstPointer,
126 TTextureIDPointer,
127 TTextureTarget,
128 TTextureType,
129 TTransformFeedbackID,
130 TTransformFeedbackIDConstPointer,
131 TTransformFeedbackIDPointer,
132 TUniformBlockIndex,
133 TUniformLocation,
134 TVertexArrayID,
135 TVertexArrayIDConstPointer,
136 TVertexArrayIDPointer,
137 TVertexAttribType,
138 TvoidConstPointer,
139 TvoidConstPointerPointer,
140 TvoidPointer,
141 TvoidPointerPointer,
142 };
143
144 constexpr uint32_t kParamTypeCount = 122;
145
146 union ParamValue
147 {
148 gl::AlphaTestFunc AlphaTestFuncVal;
149 gl::BufferBinding BufferBindingVal;
150 gl::BufferID BufferIDVal;
151 const gl::BufferID *BufferIDConstPointerVal;
152 gl::BufferID *BufferIDPointerVal;
153 gl::BufferUsage BufferUsageVal;
154 gl::ClientVertexArrayType ClientVertexArrayTypeVal;
155 gl::CullFaceMode CullFaceModeVal;
156 gl::DrawElementsType DrawElementsTypeVal;
157 gl::FenceNVID FenceNVIDVal;
158 const gl::FenceNVID *FenceNVIDConstPointerVal;
159 gl::FenceNVID *FenceNVIDPointerVal;
160 gl::FramebufferID FramebufferIDVal;
161 const gl::FramebufferID *FramebufferIDConstPointerVal;
162 gl::FramebufferID *FramebufferIDPointerVal;
163 GLDEBUGPROC GLDEBUGPROCVal;
164 GLDEBUGPROCKHR GLDEBUGPROCKHRVal;
165 GLbitfield GLbitfieldVal;
166 GLboolean GLbooleanVal;
167 const GLboolean *GLbooleanConstPointerVal;
168 GLboolean *GLbooleanPointerVal;
169 GLbyte GLbyteVal;
170 const GLbyte *GLbyteConstPointerVal;
171 const GLchar *GLcharConstPointerVal;
172 const GLchar *const *GLcharConstPointerPointerVal;
173 GLchar *GLcharPointerVal;
174 GLclampx GLclampxVal;
175 GLdouble GLdoubleVal;
176 const GLdouble *GLdoubleConstPointerVal;
177 GLdouble *GLdoublePointerVal;
178 GLeglClientBufferEXT GLeglClientBufferEXTVal;
179 GLeglImageOES GLeglImageOESVal;
180 GLenum GLenumVal;
181 const GLenum *GLenumConstPointerVal;
182 GLenum *GLenumPointerVal;
183 GLfixed GLfixedVal;
184 const GLfixed *GLfixedConstPointerVal;
185 GLfixed *GLfixedPointerVal;
186 GLfloat GLfloatVal;
187 const GLfloat *GLfloatConstPointerVal;
188 GLfloat *GLfloatPointerVal;
189 GLint GLintVal;
190 GLint64 *GLint64PointerVal;
191 const GLint *GLintConstPointerVal;
192 GLint *GLintPointerVal;
193 GLintptr GLintptrVal;
194 const GLintptr *GLintptrConstPointerVal;
195 GLshort GLshortVal;
196 const GLshort *GLshortConstPointerVal;
197 GLsizei GLsizeiVal;
198 const GLsizei *GLsizeiConstPointerVal;
199 GLsizei *GLsizeiPointerVal;
200 GLsizeiptr GLsizeiptrVal;
201 const GLsizeiptr *GLsizeiptrConstPointerVal;
202 GLsync GLsyncVal;
203 GLubyte GLubyteVal;
204 const GLubyte *GLubyteConstPointerVal;
205 GLubyte *GLubytePointerVal;
206 GLuint GLuintVal;
207 GLuint64 GLuint64Val;
208 const GLuint64 *GLuint64ConstPointerVal;
209 GLuint64 *GLuint64PointerVal;
210 const GLuint *GLuintConstPointerVal;
211 GLuint *GLuintPointerVal;
212 GLushort GLushortVal;
213 const GLushort *GLushortConstPointerVal;
214 GLushort *GLushortPointerVal;
215 const GLvoid *GLvoidConstPointerVal;
216 const GLvoid *const *GLvoidConstPointerPointerVal;
217 gl::GraphicsResetStatus GraphicsResetStatusVal;
218 gl::HandleType HandleTypeVal;
219 gl::LightParameter LightParameterVal;
220 gl::LogicalOperation LogicalOperationVal;
221 gl::MaterialParameter MaterialParameterVal;
222 gl::MatrixType MatrixTypeVal;
223 gl::MemoryObjectID MemoryObjectIDVal;
224 const gl::MemoryObjectID *MemoryObjectIDConstPointerVal;
225 gl::MemoryObjectID *MemoryObjectIDPointerVal;
226 gl::PointParameter PointParameterVal;
227 gl::PrimitiveMode PrimitiveModeVal;
228 gl::ProgramPipelineID ProgramPipelineIDVal;
229 const gl::ProgramPipelineID *ProgramPipelineIDConstPointerVal;
230 gl::ProgramPipelineID *ProgramPipelineIDPointerVal;
231 gl::ProvokingVertexConvention ProvokingVertexConventionVal;
232 gl::QueryID QueryIDVal;
233 const gl::QueryID *QueryIDConstPointerVal;
234 gl::QueryID *QueryIDPointerVal;
235 gl::QueryType QueryTypeVal;
236 gl::RenderbufferID RenderbufferIDVal;
237 const gl::RenderbufferID *RenderbufferIDConstPointerVal;
238 gl::RenderbufferID *RenderbufferIDPointerVal;
239 gl::SamplerID SamplerIDVal;
240 const gl::SamplerID *SamplerIDConstPointerVal;
241 gl::SamplerID *SamplerIDPointerVal;
242 gl::SemaphoreID SemaphoreIDVal;
243 const gl::SemaphoreID *SemaphoreIDConstPointerVal;
244 gl::SemaphoreID *SemaphoreIDPointerVal;
245 gl::ShaderProgramID ShaderProgramIDVal;
246 const gl::ShaderProgramID *ShaderProgramIDConstPointerVal;
247 gl::ShaderProgramID *ShaderProgramIDPointerVal;
248 gl::ShaderType ShaderTypeVal;
249 gl::ShadingModel ShadingModelVal;
250 gl::TextureEnvParameter TextureEnvParameterVal;
251 gl::TextureEnvTarget TextureEnvTargetVal;
252 gl::TextureID TextureIDVal;
253 const gl::TextureID *TextureIDConstPointerVal;
254 gl::TextureID *TextureIDPointerVal;
255 gl::TextureTarget TextureTargetVal;
256 gl::TextureType TextureTypeVal;
257 gl::TransformFeedbackID TransformFeedbackIDVal;
258 const gl::TransformFeedbackID *TransformFeedbackIDConstPointerVal;
259 gl::TransformFeedbackID *TransformFeedbackIDPointerVal;
260 gl::UniformBlockIndex UniformBlockIndexVal;
261 gl::UniformLocation UniformLocationVal;
262 gl::VertexArrayID VertexArrayIDVal;
263 const gl::VertexArrayID *VertexArrayIDConstPointerVal;
264 gl::VertexArrayID *VertexArrayIDPointerVal;
265 gl::VertexAttribType VertexAttribTypeVal;
266 const void *voidConstPointerVal;
267 const void *const *voidConstPointerPointerVal;
268 void *voidPointerVal;
269 void **voidPointerPointerVal;
270 };
271
272 template <ParamType PType, typename T>
273 T GetParamVal(const ParamValue &value);
274
275 template <>
276 inline gl::AlphaTestFunc GetParamVal<ParamType::TAlphaTestFunc, gl::AlphaTestFunc>(
277 const ParamValue &value)
278 {
279 return value.AlphaTestFuncVal;
280 }
281
282 template <>
283 inline gl::BufferBinding GetParamVal<ParamType::TBufferBinding, gl::BufferBinding>(
284 const ParamValue &value)
285 {
286 return value.BufferBindingVal;
287 }
288
289 template <>
290 inline gl::BufferID GetParamVal<ParamType::TBufferID, gl::BufferID>(const ParamValue &value)
291 {
292 return value.BufferIDVal;
293 }
294
295 template <>
296 inline const gl::BufferID *GetParamVal<ParamType::TBufferIDConstPointer, const gl::BufferID *>(
297 const ParamValue &value)
298 {
299 return value.BufferIDConstPointerVal;
300 }
301
302 template <>
303 inline gl::BufferID *GetParamVal<ParamType::TBufferIDPointer, gl::BufferID *>(
304 const ParamValue &value)
305 {
306 return value.BufferIDPointerVal;
307 }
308
309 template <>
310 inline gl::BufferUsage GetParamVal<ParamType::TBufferUsage, gl::BufferUsage>(
311 const ParamValue &value)
312 {
313 return value.BufferUsageVal;
314 }
315
316 template <>
317 inline gl::ClientVertexArrayType
318 GetParamVal<ParamType::TClientVertexArrayType, gl::ClientVertexArrayType>(const ParamValue &value)
319 {
320 return value.ClientVertexArrayTypeVal;
321 }
322
323 template <>
324 inline gl::CullFaceMode GetParamVal<ParamType::TCullFaceMode, gl::CullFaceMode>(
325 const ParamValue &value)
326 {
327 return value.CullFaceModeVal;
328 }
329
330 template <>
331 inline gl::DrawElementsType GetParamVal<ParamType::TDrawElementsType, gl::DrawElementsType>(
332 const ParamValue &value)
333 {
334 return value.DrawElementsTypeVal;
335 }
336
337 template <>
338 inline gl::FenceNVID GetParamVal<ParamType::TFenceNVID, gl::FenceNVID>(const ParamValue &value)
339 {
340 return value.FenceNVIDVal;
341 }
342
343 template <>
344 inline const gl::FenceNVID *GetParamVal<ParamType::TFenceNVIDConstPointer, const gl::FenceNVID *>(
345 const ParamValue &value)
346 {
347 return value.FenceNVIDConstPointerVal;
348 }
349
350 template <>
351 inline gl::FenceNVID *GetParamVal<ParamType::TFenceNVIDPointer, gl::FenceNVID *>(
352 const ParamValue &value)
353 {
354 return value.FenceNVIDPointerVal;
355 }
356
357 template <>
358 inline gl::FramebufferID GetParamVal<ParamType::TFramebufferID, gl::FramebufferID>(
359 const ParamValue &value)
360 {
361 return value.FramebufferIDVal;
362 }
363
364 template <>
365 inline const gl::FramebufferID *GetParamVal<ParamType::TFramebufferIDConstPointer,
366 const gl::FramebufferID *>(const ParamValue &value)
367 {
368 return value.FramebufferIDConstPointerVal;
369 }
370
371 template <>
372 inline gl::FramebufferID *GetParamVal<ParamType::TFramebufferIDPointer, gl::FramebufferID *>(
373 const ParamValue &value)
374 {
375 return value.FramebufferIDPointerVal;
376 }
377
378 template <>
379 inline GLDEBUGPROC GetParamVal<ParamType::TGLDEBUGPROC, GLDEBUGPROC>(const ParamValue &value)
380 {
381 return value.GLDEBUGPROCVal;
382 }
383
384 template <>
385 inline GLDEBUGPROCKHR GetParamVal<ParamType::TGLDEBUGPROCKHR, GLDEBUGPROCKHR>(
386 const ParamValue &value)
387 {
388 return value.GLDEBUGPROCKHRVal;
389 }
390
391 template <>
392 inline GLbitfield GetParamVal<ParamType::TGLbitfield, GLbitfield>(const ParamValue &value)
393 {
394 return value.GLbitfieldVal;
395 }
396
397 template <>
398 inline GLboolean GetParamVal<ParamType::TGLboolean, GLboolean>(const ParamValue &value)
399 {
400 return value.GLbooleanVal;
401 }
402
403 template <>
404 inline const GLboolean *GetParamVal<ParamType::TGLbooleanConstPointer, const GLboolean *>(
405 const ParamValue &value)
406 {
407 return value.GLbooleanConstPointerVal;
408 }
409
410 template <>
411 inline GLboolean *GetParamVal<ParamType::TGLbooleanPointer, GLboolean *>(const ParamValue &value)
412 {
413 return value.GLbooleanPointerVal;
414 }
415
416 template <>
417 inline GLbyte GetParamVal<ParamType::TGLbyte, GLbyte>(const ParamValue &value)
418 {
419 return value.GLbyteVal;
420 }
421
422 template <>
423 inline const GLbyte *GetParamVal<ParamType::TGLbyteConstPointer, const GLbyte *>(
424 const ParamValue &value)
425 {
426 return value.GLbyteConstPointerVal;
427 }
428
429 template <>
430 inline const GLchar *GetParamVal<ParamType::TGLcharConstPointer, const GLchar *>(
431 const ParamValue &value)
432 {
433 return value.GLcharConstPointerVal;
434 }
435
436 template <>
437 inline const GLchar *const *
438 GetParamVal<ParamType::TGLcharConstPointerPointer, const GLchar *const *>(const ParamValue &value)
439 {
440 return value.GLcharConstPointerPointerVal;
441 }
442
443 template <>
444 inline GLchar *GetParamVal<ParamType::TGLcharPointer, GLchar *>(const ParamValue &value)
445 {
446 return value.GLcharPointerVal;
447 }
448
449 template <>
450 inline GLclampx GetParamVal<ParamType::TGLclampx, GLclampx>(const ParamValue &value)
451 {
452 return value.GLclampxVal;
453 }
454
455 template <>
456 inline GLdouble GetParamVal<ParamType::TGLdouble, GLdouble>(const ParamValue &value)
457 {
458 return value.GLdoubleVal;
459 }
460
461 template <>
462 inline const GLdouble *GetParamVal<ParamType::TGLdoubleConstPointer, const GLdouble *>(
463 const ParamValue &value)
464 {
465 return value.GLdoubleConstPointerVal;
466 }
467
468 template <>
469 inline GLdouble *GetParamVal<ParamType::TGLdoublePointer, GLdouble *>(const ParamValue &value)
470 {
471 return value.GLdoublePointerVal;
472 }
473
474 template <>
475 inline GLeglClientBufferEXT GetParamVal<ParamType::TGLeglClientBufferEXT, GLeglClientBufferEXT>(
476 const ParamValue &value)
477 {
478 return value.GLeglClientBufferEXTVal;
479 }
480
481 template <>
482 inline GLeglImageOES GetParamVal<ParamType::TGLeglImageOES, GLeglImageOES>(const ParamValue &value)
483 {
484 return value.GLeglImageOESVal;
485 }
486
487 template <>
488 inline GLenum GetParamVal<ParamType::TGLenum, GLenum>(const ParamValue &value)
489 {
490 return value.GLenumVal;
491 }
492
493 template <>
494 inline const GLenum *GetParamVal<ParamType::TGLenumConstPointer, const GLenum *>(
495 const ParamValue &value)
496 {
497 return value.GLenumConstPointerVal;
498 }
499
500 template <>
501 inline GLenum *GetParamVal<ParamType::TGLenumPointer, GLenum *>(const ParamValue &value)
502 {
503 return value.GLenumPointerVal;
504 }
505
506 template <>
507 inline GLfixed GetParamVal<ParamType::TGLfixed, GLfixed>(const ParamValue &value)
508 {
509 return value.GLfixedVal;
510 }
511
512 template <>
513 inline const GLfixed *GetParamVal<ParamType::TGLfixedConstPointer, const GLfixed *>(
514 const ParamValue &value)
515 {
516 return value.GLfixedConstPointerVal;
517 }
518
519 template <>
520 inline GLfixed *GetParamVal<ParamType::TGLfixedPointer, GLfixed *>(const ParamValue &value)
521 {
522 return value.GLfixedPointerVal;
523 }
524
525 template <>
526 inline GLfloat GetParamVal<ParamType::TGLfloat, GLfloat>(const ParamValue &value)
527 {
528 return value.GLfloatVal;
529 }
530
531 template <>
532 inline const GLfloat *GetParamVal<ParamType::TGLfloatConstPointer, const GLfloat *>(
533 const ParamValue &value)
534 {
535 return value.GLfloatConstPointerVal;
536 }
537
538 template <>
539 inline GLfloat *GetParamVal<ParamType::TGLfloatPointer, GLfloat *>(const ParamValue &value)
540 {
541 return value.GLfloatPointerVal;
542 }
543
544 template <>
545 inline GLint GetParamVal<ParamType::TGLint, GLint>(const ParamValue &value)
546 {
547 return value.GLintVal;
548 }
549
550 template <>
551 inline GLint64 *GetParamVal<ParamType::TGLint64Pointer, GLint64 *>(const ParamValue &value)
552 {
553 return value.GLint64PointerVal;
554 }
555
556 template <>
557 inline const GLint *GetParamVal<ParamType::TGLintConstPointer, const GLint *>(
558 const ParamValue &value)
559 {
560 return value.GLintConstPointerVal;
561 }
562
563 template <>
564 inline GLint *GetParamVal<ParamType::TGLintPointer, GLint *>(const ParamValue &value)
565 {
566 return value.GLintPointerVal;
567 }
568
569 template <>
570 inline GLintptr GetParamVal<ParamType::TGLintptr, GLintptr>(const ParamValue &value)
571 {
572 return value.GLintptrVal;
573 }
574
575 template <>
576 inline const GLintptr *GetParamVal<ParamType::TGLintptrConstPointer, const GLintptr *>(
577 const ParamValue &value)
578 {
579 return value.GLintptrConstPointerVal;
580 }
581
582 template <>
583 inline GLshort GetParamVal<ParamType::TGLshort, GLshort>(const ParamValue &value)
584 {
585 return value.GLshortVal;
586 }
587
588 template <>
589 inline const GLshort *GetParamVal<ParamType::TGLshortConstPointer, const GLshort *>(
590 const ParamValue &value)
591 {
592 return value.GLshortConstPointerVal;
593 }
594
595 template <>
596 inline GLsizei GetParamVal<ParamType::TGLsizei, GLsizei>(const ParamValue &value)
597 {
598 return value.GLsizeiVal;
599 }
600
601 template <>
602 inline const GLsizei *GetParamVal<ParamType::TGLsizeiConstPointer, const GLsizei *>(
603 const ParamValue &value)
604 {
605 return value.GLsizeiConstPointerVal;
606 }
607
608 template <>
609 inline GLsizei *GetParamVal<ParamType::TGLsizeiPointer, GLsizei *>(const ParamValue &value)
610 {
611 return value.GLsizeiPointerVal;
612 }
613
614 template <>
615 inline GLsizeiptr GetParamVal<ParamType::TGLsizeiptr, GLsizeiptr>(const ParamValue &value)
616 {
617 return value.GLsizeiptrVal;
618 }
619
620 template <>
621 inline const GLsizeiptr *GetParamVal<ParamType::TGLsizeiptrConstPointer, const GLsizeiptr *>(
622 const ParamValue &value)
623 {
624 return value.GLsizeiptrConstPointerVal;
625 }
626
627 template <>
628 inline GLsync GetParamVal<ParamType::TGLsync, GLsync>(const ParamValue &value)
629 {
630 return value.GLsyncVal;
631 }
632
633 template <>
634 inline GLubyte GetParamVal<ParamType::TGLubyte, GLubyte>(const ParamValue &value)
635 {
636 return value.GLubyteVal;
637 }
638
639 template <>
640 inline const GLubyte *GetParamVal<ParamType::TGLubyteConstPointer, const GLubyte *>(
641 const ParamValue &value)
642 {
643 return value.GLubyteConstPointerVal;
644 }
645
646 template <>
647 inline GLubyte *GetParamVal<ParamType::TGLubytePointer, GLubyte *>(const ParamValue &value)
648 {
649 return value.GLubytePointerVal;
650 }
651
652 template <>
653 inline GLuint GetParamVal<ParamType::TGLuint, GLuint>(const ParamValue &value)
654 {
655 return value.GLuintVal;
656 }
657
658 template <>
659 inline GLuint64 GetParamVal<ParamType::TGLuint64, GLuint64>(const ParamValue &value)
660 {
661 return value.GLuint64Val;
662 }
663
664 template <>
665 inline const GLuint64 *GetParamVal<ParamType::TGLuint64ConstPointer, const GLuint64 *>(
666 const ParamValue &value)
667 {
668 return value.GLuint64ConstPointerVal;
669 }
670
671 template <>
672 inline GLuint64 *GetParamVal<ParamType::TGLuint64Pointer, GLuint64 *>(const ParamValue &value)
673 {
674 return value.GLuint64PointerVal;
675 }
676
677 template <>
678 inline const GLuint *GetParamVal<ParamType::TGLuintConstPointer, const GLuint *>(
679 const ParamValue &value)
680 {
681 return value.GLuintConstPointerVal;
682 }
683
684 template <>
685 inline GLuint *GetParamVal<ParamType::TGLuintPointer, GLuint *>(const ParamValue &value)
686 {
687 return value.GLuintPointerVal;
688 }
689
690 template <>
691 inline GLushort GetParamVal<ParamType::TGLushort, GLushort>(const ParamValue &value)
692 {
693 return value.GLushortVal;
694 }
695
696 template <>
697 inline const GLushort *GetParamVal<ParamType::TGLushortConstPointer, const GLushort *>(
698 const ParamValue &value)
699 {
700 return value.GLushortConstPointerVal;
701 }
702
703 template <>
704 inline GLushort *GetParamVal<ParamType::TGLushortPointer, GLushort *>(const ParamValue &value)
705 {
706 return value.GLushortPointerVal;
707 }
708
709 template <>
710 inline const GLvoid *GetParamVal<ParamType::TGLvoidConstPointer, const GLvoid *>(
711 const ParamValue &value)
712 {
713 return value.GLvoidConstPointerVal;
714 }
715
716 template <>
717 inline const GLvoid *const *
718 GetParamVal<ParamType::TGLvoidConstPointerPointer, const GLvoid *const *>(const ParamValue &value)
719 {
720 return value.GLvoidConstPointerPointerVal;
721 }
722
723 template <>
724 inline gl::GraphicsResetStatus
725 GetParamVal<ParamType::TGraphicsResetStatus, gl::GraphicsResetStatus>(const ParamValue &value)
726 {
727 return value.GraphicsResetStatusVal;
728 }
729
730 template <>
731 inline gl::HandleType GetParamVal<ParamType::THandleType, gl::HandleType>(const ParamValue &value)
732 {
733 return value.HandleTypeVal;
734 }
735
736 template <>
737 inline gl::LightParameter GetParamVal<ParamType::TLightParameter, gl::LightParameter>(
738 const ParamValue &value)
739 {
740 return value.LightParameterVal;
741 }
742
743 template <>
744 inline gl::LogicalOperation GetParamVal<ParamType::TLogicalOperation, gl::LogicalOperation>(
745 const ParamValue &value)
746 {
747 return value.LogicalOperationVal;
748 }
749
750 template <>
751 inline gl::MaterialParameter GetParamVal<ParamType::TMaterialParameter, gl::MaterialParameter>(
752 const ParamValue &value)
753 {
754 return value.MaterialParameterVal;
755 }
756
757 template <>
758 inline gl::MatrixType GetParamVal<ParamType::TMatrixType, gl::MatrixType>(const ParamValue &value)
759 {
760 return value.MatrixTypeVal;
761 }
762
763 template <>
764 inline gl::MemoryObjectID GetParamVal<ParamType::TMemoryObjectID, gl::MemoryObjectID>(
765 const ParamValue &value)
766 {
767 return value.MemoryObjectIDVal;
768 }
769
770 template <>
771 inline const gl::MemoryObjectID *GetParamVal<ParamType::TMemoryObjectIDConstPointer,
772 const gl::MemoryObjectID *>(const ParamValue &value)
773 {
774 return value.MemoryObjectIDConstPointerVal;
775 }
776
777 template <>
778 inline gl::MemoryObjectID *GetParamVal<ParamType::TMemoryObjectIDPointer, gl::MemoryObjectID *>(
779 const ParamValue &value)
780 {
781 return value.MemoryObjectIDPointerVal;
782 }
783
784 template <>
785 inline gl::PointParameter GetParamVal<ParamType::TPointParameter, gl::PointParameter>(
786 const ParamValue &value)
787 {
788 return value.PointParameterVal;
789 }
790
791 template <>
792 inline gl::PrimitiveMode GetParamVal<ParamType::TPrimitiveMode, gl::PrimitiveMode>(
793 const ParamValue &value)
794 {
795 return value.PrimitiveModeVal;
796 }
797
798 template <>
799 inline gl::ProgramPipelineID GetParamVal<ParamType::TProgramPipelineID, gl::ProgramPipelineID>(
800 const ParamValue &value)
801 {
802 return value.ProgramPipelineIDVal;
803 }
804
805 template <>
806 inline const gl::ProgramPipelineID *
807 GetParamVal<ParamType::TProgramPipelineIDConstPointer, const gl::ProgramPipelineID *>(
808 const ParamValue &value)
809 {
810 return value.ProgramPipelineIDConstPointerVal;
811 }
812
813 template <>
814 inline gl::ProgramPipelineID *
815 GetParamVal<ParamType::TProgramPipelineIDPointer, gl::ProgramPipelineID *>(const ParamValue &value)
816 {
817 return value.ProgramPipelineIDPointerVal;
818 }
819
820 template <>
821 inline gl::ProvokingVertexConvention
822 GetParamVal<ParamType::TProvokingVertexConvention, gl::ProvokingVertexConvention>(
823 const ParamValue &value)
824 {
825 return value.ProvokingVertexConventionVal;
826 }
827
828 template <>
829 inline gl::QueryID GetParamVal<ParamType::TQueryID, gl::QueryID>(const ParamValue &value)
830 {
831 return value.QueryIDVal;
832 }
833
834 template <>
835 inline const gl::QueryID *GetParamVal<ParamType::TQueryIDConstPointer, const gl::QueryID *>(
836 const ParamValue &value)
837 {
838 return value.QueryIDConstPointerVal;
839 }
840
841 template <>
842 inline gl::QueryID *GetParamVal<ParamType::TQueryIDPointer, gl::QueryID *>(const ParamValue &value)
843 {
844 return value.QueryIDPointerVal;
845 }
846
847 template <>
848 inline gl::QueryType GetParamVal<ParamType::TQueryType, gl::QueryType>(const ParamValue &value)
849 {
850 return value.QueryTypeVal;
851 }
852
853 template <>
854 inline gl::RenderbufferID GetParamVal<ParamType::TRenderbufferID, gl::RenderbufferID>(
855 const ParamValue &value)
856 {
857 return value.RenderbufferIDVal;
858 }
859
860 template <>
861 inline const gl::RenderbufferID *GetParamVal<ParamType::TRenderbufferIDConstPointer,
862 const gl::RenderbufferID *>(const ParamValue &value)
863 {
864 return value.RenderbufferIDConstPointerVal;
865 }
866
867 template <>
868 inline gl::RenderbufferID *GetParamVal<ParamType::TRenderbufferIDPointer, gl::RenderbufferID *>(
869 const ParamValue &value)
870 {
871 return value.RenderbufferIDPointerVal;
872 }
873
874 template <>
875 inline gl::SamplerID GetParamVal<ParamType::TSamplerID, gl::SamplerID>(const ParamValue &value)
876 {
877 return value.SamplerIDVal;
878 }
879
880 template <>
881 inline const gl::SamplerID *GetParamVal<ParamType::TSamplerIDConstPointer, const gl::SamplerID *>(
882 const ParamValue &value)
883 {
884 return value.SamplerIDConstPointerVal;
885 }
886
887 template <>
888 inline gl::SamplerID *GetParamVal<ParamType::TSamplerIDPointer, gl::SamplerID *>(
889 const ParamValue &value)
890 {
891 return value.SamplerIDPointerVal;
892 }
893
894 template <>
895 inline gl::SemaphoreID GetParamVal<ParamType::TSemaphoreID, gl::SemaphoreID>(
896 const ParamValue &value)
897 {
898 return value.SemaphoreIDVal;
899 }
900
901 template <>
902 inline const gl::SemaphoreID *
903 GetParamVal<ParamType::TSemaphoreIDConstPointer, const gl::SemaphoreID *>(const ParamValue &value)
904 {
905 return value.SemaphoreIDConstPointerVal;
906 }
907
908 template <>
909 inline gl::SemaphoreID *GetParamVal<ParamType::TSemaphoreIDPointer, gl::SemaphoreID *>(
910 const ParamValue &value)
911 {
912 return value.SemaphoreIDPointerVal;
913 }
914
915 template <>
916 inline gl::ShaderProgramID GetParamVal<ParamType::TShaderProgramID, gl::ShaderProgramID>(
917 const ParamValue &value)
918 {
919 return value.ShaderProgramIDVal;
920 }
921
922 template <>
923 inline const gl::ShaderProgramID *GetParamVal<ParamType::TShaderProgramIDConstPointer,
924 const gl::ShaderProgramID *>(const ParamValue &value)
925 {
926 return value.ShaderProgramIDConstPointerVal;
927 }
928
929 template <>
930 inline gl::ShaderProgramID *GetParamVal<ParamType::TShaderProgramIDPointer, gl::ShaderProgramID *>(
931 const ParamValue &value)
932 {
933 return value.ShaderProgramIDPointerVal;
934 }
935
936 template <>
937 inline gl::ShaderType GetParamVal<ParamType::TShaderType, gl::ShaderType>(const ParamValue &value)
938 {
939 return value.ShaderTypeVal;
940 }
941
942 template <>
943 inline gl::ShadingModel GetParamVal<ParamType::TShadingModel, gl::ShadingModel>(
944 const ParamValue &value)
945 {
946 return value.ShadingModelVal;
947 }
948
949 template <>
950 inline gl::TextureEnvParameter
951 GetParamVal<ParamType::TTextureEnvParameter, gl::TextureEnvParameter>(const ParamValue &value)
952 {
953 return value.TextureEnvParameterVal;
954 }
955
956 template <>
957 inline gl::TextureEnvTarget GetParamVal<ParamType::TTextureEnvTarget, gl::TextureEnvTarget>(
958 const ParamValue &value)
959 {
960 return value.TextureEnvTargetVal;
961 }
962
963 template <>
964 inline gl::TextureID GetParamVal<ParamType::TTextureID, gl::TextureID>(const ParamValue &value)
965 {
966 return value.TextureIDVal;
967 }
968
969 template <>
970 inline const gl::TextureID *GetParamVal<ParamType::TTextureIDConstPointer, const gl::TextureID *>(
971 const ParamValue &value)
972 {
973 return value.TextureIDConstPointerVal;
974 }
975
976 template <>
977 inline gl::TextureID *GetParamVal<ParamType::TTextureIDPointer, gl::TextureID *>(
978 const ParamValue &value)
979 {
980 return value.TextureIDPointerVal;
981 }
982
983 template <>
984 inline gl::TextureTarget GetParamVal<ParamType::TTextureTarget, gl::TextureTarget>(
985 const ParamValue &value)
986 {
987 return value.TextureTargetVal;
988 }
989
990 template <>
991 inline gl::TextureType GetParamVal<ParamType::TTextureType, gl::TextureType>(
992 const ParamValue &value)
993 {
994 return value.TextureTypeVal;
995 }
996
997 template <>
998 inline gl::TransformFeedbackID
999 GetParamVal<ParamType::TTransformFeedbackID, gl::TransformFeedbackID>(const ParamValue &value)
1000 {
1001 return value.TransformFeedbackIDVal;
1002 }
1003
1004 template <>
1005 inline const gl::TransformFeedbackID *
1006 GetParamVal<ParamType::TTransformFeedbackIDConstPointer, const gl::TransformFeedbackID *>(
1007 const ParamValue &value)
1008 {
1009 return value.TransformFeedbackIDConstPointerVal;
1010 }
1011
1012 template <>
1013 inline gl::TransformFeedbackID *GetParamVal<ParamType::TTransformFeedbackIDPointer,
1014 gl::TransformFeedbackID *>(const ParamValue &value)
1015 {
1016 return value.TransformFeedbackIDPointerVal;
1017 }
1018
1019 template <>
1020 inline gl::UniformBlockIndex GetParamVal<ParamType::TUniformBlockIndex, gl::UniformBlockIndex>(
1021 const ParamValue &value)
1022 {
1023 return value.UniformBlockIndexVal;
1024 }
1025
1026 template <>
1027 inline gl::UniformLocation GetParamVal<ParamType::TUniformLocation, gl::UniformLocation>(
1028 const ParamValue &value)
1029 {
1030 return value.UniformLocationVal;
1031 }
1032
1033 template <>
1034 inline gl::VertexArrayID GetParamVal<ParamType::TVertexArrayID, gl::VertexArrayID>(
1035 const ParamValue &value)
1036 {
1037 return value.VertexArrayIDVal;
1038 }
1039
1040 template <>
1041 inline const gl::VertexArrayID *GetParamVal<ParamType::TVertexArrayIDConstPointer,
1042 const gl::VertexArrayID *>(const ParamValue &value)
1043 {
1044 return value.VertexArrayIDConstPointerVal;
1045 }
1046
1047 template <>
1048 inline gl::VertexArrayID *GetParamVal<ParamType::TVertexArrayIDPointer, gl::VertexArrayID *>(
1049 const ParamValue &value)
1050 {
1051 return value.VertexArrayIDPointerVal;
1052 }
1053
1054 template <>
1055 inline gl::VertexAttribType GetParamVal<ParamType::TVertexAttribType, gl::VertexAttribType>(
1056 const ParamValue &value)
1057 {
1058 return value.VertexAttribTypeVal;
1059 }
1060
1061 template <>
1062 inline const void *GetParamVal<ParamType::TvoidConstPointer, const void *>(const ParamValue &value)
1063 {
1064 return value.voidConstPointerVal;
1065 }
1066
1067 template <>
1068 inline const void *const *GetParamVal<ParamType::TvoidConstPointerPointer, const void *const *>(
1069 const ParamValue &value)
1070 {
1071 return value.voidConstPointerPointerVal;
1072 }
1073
1074 template <>
1075 inline void *GetParamVal<ParamType::TvoidPointer, void *>(const ParamValue &value)
1076 {
1077 return value.voidPointerVal;
1078 }
1079
1080 template <>
1081 inline void **GetParamVal<ParamType::TvoidPointerPointer, void **>(const ParamValue &value)
1082 {
1083 return value.voidPointerPointerVal;
1084 }
1085
1086 template <ParamType PType, typename T>
GetParamVal(const ParamValue & value)1087 T GetParamVal(const ParamValue &value)
1088 {
1089 UNREACHABLE();
1090 return T();
1091 }
1092
1093 template <typename T>
AccessParamValue(ParamType paramType,const ParamValue & value)1094 T AccessParamValue(ParamType paramType, const ParamValue &value)
1095 {
1096 switch (paramType)
1097 {
1098 case ParamType::TAlphaTestFunc:
1099 return GetParamVal<ParamType::TAlphaTestFunc, T>(value);
1100 case ParamType::TBufferBinding:
1101 return GetParamVal<ParamType::TBufferBinding, T>(value);
1102 case ParamType::TBufferID:
1103 return GetParamVal<ParamType::TBufferID, T>(value);
1104 case ParamType::TBufferIDConstPointer:
1105 return GetParamVal<ParamType::TBufferIDConstPointer, T>(value);
1106 case ParamType::TBufferIDPointer:
1107 return GetParamVal<ParamType::TBufferIDPointer, T>(value);
1108 case ParamType::TBufferUsage:
1109 return GetParamVal<ParamType::TBufferUsage, T>(value);
1110 case ParamType::TClientVertexArrayType:
1111 return GetParamVal<ParamType::TClientVertexArrayType, T>(value);
1112 case ParamType::TCullFaceMode:
1113 return GetParamVal<ParamType::TCullFaceMode, T>(value);
1114 case ParamType::TDrawElementsType:
1115 return GetParamVal<ParamType::TDrawElementsType, T>(value);
1116 case ParamType::TFenceNVID:
1117 return GetParamVal<ParamType::TFenceNVID, T>(value);
1118 case ParamType::TFenceNVIDConstPointer:
1119 return GetParamVal<ParamType::TFenceNVIDConstPointer, T>(value);
1120 case ParamType::TFenceNVIDPointer:
1121 return GetParamVal<ParamType::TFenceNVIDPointer, T>(value);
1122 case ParamType::TFramebufferID:
1123 return GetParamVal<ParamType::TFramebufferID, T>(value);
1124 case ParamType::TFramebufferIDConstPointer:
1125 return GetParamVal<ParamType::TFramebufferIDConstPointer, T>(value);
1126 case ParamType::TFramebufferIDPointer:
1127 return GetParamVal<ParamType::TFramebufferIDPointer, T>(value);
1128 case ParamType::TGLDEBUGPROC:
1129 return GetParamVal<ParamType::TGLDEBUGPROC, T>(value);
1130 case ParamType::TGLDEBUGPROCKHR:
1131 return GetParamVal<ParamType::TGLDEBUGPROCKHR, T>(value);
1132 case ParamType::TGLbitfield:
1133 return GetParamVal<ParamType::TGLbitfield, T>(value);
1134 case ParamType::TGLboolean:
1135 return GetParamVal<ParamType::TGLboolean, T>(value);
1136 case ParamType::TGLbooleanConstPointer:
1137 return GetParamVal<ParamType::TGLbooleanConstPointer, T>(value);
1138 case ParamType::TGLbooleanPointer:
1139 return GetParamVal<ParamType::TGLbooleanPointer, T>(value);
1140 case ParamType::TGLbyte:
1141 return GetParamVal<ParamType::TGLbyte, T>(value);
1142 case ParamType::TGLbyteConstPointer:
1143 return GetParamVal<ParamType::TGLbyteConstPointer, T>(value);
1144 case ParamType::TGLcharConstPointer:
1145 return GetParamVal<ParamType::TGLcharConstPointer, T>(value);
1146 case ParamType::TGLcharConstPointerPointer:
1147 return GetParamVal<ParamType::TGLcharConstPointerPointer, T>(value);
1148 case ParamType::TGLcharPointer:
1149 return GetParamVal<ParamType::TGLcharPointer, T>(value);
1150 case ParamType::TGLclampx:
1151 return GetParamVal<ParamType::TGLclampx, T>(value);
1152 case ParamType::TGLdouble:
1153 return GetParamVal<ParamType::TGLdouble, T>(value);
1154 case ParamType::TGLdoubleConstPointer:
1155 return GetParamVal<ParamType::TGLdoubleConstPointer, T>(value);
1156 case ParamType::TGLdoublePointer:
1157 return GetParamVal<ParamType::TGLdoublePointer, T>(value);
1158 case ParamType::TGLeglClientBufferEXT:
1159 return GetParamVal<ParamType::TGLeglClientBufferEXT, T>(value);
1160 case ParamType::TGLeglImageOES:
1161 return GetParamVal<ParamType::TGLeglImageOES, T>(value);
1162 case ParamType::TGLenum:
1163 return GetParamVal<ParamType::TGLenum, T>(value);
1164 case ParamType::TGLenumConstPointer:
1165 return GetParamVal<ParamType::TGLenumConstPointer, T>(value);
1166 case ParamType::TGLenumPointer:
1167 return GetParamVal<ParamType::TGLenumPointer, T>(value);
1168 case ParamType::TGLfixed:
1169 return GetParamVal<ParamType::TGLfixed, T>(value);
1170 case ParamType::TGLfixedConstPointer:
1171 return GetParamVal<ParamType::TGLfixedConstPointer, T>(value);
1172 case ParamType::TGLfixedPointer:
1173 return GetParamVal<ParamType::TGLfixedPointer, T>(value);
1174 case ParamType::TGLfloat:
1175 return GetParamVal<ParamType::TGLfloat, T>(value);
1176 case ParamType::TGLfloatConstPointer:
1177 return GetParamVal<ParamType::TGLfloatConstPointer, T>(value);
1178 case ParamType::TGLfloatPointer:
1179 return GetParamVal<ParamType::TGLfloatPointer, T>(value);
1180 case ParamType::TGLint:
1181 return GetParamVal<ParamType::TGLint, T>(value);
1182 case ParamType::TGLint64Pointer:
1183 return GetParamVal<ParamType::TGLint64Pointer, T>(value);
1184 case ParamType::TGLintConstPointer:
1185 return GetParamVal<ParamType::TGLintConstPointer, T>(value);
1186 case ParamType::TGLintPointer:
1187 return GetParamVal<ParamType::TGLintPointer, T>(value);
1188 case ParamType::TGLintptr:
1189 return GetParamVal<ParamType::TGLintptr, T>(value);
1190 case ParamType::TGLintptrConstPointer:
1191 return GetParamVal<ParamType::TGLintptrConstPointer, T>(value);
1192 case ParamType::TGLshort:
1193 return GetParamVal<ParamType::TGLshort, T>(value);
1194 case ParamType::TGLshortConstPointer:
1195 return GetParamVal<ParamType::TGLshortConstPointer, T>(value);
1196 case ParamType::TGLsizei:
1197 return GetParamVal<ParamType::TGLsizei, T>(value);
1198 case ParamType::TGLsizeiConstPointer:
1199 return GetParamVal<ParamType::TGLsizeiConstPointer, T>(value);
1200 case ParamType::TGLsizeiPointer:
1201 return GetParamVal<ParamType::TGLsizeiPointer, T>(value);
1202 case ParamType::TGLsizeiptr:
1203 return GetParamVal<ParamType::TGLsizeiptr, T>(value);
1204 case ParamType::TGLsizeiptrConstPointer:
1205 return GetParamVal<ParamType::TGLsizeiptrConstPointer, T>(value);
1206 case ParamType::TGLsync:
1207 return GetParamVal<ParamType::TGLsync, T>(value);
1208 case ParamType::TGLubyte:
1209 return GetParamVal<ParamType::TGLubyte, T>(value);
1210 case ParamType::TGLubyteConstPointer:
1211 return GetParamVal<ParamType::TGLubyteConstPointer, T>(value);
1212 case ParamType::TGLubytePointer:
1213 return GetParamVal<ParamType::TGLubytePointer, T>(value);
1214 case ParamType::TGLuint:
1215 return GetParamVal<ParamType::TGLuint, T>(value);
1216 case ParamType::TGLuint64:
1217 return GetParamVal<ParamType::TGLuint64, T>(value);
1218 case ParamType::TGLuint64ConstPointer:
1219 return GetParamVal<ParamType::TGLuint64ConstPointer, T>(value);
1220 case ParamType::TGLuint64Pointer:
1221 return GetParamVal<ParamType::TGLuint64Pointer, T>(value);
1222 case ParamType::TGLuintConstPointer:
1223 return GetParamVal<ParamType::TGLuintConstPointer, T>(value);
1224 case ParamType::TGLuintPointer:
1225 return GetParamVal<ParamType::TGLuintPointer, T>(value);
1226 case ParamType::TGLushort:
1227 return GetParamVal<ParamType::TGLushort, T>(value);
1228 case ParamType::TGLushortConstPointer:
1229 return GetParamVal<ParamType::TGLushortConstPointer, T>(value);
1230 case ParamType::TGLushortPointer:
1231 return GetParamVal<ParamType::TGLushortPointer, T>(value);
1232 case ParamType::TGLvoidConstPointer:
1233 return GetParamVal<ParamType::TGLvoidConstPointer, T>(value);
1234 case ParamType::TGLvoidConstPointerPointer:
1235 return GetParamVal<ParamType::TGLvoidConstPointerPointer, T>(value);
1236 case ParamType::TGraphicsResetStatus:
1237 return GetParamVal<ParamType::TGraphicsResetStatus, T>(value);
1238 case ParamType::THandleType:
1239 return GetParamVal<ParamType::THandleType, T>(value);
1240 case ParamType::TLightParameter:
1241 return GetParamVal<ParamType::TLightParameter, T>(value);
1242 case ParamType::TLogicalOperation:
1243 return GetParamVal<ParamType::TLogicalOperation, T>(value);
1244 case ParamType::TMaterialParameter:
1245 return GetParamVal<ParamType::TMaterialParameter, T>(value);
1246 case ParamType::TMatrixType:
1247 return GetParamVal<ParamType::TMatrixType, T>(value);
1248 case ParamType::TMemoryObjectID:
1249 return GetParamVal<ParamType::TMemoryObjectID, T>(value);
1250 case ParamType::TMemoryObjectIDConstPointer:
1251 return GetParamVal<ParamType::TMemoryObjectIDConstPointer, T>(value);
1252 case ParamType::TMemoryObjectIDPointer:
1253 return GetParamVal<ParamType::TMemoryObjectIDPointer, T>(value);
1254 case ParamType::TPointParameter:
1255 return GetParamVal<ParamType::TPointParameter, T>(value);
1256 case ParamType::TPrimitiveMode:
1257 return GetParamVal<ParamType::TPrimitiveMode, T>(value);
1258 case ParamType::TProgramPipelineID:
1259 return GetParamVal<ParamType::TProgramPipelineID, T>(value);
1260 case ParamType::TProgramPipelineIDConstPointer:
1261 return GetParamVal<ParamType::TProgramPipelineIDConstPointer, T>(value);
1262 case ParamType::TProgramPipelineIDPointer:
1263 return GetParamVal<ParamType::TProgramPipelineIDPointer, T>(value);
1264 case ParamType::TProvokingVertexConvention:
1265 return GetParamVal<ParamType::TProvokingVertexConvention, T>(value);
1266 case ParamType::TQueryID:
1267 return GetParamVal<ParamType::TQueryID, T>(value);
1268 case ParamType::TQueryIDConstPointer:
1269 return GetParamVal<ParamType::TQueryIDConstPointer, T>(value);
1270 case ParamType::TQueryIDPointer:
1271 return GetParamVal<ParamType::TQueryIDPointer, T>(value);
1272 case ParamType::TQueryType:
1273 return GetParamVal<ParamType::TQueryType, T>(value);
1274 case ParamType::TRenderbufferID:
1275 return GetParamVal<ParamType::TRenderbufferID, T>(value);
1276 case ParamType::TRenderbufferIDConstPointer:
1277 return GetParamVal<ParamType::TRenderbufferIDConstPointer, T>(value);
1278 case ParamType::TRenderbufferIDPointer:
1279 return GetParamVal<ParamType::TRenderbufferIDPointer, T>(value);
1280 case ParamType::TSamplerID:
1281 return GetParamVal<ParamType::TSamplerID, T>(value);
1282 case ParamType::TSamplerIDConstPointer:
1283 return GetParamVal<ParamType::TSamplerIDConstPointer, T>(value);
1284 case ParamType::TSamplerIDPointer:
1285 return GetParamVal<ParamType::TSamplerIDPointer, T>(value);
1286 case ParamType::TSemaphoreID:
1287 return GetParamVal<ParamType::TSemaphoreID, T>(value);
1288 case ParamType::TSemaphoreIDConstPointer:
1289 return GetParamVal<ParamType::TSemaphoreIDConstPointer, T>(value);
1290 case ParamType::TSemaphoreIDPointer:
1291 return GetParamVal<ParamType::TSemaphoreIDPointer, T>(value);
1292 case ParamType::TShaderProgramID:
1293 return GetParamVal<ParamType::TShaderProgramID, T>(value);
1294 case ParamType::TShaderProgramIDConstPointer:
1295 return GetParamVal<ParamType::TShaderProgramIDConstPointer, T>(value);
1296 case ParamType::TShaderProgramIDPointer:
1297 return GetParamVal<ParamType::TShaderProgramIDPointer, T>(value);
1298 case ParamType::TShaderType:
1299 return GetParamVal<ParamType::TShaderType, T>(value);
1300 case ParamType::TShadingModel:
1301 return GetParamVal<ParamType::TShadingModel, T>(value);
1302 case ParamType::TTextureEnvParameter:
1303 return GetParamVal<ParamType::TTextureEnvParameter, T>(value);
1304 case ParamType::TTextureEnvTarget:
1305 return GetParamVal<ParamType::TTextureEnvTarget, T>(value);
1306 case ParamType::TTextureID:
1307 return GetParamVal<ParamType::TTextureID, T>(value);
1308 case ParamType::TTextureIDConstPointer:
1309 return GetParamVal<ParamType::TTextureIDConstPointer, T>(value);
1310 case ParamType::TTextureIDPointer:
1311 return GetParamVal<ParamType::TTextureIDPointer, T>(value);
1312 case ParamType::TTextureTarget:
1313 return GetParamVal<ParamType::TTextureTarget, T>(value);
1314 case ParamType::TTextureType:
1315 return GetParamVal<ParamType::TTextureType, T>(value);
1316 case ParamType::TTransformFeedbackID:
1317 return GetParamVal<ParamType::TTransformFeedbackID, T>(value);
1318 case ParamType::TTransformFeedbackIDConstPointer:
1319 return GetParamVal<ParamType::TTransformFeedbackIDConstPointer, T>(value);
1320 case ParamType::TTransformFeedbackIDPointer:
1321 return GetParamVal<ParamType::TTransformFeedbackIDPointer, T>(value);
1322 case ParamType::TUniformBlockIndex:
1323 return GetParamVal<ParamType::TUniformBlockIndex, T>(value);
1324 case ParamType::TUniformLocation:
1325 return GetParamVal<ParamType::TUniformLocation, T>(value);
1326 case ParamType::TVertexArrayID:
1327 return GetParamVal<ParamType::TVertexArrayID, T>(value);
1328 case ParamType::TVertexArrayIDConstPointer:
1329 return GetParamVal<ParamType::TVertexArrayIDConstPointer, T>(value);
1330 case ParamType::TVertexArrayIDPointer:
1331 return GetParamVal<ParamType::TVertexArrayIDPointer, T>(value);
1332 case ParamType::TVertexAttribType:
1333 return GetParamVal<ParamType::TVertexAttribType, T>(value);
1334 case ParamType::TvoidConstPointer:
1335 return GetParamVal<ParamType::TvoidConstPointer, T>(value);
1336 case ParamType::TvoidConstPointerPointer:
1337 return GetParamVal<ParamType::TvoidConstPointerPointer, T>(value);
1338 case ParamType::TvoidPointer:
1339 return GetParamVal<ParamType::TvoidPointer, T>(value);
1340 case ParamType::TvoidPointerPointer:
1341 return GetParamVal<ParamType::TvoidPointerPointer, T>(value);
1342 }
1343 }
1344
1345 template <ParamType PType, typename T>
1346 void SetParamVal(T valueIn, ParamValue *valueOut);
1347
1348 template <>
1349 inline void SetParamVal<ParamType::TAlphaTestFunc>(gl::AlphaTestFunc valueIn, ParamValue *valueOut)
1350 {
1351 valueOut->AlphaTestFuncVal = valueIn;
1352 }
1353
1354 template <>
1355 inline void SetParamVal<ParamType::TBufferBinding>(gl::BufferBinding valueIn, ParamValue *valueOut)
1356 {
1357 valueOut->BufferBindingVal = valueIn;
1358 }
1359
1360 template <>
1361 inline void SetParamVal<ParamType::TBufferID>(gl::BufferID valueIn, ParamValue *valueOut)
1362 {
1363 valueOut->BufferIDVal = valueIn;
1364 }
1365
1366 template <>
1367 inline void SetParamVal<ParamType::TBufferIDConstPointer>(const gl::BufferID *valueIn,
1368 ParamValue *valueOut)
1369 {
1370 valueOut->BufferIDConstPointerVal = valueIn;
1371 }
1372
1373 template <>
1374 inline void SetParamVal<ParamType::TBufferIDPointer>(gl::BufferID *valueIn, ParamValue *valueOut)
1375 {
1376 valueOut->BufferIDPointerVal = valueIn;
1377 }
1378
1379 template <>
1380 inline void SetParamVal<ParamType::TBufferUsage>(gl::BufferUsage valueIn, ParamValue *valueOut)
1381 {
1382 valueOut->BufferUsageVal = valueIn;
1383 }
1384
1385 template <>
1386 inline void SetParamVal<ParamType::TClientVertexArrayType>(gl::ClientVertexArrayType valueIn,
1387 ParamValue *valueOut)
1388 {
1389 valueOut->ClientVertexArrayTypeVal = valueIn;
1390 }
1391
1392 template <>
1393 inline void SetParamVal<ParamType::TCullFaceMode>(gl::CullFaceMode valueIn, ParamValue *valueOut)
1394 {
1395 valueOut->CullFaceModeVal = valueIn;
1396 }
1397
1398 template <>
1399 inline void SetParamVal<ParamType::TDrawElementsType>(gl::DrawElementsType valueIn,
1400 ParamValue *valueOut)
1401 {
1402 valueOut->DrawElementsTypeVal = valueIn;
1403 }
1404
1405 template <>
1406 inline void SetParamVal<ParamType::TFenceNVID>(gl::FenceNVID valueIn, ParamValue *valueOut)
1407 {
1408 valueOut->FenceNVIDVal = valueIn;
1409 }
1410
1411 template <>
1412 inline void SetParamVal<ParamType::TFenceNVIDConstPointer>(const gl::FenceNVID *valueIn,
1413 ParamValue *valueOut)
1414 {
1415 valueOut->FenceNVIDConstPointerVal = valueIn;
1416 }
1417
1418 template <>
1419 inline void SetParamVal<ParamType::TFenceNVIDPointer>(gl::FenceNVID *valueIn, ParamValue *valueOut)
1420 {
1421 valueOut->FenceNVIDPointerVal = valueIn;
1422 }
1423
1424 template <>
1425 inline void SetParamVal<ParamType::TFramebufferID>(gl::FramebufferID valueIn, ParamValue *valueOut)
1426 {
1427 valueOut->FramebufferIDVal = valueIn;
1428 }
1429
1430 template <>
1431 inline void SetParamVal<ParamType::TFramebufferIDConstPointer>(const gl::FramebufferID *valueIn,
1432 ParamValue *valueOut)
1433 {
1434 valueOut->FramebufferIDConstPointerVal = valueIn;
1435 }
1436
1437 template <>
1438 inline void SetParamVal<ParamType::TFramebufferIDPointer>(gl::FramebufferID *valueIn,
1439 ParamValue *valueOut)
1440 {
1441 valueOut->FramebufferIDPointerVal = valueIn;
1442 }
1443
1444 template <>
1445 inline void SetParamVal<ParamType::TGLDEBUGPROC>(GLDEBUGPROC valueIn, ParamValue *valueOut)
1446 {
1447 valueOut->GLDEBUGPROCVal = valueIn;
1448 }
1449
1450 template <>
1451 inline void SetParamVal<ParamType::TGLDEBUGPROCKHR>(GLDEBUGPROCKHR valueIn, ParamValue *valueOut)
1452 {
1453 valueOut->GLDEBUGPROCKHRVal = valueIn;
1454 }
1455
1456 template <>
1457 inline void SetParamVal<ParamType::TGLbitfield>(GLbitfield valueIn, ParamValue *valueOut)
1458 {
1459 valueOut->GLbitfieldVal = valueIn;
1460 }
1461
1462 template <>
1463 inline void SetParamVal<ParamType::TGLboolean>(GLboolean valueIn, ParamValue *valueOut)
1464 {
1465 valueOut->GLbooleanVal = valueIn;
1466 }
1467
1468 template <>
1469 inline void SetParamVal<ParamType::TGLbooleanConstPointer>(const GLboolean *valueIn,
1470 ParamValue *valueOut)
1471 {
1472 valueOut->GLbooleanConstPointerVal = valueIn;
1473 }
1474
1475 template <>
1476 inline void SetParamVal<ParamType::TGLbooleanPointer>(GLboolean *valueIn, ParamValue *valueOut)
1477 {
1478 valueOut->GLbooleanPointerVal = valueIn;
1479 }
1480
1481 template <>
1482 inline void SetParamVal<ParamType::TGLbyte>(GLbyte valueIn, ParamValue *valueOut)
1483 {
1484 valueOut->GLbyteVal = valueIn;
1485 }
1486
1487 template <>
1488 inline void SetParamVal<ParamType::TGLbyteConstPointer>(const GLbyte *valueIn, ParamValue *valueOut)
1489 {
1490 valueOut->GLbyteConstPointerVal = valueIn;
1491 }
1492
1493 template <>
1494 inline void SetParamVal<ParamType::TGLcharConstPointer>(const GLchar *valueIn, ParamValue *valueOut)
1495 {
1496 valueOut->GLcharConstPointerVal = valueIn;
1497 }
1498
1499 template <>
1500 inline void SetParamVal<ParamType::TGLcharConstPointerPointer>(const GLchar *const *valueIn,
1501 ParamValue *valueOut)
1502 {
1503 valueOut->GLcharConstPointerPointerVal = valueIn;
1504 }
1505
1506 template <>
1507 inline void SetParamVal<ParamType::TGLcharPointer>(GLchar *valueIn, ParamValue *valueOut)
1508 {
1509 valueOut->GLcharPointerVal = valueIn;
1510 }
1511
1512 template <>
1513 inline void SetParamVal<ParamType::TGLclampx>(GLclampx valueIn, ParamValue *valueOut)
1514 {
1515 valueOut->GLclampxVal = valueIn;
1516 }
1517
1518 template <>
1519 inline void SetParamVal<ParamType::TGLdouble>(GLdouble valueIn, ParamValue *valueOut)
1520 {
1521 valueOut->GLdoubleVal = valueIn;
1522 }
1523
1524 template <>
1525 inline void SetParamVal<ParamType::TGLdoubleConstPointer>(const GLdouble *valueIn,
1526 ParamValue *valueOut)
1527 {
1528 valueOut->GLdoubleConstPointerVal = valueIn;
1529 }
1530
1531 template <>
1532 inline void SetParamVal<ParamType::TGLdoublePointer>(GLdouble *valueIn, ParamValue *valueOut)
1533 {
1534 valueOut->GLdoublePointerVal = valueIn;
1535 }
1536
1537 template <>
1538 inline void SetParamVal<ParamType::TGLeglClientBufferEXT>(GLeglClientBufferEXT valueIn,
1539 ParamValue *valueOut)
1540 {
1541 valueOut->GLeglClientBufferEXTVal = valueIn;
1542 }
1543
1544 template <>
1545 inline void SetParamVal<ParamType::TGLeglImageOES>(GLeglImageOES valueIn, ParamValue *valueOut)
1546 {
1547 valueOut->GLeglImageOESVal = valueIn;
1548 }
1549
1550 template <>
1551 inline void SetParamVal<ParamType::TGLenum>(GLenum valueIn, ParamValue *valueOut)
1552 {
1553 valueOut->GLenumVal = valueIn;
1554 }
1555
1556 template <>
1557 inline void SetParamVal<ParamType::TGLenumConstPointer>(const GLenum *valueIn, ParamValue *valueOut)
1558 {
1559 valueOut->GLenumConstPointerVal = valueIn;
1560 }
1561
1562 template <>
1563 inline void SetParamVal<ParamType::TGLenumPointer>(GLenum *valueIn, ParamValue *valueOut)
1564 {
1565 valueOut->GLenumPointerVal = valueIn;
1566 }
1567
1568 template <>
1569 inline void SetParamVal<ParamType::TGLfixed>(GLfixed valueIn, ParamValue *valueOut)
1570 {
1571 valueOut->GLfixedVal = valueIn;
1572 }
1573
1574 template <>
1575 inline void SetParamVal<ParamType::TGLfixedConstPointer>(const GLfixed *valueIn,
1576 ParamValue *valueOut)
1577 {
1578 valueOut->GLfixedConstPointerVal = valueIn;
1579 }
1580
1581 template <>
1582 inline void SetParamVal<ParamType::TGLfixedPointer>(GLfixed *valueIn, ParamValue *valueOut)
1583 {
1584 valueOut->GLfixedPointerVal = valueIn;
1585 }
1586
1587 template <>
1588 inline void SetParamVal<ParamType::TGLfloat>(GLfloat valueIn, ParamValue *valueOut)
1589 {
1590 valueOut->GLfloatVal = valueIn;
1591 }
1592
1593 template <>
1594 inline void SetParamVal<ParamType::TGLfloatConstPointer>(const GLfloat *valueIn,
1595 ParamValue *valueOut)
1596 {
1597 valueOut->GLfloatConstPointerVal = valueIn;
1598 }
1599
1600 template <>
1601 inline void SetParamVal<ParamType::TGLfloatPointer>(GLfloat *valueIn, ParamValue *valueOut)
1602 {
1603 valueOut->GLfloatPointerVal = valueIn;
1604 }
1605
1606 template <>
1607 inline void SetParamVal<ParamType::TGLint>(GLint valueIn, ParamValue *valueOut)
1608 {
1609 valueOut->GLintVal = valueIn;
1610 }
1611
1612 template <>
1613 inline void SetParamVal<ParamType::TGLint64Pointer>(GLint64 *valueIn, ParamValue *valueOut)
1614 {
1615 valueOut->GLint64PointerVal = valueIn;
1616 }
1617
1618 template <>
1619 inline void SetParamVal<ParamType::TGLintConstPointer>(const GLint *valueIn, ParamValue *valueOut)
1620 {
1621 valueOut->GLintConstPointerVal = valueIn;
1622 }
1623
1624 template <>
1625 inline void SetParamVal<ParamType::TGLintPointer>(GLint *valueIn, ParamValue *valueOut)
1626 {
1627 valueOut->GLintPointerVal = valueIn;
1628 }
1629
1630 template <>
1631 inline void SetParamVal<ParamType::TGLintptr>(GLintptr valueIn, ParamValue *valueOut)
1632 {
1633 valueOut->GLintptrVal = valueIn;
1634 }
1635
1636 template <>
1637 inline void SetParamVal<ParamType::TGLintptrConstPointer>(const GLintptr *valueIn,
1638 ParamValue *valueOut)
1639 {
1640 valueOut->GLintptrConstPointerVal = valueIn;
1641 }
1642
1643 template <>
1644 inline void SetParamVal<ParamType::TGLshort>(GLshort valueIn, ParamValue *valueOut)
1645 {
1646 valueOut->GLshortVal = valueIn;
1647 }
1648
1649 template <>
1650 inline void SetParamVal<ParamType::TGLshortConstPointer>(const GLshort *valueIn,
1651 ParamValue *valueOut)
1652 {
1653 valueOut->GLshortConstPointerVal = valueIn;
1654 }
1655
1656 template <>
1657 inline void SetParamVal<ParamType::TGLsizei>(GLsizei valueIn, ParamValue *valueOut)
1658 {
1659 valueOut->GLsizeiVal = valueIn;
1660 }
1661
1662 template <>
1663 inline void SetParamVal<ParamType::TGLsizeiConstPointer>(const GLsizei *valueIn,
1664 ParamValue *valueOut)
1665 {
1666 valueOut->GLsizeiConstPointerVal = valueIn;
1667 }
1668
1669 template <>
1670 inline void SetParamVal<ParamType::TGLsizeiPointer>(GLsizei *valueIn, ParamValue *valueOut)
1671 {
1672 valueOut->GLsizeiPointerVal = valueIn;
1673 }
1674
1675 template <>
1676 inline void SetParamVal<ParamType::TGLsizeiptr>(GLsizeiptr valueIn, ParamValue *valueOut)
1677 {
1678 valueOut->GLsizeiptrVal = valueIn;
1679 }
1680
1681 template <>
1682 inline void SetParamVal<ParamType::TGLsizeiptrConstPointer>(const GLsizeiptr *valueIn,
1683 ParamValue *valueOut)
1684 {
1685 valueOut->GLsizeiptrConstPointerVal = valueIn;
1686 }
1687
1688 template <>
1689 inline void SetParamVal<ParamType::TGLsync>(GLsync valueIn, ParamValue *valueOut)
1690 {
1691 valueOut->GLsyncVal = valueIn;
1692 }
1693
1694 template <>
1695 inline void SetParamVal<ParamType::TGLubyte>(GLubyte valueIn, ParamValue *valueOut)
1696 {
1697 valueOut->GLubyteVal = valueIn;
1698 }
1699
1700 template <>
1701 inline void SetParamVal<ParamType::TGLubyteConstPointer>(const GLubyte *valueIn,
1702 ParamValue *valueOut)
1703 {
1704 valueOut->GLubyteConstPointerVal = valueIn;
1705 }
1706
1707 template <>
1708 inline void SetParamVal<ParamType::TGLubytePointer>(GLubyte *valueIn, ParamValue *valueOut)
1709 {
1710 valueOut->GLubytePointerVal = valueIn;
1711 }
1712
1713 template <>
1714 inline void SetParamVal<ParamType::TGLuint>(GLuint valueIn, ParamValue *valueOut)
1715 {
1716 valueOut->GLuintVal = valueIn;
1717 }
1718
1719 template <>
1720 inline void SetParamVal<ParamType::TGLuint64>(GLuint64 valueIn, ParamValue *valueOut)
1721 {
1722 valueOut->GLuint64Val = valueIn;
1723 }
1724
1725 template <>
1726 inline void SetParamVal<ParamType::TGLuint64ConstPointer>(const GLuint64 *valueIn,
1727 ParamValue *valueOut)
1728 {
1729 valueOut->GLuint64ConstPointerVal = valueIn;
1730 }
1731
1732 template <>
1733 inline void SetParamVal<ParamType::TGLuint64Pointer>(GLuint64 *valueIn, ParamValue *valueOut)
1734 {
1735 valueOut->GLuint64PointerVal = valueIn;
1736 }
1737
1738 template <>
1739 inline void SetParamVal<ParamType::TGLuintConstPointer>(const GLuint *valueIn, ParamValue *valueOut)
1740 {
1741 valueOut->GLuintConstPointerVal = valueIn;
1742 }
1743
1744 template <>
1745 inline void SetParamVal<ParamType::TGLuintPointer>(GLuint *valueIn, ParamValue *valueOut)
1746 {
1747 valueOut->GLuintPointerVal = valueIn;
1748 }
1749
1750 template <>
1751 inline void SetParamVal<ParamType::TGLushort>(GLushort valueIn, ParamValue *valueOut)
1752 {
1753 valueOut->GLushortVal = valueIn;
1754 }
1755
1756 template <>
1757 inline void SetParamVal<ParamType::TGLushortConstPointer>(const GLushort *valueIn,
1758 ParamValue *valueOut)
1759 {
1760 valueOut->GLushortConstPointerVal = valueIn;
1761 }
1762
1763 template <>
1764 inline void SetParamVal<ParamType::TGLushortPointer>(GLushort *valueIn, ParamValue *valueOut)
1765 {
1766 valueOut->GLushortPointerVal = valueIn;
1767 }
1768
1769 template <>
1770 inline void SetParamVal<ParamType::TGLvoidConstPointer>(const GLvoid *valueIn, ParamValue *valueOut)
1771 {
1772 valueOut->GLvoidConstPointerVal = valueIn;
1773 }
1774
1775 template <>
1776 inline void SetParamVal<ParamType::TGLvoidConstPointerPointer>(const GLvoid *const *valueIn,
1777 ParamValue *valueOut)
1778 {
1779 valueOut->GLvoidConstPointerPointerVal = valueIn;
1780 }
1781
1782 template <>
1783 inline void SetParamVal<ParamType::TGraphicsResetStatus>(gl::GraphicsResetStatus valueIn,
1784 ParamValue *valueOut)
1785 {
1786 valueOut->GraphicsResetStatusVal = valueIn;
1787 }
1788
1789 template <>
1790 inline void SetParamVal<ParamType::THandleType>(gl::HandleType valueIn, ParamValue *valueOut)
1791 {
1792 valueOut->HandleTypeVal = valueIn;
1793 }
1794
1795 template <>
1796 inline void SetParamVal<ParamType::TLightParameter>(gl::LightParameter valueIn,
1797 ParamValue *valueOut)
1798 {
1799 valueOut->LightParameterVal = valueIn;
1800 }
1801
1802 template <>
1803 inline void SetParamVal<ParamType::TLogicalOperation>(gl::LogicalOperation valueIn,
1804 ParamValue *valueOut)
1805 {
1806 valueOut->LogicalOperationVal = valueIn;
1807 }
1808
1809 template <>
1810 inline void SetParamVal<ParamType::TMaterialParameter>(gl::MaterialParameter valueIn,
1811 ParamValue *valueOut)
1812 {
1813 valueOut->MaterialParameterVal = valueIn;
1814 }
1815
1816 template <>
1817 inline void SetParamVal<ParamType::TMatrixType>(gl::MatrixType valueIn, ParamValue *valueOut)
1818 {
1819 valueOut->MatrixTypeVal = valueIn;
1820 }
1821
1822 template <>
1823 inline void SetParamVal<ParamType::TMemoryObjectID>(gl::MemoryObjectID valueIn,
1824 ParamValue *valueOut)
1825 {
1826 valueOut->MemoryObjectIDVal = valueIn;
1827 }
1828
1829 template <>
1830 inline void SetParamVal<ParamType::TMemoryObjectIDConstPointer>(const gl::MemoryObjectID *valueIn,
1831 ParamValue *valueOut)
1832 {
1833 valueOut->MemoryObjectIDConstPointerVal = valueIn;
1834 }
1835
1836 template <>
1837 inline void SetParamVal<ParamType::TMemoryObjectIDPointer>(gl::MemoryObjectID *valueIn,
1838 ParamValue *valueOut)
1839 {
1840 valueOut->MemoryObjectIDPointerVal = valueIn;
1841 }
1842
1843 template <>
1844 inline void SetParamVal<ParamType::TPointParameter>(gl::PointParameter valueIn,
1845 ParamValue *valueOut)
1846 {
1847 valueOut->PointParameterVal = valueIn;
1848 }
1849
1850 template <>
1851 inline void SetParamVal<ParamType::TPrimitiveMode>(gl::PrimitiveMode valueIn, ParamValue *valueOut)
1852 {
1853 valueOut->PrimitiveModeVal = valueIn;
1854 }
1855
1856 template <>
1857 inline void SetParamVal<ParamType::TProgramPipelineID>(gl::ProgramPipelineID valueIn,
1858 ParamValue *valueOut)
1859 {
1860 valueOut->ProgramPipelineIDVal = valueIn;
1861 }
1862
1863 template <>
1864 inline void SetParamVal<ParamType::TProgramPipelineIDConstPointer>(
1865 const gl::ProgramPipelineID *valueIn,
1866 ParamValue *valueOut)
1867 {
1868 valueOut->ProgramPipelineIDConstPointerVal = valueIn;
1869 }
1870
1871 template <>
1872 inline void SetParamVal<ParamType::TProgramPipelineIDPointer>(gl::ProgramPipelineID *valueIn,
1873 ParamValue *valueOut)
1874 {
1875 valueOut->ProgramPipelineIDPointerVal = valueIn;
1876 }
1877
1878 template <>
1879 inline void SetParamVal<ParamType::TProvokingVertexConvention>(
1880 gl::ProvokingVertexConvention valueIn,
1881 ParamValue *valueOut)
1882 {
1883 valueOut->ProvokingVertexConventionVal = valueIn;
1884 }
1885
1886 template <>
1887 inline void SetParamVal<ParamType::TQueryID>(gl::QueryID valueIn, ParamValue *valueOut)
1888 {
1889 valueOut->QueryIDVal = valueIn;
1890 }
1891
1892 template <>
1893 inline void SetParamVal<ParamType::TQueryIDConstPointer>(const gl::QueryID *valueIn,
1894 ParamValue *valueOut)
1895 {
1896 valueOut->QueryIDConstPointerVal = valueIn;
1897 }
1898
1899 template <>
1900 inline void SetParamVal<ParamType::TQueryIDPointer>(gl::QueryID *valueIn, ParamValue *valueOut)
1901 {
1902 valueOut->QueryIDPointerVal = valueIn;
1903 }
1904
1905 template <>
1906 inline void SetParamVal<ParamType::TQueryType>(gl::QueryType valueIn, ParamValue *valueOut)
1907 {
1908 valueOut->QueryTypeVal = valueIn;
1909 }
1910
1911 template <>
1912 inline void SetParamVal<ParamType::TRenderbufferID>(gl::RenderbufferID valueIn,
1913 ParamValue *valueOut)
1914 {
1915 valueOut->RenderbufferIDVal = valueIn;
1916 }
1917
1918 template <>
1919 inline void SetParamVal<ParamType::TRenderbufferIDConstPointer>(const gl::RenderbufferID *valueIn,
1920 ParamValue *valueOut)
1921 {
1922 valueOut->RenderbufferIDConstPointerVal = valueIn;
1923 }
1924
1925 template <>
1926 inline void SetParamVal<ParamType::TRenderbufferIDPointer>(gl::RenderbufferID *valueIn,
1927 ParamValue *valueOut)
1928 {
1929 valueOut->RenderbufferIDPointerVal = valueIn;
1930 }
1931
1932 template <>
1933 inline void SetParamVal<ParamType::TSamplerID>(gl::SamplerID valueIn, ParamValue *valueOut)
1934 {
1935 valueOut->SamplerIDVal = valueIn;
1936 }
1937
1938 template <>
1939 inline void SetParamVal<ParamType::TSamplerIDConstPointer>(const gl::SamplerID *valueIn,
1940 ParamValue *valueOut)
1941 {
1942 valueOut->SamplerIDConstPointerVal = valueIn;
1943 }
1944
1945 template <>
1946 inline void SetParamVal<ParamType::TSamplerIDPointer>(gl::SamplerID *valueIn, ParamValue *valueOut)
1947 {
1948 valueOut->SamplerIDPointerVal = valueIn;
1949 }
1950
1951 template <>
1952 inline void SetParamVal<ParamType::TSemaphoreID>(gl::SemaphoreID valueIn, ParamValue *valueOut)
1953 {
1954 valueOut->SemaphoreIDVal = valueIn;
1955 }
1956
1957 template <>
1958 inline void SetParamVal<ParamType::TSemaphoreIDConstPointer>(const gl::SemaphoreID *valueIn,
1959 ParamValue *valueOut)
1960 {
1961 valueOut->SemaphoreIDConstPointerVal = valueIn;
1962 }
1963
1964 template <>
1965 inline void SetParamVal<ParamType::TSemaphoreIDPointer>(gl::SemaphoreID *valueIn,
1966 ParamValue *valueOut)
1967 {
1968 valueOut->SemaphoreIDPointerVal = valueIn;
1969 }
1970
1971 template <>
1972 inline void SetParamVal<ParamType::TShaderProgramID>(gl::ShaderProgramID valueIn,
1973 ParamValue *valueOut)
1974 {
1975 valueOut->ShaderProgramIDVal = valueIn;
1976 }
1977
1978 template <>
1979 inline void SetParamVal<ParamType::TShaderProgramIDConstPointer>(const gl::ShaderProgramID *valueIn,
1980 ParamValue *valueOut)
1981 {
1982 valueOut->ShaderProgramIDConstPointerVal = valueIn;
1983 }
1984
1985 template <>
1986 inline void SetParamVal<ParamType::TShaderProgramIDPointer>(gl::ShaderProgramID *valueIn,
1987 ParamValue *valueOut)
1988 {
1989 valueOut->ShaderProgramIDPointerVal = valueIn;
1990 }
1991
1992 template <>
1993 inline void SetParamVal<ParamType::TShaderType>(gl::ShaderType valueIn, ParamValue *valueOut)
1994 {
1995 valueOut->ShaderTypeVal = valueIn;
1996 }
1997
1998 template <>
1999 inline void SetParamVal<ParamType::TShadingModel>(gl::ShadingModel valueIn, ParamValue *valueOut)
2000 {
2001 valueOut->ShadingModelVal = valueIn;
2002 }
2003
2004 template <>
2005 inline void SetParamVal<ParamType::TTextureEnvParameter>(gl::TextureEnvParameter valueIn,
2006 ParamValue *valueOut)
2007 {
2008 valueOut->TextureEnvParameterVal = valueIn;
2009 }
2010
2011 template <>
2012 inline void SetParamVal<ParamType::TTextureEnvTarget>(gl::TextureEnvTarget valueIn,
2013 ParamValue *valueOut)
2014 {
2015 valueOut->TextureEnvTargetVal = valueIn;
2016 }
2017
2018 template <>
2019 inline void SetParamVal<ParamType::TTextureID>(gl::TextureID valueIn, ParamValue *valueOut)
2020 {
2021 valueOut->TextureIDVal = valueIn;
2022 }
2023
2024 template <>
2025 inline void SetParamVal<ParamType::TTextureIDConstPointer>(const gl::TextureID *valueIn,
2026 ParamValue *valueOut)
2027 {
2028 valueOut->TextureIDConstPointerVal = valueIn;
2029 }
2030
2031 template <>
2032 inline void SetParamVal<ParamType::TTextureIDPointer>(gl::TextureID *valueIn, ParamValue *valueOut)
2033 {
2034 valueOut->TextureIDPointerVal = valueIn;
2035 }
2036
2037 template <>
2038 inline void SetParamVal<ParamType::TTextureTarget>(gl::TextureTarget valueIn, ParamValue *valueOut)
2039 {
2040 valueOut->TextureTargetVal = valueIn;
2041 }
2042
2043 template <>
2044 inline void SetParamVal<ParamType::TTextureType>(gl::TextureType valueIn, ParamValue *valueOut)
2045 {
2046 valueOut->TextureTypeVal = valueIn;
2047 }
2048
2049 template <>
2050 inline void SetParamVal<ParamType::TTransformFeedbackID>(gl::TransformFeedbackID valueIn,
2051 ParamValue *valueOut)
2052 {
2053 valueOut->TransformFeedbackIDVal = valueIn;
2054 }
2055
2056 template <>
2057 inline void SetParamVal<ParamType::TTransformFeedbackIDConstPointer>(
2058 const gl::TransformFeedbackID *valueIn,
2059 ParamValue *valueOut)
2060 {
2061 valueOut->TransformFeedbackIDConstPointerVal = valueIn;
2062 }
2063
2064 template <>
2065 inline void SetParamVal<ParamType::TTransformFeedbackIDPointer>(gl::TransformFeedbackID *valueIn,
2066 ParamValue *valueOut)
2067 {
2068 valueOut->TransformFeedbackIDPointerVal = valueIn;
2069 }
2070
2071 template <>
2072 inline void SetParamVal<ParamType::TUniformBlockIndex>(gl::UniformBlockIndex valueIn,
2073 ParamValue *valueOut)
2074 {
2075 valueOut->UniformBlockIndexVal = valueIn;
2076 }
2077
2078 template <>
2079 inline void SetParamVal<ParamType::TUniformLocation>(gl::UniformLocation valueIn,
2080 ParamValue *valueOut)
2081 {
2082 valueOut->UniformLocationVal = valueIn;
2083 }
2084
2085 template <>
2086 inline void SetParamVal<ParamType::TVertexArrayID>(gl::VertexArrayID valueIn, ParamValue *valueOut)
2087 {
2088 valueOut->VertexArrayIDVal = valueIn;
2089 }
2090
2091 template <>
2092 inline void SetParamVal<ParamType::TVertexArrayIDConstPointer>(const gl::VertexArrayID *valueIn,
2093 ParamValue *valueOut)
2094 {
2095 valueOut->VertexArrayIDConstPointerVal = valueIn;
2096 }
2097
2098 template <>
2099 inline void SetParamVal<ParamType::TVertexArrayIDPointer>(gl::VertexArrayID *valueIn,
2100 ParamValue *valueOut)
2101 {
2102 valueOut->VertexArrayIDPointerVal = valueIn;
2103 }
2104
2105 template <>
2106 inline void SetParamVal<ParamType::TVertexAttribType>(gl::VertexAttribType valueIn,
2107 ParamValue *valueOut)
2108 {
2109 valueOut->VertexAttribTypeVal = valueIn;
2110 }
2111
2112 template <>
2113 inline void SetParamVal<ParamType::TvoidConstPointer>(const void *valueIn, ParamValue *valueOut)
2114 {
2115 valueOut->voidConstPointerVal = valueIn;
2116 }
2117
2118 template <>
2119 inline void SetParamVal<ParamType::TvoidConstPointerPointer>(const void *const *valueIn,
2120 ParamValue *valueOut)
2121 {
2122 valueOut->voidConstPointerPointerVal = valueIn;
2123 }
2124
2125 template <>
2126 inline void SetParamVal<ParamType::TvoidPointer>(void *valueIn, ParamValue *valueOut)
2127 {
2128 valueOut->voidPointerVal = valueIn;
2129 }
2130
2131 template <>
2132 inline void SetParamVal<ParamType::TvoidPointerPointer>(void **valueIn, ParamValue *valueOut)
2133 {
2134 valueOut->voidPointerPointerVal = valueIn;
2135 }
2136
2137 template <ParamType PType, typename T>
SetParamVal(T valueIn,ParamValue * valueOut)2138 void SetParamVal(T valueIn, ParamValue *valueOut)
2139 {
2140 UNREACHABLE();
2141 }
2142
2143 template <typename T>
InitParamValue(ParamType paramType,T valueIn,ParamValue * valueOut)2144 void InitParamValue(ParamType paramType, T valueIn, ParamValue *valueOut)
2145 {
2146 switch (paramType)
2147 {
2148 case ParamType::TAlphaTestFunc:
2149 SetParamVal<ParamType::TAlphaTestFunc>(valueIn, valueOut);
2150 break;
2151 case ParamType::TBufferBinding:
2152 SetParamVal<ParamType::TBufferBinding>(valueIn, valueOut);
2153 break;
2154 case ParamType::TBufferID:
2155 SetParamVal<ParamType::TBufferID>(valueIn, valueOut);
2156 break;
2157 case ParamType::TBufferIDConstPointer:
2158 SetParamVal<ParamType::TBufferIDConstPointer>(valueIn, valueOut);
2159 break;
2160 case ParamType::TBufferIDPointer:
2161 SetParamVal<ParamType::TBufferIDPointer>(valueIn, valueOut);
2162 break;
2163 case ParamType::TBufferUsage:
2164 SetParamVal<ParamType::TBufferUsage>(valueIn, valueOut);
2165 break;
2166 case ParamType::TClientVertexArrayType:
2167 SetParamVal<ParamType::TClientVertexArrayType>(valueIn, valueOut);
2168 break;
2169 case ParamType::TCullFaceMode:
2170 SetParamVal<ParamType::TCullFaceMode>(valueIn, valueOut);
2171 break;
2172 case ParamType::TDrawElementsType:
2173 SetParamVal<ParamType::TDrawElementsType>(valueIn, valueOut);
2174 break;
2175 case ParamType::TFenceNVID:
2176 SetParamVal<ParamType::TFenceNVID>(valueIn, valueOut);
2177 break;
2178 case ParamType::TFenceNVIDConstPointer:
2179 SetParamVal<ParamType::TFenceNVIDConstPointer>(valueIn, valueOut);
2180 break;
2181 case ParamType::TFenceNVIDPointer:
2182 SetParamVal<ParamType::TFenceNVIDPointer>(valueIn, valueOut);
2183 break;
2184 case ParamType::TFramebufferID:
2185 SetParamVal<ParamType::TFramebufferID>(valueIn, valueOut);
2186 break;
2187 case ParamType::TFramebufferIDConstPointer:
2188 SetParamVal<ParamType::TFramebufferIDConstPointer>(valueIn, valueOut);
2189 break;
2190 case ParamType::TFramebufferIDPointer:
2191 SetParamVal<ParamType::TFramebufferIDPointer>(valueIn, valueOut);
2192 break;
2193 case ParamType::TGLDEBUGPROC:
2194 SetParamVal<ParamType::TGLDEBUGPROC>(valueIn, valueOut);
2195 break;
2196 case ParamType::TGLDEBUGPROCKHR:
2197 SetParamVal<ParamType::TGLDEBUGPROCKHR>(valueIn, valueOut);
2198 break;
2199 case ParamType::TGLbitfield:
2200 SetParamVal<ParamType::TGLbitfield>(valueIn, valueOut);
2201 break;
2202 case ParamType::TGLboolean:
2203 SetParamVal<ParamType::TGLboolean>(valueIn, valueOut);
2204 break;
2205 case ParamType::TGLbooleanConstPointer:
2206 SetParamVal<ParamType::TGLbooleanConstPointer>(valueIn, valueOut);
2207 break;
2208 case ParamType::TGLbooleanPointer:
2209 SetParamVal<ParamType::TGLbooleanPointer>(valueIn, valueOut);
2210 break;
2211 case ParamType::TGLbyte:
2212 SetParamVal<ParamType::TGLbyte>(valueIn, valueOut);
2213 break;
2214 case ParamType::TGLbyteConstPointer:
2215 SetParamVal<ParamType::TGLbyteConstPointer>(valueIn, valueOut);
2216 break;
2217 case ParamType::TGLcharConstPointer:
2218 SetParamVal<ParamType::TGLcharConstPointer>(valueIn, valueOut);
2219 break;
2220 case ParamType::TGLcharConstPointerPointer:
2221 SetParamVal<ParamType::TGLcharConstPointerPointer>(valueIn, valueOut);
2222 break;
2223 case ParamType::TGLcharPointer:
2224 SetParamVal<ParamType::TGLcharPointer>(valueIn, valueOut);
2225 break;
2226 case ParamType::TGLclampx:
2227 SetParamVal<ParamType::TGLclampx>(valueIn, valueOut);
2228 break;
2229 case ParamType::TGLdouble:
2230 SetParamVal<ParamType::TGLdouble>(valueIn, valueOut);
2231 break;
2232 case ParamType::TGLdoubleConstPointer:
2233 SetParamVal<ParamType::TGLdoubleConstPointer>(valueIn, valueOut);
2234 break;
2235 case ParamType::TGLdoublePointer:
2236 SetParamVal<ParamType::TGLdoublePointer>(valueIn, valueOut);
2237 break;
2238 case ParamType::TGLeglClientBufferEXT:
2239 SetParamVal<ParamType::TGLeglClientBufferEXT>(valueIn, valueOut);
2240 break;
2241 case ParamType::TGLeglImageOES:
2242 SetParamVal<ParamType::TGLeglImageOES>(valueIn, valueOut);
2243 break;
2244 case ParamType::TGLenum:
2245 SetParamVal<ParamType::TGLenum>(valueIn, valueOut);
2246 break;
2247 case ParamType::TGLenumConstPointer:
2248 SetParamVal<ParamType::TGLenumConstPointer>(valueIn, valueOut);
2249 break;
2250 case ParamType::TGLenumPointer:
2251 SetParamVal<ParamType::TGLenumPointer>(valueIn, valueOut);
2252 break;
2253 case ParamType::TGLfixed:
2254 SetParamVal<ParamType::TGLfixed>(valueIn, valueOut);
2255 break;
2256 case ParamType::TGLfixedConstPointer:
2257 SetParamVal<ParamType::TGLfixedConstPointer>(valueIn, valueOut);
2258 break;
2259 case ParamType::TGLfixedPointer:
2260 SetParamVal<ParamType::TGLfixedPointer>(valueIn, valueOut);
2261 break;
2262 case ParamType::TGLfloat:
2263 SetParamVal<ParamType::TGLfloat>(valueIn, valueOut);
2264 break;
2265 case ParamType::TGLfloatConstPointer:
2266 SetParamVal<ParamType::TGLfloatConstPointer>(valueIn, valueOut);
2267 break;
2268 case ParamType::TGLfloatPointer:
2269 SetParamVal<ParamType::TGLfloatPointer>(valueIn, valueOut);
2270 break;
2271 case ParamType::TGLint:
2272 SetParamVal<ParamType::TGLint>(valueIn, valueOut);
2273 break;
2274 case ParamType::TGLint64Pointer:
2275 SetParamVal<ParamType::TGLint64Pointer>(valueIn, valueOut);
2276 break;
2277 case ParamType::TGLintConstPointer:
2278 SetParamVal<ParamType::TGLintConstPointer>(valueIn, valueOut);
2279 break;
2280 case ParamType::TGLintPointer:
2281 SetParamVal<ParamType::TGLintPointer>(valueIn, valueOut);
2282 break;
2283 case ParamType::TGLintptr:
2284 SetParamVal<ParamType::TGLintptr>(valueIn, valueOut);
2285 break;
2286 case ParamType::TGLintptrConstPointer:
2287 SetParamVal<ParamType::TGLintptrConstPointer>(valueIn, valueOut);
2288 break;
2289 case ParamType::TGLshort:
2290 SetParamVal<ParamType::TGLshort>(valueIn, valueOut);
2291 break;
2292 case ParamType::TGLshortConstPointer:
2293 SetParamVal<ParamType::TGLshortConstPointer>(valueIn, valueOut);
2294 break;
2295 case ParamType::TGLsizei:
2296 SetParamVal<ParamType::TGLsizei>(valueIn, valueOut);
2297 break;
2298 case ParamType::TGLsizeiConstPointer:
2299 SetParamVal<ParamType::TGLsizeiConstPointer>(valueIn, valueOut);
2300 break;
2301 case ParamType::TGLsizeiPointer:
2302 SetParamVal<ParamType::TGLsizeiPointer>(valueIn, valueOut);
2303 break;
2304 case ParamType::TGLsizeiptr:
2305 SetParamVal<ParamType::TGLsizeiptr>(valueIn, valueOut);
2306 break;
2307 case ParamType::TGLsizeiptrConstPointer:
2308 SetParamVal<ParamType::TGLsizeiptrConstPointer>(valueIn, valueOut);
2309 break;
2310 case ParamType::TGLsync:
2311 SetParamVal<ParamType::TGLsync>(valueIn, valueOut);
2312 break;
2313 case ParamType::TGLubyte:
2314 SetParamVal<ParamType::TGLubyte>(valueIn, valueOut);
2315 break;
2316 case ParamType::TGLubyteConstPointer:
2317 SetParamVal<ParamType::TGLubyteConstPointer>(valueIn, valueOut);
2318 break;
2319 case ParamType::TGLubytePointer:
2320 SetParamVal<ParamType::TGLubytePointer>(valueIn, valueOut);
2321 break;
2322 case ParamType::TGLuint:
2323 SetParamVal<ParamType::TGLuint>(valueIn, valueOut);
2324 break;
2325 case ParamType::TGLuint64:
2326 SetParamVal<ParamType::TGLuint64>(valueIn, valueOut);
2327 break;
2328 case ParamType::TGLuint64ConstPointer:
2329 SetParamVal<ParamType::TGLuint64ConstPointer>(valueIn, valueOut);
2330 break;
2331 case ParamType::TGLuint64Pointer:
2332 SetParamVal<ParamType::TGLuint64Pointer>(valueIn, valueOut);
2333 break;
2334 case ParamType::TGLuintConstPointer:
2335 SetParamVal<ParamType::TGLuintConstPointer>(valueIn, valueOut);
2336 break;
2337 case ParamType::TGLuintPointer:
2338 SetParamVal<ParamType::TGLuintPointer>(valueIn, valueOut);
2339 break;
2340 case ParamType::TGLushort:
2341 SetParamVal<ParamType::TGLushort>(valueIn, valueOut);
2342 break;
2343 case ParamType::TGLushortConstPointer:
2344 SetParamVal<ParamType::TGLushortConstPointer>(valueIn, valueOut);
2345 break;
2346 case ParamType::TGLushortPointer:
2347 SetParamVal<ParamType::TGLushortPointer>(valueIn, valueOut);
2348 break;
2349 case ParamType::TGLvoidConstPointer:
2350 SetParamVal<ParamType::TGLvoidConstPointer>(valueIn, valueOut);
2351 break;
2352 case ParamType::TGLvoidConstPointerPointer:
2353 SetParamVal<ParamType::TGLvoidConstPointerPointer>(valueIn, valueOut);
2354 break;
2355 case ParamType::TGraphicsResetStatus:
2356 SetParamVal<ParamType::TGraphicsResetStatus>(valueIn, valueOut);
2357 break;
2358 case ParamType::THandleType:
2359 SetParamVal<ParamType::THandleType>(valueIn, valueOut);
2360 break;
2361 case ParamType::TLightParameter:
2362 SetParamVal<ParamType::TLightParameter>(valueIn, valueOut);
2363 break;
2364 case ParamType::TLogicalOperation:
2365 SetParamVal<ParamType::TLogicalOperation>(valueIn, valueOut);
2366 break;
2367 case ParamType::TMaterialParameter:
2368 SetParamVal<ParamType::TMaterialParameter>(valueIn, valueOut);
2369 break;
2370 case ParamType::TMatrixType:
2371 SetParamVal<ParamType::TMatrixType>(valueIn, valueOut);
2372 break;
2373 case ParamType::TMemoryObjectID:
2374 SetParamVal<ParamType::TMemoryObjectID>(valueIn, valueOut);
2375 break;
2376 case ParamType::TMemoryObjectIDConstPointer:
2377 SetParamVal<ParamType::TMemoryObjectIDConstPointer>(valueIn, valueOut);
2378 break;
2379 case ParamType::TMemoryObjectIDPointer:
2380 SetParamVal<ParamType::TMemoryObjectIDPointer>(valueIn, valueOut);
2381 break;
2382 case ParamType::TPointParameter:
2383 SetParamVal<ParamType::TPointParameter>(valueIn, valueOut);
2384 break;
2385 case ParamType::TPrimitiveMode:
2386 SetParamVal<ParamType::TPrimitiveMode>(valueIn, valueOut);
2387 break;
2388 case ParamType::TProgramPipelineID:
2389 SetParamVal<ParamType::TProgramPipelineID>(valueIn, valueOut);
2390 break;
2391 case ParamType::TProgramPipelineIDConstPointer:
2392 SetParamVal<ParamType::TProgramPipelineIDConstPointer>(valueIn, valueOut);
2393 break;
2394 case ParamType::TProgramPipelineIDPointer:
2395 SetParamVal<ParamType::TProgramPipelineIDPointer>(valueIn, valueOut);
2396 break;
2397 case ParamType::TProvokingVertexConvention:
2398 SetParamVal<ParamType::TProvokingVertexConvention>(valueIn, valueOut);
2399 break;
2400 case ParamType::TQueryID:
2401 SetParamVal<ParamType::TQueryID>(valueIn, valueOut);
2402 break;
2403 case ParamType::TQueryIDConstPointer:
2404 SetParamVal<ParamType::TQueryIDConstPointer>(valueIn, valueOut);
2405 break;
2406 case ParamType::TQueryIDPointer:
2407 SetParamVal<ParamType::TQueryIDPointer>(valueIn, valueOut);
2408 break;
2409 case ParamType::TQueryType:
2410 SetParamVal<ParamType::TQueryType>(valueIn, valueOut);
2411 break;
2412 case ParamType::TRenderbufferID:
2413 SetParamVal<ParamType::TRenderbufferID>(valueIn, valueOut);
2414 break;
2415 case ParamType::TRenderbufferIDConstPointer:
2416 SetParamVal<ParamType::TRenderbufferIDConstPointer>(valueIn, valueOut);
2417 break;
2418 case ParamType::TRenderbufferIDPointer:
2419 SetParamVal<ParamType::TRenderbufferIDPointer>(valueIn, valueOut);
2420 break;
2421 case ParamType::TSamplerID:
2422 SetParamVal<ParamType::TSamplerID>(valueIn, valueOut);
2423 break;
2424 case ParamType::TSamplerIDConstPointer:
2425 SetParamVal<ParamType::TSamplerIDConstPointer>(valueIn, valueOut);
2426 break;
2427 case ParamType::TSamplerIDPointer:
2428 SetParamVal<ParamType::TSamplerIDPointer>(valueIn, valueOut);
2429 break;
2430 case ParamType::TSemaphoreID:
2431 SetParamVal<ParamType::TSemaphoreID>(valueIn, valueOut);
2432 break;
2433 case ParamType::TSemaphoreIDConstPointer:
2434 SetParamVal<ParamType::TSemaphoreIDConstPointer>(valueIn, valueOut);
2435 break;
2436 case ParamType::TSemaphoreIDPointer:
2437 SetParamVal<ParamType::TSemaphoreIDPointer>(valueIn, valueOut);
2438 break;
2439 case ParamType::TShaderProgramID:
2440 SetParamVal<ParamType::TShaderProgramID>(valueIn, valueOut);
2441 break;
2442 case ParamType::TShaderProgramIDConstPointer:
2443 SetParamVal<ParamType::TShaderProgramIDConstPointer>(valueIn, valueOut);
2444 break;
2445 case ParamType::TShaderProgramIDPointer:
2446 SetParamVal<ParamType::TShaderProgramIDPointer>(valueIn, valueOut);
2447 break;
2448 case ParamType::TShaderType:
2449 SetParamVal<ParamType::TShaderType>(valueIn, valueOut);
2450 break;
2451 case ParamType::TShadingModel:
2452 SetParamVal<ParamType::TShadingModel>(valueIn, valueOut);
2453 break;
2454 case ParamType::TTextureEnvParameter:
2455 SetParamVal<ParamType::TTextureEnvParameter>(valueIn, valueOut);
2456 break;
2457 case ParamType::TTextureEnvTarget:
2458 SetParamVal<ParamType::TTextureEnvTarget>(valueIn, valueOut);
2459 break;
2460 case ParamType::TTextureID:
2461 SetParamVal<ParamType::TTextureID>(valueIn, valueOut);
2462 break;
2463 case ParamType::TTextureIDConstPointer:
2464 SetParamVal<ParamType::TTextureIDConstPointer>(valueIn, valueOut);
2465 break;
2466 case ParamType::TTextureIDPointer:
2467 SetParamVal<ParamType::TTextureIDPointer>(valueIn, valueOut);
2468 break;
2469 case ParamType::TTextureTarget:
2470 SetParamVal<ParamType::TTextureTarget>(valueIn, valueOut);
2471 break;
2472 case ParamType::TTextureType:
2473 SetParamVal<ParamType::TTextureType>(valueIn, valueOut);
2474 break;
2475 case ParamType::TTransformFeedbackID:
2476 SetParamVal<ParamType::TTransformFeedbackID>(valueIn, valueOut);
2477 break;
2478 case ParamType::TTransformFeedbackIDConstPointer:
2479 SetParamVal<ParamType::TTransformFeedbackIDConstPointer>(valueIn, valueOut);
2480 break;
2481 case ParamType::TTransformFeedbackIDPointer:
2482 SetParamVal<ParamType::TTransformFeedbackIDPointer>(valueIn, valueOut);
2483 break;
2484 case ParamType::TUniformBlockIndex:
2485 SetParamVal<ParamType::TUniformBlockIndex>(valueIn, valueOut);
2486 break;
2487 case ParamType::TUniformLocation:
2488 SetParamVal<ParamType::TUniformLocation>(valueIn, valueOut);
2489 break;
2490 case ParamType::TVertexArrayID:
2491 SetParamVal<ParamType::TVertexArrayID>(valueIn, valueOut);
2492 break;
2493 case ParamType::TVertexArrayIDConstPointer:
2494 SetParamVal<ParamType::TVertexArrayIDConstPointer>(valueIn, valueOut);
2495 break;
2496 case ParamType::TVertexArrayIDPointer:
2497 SetParamVal<ParamType::TVertexArrayIDPointer>(valueIn, valueOut);
2498 break;
2499 case ParamType::TVertexAttribType:
2500 SetParamVal<ParamType::TVertexAttribType>(valueIn, valueOut);
2501 break;
2502 case ParamType::TvoidConstPointer:
2503 SetParamVal<ParamType::TvoidConstPointer>(valueIn, valueOut);
2504 break;
2505 case ParamType::TvoidConstPointerPointer:
2506 SetParamVal<ParamType::TvoidConstPointerPointer>(valueIn, valueOut);
2507 break;
2508 case ParamType::TvoidPointer:
2509 SetParamVal<ParamType::TvoidPointer>(valueIn, valueOut);
2510 break;
2511 case ParamType::TvoidPointerPointer:
2512 SetParamVal<ParamType::TvoidPointerPointer>(valueIn, valueOut);
2513 break;
2514 }
2515 }
2516
2517 struct CallCapture;
2518 struct ParamCapture;
2519
2520 void WriteParamCaptureReplay(std::ostream &os, const CallCapture &call, const ParamCapture ¶m);
2521 const char *ParamTypeToString(ParamType paramType);
2522
2523 enum class ResourceIDType
2524 {
2525 Buffer,
2526 FenceNV,
2527 Framebuffer,
2528 MemoryObject,
2529 ProgramPipeline,
2530 Query,
2531 Renderbuffer,
2532 Sampler,
2533 Semaphore,
2534 ShaderProgram,
2535 Texture,
2536 TransformFeedback,
2537 VertexArray,
2538 EnumCount,
2539 InvalidEnum = EnumCount
2540 };
2541
2542 ResourceIDType GetResourceIDTypeFromParamType(ParamType paramType);
2543 const char *GetResourceIDTypeName(ResourceIDType resourceIDType);
2544 } // namespace angle
2545
2546 #endif // LIBANGLE_FRAME_CAPTURE_UTILS_AUTOGEN_H_
2547