summaryrefslogtreecommitdiffstats
path: root/gfx/angle/checkout/src/libANGLE/capture/frame_capture_utils_autogen.h
diff options
context:
space:
mode:
Diffstat (limited to 'gfx/angle/checkout/src/libANGLE/capture/frame_capture_utils_autogen.h')
-rw-r--r--gfx/angle/checkout/src/libANGLE/capture/frame_capture_utils_autogen.h3257
1 files changed, 3257 insertions, 0 deletions
diff --git a/gfx/angle/checkout/src/libANGLE/capture/frame_capture_utils_autogen.h b/gfx/angle/checkout/src/libANGLE/capture/frame_capture_utils_autogen.h
new file mode 100644
index 0000000000..9c76c2fc15
--- /dev/null
+++ b/gfx/angle/checkout/src/libANGLE/capture/frame_capture_utils_autogen.h
@@ -0,0 +1,3257 @@
+// GENERATED FILE - DO NOT EDIT.
+// Generated by generate_entry_points.py using data from gl.xml and gl_angle_ext.xml.
+//
+// Copyright 2020 The ANGLE Project Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+//
+// frame_capture_utils_autogen.h:
+// ANGLE Frame capture types and helper functions.
+
+#ifndef LIBANGLE_FRAME_CAPTURE_UTILS_AUTOGEN_H_
+#define LIBANGLE_FRAME_CAPTURE_UTILS_AUTOGEN_H_
+
+#include "common/PackedEnums.h"
+
+namespace angle
+{
+enum class ParamType
+{
+ TAHardwareBufferConstPointer,
+ TAlphaTestFunc,
+ TBufferBinding,
+ TBufferID,
+ TBufferIDConstPointer,
+ TBufferIDPointer,
+ TBufferUsage,
+ TClientVertexArrayType,
+ TCompositorTiming,
+ TCullFaceMode,
+ TDrawElementsType,
+ TEGLAttrib,
+ TEGLAttribKHR,
+ TEGLBoolean,
+ TEGLClientBuffer,
+ TEGLConfig,
+ TEGLContext,
+ TEGLDEBUGPROCKHR,
+ TEGLDeviceEXT,
+ TEGLDisplay,
+ TEGLFrameTokenANGLE,
+ TEGLGetBlobFuncANDROID,
+ TEGLImage,
+ TEGLLabelKHR,
+ TEGLNativeDisplayType,
+ TEGLNativePixmapType,
+ TEGLNativeWindowType,
+ TEGLObjectKHR,
+ TEGLSetBlobFuncANDROID,
+ TEGLStreamKHR,
+ TEGLSurface,
+ TEGLSync,
+ TEGLTime,
+ TEGLTimeKHR,
+ TEGLenum,
+ TEGLint,
+ TEGLnsecsANDROID,
+ TEGLuint64KHR,
+ TFenceNVID,
+ TFenceNVIDConstPointer,
+ TFenceNVIDPointer,
+ TFramebufferID,
+ TFramebufferIDConstPointer,
+ TFramebufferIDPointer,
+ TGLDEBUGPROC,
+ TGLDEBUGPROCKHR,
+ TGLbitfield,
+ TGLboolean,
+ TGLbooleanConstPointer,
+ TGLbooleanPointer,
+ TGLbyte,
+ TGLbyteConstPointer,
+ TGLcharConstPointer,
+ TGLcharConstPointerPointer,
+ TGLcharPointer,
+ TGLclampx,
+ TGLdouble,
+ TGLdoubleConstPointer,
+ TGLdoublePointer,
+ TGLeglClientBufferEXT,
+ TGLeglImageOES,
+ TGLenum,
+ TGLenumConstPointer,
+ TGLenumPointer,
+ TGLfixed,
+ TGLfixedConstPointer,
+ TGLfixedPointer,
+ TGLfloat,
+ TGLfloatConstPointer,
+ TGLfloatPointer,
+ TGLint,
+ TGLint64Pointer,
+ TGLintConstPointer,
+ TGLintPointer,
+ TGLintptr,
+ TGLintptrConstPointer,
+ TGLshort,
+ TGLshortConstPointer,
+ TGLsizei,
+ TGLsizeiConstPointer,
+ TGLsizeiPointer,
+ TGLsizeiptr,
+ TGLsizeiptrConstPointer,
+ TGLsync,
+ TGLubyte,
+ TGLubyteConstPointer,
+ TGLubytePointer,
+ TGLuint,
+ TGLuint64,
+ TGLuint64ConstPointer,
+ TGLuint64Pointer,
+ TGLuintConstPointer,
+ TGLuintPointer,
+ TGLushort,
+ TGLushortConstPointer,
+ TGLushortPointer,
+ TGLvoidConstPointer,
+ TGLvoidConstPointerPointer,
+ TGraphicsResetStatus,
+ THandleType,
+ TLightParameter,
+ TLogicalOperation,
+ TMaterialParameter,
+ TMatrixType,
+ TMemoryObjectID,
+ TMemoryObjectIDConstPointer,
+ TMemoryObjectIDPointer,
+ TObjectType,
+ TPointParameter,
+ TPrimitiveMode,
+ TProgramPipelineID,
+ TProgramPipelineIDConstPointer,
+ TProgramPipelineIDPointer,
+ TProvokingVertexConvention,
+ TQueryID,
+ TQueryIDConstPointer,
+ TQueryIDPointer,
+ TQueryType,
+ TRenderbufferID,
+ TRenderbufferIDConstPointer,
+ TRenderbufferIDPointer,
+ TSamplerID,
+ TSamplerIDConstPointer,
+ TSamplerIDPointer,
+ TSemaphoreID,
+ TSemaphoreIDConstPointer,
+ TSemaphoreIDPointer,
+ TShaderProgramID,
+ TShaderProgramIDConstPointer,
+ TShaderProgramIDPointer,
+ TShaderType,
+ TShadingModel,
+ TTextureEnvParameter,
+ TTextureEnvTarget,
+ TTextureID,
+ TTextureIDConstPointer,
+ TTextureIDPointer,
+ TTextureTarget,
+ TTextureType,
+ TTimestamp,
+ TTransformFeedbackID,
+ TTransformFeedbackIDConstPointer,
+ TTransformFeedbackIDPointer,
+ TUniformBlockIndex,
+ TUniformLocation,
+ TVertexArrayID,
+ TVertexArrayIDConstPointer,
+ TVertexArrayIDPointer,
+ TVertexAttribType,
+ TcharConstPointer,
+ TvoidConstPointer,
+ TvoidConstPointerPointer,
+ TvoidPointer,
+ TvoidPointerPointer,
+};
+
+constexpr uint32_t kParamTypeCount = 154;
+
+union ParamValue
+{
+ const AHardwareBuffer *AHardwareBufferConstPointerVal;
+ gl::AlphaTestFunc AlphaTestFuncVal;
+ gl::BufferBinding BufferBindingVal;
+ gl::BufferID BufferIDVal;
+ const gl::BufferID *BufferIDConstPointerVal;
+ gl::BufferID *BufferIDPointerVal;
+ gl::BufferUsage BufferUsageVal;
+ gl::ClientVertexArrayType ClientVertexArrayTypeVal;
+ egl::CompositorTiming CompositorTimingVal;
+ gl::CullFaceMode CullFaceModeVal;
+ gl::DrawElementsType DrawElementsTypeVal;
+ EGLAttrib EGLAttribVal;
+ EGLAttribKHR EGLAttribKHRVal;
+ EGLBoolean EGLBooleanVal;
+ EGLClientBuffer EGLClientBufferVal;
+ EGLConfig EGLConfigVal;
+ EGLContext EGLContextVal;
+ EGLDEBUGPROCKHR EGLDEBUGPROCKHRVal;
+ EGLDeviceEXT EGLDeviceEXTVal;
+ EGLDisplay EGLDisplayVal;
+ EGLFrameTokenANGLE EGLFrameTokenANGLEVal;
+ EGLGetBlobFuncANDROID EGLGetBlobFuncANDROIDVal;
+ EGLImage EGLImageVal;
+ EGLLabelKHR EGLLabelKHRVal;
+ EGLNativeDisplayType EGLNativeDisplayTypeVal;
+ EGLNativePixmapType EGLNativePixmapTypeVal;
+ EGLNativeWindowType EGLNativeWindowTypeVal;
+ EGLObjectKHR EGLObjectKHRVal;
+ EGLSetBlobFuncANDROID EGLSetBlobFuncANDROIDVal;
+ EGLStreamKHR EGLStreamKHRVal;
+ EGLSurface EGLSurfaceVal;
+ EGLSync EGLSyncVal;
+ EGLTime EGLTimeVal;
+ EGLTimeKHR EGLTimeKHRVal;
+ EGLenum EGLenumVal;
+ EGLint EGLintVal;
+ EGLnsecsANDROID EGLnsecsANDROIDVal;
+ EGLuint64KHR EGLuint64KHRVal;
+ gl::FenceNVID FenceNVIDVal;
+ const gl::FenceNVID *FenceNVIDConstPointerVal;
+ gl::FenceNVID *FenceNVIDPointerVal;
+ gl::FramebufferID FramebufferIDVal;
+ const gl::FramebufferID *FramebufferIDConstPointerVal;
+ gl::FramebufferID *FramebufferIDPointerVal;
+ GLDEBUGPROC GLDEBUGPROCVal;
+ GLDEBUGPROCKHR GLDEBUGPROCKHRVal;
+ GLbitfield GLbitfieldVal;
+ GLboolean GLbooleanVal;
+ const GLboolean *GLbooleanConstPointerVal;
+ GLboolean *GLbooleanPointerVal;
+ GLbyte GLbyteVal;
+ const GLbyte *GLbyteConstPointerVal;
+ const GLchar *GLcharConstPointerVal;
+ const GLchar *const *GLcharConstPointerPointerVal;
+ GLchar *GLcharPointerVal;
+ GLclampx GLclampxVal;
+ GLdouble GLdoubleVal;
+ const GLdouble *GLdoubleConstPointerVal;
+ GLdouble *GLdoublePointerVal;
+ GLeglClientBufferEXT GLeglClientBufferEXTVal;
+ GLeglImageOES GLeglImageOESVal;
+ GLenum GLenumVal;
+ const GLenum *GLenumConstPointerVal;
+ GLenum *GLenumPointerVal;
+ GLfixed GLfixedVal;
+ const GLfixed *GLfixedConstPointerVal;
+ GLfixed *GLfixedPointerVal;
+ GLfloat GLfloatVal;
+ const GLfloat *GLfloatConstPointerVal;
+ GLfloat *GLfloatPointerVal;
+ GLint GLintVal;
+ GLint64 *GLint64PointerVal;
+ const GLint *GLintConstPointerVal;
+ GLint *GLintPointerVal;
+ GLintptr GLintptrVal;
+ const GLintptr *GLintptrConstPointerVal;
+ GLshort GLshortVal;
+ const GLshort *GLshortConstPointerVal;
+ GLsizei GLsizeiVal;
+ const GLsizei *GLsizeiConstPointerVal;
+ GLsizei *GLsizeiPointerVal;
+ GLsizeiptr GLsizeiptrVal;
+ const GLsizeiptr *GLsizeiptrConstPointerVal;
+ GLsync GLsyncVal;
+ GLubyte GLubyteVal;
+ const GLubyte *GLubyteConstPointerVal;
+ GLubyte *GLubytePointerVal;
+ GLuint GLuintVal;
+ GLuint64 GLuint64Val;
+ const GLuint64 *GLuint64ConstPointerVal;
+ GLuint64 *GLuint64PointerVal;
+ const GLuint *GLuintConstPointerVal;
+ GLuint *GLuintPointerVal;
+ GLushort GLushortVal;
+ const GLushort *GLushortConstPointerVal;
+ GLushort *GLushortPointerVal;
+ const GLvoid *GLvoidConstPointerVal;
+ const GLvoid *const *GLvoidConstPointerPointerVal;
+ gl::GraphicsResetStatus GraphicsResetStatusVal;
+ gl::HandleType HandleTypeVal;
+ gl::LightParameter LightParameterVal;
+ gl::LogicalOperation LogicalOperationVal;
+ gl::MaterialParameter MaterialParameterVal;
+ gl::MatrixType MatrixTypeVal;
+ gl::MemoryObjectID MemoryObjectIDVal;
+ const gl::MemoryObjectID *MemoryObjectIDConstPointerVal;
+ gl::MemoryObjectID *MemoryObjectIDPointerVal;
+ egl::ObjectType ObjectTypeVal;
+ gl::PointParameter PointParameterVal;
+ gl::PrimitiveMode PrimitiveModeVal;
+ gl::ProgramPipelineID ProgramPipelineIDVal;
+ const gl::ProgramPipelineID *ProgramPipelineIDConstPointerVal;
+ gl::ProgramPipelineID *ProgramPipelineIDPointerVal;
+ gl::ProvokingVertexConvention ProvokingVertexConventionVal;
+ gl::QueryID QueryIDVal;
+ const gl::QueryID *QueryIDConstPointerVal;
+ gl::QueryID *QueryIDPointerVal;
+ gl::QueryType QueryTypeVal;
+ gl::RenderbufferID RenderbufferIDVal;
+ const gl::RenderbufferID *RenderbufferIDConstPointerVal;
+ gl::RenderbufferID *RenderbufferIDPointerVal;
+ gl::SamplerID SamplerIDVal;
+ const gl::SamplerID *SamplerIDConstPointerVal;
+ gl::SamplerID *SamplerIDPointerVal;
+ gl::SemaphoreID SemaphoreIDVal;
+ const gl::SemaphoreID *SemaphoreIDConstPointerVal;
+ gl::SemaphoreID *SemaphoreIDPointerVal;
+ gl::ShaderProgramID ShaderProgramIDVal;
+ const gl::ShaderProgramID *ShaderProgramIDConstPointerVal;
+ gl::ShaderProgramID *ShaderProgramIDPointerVal;
+ gl::ShaderType ShaderTypeVal;
+ gl::ShadingModel ShadingModelVal;
+ gl::TextureEnvParameter TextureEnvParameterVal;
+ gl::TextureEnvTarget TextureEnvTargetVal;
+ gl::TextureID TextureIDVal;
+ const gl::TextureID *TextureIDConstPointerVal;
+ gl::TextureID *TextureIDPointerVal;
+ gl::TextureTarget TextureTargetVal;
+ gl::TextureType TextureTypeVal;
+ egl::Timestamp TimestampVal;
+ gl::TransformFeedbackID TransformFeedbackIDVal;
+ const gl::TransformFeedbackID *TransformFeedbackIDConstPointerVal;
+ gl::TransformFeedbackID *TransformFeedbackIDPointerVal;
+ gl::UniformBlockIndex UniformBlockIndexVal;
+ gl::UniformLocation UniformLocationVal;
+ gl::VertexArrayID VertexArrayIDVal;
+ const gl::VertexArrayID *VertexArrayIDConstPointerVal;
+ gl::VertexArrayID *VertexArrayIDPointerVal;
+ gl::VertexAttribType VertexAttribTypeVal;
+ const char *charConstPointerVal;
+ const void *voidConstPointerVal;
+ const void *const *voidConstPointerPointerVal;
+ void *voidPointerVal;
+ void **voidPointerPointerVal;
+};
+
+template <ParamType PType, typename T>
+T GetParamVal(const ParamValue &value);
+
+template <>
+inline const AHardwareBuffer *GetParamVal<ParamType::TAHardwareBufferConstPointer,
+ const AHardwareBuffer *>(const ParamValue &value)
+{
+ return value.AHardwareBufferConstPointerVal;
+}
+
+template <>
+inline gl::AlphaTestFunc GetParamVal<ParamType::TAlphaTestFunc, gl::AlphaTestFunc>(
+ const ParamValue &value)
+{
+ return value.AlphaTestFuncVal;
+}
+
+template <>
+inline gl::BufferBinding GetParamVal<ParamType::TBufferBinding, gl::BufferBinding>(
+ const ParamValue &value)
+{
+ return value.BufferBindingVal;
+}
+
+template <>
+inline gl::BufferID GetParamVal<ParamType::TBufferID, gl::BufferID>(const ParamValue &value)
+{
+ return value.BufferIDVal;
+}
+
+template <>
+inline const gl::BufferID *GetParamVal<ParamType::TBufferIDConstPointer, const gl::BufferID *>(
+ const ParamValue &value)
+{
+ return value.BufferIDConstPointerVal;
+}
+
+template <>
+inline gl::BufferID *GetParamVal<ParamType::TBufferIDPointer, gl::BufferID *>(
+ const ParamValue &value)
+{
+ return value.BufferIDPointerVal;
+}
+
+template <>
+inline gl::BufferUsage GetParamVal<ParamType::TBufferUsage, gl::BufferUsage>(
+ const ParamValue &value)
+{
+ return value.BufferUsageVal;
+}
+
+template <>
+inline gl::ClientVertexArrayType
+GetParamVal<ParamType::TClientVertexArrayType, gl::ClientVertexArrayType>(const ParamValue &value)
+{
+ return value.ClientVertexArrayTypeVal;
+}
+
+template <>
+inline egl::CompositorTiming GetParamVal<ParamType::TCompositorTiming, egl::CompositorTiming>(
+ const ParamValue &value)
+{
+ return value.CompositorTimingVal;
+}
+
+template <>
+inline gl::CullFaceMode GetParamVal<ParamType::TCullFaceMode, gl::CullFaceMode>(
+ const ParamValue &value)
+{
+ return value.CullFaceModeVal;
+}
+
+template <>
+inline gl::DrawElementsType GetParamVal<ParamType::TDrawElementsType, gl::DrawElementsType>(
+ const ParamValue &value)
+{
+ return value.DrawElementsTypeVal;
+}
+
+template <>
+inline EGLAttrib GetParamVal<ParamType::TEGLAttrib, EGLAttrib>(const ParamValue &value)
+{
+ return value.EGLAttribVal;
+}
+
+template <>
+inline EGLAttribKHR GetParamVal<ParamType::TEGLAttribKHR, EGLAttribKHR>(const ParamValue &value)
+{
+ return value.EGLAttribKHRVal;
+}
+
+template <>
+inline EGLBoolean GetParamVal<ParamType::TEGLBoolean, EGLBoolean>(const ParamValue &value)
+{
+ return value.EGLBooleanVal;
+}
+
+template <>
+inline EGLClientBuffer GetParamVal<ParamType::TEGLClientBuffer, EGLClientBuffer>(
+ const ParamValue &value)
+{
+ return value.EGLClientBufferVal;
+}
+
+template <>
+inline EGLConfig GetParamVal<ParamType::TEGLConfig, EGLConfig>(const ParamValue &value)
+{
+ return value.EGLConfigVal;
+}
+
+template <>
+inline EGLContext GetParamVal<ParamType::TEGLContext, EGLContext>(const ParamValue &value)
+{
+ return value.EGLContextVal;
+}
+
+template <>
+inline EGLDEBUGPROCKHR GetParamVal<ParamType::TEGLDEBUGPROCKHR, EGLDEBUGPROCKHR>(
+ const ParamValue &value)
+{
+ return value.EGLDEBUGPROCKHRVal;
+}
+
+template <>
+inline EGLDeviceEXT GetParamVal<ParamType::TEGLDeviceEXT, EGLDeviceEXT>(const ParamValue &value)
+{
+ return value.EGLDeviceEXTVal;
+}
+
+template <>
+inline EGLDisplay GetParamVal<ParamType::TEGLDisplay, EGLDisplay>(const ParamValue &value)
+{
+ return value.EGLDisplayVal;
+}
+
+template <>
+inline EGLFrameTokenANGLE GetParamVal<ParamType::TEGLFrameTokenANGLE, EGLFrameTokenANGLE>(
+ const ParamValue &value)
+{
+ return value.EGLFrameTokenANGLEVal;
+}
+
+template <>
+inline EGLGetBlobFuncANDROID GetParamVal<ParamType::TEGLGetBlobFuncANDROID, EGLGetBlobFuncANDROID>(
+ const ParamValue &value)
+{
+ return value.EGLGetBlobFuncANDROIDVal;
+}
+
+template <>
+inline EGLImage GetParamVal<ParamType::TEGLImage, EGLImage>(const ParamValue &value)
+{
+ return value.EGLImageVal;
+}
+
+template <>
+inline EGLLabelKHR GetParamVal<ParamType::TEGLLabelKHR, EGLLabelKHR>(const ParamValue &value)
+{
+ return value.EGLLabelKHRVal;
+}
+
+template <>
+inline EGLNativeDisplayType GetParamVal<ParamType::TEGLNativeDisplayType, EGLNativeDisplayType>(
+ const ParamValue &value)
+{
+ return value.EGLNativeDisplayTypeVal;
+}
+
+template <>
+inline EGLNativePixmapType GetParamVal<ParamType::TEGLNativePixmapType, EGLNativePixmapType>(
+ const ParamValue &value)
+{
+ return value.EGLNativePixmapTypeVal;
+}
+
+template <>
+inline EGLNativeWindowType GetParamVal<ParamType::TEGLNativeWindowType, EGLNativeWindowType>(
+ const ParamValue &value)
+{
+ return value.EGLNativeWindowTypeVal;
+}
+
+template <>
+inline EGLObjectKHR GetParamVal<ParamType::TEGLObjectKHR, EGLObjectKHR>(const ParamValue &value)
+{
+ return value.EGLObjectKHRVal;
+}
+
+template <>
+inline EGLSetBlobFuncANDROID GetParamVal<ParamType::TEGLSetBlobFuncANDROID, EGLSetBlobFuncANDROID>(
+ const ParamValue &value)
+{
+ return value.EGLSetBlobFuncANDROIDVal;
+}
+
+template <>
+inline EGLStreamKHR GetParamVal<ParamType::TEGLStreamKHR, EGLStreamKHR>(const ParamValue &value)
+{
+ return value.EGLStreamKHRVal;
+}
+
+template <>
+inline EGLSurface GetParamVal<ParamType::TEGLSurface, EGLSurface>(const ParamValue &value)
+{
+ return value.EGLSurfaceVal;
+}
+
+template <>
+inline EGLSync GetParamVal<ParamType::TEGLSync, EGLSync>(const ParamValue &value)
+{
+ return value.EGLSyncVal;
+}
+
+template <>
+inline EGLTime GetParamVal<ParamType::TEGLTime, EGLTime>(const ParamValue &value)
+{
+ return value.EGLTimeVal;
+}
+
+template <>
+inline EGLTimeKHR GetParamVal<ParamType::TEGLTimeKHR, EGLTimeKHR>(const ParamValue &value)
+{
+ return value.EGLTimeKHRVal;
+}
+
+template <>
+inline EGLenum GetParamVal<ParamType::TEGLenum, EGLenum>(const ParamValue &value)
+{
+ return value.EGLenumVal;
+}
+
+template <>
+inline EGLint GetParamVal<ParamType::TEGLint, EGLint>(const ParamValue &value)
+{
+ return value.EGLintVal;
+}
+
+template <>
+inline EGLnsecsANDROID GetParamVal<ParamType::TEGLnsecsANDROID, EGLnsecsANDROID>(
+ const ParamValue &value)
+{
+ return value.EGLnsecsANDROIDVal;
+}
+
+template <>
+inline EGLuint64KHR GetParamVal<ParamType::TEGLuint64KHR, EGLuint64KHR>(const ParamValue &value)
+{
+ return value.EGLuint64KHRVal;
+}
+
+template <>
+inline gl::FenceNVID GetParamVal<ParamType::TFenceNVID, gl::FenceNVID>(const ParamValue &value)
+{
+ return value.FenceNVIDVal;
+}
+
+template <>
+inline const gl::FenceNVID *GetParamVal<ParamType::TFenceNVIDConstPointer, const gl::FenceNVID *>(
+ const ParamValue &value)
+{
+ return value.FenceNVIDConstPointerVal;
+}
+
+template <>
+inline gl::FenceNVID *GetParamVal<ParamType::TFenceNVIDPointer, gl::FenceNVID *>(
+ const ParamValue &value)
+{
+ return value.FenceNVIDPointerVal;
+}
+
+template <>
+inline gl::FramebufferID GetParamVal<ParamType::TFramebufferID, gl::FramebufferID>(
+ const ParamValue &value)
+{
+ return value.FramebufferIDVal;
+}
+
+template <>
+inline const gl::FramebufferID *GetParamVal<ParamType::TFramebufferIDConstPointer,
+ const gl::FramebufferID *>(const ParamValue &value)
+{
+ return value.FramebufferIDConstPointerVal;
+}
+
+template <>
+inline gl::FramebufferID *GetParamVal<ParamType::TFramebufferIDPointer, gl::FramebufferID *>(
+ const ParamValue &value)
+{
+ return value.FramebufferIDPointerVal;
+}
+
+template <>
+inline GLDEBUGPROC GetParamVal<ParamType::TGLDEBUGPROC, GLDEBUGPROC>(const ParamValue &value)
+{
+ return value.GLDEBUGPROCVal;
+}
+
+template <>
+inline GLDEBUGPROCKHR GetParamVal<ParamType::TGLDEBUGPROCKHR, GLDEBUGPROCKHR>(
+ const ParamValue &value)
+{
+ return value.GLDEBUGPROCKHRVal;
+}
+
+template <>
+inline GLbitfield GetParamVal<ParamType::TGLbitfield, GLbitfield>(const ParamValue &value)
+{
+ return value.GLbitfieldVal;
+}
+
+template <>
+inline GLboolean GetParamVal<ParamType::TGLboolean, GLboolean>(const ParamValue &value)
+{
+ return value.GLbooleanVal;
+}
+
+template <>
+inline const GLboolean *GetParamVal<ParamType::TGLbooleanConstPointer, const GLboolean *>(
+ const ParamValue &value)
+{
+ return value.GLbooleanConstPointerVal;
+}
+
+template <>
+inline GLboolean *GetParamVal<ParamType::TGLbooleanPointer, GLboolean *>(const ParamValue &value)
+{
+ return value.GLbooleanPointerVal;
+}
+
+template <>
+inline GLbyte GetParamVal<ParamType::TGLbyte, GLbyte>(const ParamValue &value)
+{
+ return value.GLbyteVal;
+}
+
+template <>
+inline const GLbyte *GetParamVal<ParamType::TGLbyteConstPointer, const GLbyte *>(
+ const ParamValue &value)
+{
+ return value.GLbyteConstPointerVal;
+}
+
+template <>
+inline const GLchar *GetParamVal<ParamType::TGLcharConstPointer, const GLchar *>(
+ const ParamValue &value)
+{
+ return value.GLcharConstPointerVal;
+}
+
+template <>
+inline const GLchar *const *
+GetParamVal<ParamType::TGLcharConstPointerPointer, const GLchar *const *>(const ParamValue &value)
+{
+ return value.GLcharConstPointerPointerVal;
+}
+
+template <>
+inline GLchar *GetParamVal<ParamType::TGLcharPointer, GLchar *>(const ParamValue &value)
+{
+ return value.GLcharPointerVal;
+}
+
+template <>
+inline GLclampx GetParamVal<ParamType::TGLclampx, GLclampx>(const ParamValue &value)
+{
+ return value.GLclampxVal;
+}
+
+template <>
+inline GLdouble GetParamVal<ParamType::TGLdouble, GLdouble>(const ParamValue &value)
+{
+ return value.GLdoubleVal;
+}
+
+template <>
+inline const GLdouble *GetParamVal<ParamType::TGLdoubleConstPointer, const GLdouble *>(
+ const ParamValue &value)
+{
+ return value.GLdoubleConstPointerVal;
+}
+
+template <>
+inline GLdouble *GetParamVal<ParamType::TGLdoublePointer, GLdouble *>(const ParamValue &value)
+{
+ return value.GLdoublePointerVal;
+}
+
+template <>
+inline GLeglClientBufferEXT GetParamVal<ParamType::TGLeglClientBufferEXT, GLeglClientBufferEXT>(
+ const ParamValue &value)
+{
+ return value.GLeglClientBufferEXTVal;
+}
+
+template <>
+inline GLeglImageOES GetParamVal<ParamType::TGLeglImageOES, GLeglImageOES>(const ParamValue &value)
+{
+ return value.GLeglImageOESVal;
+}
+
+template <>
+inline GLenum GetParamVal<ParamType::TGLenum, GLenum>(const ParamValue &value)
+{
+ return value.GLenumVal;
+}
+
+template <>
+inline const GLenum *GetParamVal<ParamType::TGLenumConstPointer, const GLenum *>(
+ const ParamValue &value)
+{
+ return value.GLenumConstPointerVal;
+}
+
+template <>
+inline GLenum *GetParamVal<ParamType::TGLenumPointer, GLenum *>(const ParamValue &value)
+{
+ return value.GLenumPointerVal;
+}
+
+template <>
+inline GLfixed GetParamVal<ParamType::TGLfixed, GLfixed>(const ParamValue &value)
+{
+ return value.GLfixedVal;
+}
+
+template <>
+inline const GLfixed *GetParamVal<ParamType::TGLfixedConstPointer, const GLfixed *>(
+ const ParamValue &value)
+{
+ return value.GLfixedConstPointerVal;
+}
+
+template <>
+inline GLfixed *GetParamVal<ParamType::TGLfixedPointer, GLfixed *>(const ParamValue &value)
+{
+ return value.GLfixedPointerVal;
+}
+
+template <>
+inline GLfloat GetParamVal<ParamType::TGLfloat, GLfloat>(const ParamValue &value)
+{
+ return value.GLfloatVal;
+}
+
+template <>
+inline const GLfloat *GetParamVal<ParamType::TGLfloatConstPointer, const GLfloat *>(
+ const ParamValue &value)
+{
+ return value.GLfloatConstPointerVal;
+}
+
+template <>
+inline GLfloat *GetParamVal<ParamType::TGLfloatPointer, GLfloat *>(const ParamValue &value)
+{
+ return value.GLfloatPointerVal;
+}
+
+template <>
+inline GLint GetParamVal<ParamType::TGLint, GLint>(const ParamValue &value)
+{
+ return value.GLintVal;
+}
+
+template <>
+inline GLint64 *GetParamVal<ParamType::TGLint64Pointer, GLint64 *>(const ParamValue &value)
+{
+ return value.GLint64PointerVal;
+}
+
+template <>
+inline const GLint *GetParamVal<ParamType::TGLintConstPointer, const GLint *>(
+ const ParamValue &value)
+{
+ return value.GLintConstPointerVal;
+}
+
+template <>
+inline GLint *GetParamVal<ParamType::TGLintPointer, GLint *>(const ParamValue &value)
+{
+ return value.GLintPointerVal;
+}
+
+template <>
+inline GLintptr GetParamVal<ParamType::TGLintptr, GLintptr>(const ParamValue &value)
+{
+ return value.GLintptrVal;
+}
+
+template <>
+inline const GLintptr *GetParamVal<ParamType::TGLintptrConstPointer, const GLintptr *>(
+ const ParamValue &value)
+{
+ return value.GLintptrConstPointerVal;
+}
+
+template <>
+inline GLshort GetParamVal<ParamType::TGLshort, GLshort>(const ParamValue &value)
+{
+ return value.GLshortVal;
+}
+
+template <>
+inline const GLshort *GetParamVal<ParamType::TGLshortConstPointer, const GLshort *>(
+ const ParamValue &value)
+{
+ return value.GLshortConstPointerVal;
+}
+
+template <>
+inline GLsizei GetParamVal<ParamType::TGLsizei, GLsizei>(const ParamValue &value)
+{
+ return value.GLsizeiVal;
+}
+
+template <>
+inline const GLsizei *GetParamVal<ParamType::TGLsizeiConstPointer, const GLsizei *>(
+ const ParamValue &value)
+{
+ return value.GLsizeiConstPointerVal;
+}
+
+template <>
+inline GLsizei *GetParamVal<ParamType::TGLsizeiPointer, GLsizei *>(const ParamValue &value)
+{
+ return value.GLsizeiPointerVal;
+}
+
+template <>
+inline GLsizeiptr GetParamVal<ParamType::TGLsizeiptr, GLsizeiptr>(const ParamValue &value)
+{
+ return value.GLsizeiptrVal;
+}
+
+template <>
+inline const GLsizeiptr *GetParamVal<ParamType::TGLsizeiptrConstPointer, const GLsizeiptr *>(
+ const ParamValue &value)
+{
+ return value.GLsizeiptrConstPointerVal;
+}
+
+template <>
+inline GLsync GetParamVal<ParamType::TGLsync, GLsync>(const ParamValue &value)
+{
+ return value.GLsyncVal;
+}
+
+template <>
+inline GLubyte GetParamVal<ParamType::TGLubyte, GLubyte>(const ParamValue &value)
+{
+ return value.GLubyteVal;
+}
+
+template <>
+inline const GLubyte *GetParamVal<ParamType::TGLubyteConstPointer, const GLubyte *>(
+ const ParamValue &value)
+{
+ return value.GLubyteConstPointerVal;
+}
+
+template <>
+inline GLubyte *GetParamVal<ParamType::TGLubytePointer, GLubyte *>(const ParamValue &value)
+{
+ return value.GLubytePointerVal;
+}
+
+template <>
+inline GLuint GetParamVal<ParamType::TGLuint, GLuint>(const ParamValue &value)
+{
+ return value.GLuintVal;
+}
+
+template <>
+inline GLuint64 GetParamVal<ParamType::TGLuint64, GLuint64>(const ParamValue &value)
+{
+ return value.GLuint64Val;
+}
+
+template <>
+inline const GLuint64 *GetParamVal<ParamType::TGLuint64ConstPointer, const GLuint64 *>(
+ const ParamValue &value)
+{
+ return value.GLuint64ConstPointerVal;
+}
+
+template <>
+inline GLuint64 *GetParamVal<ParamType::TGLuint64Pointer, GLuint64 *>(const ParamValue &value)
+{
+ return value.GLuint64PointerVal;
+}
+
+template <>
+inline const GLuint *GetParamVal<ParamType::TGLuintConstPointer, const GLuint *>(
+ const ParamValue &value)
+{
+ return value.GLuintConstPointerVal;
+}
+
+template <>
+inline GLuint *GetParamVal<ParamType::TGLuintPointer, GLuint *>(const ParamValue &value)
+{
+ return value.GLuintPointerVal;
+}
+
+template <>
+inline GLushort GetParamVal<ParamType::TGLushort, GLushort>(const ParamValue &value)
+{
+ return value.GLushortVal;
+}
+
+template <>
+inline const GLushort *GetParamVal<ParamType::TGLushortConstPointer, const GLushort *>(
+ const ParamValue &value)
+{
+ return value.GLushortConstPointerVal;
+}
+
+template <>
+inline GLushort *GetParamVal<ParamType::TGLushortPointer, GLushort *>(const ParamValue &value)
+{
+ return value.GLushortPointerVal;
+}
+
+template <>
+inline const GLvoid *GetParamVal<ParamType::TGLvoidConstPointer, const GLvoid *>(
+ const ParamValue &value)
+{
+ return value.GLvoidConstPointerVal;
+}
+
+template <>
+inline const GLvoid *const *
+GetParamVal<ParamType::TGLvoidConstPointerPointer, const GLvoid *const *>(const ParamValue &value)
+{
+ return value.GLvoidConstPointerPointerVal;
+}
+
+template <>
+inline gl::GraphicsResetStatus
+GetParamVal<ParamType::TGraphicsResetStatus, gl::GraphicsResetStatus>(const ParamValue &value)
+{
+ return value.GraphicsResetStatusVal;
+}
+
+template <>
+inline gl::HandleType GetParamVal<ParamType::THandleType, gl::HandleType>(const ParamValue &value)
+{
+ return value.HandleTypeVal;
+}
+
+template <>
+inline gl::LightParameter GetParamVal<ParamType::TLightParameter, gl::LightParameter>(
+ const ParamValue &value)
+{
+ return value.LightParameterVal;
+}
+
+template <>
+inline gl::LogicalOperation GetParamVal<ParamType::TLogicalOperation, gl::LogicalOperation>(
+ const ParamValue &value)
+{
+ return value.LogicalOperationVal;
+}
+
+template <>
+inline gl::MaterialParameter GetParamVal<ParamType::TMaterialParameter, gl::MaterialParameter>(
+ const ParamValue &value)
+{
+ return value.MaterialParameterVal;
+}
+
+template <>
+inline gl::MatrixType GetParamVal<ParamType::TMatrixType, gl::MatrixType>(const ParamValue &value)
+{
+ return value.MatrixTypeVal;
+}
+
+template <>
+inline gl::MemoryObjectID GetParamVal<ParamType::TMemoryObjectID, gl::MemoryObjectID>(
+ const ParamValue &value)
+{
+ return value.MemoryObjectIDVal;
+}
+
+template <>
+inline const gl::MemoryObjectID *GetParamVal<ParamType::TMemoryObjectIDConstPointer,
+ const gl::MemoryObjectID *>(const ParamValue &value)
+{
+ return value.MemoryObjectIDConstPointerVal;
+}
+
+template <>
+inline gl::MemoryObjectID *GetParamVal<ParamType::TMemoryObjectIDPointer, gl::MemoryObjectID *>(
+ const ParamValue &value)
+{
+ return value.MemoryObjectIDPointerVal;
+}
+
+template <>
+inline egl::ObjectType GetParamVal<ParamType::TObjectType, egl::ObjectType>(const ParamValue &value)
+{
+ return value.ObjectTypeVal;
+}
+
+template <>
+inline gl::PointParameter GetParamVal<ParamType::TPointParameter, gl::PointParameter>(
+ const ParamValue &value)
+{
+ return value.PointParameterVal;
+}
+
+template <>
+inline gl::PrimitiveMode GetParamVal<ParamType::TPrimitiveMode, gl::PrimitiveMode>(
+ const ParamValue &value)
+{
+ return value.PrimitiveModeVal;
+}
+
+template <>
+inline gl::ProgramPipelineID GetParamVal<ParamType::TProgramPipelineID, gl::ProgramPipelineID>(
+ const ParamValue &value)
+{
+ return value.ProgramPipelineIDVal;
+}
+
+template <>
+inline const gl::ProgramPipelineID *
+GetParamVal<ParamType::TProgramPipelineIDConstPointer, const gl::ProgramPipelineID *>(
+ const ParamValue &value)
+{
+ return value.ProgramPipelineIDConstPointerVal;
+}
+
+template <>
+inline gl::ProgramPipelineID *
+GetParamVal<ParamType::TProgramPipelineIDPointer, gl::ProgramPipelineID *>(const ParamValue &value)
+{
+ return value.ProgramPipelineIDPointerVal;
+}
+
+template <>
+inline gl::ProvokingVertexConvention
+GetParamVal<ParamType::TProvokingVertexConvention, gl::ProvokingVertexConvention>(
+ const ParamValue &value)
+{
+ return value.ProvokingVertexConventionVal;
+}
+
+template <>
+inline gl::QueryID GetParamVal<ParamType::TQueryID, gl::QueryID>(const ParamValue &value)
+{
+ return value.QueryIDVal;
+}
+
+template <>
+inline const gl::QueryID *GetParamVal<ParamType::TQueryIDConstPointer, const gl::QueryID *>(
+ const ParamValue &value)
+{
+ return value.QueryIDConstPointerVal;
+}
+
+template <>
+inline gl::QueryID *GetParamVal<ParamType::TQueryIDPointer, gl::QueryID *>(const ParamValue &value)
+{
+ return value.QueryIDPointerVal;
+}
+
+template <>
+inline gl::QueryType GetParamVal<ParamType::TQueryType, gl::QueryType>(const ParamValue &value)
+{
+ return value.QueryTypeVal;
+}
+
+template <>
+inline gl::RenderbufferID GetParamVal<ParamType::TRenderbufferID, gl::RenderbufferID>(
+ const ParamValue &value)
+{
+ return value.RenderbufferIDVal;
+}
+
+template <>
+inline const gl::RenderbufferID *GetParamVal<ParamType::TRenderbufferIDConstPointer,
+ const gl::RenderbufferID *>(const ParamValue &value)
+{
+ return value.RenderbufferIDConstPointerVal;
+}
+
+template <>
+inline gl::RenderbufferID *GetParamVal<ParamType::TRenderbufferIDPointer, gl::RenderbufferID *>(
+ const ParamValue &value)
+{
+ return value.RenderbufferIDPointerVal;
+}
+
+template <>
+inline gl::SamplerID GetParamVal<ParamType::TSamplerID, gl::SamplerID>(const ParamValue &value)
+{
+ return value.SamplerIDVal;
+}
+
+template <>
+inline const gl::SamplerID *GetParamVal<ParamType::TSamplerIDConstPointer, const gl::SamplerID *>(
+ const ParamValue &value)
+{
+ return value.SamplerIDConstPointerVal;
+}
+
+template <>
+inline gl::SamplerID *GetParamVal<ParamType::TSamplerIDPointer, gl::SamplerID *>(
+ const ParamValue &value)
+{
+ return value.SamplerIDPointerVal;
+}
+
+template <>
+inline gl::SemaphoreID GetParamVal<ParamType::TSemaphoreID, gl::SemaphoreID>(
+ const ParamValue &value)
+{
+ return value.SemaphoreIDVal;
+}
+
+template <>
+inline const gl::SemaphoreID *
+GetParamVal<ParamType::TSemaphoreIDConstPointer, const gl::SemaphoreID *>(const ParamValue &value)
+{
+ return value.SemaphoreIDConstPointerVal;
+}
+
+template <>
+inline gl::SemaphoreID *GetParamVal<ParamType::TSemaphoreIDPointer, gl::SemaphoreID *>(
+ const ParamValue &value)
+{
+ return value.SemaphoreIDPointerVal;
+}
+
+template <>
+inline gl::ShaderProgramID GetParamVal<ParamType::TShaderProgramID, gl::ShaderProgramID>(
+ const ParamValue &value)
+{
+ return value.ShaderProgramIDVal;
+}
+
+template <>
+inline const gl::ShaderProgramID *GetParamVal<ParamType::TShaderProgramIDConstPointer,
+ const gl::ShaderProgramID *>(const ParamValue &value)
+{
+ return value.ShaderProgramIDConstPointerVal;
+}
+
+template <>
+inline gl::ShaderProgramID *GetParamVal<ParamType::TShaderProgramIDPointer, gl::ShaderProgramID *>(
+ const ParamValue &value)
+{
+ return value.ShaderProgramIDPointerVal;
+}
+
+template <>
+inline gl::ShaderType GetParamVal<ParamType::TShaderType, gl::ShaderType>(const ParamValue &value)
+{
+ return value.ShaderTypeVal;
+}
+
+template <>
+inline gl::ShadingModel GetParamVal<ParamType::TShadingModel, gl::ShadingModel>(
+ const ParamValue &value)
+{
+ return value.ShadingModelVal;
+}
+
+template <>
+inline gl::TextureEnvParameter
+GetParamVal<ParamType::TTextureEnvParameter, gl::TextureEnvParameter>(const ParamValue &value)
+{
+ return value.TextureEnvParameterVal;
+}
+
+template <>
+inline gl::TextureEnvTarget GetParamVal<ParamType::TTextureEnvTarget, gl::TextureEnvTarget>(
+ const ParamValue &value)
+{
+ return value.TextureEnvTargetVal;
+}
+
+template <>
+inline gl::TextureID GetParamVal<ParamType::TTextureID, gl::TextureID>(const ParamValue &value)
+{
+ return value.TextureIDVal;
+}
+
+template <>
+inline const gl::TextureID *GetParamVal<ParamType::TTextureIDConstPointer, const gl::TextureID *>(
+ const ParamValue &value)
+{
+ return value.TextureIDConstPointerVal;
+}
+
+template <>
+inline gl::TextureID *GetParamVal<ParamType::TTextureIDPointer, gl::TextureID *>(
+ const ParamValue &value)
+{
+ return value.TextureIDPointerVal;
+}
+
+template <>
+inline gl::TextureTarget GetParamVal<ParamType::TTextureTarget, gl::TextureTarget>(
+ const ParamValue &value)
+{
+ return value.TextureTargetVal;
+}
+
+template <>
+inline gl::TextureType GetParamVal<ParamType::TTextureType, gl::TextureType>(
+ const ParamValue &value)
+{
+ return value.TextureTypeVal;
+}
+
+template <>
+inline egl::Timestamp GetParamVal<ParamType::TTimestamp, egl::Timestamp>(const ParamValue &value)
+{
+ return value.TimestampVal;
+}
+
+template <>
+inline gl::TransformFeedbackID
+GetParamVal<ParamType::TTransformFeedbackID, gl::TransformFeedbackID>(const ParamValue &value)
+{
+ return value.TransformFeedbackIDVal;
+}
+
+template <>
+inline const gl::TransformFeedbackID *
+GetParamVal<ParamType::TTransformFeedbackIDConstPointer, const gl::TransformFeedbackID *>(
+ const ParamValue &value)
+{
+ return value.TransformFeedbackIDConstPointerVal;
+}
+
+template <>
+inline gl::TransformFeedbackID *GetParamVal<ParamType::TTransformFeedbackIDPointer,
+ gl::TransformFeedbackID *>(const ParamValue &value)
+{
+ return value.TransformFeedbackIDPointerVal;
+}
+
+template <>
+inline gl::UniformBlockIndex GetParamVal<ParamType::TUniformBlockIndex, gl::UniformBlockIndex>(
+ const ParamValue &value)
+{
+ return value.UniformBlockIndexVal;
+}
+
+template <>
+inline gl::UniformLocation GetParamVal<ParamType::TUniformLocation, gl::UniformLocation>(
+ const ParamValue &value)
+{
+ return value.UniformLocationVal;
+}
+
+template <>
+inline gl::VertexArrayID GetParamVal<ParamType::TVertexArrayID, gl::VertexArrayID>(
+ const ParamValue &value)
+{
+ return value.VertexArrayIDVal;
+}
+
+template <>
+inline const gl::VertexArrayID *GetParamVal<ParamType::TVertexArrayIDConstPointer,
+ const gl::VertexArrayID *>(const ParamValue &value)
+{
+ return value.VertexArrayIDConstPointerVal;
+}
+
+template <>
+inline gl::VertexArrayID *GetParamVal<ParamType::TVertexArrayIDPointer, gl::VertexArrayID *>(
+ const ParamValue &value)
+{
+ return value.VertexArrayIDPointerVal;
+}
+
+template <>
+inline gl::VertexAttribType GetParamVal<ParamType::TVertexAttribType, gl::VertexAttribType>(
+ const ParamValue &value)
+{
+ return value.VertexAttribTypeVal;
+}
+
+template <>
+inline const char *GetParamVal<ParamType::TcharConstPointer, const char *>(const ParamValue &value)
+{
+ return value.charConstPointerVal;
+}
+
+template <>
+inline const void *GetParamVal<ParamType::TvoidConstPointer, const void *>(const ParamValue &value)
+{
+ return value.voidConstPointerVal;
+}
+
+template <>
+inline const void *const *GetParamVal<ParamType::TvoidConstPointerPointer, const void *const *>(
+ const ParamValue &value)
+{
+ return value.voidConstPointerPointerVal;
+}
+
+template <>
+inline void *GetParamVal<ParamType::TvoidPointer, void *>(const ParamValue &value)
+{
+ return value.voidPointerVal;
+}
+
+template <>
+inline void **GetParamVal<ParamType::TvoidPointerPointer, void **>(const ParamValue &value)
+{
+ return value.voidPointerPointerVal;
+}
+
+template <ParamType PType, typename T>
+T GetParamVal(const ParamValue &value)
+{
+ UNREACHABLE();
+ return T();
+}
+
+template <typename T>
+T AccessParamValue(ParamType paramType, const ParamValue &value)
+{
+ switch (paramType)
+ {
+ case ParamType::TAHardwareBufferConstPointer:
+ return GetParamVal<ParamType::TAHardwareBufferConstPointer, T>(value);
+ case ParamType::TAlphaTestFunc:
+ return GetParamVal<ParamType::TAlphaTestFunc, T>(value);
+ case ParamType::TBufferBinding:
+ return GetParamVal<ParamType::TBufferBinding, T>(value);
+ case ParamType::TBufferID:
+ return GetParamVal<ParamType::TBufferID, T>(value);
+ case ParamType::TBufferIDConstPointer:
+ return GetParamVal<ParamType::TBufferIDConstPointer, T>(value);
+ case ParamType::TBufferIDPointer:
+ return GetParamVal<ParamType::TBufferIDPointer, T>(value);
+ case ParamType::TBufferUsage:
+ return GetParamVal<ParamType::TBufferUsage, T>(value);
+ case ParamType::TClientVertexArrayType:
+ return GetParamVal<ParamType::TClientVertexArrayType, T>(value);
+ case ParamType::TCompositorTiming:
+ return GetParamVal<ParamType::TCompositorTiming, T>(value);
+ case ParamType::TCullFaceMode:
+ return GetParamVal<ParamType::TCullFaceMode, T>(value);
+ case ParamType::TDrawElementsType:
+ return GetParamVal<ParamType::TDrawElementsType, T>(value);
+ case ParamType::TEGLAttrib:
+ return GetParamVal<ParamType::TEGLAttrib, T>(value);
+ case ParamType::TEGLAttribKHR:
+ return GetParamVal<ParamType::TEGLAttribKHR, T>(value);
+ case ParamType::TEGLBoolean:
+ return GetParamVal<ParamType::TEGLBoolean, T>(value);
+ case ParamType::TEGLClientBuffer:
+ return GetParamVal<ParamType::TEGLClientBuffer, T>(value);
+ case ParamType::TEGLConfig:
+ return GetParamVal<ParamType::TEGLConfig, T>(value);
+ case ParamType::TEGLContext:
+ return GetParamVal<ParamType::TEGLContext, T>(value);
+ case ParamType::TEGLDEBUGPROCKHR:
+ return GetParamVal<ParamType::TEGLDEBUGPROCKHR, T>(value);
+ case ParamType::TEGLDeviceEXT:
+ return GetParamVal<ParamType::TEGLDeviceEXT, T>(value);
+ case ParamType::TEGLDisplay:
+ return GetParamVal<ParamType::TEGLDisplay, T>(value);
+ case ParamType::TEGLFrameTokenANGLE:
+ return GetParamVal<ParamType::TEGLFrameTokenANGLE, T>(value);
+ case ParamType::TEGLGetBlobFuncANDROID:
+ return GetParamVal<ParamType::TEGLGetBlobFuncANDROID, T>(value);
+ case ParamType::TEGLImage:
+ return GetParamVal<ParamType::TEGLImage, T>(value);
+ case ParamType::TEGLLabelKHR:
+ return GetParamVal<ParamType::TEGLLabelKHR, T>(value);
+ case ParamType::TEGLNativeDisplayType:
+ return GetParamVal<ParamType::TEGLNativeDisplayType, T>(value);
+ case ParamType::TEGLNativePixmapType:
+ return GetParamVal<ParamType::TEGLNativePixmapType, T>(value);
+ case ParamType::TEGLNativeWindowType:
+ return GetParamVal<ParamType::TEGLNativeWindowType, T>(value);
+ case ParamType::TEGLObjectKHR:
+ return GetParamVal<ParamType::TEGLObjectKHR, T>(value);
+ case ParamType::TEGLSetBlobFuncANDROID:
+ return GetParamVal<ParamType::TEGLSetBlobFuncANDROID, T>(value);
+ case ParamType::TEGLStreamKHR:
+ return GetParamVal<ParamType::TEGLStreamKHR, T>(value);
+ case ParamType::TEGLSurface:
+ return GetParamVal<ParamType::TEGLSurface, T>(value);
+ case ParamType::TEGLSync:
+ return GetParamVal<ParamType::TEGLSync, T>(value);
+ case ParamType::TEGLTime:
+ return GetParamVal<ParamType::TEGLTime, T>(value);
+ case ParamType::TEGLTimeKHR:
+ return GetParamVal<ParamType::TEGLTimeKHR, T>(value);
+ case ParamType::TEGLenum:
+ return GetParamVal<ParamType::TEGLenum, T>(value);
+ case ParamType::TEGLint:
+ return GetParamVal<ParamType::TEGLint, T>(value);
+ case ParamType::TEGLnsecsANDROID:
+ return GetParamVal<ParamType::TEGLnsecsANDROID, T>(value);
+ case ParamType::TEGLuint64KHR:
+ return GetParamVal<ParamType::TEGLuint64KHR, T>(value);
+ case ParamType::TFenceNVID:
+ return GetParamVal<ParamType::TFenceNVID, T>(value);
+ case ParamType::TFenceNVIDConstPointer:
+ return GetParamVal<ParamType::TFenceNVIDConstPointer, T>(value);
+ case ParamType::TFenceNVIDPointer:
+ return GetParamVal<ParamType::TFenceNVIDPointer, T>(value);
+ case ParamType::TFramebufferID:
+ return GetParamVal<ParamType::TFramebufferID, T>(value);
+ case ParamType::TFramebufferIDConstPointer:
+ return GetParamVal<ParamType::TFramebufferIDConstPointer, T>(value);
+ case ParamType::TFramebufferIDPointer:
+ return GetParamVal<ParamType::TFramebufferIDPointer, T>(value);
+ case ParamType::TGLDEBUGPROC:
+ return GetParamVal<ParamType::TGLDEBUGPROC, T>(value);
+ case ParamType::TGLDEBUGPROCKHR:
+ return GetParamVal<ParamType::TGLDEBUGPROCKHR, T>(value);
+ case ParamType::TGLbitfield:
+ return GetParamVal<ParamType::TGLbitfield, T>(value);
+ case ParamType::TGLboolean:
+ return GetParamVal<ParamType::TGLboolean, T>(value);
+ case ParamType::TGLbooleanConstPointer:
+ return GetParamVal<ParamType::TGLbooleanConstPointer, T>(value);
+ case ParamType::TGLbooleanPointer:
+ return GetParamVal<ParamType::TGLbooleanPointer, T>(value);
+ case ParamType::TGLbyte:
+ return GetParamVal<ParamType::TGLbyte, T>(value);
+ case ParamType::TGLbyteConstPointer:
+ return GetParamVal<ParamType::TGLbyteConstPointer, T>(value);
+ case ParamType::TGLcharConstPointer:
+ return GetParamVal<ParamType::TGLcharConstPointer, T>(value);
+ case ParamType::TGLcharConstPointerPointer:
+ return GetParamVal<ParamType::TGLcharConstPointerPointer, T>(value);
+ case ParamType::TGLcharPointer:
+ return GetParamVal<ParamType::TGLcharPointer, T>(value);
+ case ParamType::TGLclampx:
+ return GetParamVal<ParamType::TGLclampx, T>(value);
+ case ParamType::TGLdouble:
+ return GetParamVal<ParamType::TGLdouble, T>(value);
+ case ParamType::TGLdoubleConstPointer:
+ return GetParamVal<ParamType::TGLdoubleConstPointer, T>(value);
+ case ParamType::TGLdoublePointer:
+ return GetParamVal<ParamType::TGLdoublePointer, T>(value);
+ case ParamType::TGLeglClientBufferEXT:
+ return GetParamVal<ParamType::TGLeglClientBufferEXT, T>(value);
+ case ParamType::TGLeglImageOES:
+ return GetParamVal<ParamType::TGLeglImageOES, T>(value);
+ case ParamType::TGLenum:
+ return GetParamVal<ParamType::TGLenum, T>(value);
+ case ParamType::TGLenumConstPointer:
+ return GetParamVal<ParamType::TGLenumConstPointer, T>(value);
+ case ParamType::TGLenumPointer:
+ return GetParamVal<ParamType::TGLenumPointer, T>(value);
+ case ParamType::TGLfixed:
+ return GetParamVal<ParamType::TGLfixed, T>(value);
+ case ParamType::TGLfixedConstPointer:
+ return GetParamVal<ParamType::TGLfixedConstPointer, T>(value);
+ case ParamType::TGLfixedPointer:
+ return GetParamVal<ParamType::TGLfixedPointer, T>(value);
+ case ParamType::TGLfloat:
+ return GetParamVal<ParamType::TGLfloat, T>(value);
+ case ParamType::TGLfloatConstPointer:
+ return GetParamVal<ParamType::TGLfloatConstPointer, T>(value);
+ case ParamType::TGLfloatPointer:
+ return GetParamVal<ParamType::TGLfloatPointer, T>(value);
+ case ParamType::TGLint:
+ return GetParamVal<ParamType::TGLint, T>(value);
+ case ParamType::TGLint64Pointer:
+ return GetParamVal<ParamType::TGLint64Pointer, T>(value);
+ case ParamType::TGLintConstPointer:
+ return GetParamVal<ParamType::TGLintConstPointer, T>(value);
+ case ParamType::TGLintPointer:
+ return GetParamVal<ParamType::TGLintPointer, T>(value);
+ case ParamType::TGLintptr:
+ return GetParamVal<ParamType::TGLintptr, T>(value);
+ case ParamType::TGLintptrConstPointer:
+ return GetParamVal<ParamType::TGLintptrConstPointer, T>(value);
+ case ParamType::TGLshort:
+ return GetParamVal<ParamType::TGLshort, T>(value);
+ case ParamType::TGLshortConstPointer:
+ return GetParamVal<ParamType::TGLshortConstPointer, T>(value);
+ case ParamType::TGLsizei:
+ return GetParamVal<ParamType::TGLsizei, T>(value);
+ case ParamType::TGLsizeiConstPointer:
+ return GetParamVal<ParamType::TGLsizeiConstPointer, T>(value);
+ case ParamType::TGLsizeiPointer:
+ return GetParamVal<ParamType::TGLsizeiPointer, T>(value);
+ case ParamType::TGLsizeiptr:
+ return GetParamVal<ParamType::TGLsizeiptr, T>(value);
+ case ParamType::TGLsizeiptrConstPointer:
+ return GetParamVal<ParamType::TGLsizeiptrConstPointer, T>(value);
+ case ParamType::TGLsync:
+ return GetParamVal<ParamType::TGLsync, T>(value);
+ case ParamType::TGLubyte:
+ return GetParamVal<ParamType::TGLubyte, T>(value);
+ case ParamType::TGLubyteConstPointer:
+ return GetParamVal<ParamType::TGLubyteConstPointer, T>(value);
+ case ParamType::TGLubytePointer:
+ return GetParamVal<ParamType::TGLubytePointer, T>(value);
+ case ParamType::TGLuint:
+ return GetParamVal<ParamType::TGLuint, T>(value);
+ case ParamType::TGLuint64:
+ return GetParamVal<ParamType::TGLuint64, T>(value);
+ case ParamType::TGLuint64ConstPointer:
+ return GetParamVal<ParamType::TGLuint64ConstPointer, T>(value);
+ case ParamType::TGLuint64Pointer:
+ return GetParamVal<ParamType::TGLuint64Pointer, T>(value);
+ case ParamType::TGLuintConstPointer:
+ return GetParamVal<ParamType::TGLuintConstPointer, T>(value);
+ case ParamType::TGLuintPointer:
+ return GetParamVal<ParamType::TGLuintPointer, T>(value);
+ case ParamType::TGLushort:
+ return GetParamVal<ParamType::TGLushort, T>(value);
+ case ParamType::TGLushortConstPointer:
+ return GetParamVal<ParamType::TGLushortConstPointer, T>(value);
+ case ParamType::TGLushortPointer:
+ return GetParamVal<ParamType::TGLushortPointer, T>(value);
+ case ParamType::TGLvoidConstPointer:
+ return GetParamVal<ParamType::TGLvoidConstPointer, T>(value);
+ case ParamType::TGLvoidConstPointerPointer:
+ return GetParamVal<ParamType::TGLvoidConstPointerPointer, T>(value);
+ case ParamType::TGraphicsResetStatus:
+ return GetParamVal<ParamType::TGraphicsResetStatus, T>(value);
+ case ParamType::THandleType:
+ return GetParamVal<ParamType::THandleType, T>(value);
+ case ParamType::TLightParameter:
+ return GetParamVal<ParamType::TLightParameter, T>(value);
+ case ParamType::TLogicalOperation:
+ return GetParamVal<ParamType::TLogicalOperation, T>(value);
+ case ParamType::TMaterialParameter:
+ return GetParamVal<ParamType::TMaterialParameter, T>(value);
+ case ParamType::TMatrixType:
+ return GetParamVal<ParamType::TMatrixType, T>(value);
+ case ParamType::TMemoryObjectID:
+ return GetParamVal<ParamType::TMemoryObjectID, T>(value);
+ case ParamType::TMemoryObjectIDConstPointer:
+ return GetParamVal<ParamType::TMemoryObjectIDConstPointer, T>(value);
+ case ParamType::TMemoryObjectIDPointer:
+ return GetParamVal<ParamType::TMemoryObjectIDPointer, T>(value);
+ case ParamType::TObjectType:
+ return GetParamVal<ParamType::TObjectType, T>(value);
+ case ParamType::TPointParameter:
+ return GetParamVal<ParamType::TPointParameter, T>(value);
+ case ParamType::TPrimitiveMode:
+ return GetParamVal<ParamType::TPrimitiveMode, T>(value);
+ case ParamType::TProgramPipelineID:
+ return GetParamVal<ParamType::TProgramPipelineID, T>(value);
+ case ParamType::TProgramPipelineIDConstPointer:
+ return GetParamVal<ParamType::TProgramPipelineIDConstPointer, T>(value);
+ case ParamType::TProgramPipelineIDPointer:
+ return GetParamVal<ParamType::TProgramPipelineIDPointer, T>(value);
+ case ParamType::TProvokingVertexConvention:
+ return GetParamVal<ParamType::TProvokingVertexConvention, T>(value);
+ case ParamType::TQueryID:
+ return GetParamVal<ParamType::TQueryID, T>(value);
+ case ParamType::TQueryIDConstPointer:
+ return GetParamVal<ParamType::TQueryIDConstPointer, T>(value);
+ case ParamType::TQueryIDPointer:
+ return GetParamVal<ParamType::TQueryIDPointer, T>(value);
+ case ParamType::TQueryType:
+ return GetParamVal<ParamType::TQueryType, T>(value);
+ case ParamType::TRenderbufferID:
+ return GetParamVal<ParamType::TRenderbufferID, T>(value);
+ case ParamType::TRenderbufferIDConstPointer:
+ return GetParamVal<ParamType::TRenderbufferIDConstPointer, T>(value);
+ case ParamType::TRenderbufferIDPointer:
+ return GetParamVal<ParamType::TRenderbufferIDPointer, T>(value);
+ case ParamType::TSamplerID:
+ return GetParamVal<ParamType::TSamplerID, T>(value);
+ case ParamType::TSamplerIDConstPointer:
+ return GetParamVal<ParamType::TSamplerIDConstPointer, T>(value);
+ case ParamType::TSamplerIDPointer:
+ return GetParamVal<ParamType::TSamplerIDPointer, T>(value);
+ case ParamType::TSemaphoreID:
+ return GetParamVal<ParamType::TSemaphoreID, T>(value);
+ case ParamType::TSemaphoreIDConstPointer:
+ return GetParamVal<ParamType::TSemaphoreIDConstPointer, T>(value);
+ case ParamType::TSemaphoreIDPointer:
+ return GetParamVal<ParamType::TSemaphoreIDPointer, T>(value);
+ case ParamType::TShaderProgramID:
+ return GetParamVal<ParamType::TShaderProgramID, T>(value);
+ case ParamType::TShaderProgramIDConstPointer:
+ return GetParamVal<ParamType::TShaderProgramIDConstPointer, T>(value);
+ case ParamType::TShaderProgramIDPointer:
+ return GetParamVal<ParamType::TShaderProgramIDPointer, T>(value);
+ case ParamType::TShaderType:
+ return GetParamVal<ParamType::TShaderType, T>(value);
+ case ParamType::TShadingModel:
+ return GetParamVal<ParamType::TShadingModel, T>(value);
+ case ParamType::TTextureEnvParameter:
+ return GetParamVal<ParamType::TTextureEnvParameter, T>(value);
+ case ParamType::TTextureEnvTarget:
+ return GetParamVal<ParamType::TTextureEnvTarget, T>(value);
+ case ParamType::TTextureID:
+ return GetParamVal<ParamType::TTextureID, T>(value);
+ case ParamType::TTextureIDConstPointer:
+ return GetParamVal<ParamType::TTextureIDConstPointer, T>(value);
+ case ParamType::TTextureIDPointer:
+ return GetParamVal<ParamType::TTextureIDPointer, T>(value);
+ case ParamType::TTextureTarget:
+ return GetParamVal<ParamType::TTextureTarget, T>(value);
+ case ParamType::TTextureType:
+ return GetParamVal<ParamType::TTextureType, T>(value);
+ case ParamType::TTimestamp:
+ return GetParamVal<ParamType::TTimestamp, T>(value);
+ case ParamType::TTransformFeedbackID:
+ return GetParamVal<ParamType::TTransformFeedbackID, T>(value);
+ case ParamType::TTransformFeedbackIDConstPointer:
+ return GetParamVal<ParamType::TTransformFeedbackIDConstPointer, T>(value);
+ case ParamType::TTransformFeedbackIDPointer:
+ return GetParamVal<ParamType::TTransformFeedbackIDPointer, T>(value);
+ case ParamType::TUniformBlockIndex:
+ return GetParamVal<ParamType::TUniformBlockIndex, T>(value);
+ case ParamType::TUniformLocation:
+ return GetParamVal<ParamType::TUniformLocation, T>(value);
+ case ParamType::TVertexArrayID:
+ return GetParamVal<ParamType::TVertexArrayID, T>(value);
+ case ParamType::TVertexArrayIDConstPointer:
+ return GetParamVal<ParamType::TVertexArrayIDConstPointer, T>(value);
+ case ParamType::TVertexArrayIDPointer:
+ return GetParamVal<ParamType::TVertexArrayIDPointer, T>(value);
+ case ParamType::TVertexAttribType:
+ return GetParamVal<ParamType::TVertexAttribType, T>(value);
+ case ParamType::TcharConstPointer:
+ return GetParamVal<ParamType::TcharConstPointer, T>(value);
+ case ParamType::TvoidConstPointer:
+ return GetParamVal<ParamType::TvoidConstPointer, T>(value);
+ case ParamType::TvoidConstPointerPointer:
+ return GetParamVal<ParamType::TvoidConstPointerPointer, T>(value);
+ case ParamType::TvoidPointer:
+ return GetParamVal<ParamType::TvoidPointer, T>(value);
+ case ParamType::TvoidPointerPointer:
+ return GetParamVal<ParamType::TvoidPointerPointer, T>(value);
+ }
+ UNREACHABLE();
+ return T();
+}
+
+template <ParamType PType, typename T>
+void SetParamVal(T valueIn, ParamValue *valueOut);
+
+template <>
+inline void SetParamVal<ParamType::TAHardwareBufferConstPointer>(const AHardwareBuffer *valueIn,
+ ParamValue *valueOut)
+{
+ valueOut->AHardwareBufferConstPointerVal = valueIn;
+}
+
+template <>
+inline void SetParamVal<ParamType::TAlphaTestFunc>(gl::AlphaTestFunc valueIn, ParamValue *valueOut)
+{
+ valueOut->AlphaTestFuncVal = valueIn;
+}
+
+template <>
+inline void SetParamVal<ParamType::TBufferBinding>(gl::BufferBinding valueIn, ParamValue *valueOut)
+{
+ valueOut->BufferBindingVal = valueIn;
+}
+
+template <>
+inline void SetParamVal<ParamType::TBufferID>(gl::BufferID valueIn, ParamValue *valueOut)
+{
+ valueOut->BufferIDVal = valueIn;
+}
+
+template <>
+inline void SetParamVal<ParamType::TBufferIDConstPointer>(const gl::BufferID *valueIn,
+ ParamValue *valueOut)
+{
+ valueOut->BufferIDConstPointerVal = valueIn;
+}
+
+template <>
+inline void SetParamVal<ParamType::TBufferIDPointer>(gl::BufferID *valueIn, ParamValue *valueOut)
+{
+ valueOut->BufferIDPointerVal = valueIn;
+}
+
+template <>
+inline void SetParamVal<ParamType::TBufferUsage>(gl::BufferUsage valueIn, ParamValue *valueOut)
+{
+ valueOut->BufferUsageVal = valueIn;
+}
+
+template <>
+inline void SetParamVal<ParamType::TClientVertexArrayType>(gl::ClientVertexArrayType valueIn,
+ ParamValue *valueOut)
+{
+ valueOut->ClientVertexArrayTypeVal = valueIn;
+}
+
+template <>
+inline void SetParamVal<ParamType::TCompositorTiming>(egl::CompositorTiming valueIn,
+ ParamValue *valueOut)
+{
+ valueOut->CompositorTimingVal = valueIn;
+}
+
+template <>
+inline void SetParamVal<ParamType::TCullFaceMode>(gl::CullFaceMode valueIn, ParamValue *valueOut)
+{
+ valueOut->CullFaceModeVal = valueIn;
+}
+
+template <>
+inline void SetParamVal<ParamType::TDrawElementsType>(gl::DrawElementsType valueIn,
+ ParamValue *valueOut)
+{
+ valueOut->DrawElementsTypeVal = valueIn;
+}
+
+template <>
+inline void SetParamVal<ParamType::TEGLAttrib>(EGLAttrib valueIn, ParamValue *valueOut)
+{
+ valueOut->EGLAttribVal = valueIn;
+}
+
+template <>
+inline void SetParamVal<ParamType::TEGLAttribKHR>(EGLAttribKHR valueIn, ParamValue *valueOut)
+{
+ valueOut->EGLAttribKHRVal = valueIn;
+}
+
+template <>
+inline void SetParamVal<ParamType::TEGLBoolean>(EGLBoolean valueIn, ParamValue *valueOut)
+{
+ valueOut->EGLBooleanVal = valueIn;
+}
+
+template <>
+inline void SetParamVal<ParamType::TEGLClientBuffer>(EGLClientBuffer valueIn, ParamValue *valueOut)
+{
+ valueOut->EGLClientBufferVal = valueIn;
+}
+
+template <>
+inline void SetParamVal<ParamType::TEGLConfig>(EGLConfig valueIn, ParamValue *valueOut)
+{
+ valueOut->EGLConfigVal = valueIn;
+}
+
+template <>
+inline void SetParamVal<ParamType::TEGLContext>(EGLContext valueIn, ParamValue *valueOut)
+{
+ valueOut->EGLContextVal = valueIn;
+}
+
+template <>
+inline void SetParamVal<ParamType::TEGLDEBUGPROCKHR>(EGLDEBUGPROCKHR valueIn, ParamValue *valueOut)
+{
+ valueOut->EGLDEBUGPROCKHRVal = valueIn;
+}
+
+template <>
+inline void SetParamVal<ParamType::TEGLDeviceEXT>(EGLDeviceEXT valueIn, ParamValue *valueOut)
+{
+ valueOut->EGLDeviceEXTVal = valueIn;
+}
+
+template <>
+inline void SetParamVal<ParamType::TEGLDisplay>(EGLDisplay valueIn, ParamValue *valueOut)
+{
+ valueOut->EGLDisplayVal = valueIn;
+}
+
+template <>
+inline void SetParamVal<ParamType::TEGLFrameTokenANGLE>(EGLFrameTokenANGLE valueIn,
+ ParamValue *valueOut)
+{
+ valueOut->EGLFrameTokenANGLEVal = valueIn;
+}
+
+template <>
+inline void SetParamVal<ParamType::TEGLGetBlobFuncANDROID>(EGLGetBlobFuncANDROID valueIn,
+ ParamValue *valueOut)
+{
+ valueOut->EGLGetBlobFuncANDROIDVal = valueIn;
+}
+
+template <>
+inline void SetParamVal<ParamType::TEGLImage>(EGLImage valueIn, ParamValue *valueOut)
+{
+ valueOut->EGLImageVal = valueIn;
+}
+
+template <>
+inline void SetParamVal<ParamType::TEGLLabelKHR>(EGLLabelKHR valueIn, ParamValue *valueOut)
+{
+ valueOut->EGLLabelKHRVal = valueIn;
+}
+
+template <>
+inline void SetParamVal<ParamType::TEGLNativeDisplayType>(EGLNativeDisplayType valueIn,
+ ParamValue *valueOut)
+{
+ valueOut->EGLNativeDisplayTypeVal = valueIn;
+}
+
+template <>
+inline void SetParamVal<ParamType::TEGLNativePixmapType>(EGLNativePixmapType valueIn,
+ ParamValue *valueOut)
+{
+ valueOut->EGLNativePixmapTypeVal = valueIn;
+}
+
+template <>
+inline void SetParamVal<ParamType::TEGLNativeWindowType>(EGLNativeWindowType valueIn,
+ ParamValue *valueOut)
+{
+ valueOut->EGLNativeWindowTypeVal = valueIn;
+}
+
+template <>
+inline void SetParamVal<ParamType::TEGLObjectKHR>(EGLObjectKHR valueIn, ParamValue *valueOut)
+{
+ valueOut->EGLObjectKHRVal = valueIn;
+}
+
+template <>
+inline void SetParamVal<ParamType::TEGLSetBlobFuncANDROID>(EGLSetBlobFuncANDROID valueIn,
+ ParamValue *valueOut)
+{
+ valueOut->EGLSetBlobFuncANDROIDVal = valueIn;
+}
+
+template <>
+inline void SetParamVal<ParamType::TEGLStreamKHR>(EGLStreamKHR valueIn, ParamValue *valueOut)
+{
+ valueOut->EGLStreamKHRVal = valueIn;
+}
+
+template <>
+inline void SetParamVal<ParamType::TEGLSurface>(EGLSurface valueIn, ParamValue *valueOut)
+{
+ valueOut->EGLSurfaceVal = valueIn;
+}
+
+template <>
+inline void SetParamVal<ParamType::TEGLSync>(EGLSync valueIn, ParamValue *valueOut)
+{
+ valueOut->EGLSyncVal = valueIn;
+}
+
+template <>
+inline void SetParamVal<ParamType::TEGLTime>(EGLTime valueIn, ParamValue *valueOut)
+{
+ valueOut->EGLTimeVal = valueIn;
+}
+
+template <>
+inline void SetParamVal<ParamType::TEGLTimeKHR>(EGLTimeKHR valueIn, ParamValue *valueOut)
+{
+ valueOut->EGLTimeKHRVal = valueIn;
+}
+
+template <>
+inline void SetParamVal<ParamType::TEGLenum>(EGLenum valueIn, ParamValue *valueOut)
+{
+ valueOut->EGLenumVal = valueIn;
+}
+
+template <>
+inline void SetParamVal<ParamType::TEGLint>(EGLint valueIn, ParamValue *valueOut)
+{
+ valueOut->EGLintVal = valueIn;
+}
+
+template <>
+inline void SetParamVal<ParamType::TEGLnsecsANDROID>(EGLnsecsANDROID valueIn, ParamValue *valueOut)
+{
+ valueOut->EGLnsecsANDROIDVal = valueIn;
+}
+
+template <>
+inline void SetParamVal<ParamType::TEGLuint64KHR>(EGLuint64KHR valueIn, ParamValue *valueOut)
+{
+ valueOut->EGLuint64KHRVal = valueIn;
+}
+
+template <>
+inline void SetParamVal<ParamType::TFenceNVID>(gl::FenceNVID valueIn, ParamValue *valueOut)
+{
+ valueOut->FenceNVIDVal = valueIn;
+}
+
+template <>
+inline void SetParamVal<ParamType::TFenceNVIDConstPointer>(const gl::FenceNVID *valueIn,
+ ParamValue *valueOut)
+{
+ valueOut->FenceNVIDConstPointerVal = valueIn;
+}
+
+template <>
+inline void SetParamVal<ParamType::TFenceNVIDPointer>(gl::FenceNVID *valueIn, ParamValue *valueOut)
+{
+ valueOut->FenceNVIDPointerVal = valueIn;
+}
+
+template <>
+inline void SetParamVal<ParamType::TFramebufferID>(gl::FramebufferID valueIn, ParamValue *valueOut)
+{
+ valueOut->FramebufferIDVal = valueIn;
+}
+
+template <>
+inline void SetParamVal<ParamType::TFramebufferIDConstPointer>(const gl::FramebufferID *valueIn,
+ ParamValue *valueOut)
+{
+ valueOut->FramebufferIDConstPointerVal = valueIn;
+}
+
+template <>
+inline void SetParamVal<ParamType::TFramebufferIDPointer>(gl::FramebufferID *valueIn,
+ ParamValue *valueOut)
+{
+ valueOut->FramebufferIDPointerVal = valueIn;
+}
+
+template <>
+inline void SetParamVal<ParamType::TGLDEBUGPROC>(GLDEBUGPROC valueIn, ParamValue *valueOut)
+{
+ valueOut->GLDEBUGPROCVal = valueIn;
+}
+
+template <>
+inline void SetParamVal<ParamType::TGLDEBUGPROCKHR>(GLDEBUGPROCKHR valueIn, ParamValue *valueOut)
+{
+ valueOut->GLDEBUGPROCKHRVal = valueIn;
+}
+
+template <>
+inline void SetParamVal<ParamType::TGLbitfield>(GLbitfield valueIn, ParamValue *valueOut)
+{
+ valueOut->GLbitfieldVal = valueIn;
+}
+
+template <>
+inline void SetParamVal<ParamType::TGLboolean>(GLboolean valueIn, ParamValue *valueOut)
+{
+ valueOut->GLbooleanVal = valueIn;
+}
+
+template <>
+inline void SetParamVal<ParamType::TGLbooleanConstPointer>(const GLboolean *valueIn,
+ ParamValue *valueOut)
+{
+ valueOut->GLbooleanConstPointerVal = valueIn;
+}
+
+template <>
+inline void SetParamVal<ParamType::TGLbooleanPointer>(GLboolean *valueIn, ParamValue *valueOut)
+{
+ valueOut->GLbooleanPointerVal = valueIn;
+}
+
+template <>
+inline void SetParamVal<ParamType::TGLbyte>(GLbyte valueIn, ParamValue *valueOut)
+{
+ valueOut->GLbyteVal = valueIn;
+}
+
+template <>
+inline void SetParamVal<ParamType::TGLbyteConstPointer>(const GLbyte *valueIn, ParamValue *valueOut)
+{
+ valueOut->GLbyteConstPointerVal = valueIn;
+}
+
+template <>
+inline void SetParamVal<ParamType::TGLcharConstPointer>(const GLchar *valueIn, ParamValue *valueOut)
+{
+ valueOut->GLcharConstPointerVal = valueIn;
+}
+
+template <>
+inline void SetParamVal<ParamType::TGLcharConstPointerPointer>(const GLchar *const *valueIn,
+ ParamValue *valueOut)
+{
+ valueOut->GLcharConstPointerPointerVal = valueIn;
+}
+
+template <>
+inline void SetParamVal<ParamType::TGLcharPointer>(GLchar *valueIn, ParamValue *valueOut)
+{
+ valueOut->GLcharPointerVal = valueIn;
+}
+
+template <>
+inline void SetParamVal<ParamType::TGLclampx>(GLclampx valueIn, ParamValue *valueOut)
+{
+ valueOut->GLclampxVal = valueIn;
+}
+
+template <>
+inline void SetParamVal<ParamType::TGLdouble>(GLdouble valueIn, ParamValue *valueOut)
+{
+ valueOut->GLdoubleVal = valueIn;
+}
+
+template <>
+inline void SetParamVal<ParamType::TGLdoubleConstPointer>(const GLdouble *valueIn,
+ ParamValue *valueOut)
+{
+ valueOut->GLdoubleConstPointerVal = valueIn;
+}
+
+template <>
+inline void SetParamVal<ParamType::TGLdoublePointer>(GLdouble *valueIn, ParamValue *valueOut)
+{
+ valueOut->GLdoublePointerVal = valueIn;
+}
+
+template <>
+inline void SetParamVal<ParamType::TGLeglClientBufferEXT>(GLeglClientBufferEXT valueIn,
+ ParamValue *valueOut)
+{
+ valueOut->GLeglClientBufferEXTVal = valueIn;
+}
+
+template <>
+inline void SetParamVal<ParamType::TGLeglImageOES>(GLeglImageOES valueIn, ParamValue *valueOut)
+{
+ valueOut->GLeglImageOESVal = valueIn;
+}
+
+template <>
+inline void SetParamVal<ParamType::TGLenum>(GLenum valueIn, ParamValue *valueOut)
+{
+ valueOut->GLenumVal = valueIn;
+}
+
+template <>
+inline void SetParamVal<ParamType::TGLenumConstPointer>(const GLenum *valueIn, ParamValue *valueOut)
+{
+ valueOut->GLenumConstPointerVal = valueIn;
+}
+
+template <>
+inline void SetParamVal<ParamType::TGLenumPointer>(GLenum *valueIn, ParamValue *valueOut)
+{
+ valueOut->GLenumPointerVal = valueIn;
+}
+
+template <>
+inline void SetParamVal<ParamType::TGLfixed>(GLfixed valueIn, ParamValue *valueOut)
+{
+ valueOut->GLfixedVal = valueIn;
+}
+
+template <>
+inline void SetParamVal<ParamType::TGLfixedConstPointer>(const GLfixed *valueIn,
+ ParamValue *valueOut)
+{
+ valueOut->GLfixedConstPointerVal = valueIn;
+}
+
+template <>
+inline void SetParamVal<ParamType::TGLfixedPointer>(GLfixed *valueIn, ParamValue *valueOut)
+{
+ valueOut->GLfixedPointerVal = valueIn;
+}
+
+template <>
+inline void SetParamVal<ParamType::TGLfloat>(GLfloat valueIn, ParamValue *valueOut)
+{
+ valueOut->GLfloatVal = valueIn;
+}
+
+template <>
+inline void SetParamVal<ParamType::TGLfloatConstPointer>(const GLfloat *valueIn,
+ ParamValue *valueOut)
+{
+ valueOut->GLfloatConstPointerVal = valueIn;
+}
+
+template <>
+inline void SetParamVal<ParamType::TGLfloatPointer>(GLfloat *valueIn, ParamValue *valueOut)
+{
+ valueOut->GLfloatPointerVal = valueIn;
+}
+
+template <>
+inline void SetParamVal<ParamType::TGLint>(GLint valueIn, ParamValue *valueOut)
+{
+ valueOut->GLintVal = valueIn;
+}
+
+template <>
+inline void SetParamVal<ParamType::TGLint64Pointer>(GLint64 *valueIn, ParamValue *valueOut)
+{
+ valueOut->GLint64PointerVal = valueIn;
+}
+
+template <>
+inline void SetParamVal<ParamType::TGLintConstPointer>(const GLint *valueIn, ParamValue *valueOut)
+{
+ valueOut->GLintConstPointerVal = valueIn;
+}
+
+template <>
+inline void SetParamVal<ParamType::TGLintPointer>(GLint *valueIn, ParamValue *valueOut)
+{
+ valueOut->GLintPointerVal = valueIn;
+}
+
+template <>
+inline void SetParamVal<ParamType::TGLintptr>(GLintptr valueIn, ParamValue *valueOut)
+{
+ valueOut->GLintptrVal = valueIn;
+}
+
+template <>
+inline void SetParamVal<ParamType::TGLintptrConstPointer>(const GLintptr *valueIn,
+ ParamValue *valueOut)
+{
+ valueOut->GLintptrConstPointerVal = valueIn;
+}
+
+template <>
+inline void SetParamVal<ParamType::TGLshort>(GLshort valueIn, ParamValue *valueOut)
+{
+ valueOut->GLshortVal = valueIn;
+}
+
+template <>
+inline void SetParamVal<ParamType::TGLshortConstPointer>(const GLshort *valueIn,
+ ParamValue *valueOut)
+{
+ valueOut->GLshortConstPointerVal = valueIn;
+}
+
+template <>
+inline void SetParamVal<ParamType::TGLsizei>(GLsizei valueIn, ParamValue *valueOut)
+{
+ valueOut->GLsizeiVal = valueIn;
+}
+
+template <>
+inline void SetParamVal<ParamType::TGLsizeiConstPointer>(const GLsizei *valueIn,
+ ParamValue *valueOut)
+{
+ valueOut->GLsizeiConstPointerVal = valueIn;
+}
+
+template <>
+inline void SetParamVal<ParamType::TGLsizeiPointer>(GLsizei *valueIn, ParamValue *valueOut)
+{
+ valueOut->GLsizeiPointerVal = valueIn;
+}
+
+template <>
+inline void SetParamVal<ParamType::TGLsizeiptr>(GLsizeiptr valueIn, ParamValue *valueOut)
+{
+ valueOut->GLsizeiptrVal = valueIn;
+}
+
+template <>
+inline void SetParamVal<ParamType::TGLsizeiptrConstPointer>(const GLsizeiptr *valueIn,
+ ParamValue *valueOut)
+{
+ valueOut->GLsizeiptrConstPointerVal = valueIn;
+}
+
+template <>
+inline void SetParamVal<ParamType::TGLsync>(GLsync valueIn, ParamValue *valueOut)
+{
+ valueOut->GLsyncVal = valueIn;
+}
+
+template <>
+inline void SetParamVal<ParamType::TGLubyte>(GLubyte valueIn, ParamValue *valueOut)
+{
+ valueOut->GLubyteVal = valueIn;
+}
+
+template <>
+inline void SetParamVal<ParamType::TGLubyteConstPointer>(const GLubyte *valueIn,
+ ParamValue *valueOut)
+{
+ valueOut->GLubyteConstPointerVal = valueIn;
+}
+
+template <>
+inline void SetParamVal<ParamType::TGLubytePointer>(GLubyte *valueIn, ParamValue *valueOut)
+{
+ valueOut->GLubytePointerVal = valueIn;
+}
+
+template <>
+inline void SetParamVal<ParamType::TGLuint>(GLuint valueIn, ParamValue *valueOut)
+{
+ valueOut->GLuintVal = valueIn;
+}
+
+template <>
+inline void SetParamVal<ParamType::TGLuint64>(GLuint64 valueIn, ParamValue *valueOut)
+{
+ valueOut->GLuint64Val = valueIn;
+}
+
+template <>
+inline void SetParamVal<ParamType::TGLuint64ConstPointer>(const GLuint64 *valueIn,
+ ParamValue *valueOut)
+{
+ valueOut->GLuint64ConstPointerVal = valueIn;
+}
+
+template <>
+inline void SetParamVal<ParamType::TGLuint64Pointer>(GLuint64 *valueIn, ParamValue *valueOut)
+{
+ valueOut->GLuint64PointerVal = valueIn;
+}
+
+template <>
+inline void SetParamVal<ParamType::TGLuintConstPointer>(const GLuint *valueIn, ParamValue *valueOut)
+{
+ valueOut->GLuintConstPointerVal = valueIn;
+}
+
+template <>
+inline void SetParamVal<ParamType::TGLuintPointer>(GLuint *valueIn, ParamValue *valueOut)
+{
+ valueOut->GLuintPointerVal = valueIn;
+}
+
+template <>
+inline void SetParamVal<ParamType::TGLushort>(GLushort valueIn, ParamValue *valueOut)
+{
+ valueOut->GLushortVal = valueIn;
+}
+
+template <>
+inline void SetParamVal<ParamType::TGLushortConstPointer>(const GLushort *valueIn,
+ ParamValue *valueOut)
+{
+ valueOut->GLushortConstPointerVal = valueIn;
+}
+
+template <>
+inline void SetParamVal<ParamType::TGLushortPointer>(GLushort *valueIn, ParamValue *valueOut)
+{
+ valueOut->GLushortPointerVal = valueIn;
+}
+
+template <>
+inline void SetParamVal<ParamType::TGLvoidConstPointer>(const GLvoid *valueIn, ParamValue *valueOut)
+{
+ valueOut->GLvoidConstPointerVal = valueIn;
+}
+
+template <>
+inline void SetParamVal<ParamType::TGLvoidConstPointerPointer>(const GLvoid *const *valueIn,
+ ParamValue *valueOut)
+{
+ valueOut->GLvoidConstPointerPointerVal = valueIn;
+}
+
+template <>
+inline void SetParamVal<ParamType::TGraphicsResetStatus>(gl::GraphicsResetStatus valueIn,
+ ParamValue *valueOut)
+{
+ valueOut->GraphicsResetStatusVal = valueIn;
+}
+
+template <>
+inline void SetParamVal<ParamType::THandleType>(gl::HandleType valueIn, ParamValue *valueOut)
+{
+ valueOut->HandleTypeVal = valueIn;
+}
+
+template <>
+inline void SetParamVal<ParamType::TLightParameter>(gl::LightParameter valueIn,
+ ParamValue *valueOut)
+{
+ valueOut->LightParameterVal = valueIn;
+}
+
+template <>
+inline void SetParamVal<ParamType::TLogicalOperation>(gl::LogicalOperation valueIn,
+ ParamValue *valueOut)
+{
+ valueOut->LogicalOperationVal = valueIn;
+}
+
+template <>
+inline void SetParamVal<ParamType::TMaterialParameter>(gl::MaterialParameter valueIn,
+ ParamValue *valueOut)
+{
+ valueOut->MaterialParameterVal = valueIn;
+}
+
+template <>
+inline void SetParamVal<ParamType::TMatrixType>(gl::MatrixType valueIn, ParamValue *valueOut)
+{
+ valueOut->MatrixTypeVal = valueIn;
+}
+
+template <>
+inline void SetParamVal<ParamType::TMemoryObjectID>(gl::MemoryObjectID valueIn,
+ ParamValue *valueOut)
+{
+ valueOut->MemoryObjectIDVal = valueIn;
+}
+
+template <>
+inline void SetParamVal<ParamType::TMemoryObjectIDConstPointer>(const gl::MemoryObjectID *valueIn,
+ ParamValue *valueOut)
+{
+ valueOut->MemoryObjectIDConstPointerVal = valueIn;
+}
+
+template <>
+inline void SetParamVal<ParamType::TMemoryObjectIDPointer>(gl::MemoryObjectID *valueIn,
+ ParamValue *valueOut)
+{
+ valueOut->MemoryObjectIDPointerVal = valueIn;
+}
+
+template <>
+inline void SetParamVal<ParamType::TObjectType>(egl::ObjectType valueIn, ParamValue *valueOut)
+{
+ valueOut->ObjectTypeVal = valueIn;
+}
+
+template <>
+inline void SetParamVal<ParamType::TPointParameter>(gl::PointParameter valueIn,
+ ParamValue *valueOut)
+{
+ valueOut->PointParameterVal = valueIn;
+}
+
+template <>
+inline void SetParamVal<ParamType::TPrimitiveMode>(gl::PrimitiveMode valueIn, ParamValue *valueOut)
+{
+ valueOut->PrimitiveModeVal = valueIn;
+}
+
+template <>
+inline void SetParamVal<ParamType::TProgramPipelineID>(gl::ProgramPipelineID valueIn,
+ ParamValue *valueOut)
+{
+ valueOut->ProgramPipelineIDVal = valueIn;
+}
+
+template <>
+inline void SetParamVal<ParamType::TProgramPipelineIDConstPointer>(
+ const gl::ProgramPipelineID *valueIn,
+ ParamValue *valueOut)
+{
+ valueOut->ProgramPipelineIDConstPointerVal = valueIn;
+}
+
+template <>
+inline void SetParamVal<ParamType::TProgramPipelineIDPointer>(gl::ProgramPipelineID *valueIn,
+ ParamValue *valueOut)
+{
+ valueOut->ProgramPipelineIDPointerVal = valueIn;
+}
+
+template <>
+inline void SetParamVal<ParamType::TProvokingVertexConvention>(
+ gl::ProvokingVertexConvention valueIn,
+ ParamValue *valueOut)
+{
+ valueOut->ProvokingVertexConventionVal = valueIn;
+}
+
+template <>
+inline void SetParamVal<ParamType::TQueryID>(gl::QueryID valueIn, ParamValue *valueOut)
+{
+ valueOut->QueryIDVal = valueIn;
+}
+
+template <>
+inline void SetParamVal<ParamType::TQueryIDConstPointer>(const gl::QueryID *valueIn,
+ ParamValue *valueOut)
+{
+ valueOut->QueryIDConstPointerVal = valueIn;
+}
+
+template <>
+inline void SetParamVal<ParamType::TQueryIDPointer>(gl::QueryID *valueIn, ParamValue *valueOut)
+{
+ valueOut->QueryIDPointerVal = valueIn;
+}
+
+template <>
+inline void SetParamVal<ParamType::TQueryType>(gl::QueryType valueIn, ParamValue *valueOut)
+{
+ valueOut->QueryTypeVal = valueIn;
+}
+
+template <>
+inline void SetParamVal<ParamType::TRenderbufferID>(gl::RenderbufferID valueIn,
+ ParamValue *valueOut)
+{
+ valueOut->RenderbufferIDVal = valueIn;
+}
+
+template <>
+inline void SetParamVal<ParamType::TRenderbufferIDConstPointer>(const gl::RenderbufferID *valueIn,
+ ParamValue *valueOut)
+{
+ valueOut->RenderbufferIDConstPointerVal = valueIn;
+}
+
+template <>
+inline void SetParamVal<ParamType::TRenderbufferIDPointer>(gl::RenderbufferID *valueIn,
+ ParamValue *valueOut)
+{
+ valueOut->RenderbufferIDPointerVal = valueIn;
+}
+
+template <>
+inline void SetParamVal<ParamType::TSamplerID>(gl::SamplerID valueIn, ParamValue *valueOut)
+{
+ valueOut->SamplerIDVal = valueIn;
+}
+
+template <>
+inline void SetParamVal<ParamType::TSamplerIDConstPointer>(const gl::SamplerID *valueIn,
+ ParamValue *valueOut)
+{
+ valueOut->SamplerIDConstPointerVal = valueIn;
+}
+
+template <>
+inline void SetParamVal<ParamType::TSamplerIDPointer>(gl::SamplerID *valueIn, ParamValue *valueOut)
+{
+ valueOut->SamplerIDPointerVal = valueIn;
+}
+
+template <>
+inline void SetParamVal<ParamType::TSemaphoreID>(gl::SemaphoreID valueIn, ParamValue *valueOut)
+{
+ valueOut->SemaphoreIDVal = valueIn;
+}
+
+template <>
+inline void SetParamVal<ParamType::TSemaphoreIDConstPointer>(const gl::SemaphoreID *valueIn,
+ ParamValue *valueOut)
+{
+ valueOut->SemaphoreIDConstPointerVal = valueIn;
+}
+
+template <>
+inline void SetParamVal<ParamType::TSemaphoreIDPointer>(gl::SemaphoreID *valueIn,
+ ParamValue *valueOut)
+{
+ valueOut->SemaphoreIDPointerVal = valueIn;
+}
+
+template <>
+inline void SetParamVal<ParamType::TShaderProgramID>(gl::ShaderProgramID valueIn,
+ ParamValue *valueOut)
+{
+ valueOut->ShaderProgramIDVal = valueIn;
+}
+
+template <>
+inline void SetParamVal<ParamType::TShaderProgramIDConstPointer>(const gl::ShaderProgramID *valueIn,
+ ParamValue *valueOut)
+{
+ valueOut->ShaderProgramIDConstPointerVal = valueIn;
+}
+
+template <>
+inline void SetParamVal<ParamType::TShaderProgramIDPointer>(gl::ShaderProgramID *valueIn,
+ ParamValue *valueOut)
+{
+ valueOut->ShaderProgramIDPointerVal = valueIn;
+}
+
+template <>
+inline void SetParamVal<ParamType::TShaderType>(gl::ShaderType valueIn, ParamValue *valueOut)
+{
+ valueOut->ShaderTypeVal = valueIn;
+}
+
+template <>
+inline void SetParamVal<ParamType::TShadingModel>(gl::ShadingModel valueIn, ParamValue *valueOut)
+{
+ valueOut->ShadingModelVal = valueIn;
+}
+
+template <>
+inline void SetParamVal<ParamType::TTextureEnvParameter>(gl::TextureEnvParameter valueIn,
+ ParamValue *valueOut)
+{
+ valueOut->TextureEnvParameterVal = valueIn;
+}
+
+template <>
+inline void SetParamVal<ParamType::TTextureEnvTarget>(gl::TextureEnvTarget valueIn,
+ ParamValue *valueOut)
+{
+ valueOut->TextureEnvTargetVal = valueIn;
+}
+
+template <>
+inline void SetParamVal<ParamType::TTextureID>(gl::TextureID valueIn, ParamValue *valueOut)
+{
+ valueOut->TextureIDVal = valueIn;
+}
+
+template <>
+inline void SetParamVal<ParamType::TTextureIDConstPointer>(const gl::TextureID *valueIn,
+ ParamValue *valueOut)
+{
+ valueOut->TextureIDConstPointerVal = valueIn;
+}
+
+template <>
+inline void SetParamVal<ParamType::TTextureIDPointer>(gl::TextureID *valueIn, ParamValue *valueOut)
+{
+ valueOut->TextureIDPointerVal = valueIn;
+}
+
+template <>
+inline void SetParamVal<ParamType::TTextureTarget>(gl::TextureTarget valueIn, ParamValue *valueOut)
+{
+ valueOut->TextureTargetVal = valueIn;
+}
+
+template <>
+inline void SetParamVal<ParamType::TTextureType>(gl::TextureType valueIn, ParamValue *valueOut)
+{
+ valueOut->TextureTypeVal = valueIn;
+}
+
+template <>
+inline void SetParamVal<ParamType::TTimestamp>(egl::Timestamp valueIn, ParamValue *valueOut)
+{
+ valueOut->TimestampVal = valueIn;
+}
+
+template <>
+inline void SetParamVal<ParamType::TTransformFeedbackID>(gl::TransformFeedbackID valueIn,
+ ParamValue *valueOut)
+{
+ valueOut->TransformFeedbackIDVal = valueIn;
+}
+
+template <>
+inline void SetParamVal<ParamType::TTransformFeedbackIDConstPointer>(
+ const gl::TransformFeedbackID *valueIn,
+ ParamValue *valueOut)
+{
+ valueOut->TransformFeedbackIDConstPointerVal = valueIn;
+}
+
+template <>
+inline void SetParamVal<ParamType::TTransformFeedbackIDPointer>(gl::TransformFeedbackID *valueIn,
+ ParamValue *valueOut)
+{
+ valueOut->TransformFeedbackIDPointerVal = valueIn;
+}
+
+template <>
+inline void SetParamVal<ParamType::TUniformBlockIndex>(gl::UniformBlockIndex valueIn,
+ ParamValue *valueOut)
+{
+ valueOut->UniformBlockIndexVal = valueIn;
+}
+
+template <>
+inline void SetParamVal<ParamType::TUniformLocation>(gl::UniformLocation valueIn,
+ ParamValue *valueOut)
+{
+ valueOut->UniformLocationVal = valueIn;
+}
+
+template <>
+inline void SetParamVal<ParamType::TVertexArrayID>(gl::VertexArrayID valueIn, ParamValue *valueOut)
+{
+ valueOut->VertexArrayIDVal = valueIn;
+}
+
+template <>
+inline void SetParamVal<ParamType::TVertexArrayIDConstPointer>(const gl::VertexArrayID *valueIn,
+ ParamValue *valueOut)
+{
+ valueOut->VertexArrayIDConstPointerVal = valueIn;
+}
+
+template <>
+inline void SetParamVal<ParamType::TVertexArrayIDPointer>(gl::VertexArrayID *valueIn,
+ ParamValue *valueOut)
+{
+ valueOut->VertexArrayIDPointerVal = valueIn;
+}
+
+template <>
+inline void SetParamVal<ParamType::TVertexAttribType>(gl::VertexAttribType valueIn,
+ ParamValue *valueOut)
+{
+ valueOut->VertexAttribTypeVal = valueIn;
+}
+
+template <>
+inline void SetParamVal<ParamType::TcharConstPointer>(const char *valueIn, ParamValue *valueOut)
+{
+ valueOut->charConstPointerVal = valueIn;
+}
+
+template <>
+inline void SetParamVal<ParamType::TvoidConstPointer>(const void *valueIn, ParamValue *valueOut)
+{
+ valueOut->voidConstPointerVal = valueIn;
+}
+
+template <>
+inline void SetParamVal<ParamType::TvoidConstPointerPointer>(const void *const *valueIn,
+ ParamValue *valueOut)
+{
+ valueOut->voidConstPointerPointerVal = valueIn;
+}
+
+template <>
+inline void SetParamVal<ParamType::TvoidPointer>(void *valueIn, ParamValue *valueOut)
+{
+ valueOut->voidPointerVal = valueIn;
+}
+
+template <>
+inline void SetParamVal<ParamType::TvoidPointerPointer>(void **valueIn, ParamValue *valueOut)
+{
+ valueOut->voidPointerPointerVal = valueIn;
+}
+
+template <ParamType PType, typename T>
+void SetParamVal(T valueIn, ParamValue *valueOut)
+{
+ UNREACHABLE();
+}
+
+template <typename T>
+void InitParamValue(ParamType paramType, T valueIn, ParamValue *valueOut)
+{
+ switch (paramType)
+ {
+ case ParamType::TAHardwareBufferConstPointer:
+ SetParamVal<ParamType::TAHardwareBufferConstPointer>(valueIn, valueOut);
+ break;
+ case ParamType::TAlphaTestFunc:
+ SetParamVal<ParamType::TAlphaTestFunc>(valueIn, valueOut);
+ break;
+ case ParamType::TBufferBinding:
+ SetParamVal<ParamType::TBufferBinding>(valueIn, valueOut);
+ break;
+ case ParamType::TBufferID:
+ SetParamVal<ParamType::TBufferID>(valueIn, valueOut);
+ break;
+ case ParamType::TBufferIDConstPointer:
+ SetParamVal<ParamType::TBufferIDConstPointer>(valueIn, valueOut);
+ break;
+ case ParamType::TBufferIDPointer:
+ SetParamVal<ParamType::TBufferIDPointer>(valueIn, valueOut);
+ break;
+ case ParamType::TBufferUsage:
+ SetParamVal<ParamType::TBufferUsage>(valueIn, valueOut);
+ break;
+ case ParamType::TClientVertexArrayType:
+ SetParamVal<ParamType::TClientVertexArrayType>(valueIn, valueOut);
+ break;
+ case ParamType::TCompositorTiming:
+ SetParamVal<ParamType::TCompositorTiming>(valueIn, valueOut);
+ break;
+ case ParamType::TCullFaceMode:
+ SetParamVal<ParamType::TCullFaceMode>(valueIn, valueOut);
+ break;
+ case ParamType::TDrawElementsType:
+ SetParamVal<ParamType::TDrawElementsType>(valueIn, valueOut);
+ break;
+ case ParamType::TEGLAttrib:
+ SetParamVal<ParamType::TEGLAttrib>(valueIn, valueOut);
+ break;
+ case ParamType::TEGLAttribKHR:
+ SetParamVal<ParamType::TEGLAttribKHR>(valueIn, valueOut);
+ break;
+ case ParamType::TEGLBoolean:
+ SetParamVal<ParamType::TEGLBoolean>(valueIn, valueOut);
+ break;
+ case ParamType::TEGLClientBuffer:
+ SetParamVal<ParamType::TEGLClientBuffer>(valueIn, valueOut);
+ break;
+ case ParamType::TEGLConfig:
+ SetParamVal<ParamType::TEGLConfig>(valueIn, valueOut);
+ break;
+ case ParamType::TEGLContext:
+ SetParamVal<ParamType::TEGLContext>(valueIn, valueOut);
+ break;
+ case ParamType::TEGLDEBUGPROCKHR:
+ SetParamVal<ParamType::TEGLDEBUGPROCKHR>(valueIn, valueOut);
+ break;
+ case ParamType::TEGLDeviceEXT:
+ SetParamVal<ParamType::TEGLDeviceEXT>(valueIn, valueOut);
+ break;
+ case ParamType::TEGLDisplay:
+ SetParamVal<ParamType::TEGLDisplay>(valueIn, valueOut);
+ break;
+ case ParamType::TEGLFrameTokenANGLE:
+ SetParamVal<ParamType::TEGLFrameTokenANGLE>(valueIn, valueOut);
+ break;
+ case ParamType::TEGLGetBlobFuncANDROID:
+ SetParamVal<ParamType::TEGLGetBlobFuncANDROID>(valueIn, valueOut);
+ break;
+ case ParamType::TEGLImage:
+ SetParamVal<ParamType::TEGLImage>(valueIn, valueOut);
+ break;
+ case ParamType::TEGLLabelKHR:
+ SetParamVal<ParamType::TEGLLabelKHR>(valueIn, valueOut);
+ break;
+ case ParamType::TEGLNativeDisplayType:
+ SetParamVal<ParamType::TEGLNativeDisplayType>(valueIn, valueOut);
+ break;
+ case ParamType::TEGLNativePixmapType:
+ SetParamVal<ParamType::TEGLNativePixmapType>(valueIn, valueOut);
+ break;
+ case ParamType::TEGLNativeWindowType:
+ SetParamVal<ParamType::TEGLNativeWindowType>(valueIn, valueOut);
+ break;
+ case ParamType::TEGLObjectKHR:
+ SetParamVal<ParamType::TEGLObjectKHR>(valueIn, valueOut);
+ break;
+ case ParamType::TEGLSetBlobFuncANDROID:
+ SetParamVal<ParamType::TEGLSetBlobFuncANDROID>(valueIn, valueOut);
+ break;
+ case ParamType::TEGLStreamKHR:
+ SetParamVal<ParamType::TEGLStreamKHR>(valueIn, valueOut);
+ break;
+ case ParamType::TEGLSurface:
+ SetParamVal<ParamType::TEGLSurface>(valueIn, valueOut);
+ break;
+ case ParamType::TEGLSync:
+ SetParamVal<ParamType::TEGLSync>(valueIn, valueOut);
+ break;
+ case ParamType::TEGLTime:
+ SetParamVal<ParamType::TEGLTime>(valueIn, valueOut);
+ break;
+ case ParamType::TEGLTimeKHR:
+ SetParamVal<ParamType::TEGLTimeKHR>(valueIn, valueOut);
+ break;
+ case ParamType::TEGLenum:
+ SetParamVal<ParamType::TEGLenum>(valueIn, valueOut);
+ break;
+ case ParamType::TEGLint:
+ SetParamVal<ParamType::TEGLint>(valueIn, valueOut);
+ break;
+ case ParamType::TEGLnsecsANDROID:
+ SetParamVal<ParamType::TEGLnsecsANDROID>(valueIn, valueOut);
+ break;
+ case ParamType::TEGLuint64KHR:
+ SetParamVal<ParamType::TEGLuint64KHR>(valueIn, valueOut);
+ break;
+ case ParamType::TFenceNVID:
+ SetParamVal<ParamType::TFenceNVID>(valueIn, valueOut);
+ break;
+ case ParamType::TFenceNVIDConstPointer:
+ SetParamVal<ParamType::TFenceNVIDConstPointer>(valueIn, valueOut);
+ break;
+ case ParamType::TFenceNVIDPointer:
+ SetParamVal<ParamType::TFenceNVIDPointer>(valueIn, valueOut);
+ break;
+ case ParamType::TFramebufferID:
+ SetParamVal<ParamType::TFramebufferID>(valueIn, valueOut);
+ break;
+ case ParamType::TFramebufferIDConstPointer:
+ SetParamVal<ParamType::TFramebufferIDConstPointer>(valueIn, valueOut);
+ break;
+ case ParamType::TFramebufferIDPointer:
+ SetParamVal<ParamType::TFramebufferIDPointer>(valueIn, valueOut);
+ break;
+ case ParamType::TGLDEBUGPROC:
+ SetParamVal<ParamType::TGLDEBUGPROC>(valueIn, valueOut);
+ break;
+ case ParamType::TGLDEBUGPROCKHR:
+ SetParamVal<ParamType::TGLDEBUGPROCKHR>(valueIn, valueOut);
+ break;
+ case ParamType::TGLbitfield:
+ SetParamVal<ParamType::TGLbitfield>(valueIn, valueOut);
+ break;
+ case ParamType::TGLboolean:
+ SetParamVal<ParamType::TGLboolean>(valueIn, valueOut);
+ break;
+ case ParamType::TGLbooleanConstPointer:
+ SetParamVal<ParamType::TGLbooleanConstPointer>(valueIn, valueOut);
+ break;
+ case ParamType::TGLbooleanPointer:
+ SetParamVal<ParamType::TGLbooleanPointer>(valueIn, valueOut);
+ break;
+ case ParamType::TGLbyte:
+ SetParamVal<ParamType::TGLbyte>(valueIn, valueOut);
+ break;
+ case ParamType::TGLbyteConstPointer:
+ SetParamVal<ParamType::TGLbyteConstPointer>(valueIn, valueOut);
+ break;
+ case ParamType::TGLcharConstPointer:
+ SetParamVal<ParamType::TGLcharConstPointer>(valueIn, valueOut);
+ break;
+ case ParamType::TGLcharConstPointerPointer:
+ SetParamVal<ParamType::TGLcharConstPointerPointer>(valueIn, valueOut);
+ break;
+ case ParamType::TGLcharPointer:
+ SetParamVal<ParamType::TGLcharPointer>(valueIn, valueOut);
+ break;
+ case ParamType::TGLclampx:
+ SetParamVal<ParamType::TGLclampx>(valueIn, valueOut);
+ break;
+ case ParamType::TGLdouble:
+ SetParamVal<ParamType::TGLdouble>(valueIn, valueOut);
+ break;
+ case ParamType::TGLdoubleConstPointer:
+ SetParamVal<ParamType::TGLdoubleConstPointer>(valueIn, valueOut);
+ break;
+ case ParamType::TGLdoublePointer:
+ SetParamVal<ParamType::TGLdoublePointer>(valueIn, valueOut);
+ break;
+ case ParamType::TGLeglClientBufferEXT:
+ SetParamVal<ParamType::TGLeglClientBufferEXT>(valueIn, valueOut);
+ break;
+ case ParamType::TGLeglImageOES:
+ SetParamVal<ParamType::TGLeglImageOES>(valueIn, valueOut);
+ break;
+ case ParamType::TGLenum:
+ SetParamVal<ParamType::TGLenum>(valueIn, valueOut);
+ break;
+ case ParamType::TGLenumConstPointer:
+ SetParamVal<ParamType::TGLenumConstPointer>(valueIn, valueOut);
+ break;
+ case ParamType::TGLenumPointer:
+ SetParamVal<ParamType::TGLenumPointer>(valueIn, valueOut);
+ break;
+ case ParamType::TGLfixed:
+ SetParamVal<ParamType::TGLfixed>(valueIn, valueOut);
+ break;
+ case ParamType::TGLfixedConstPointer:
+ SetParamVal<ParamType::TGLfixedConstPointer>(valueIn, valueOut);
+ break;
+ case ParamType::TGLfixedPointer:
+ SetParamVal<ParamType::TGLfixedPointer>(valueIn, valueOut);
+ break;
+ case ParamType::TGLfloat:
+ SetParamVal<ParamType::TGLfloat>(valueIn, valueOut);
+ break;
+ case ParamType::TGLfloatConstPointer:
+ SetParamVal<ParamType::TGLfloatConstPointer>(valueIn, valueOut);
+ break;
+ case ParamType::TGLfloatPointer:
+ SetParamVal<ParamType::TGLfloatPointer>(valueIn, valueOut);
+ break;
+ case ParamType::TGLint:
+ SetParamVal<ParamType::TGLint>(valueIn, valueOut);
+ break;
+ case ParamType::TGLint64Pointer:
+ SetParamVal<ParamType::TGLint64Pointer>(valueIn, valueOut);
+ break;
+ case ParamType::TGLintConstPointer:
+ SetParamVal<ParamType::TGLintConstPointer>(valueIn, valueOut);
+ break;
+ case ParamType::TGLintPointer:
+ SetParamVal<ParamType::TGLintPointer>(valueIn, valueOut);
+ break;
+ case ParamType::TGLintptr:
+ SetParamVal<ParamType::TGLintptr>(valueIn, valueOut);
+ break;
+ case ParamType::TGLintptrConstPointer:
+ SetParamVal<ParamType::TGLintptrConstPointer>(valueIn, valueOut);
+ break;
+ case ParamType::TGLshort:
+ SetParamVal<ParamType::TGLshort>(valueIn, valueOut);
+ break;
+ case ParamType::TGLshortConstPointer:
+ SetParamVal<ParamType::TGLshortConstPointer>(valueIn, valueOut);
+ break;
+ case ParamType::TGLsizei:
+ SetParamVal<ParamType::TGLsizei>(valueIn, valueOut);
+ break;
+ case ParamType::TGLsizeiConstPointer:
+ SetParamVal<ParamType::TGLsizeiConstPointer>(valueIn, valueOut);
+ break;
+ case ParamType::TGLsizeiPointer:
+ SetParamVal<ParamType::TGLsizeiPointer>(valueIn, valueOut);
+ break;
+ case ParamType::TGLsizeiptr:
+ SetParamVal<ParamType::TGLsizeiptr>(valueIn, valueOut);
+ break;
+ case ParamType::TGLsizeiptrConstPointer:
+ SetParamVal<ParamType::TGLsizeiptrConstPointer>(valueIn, valueOut);
+ break;
+ case ParamType::TGLsync:
+ SetParamVal<ParamType::TGLsync>(valueIn, valueOut);
+ break;
+ case ParamType::TGLubyte:
+ SetParamVal<ParamType::TGLubyte>(valueIn, valueOut);
+ break;
+ case ParamType::TGLubyteConstPointer:
+ SetParamVal<ParamType::TGLubyteConstPointer>(valueIn, valueOut);
+ break;
+ case ParamType::TGLubytePointer:
+ SetParamVal<ParamType::TGLubytePointer>(valueIn, valueOut);
+ break;
+ case ParamType::TGLuint:
+ SetParamVal<ParamType::TGLuint>(valueIn, valueOut);
+ break;
+ case ParamType::TGLuint64:
+ SetParamVal<ParamType::TGLuint64>(valueIn, valueOut);
+ break;
+ case ParamType::TGLuint64ConstPointer:
+ SetParamVal<ParamType::TGLuint64ConstPointer>(valueIn, valueOut);
+ break;
+ case ParamType::TGLuint64Pointer:
+ SetParamVal<ParamType::TGLuint64Pointer>(valueIn, valueOut);
+ break;
+ case ParamType::TGLuintConstPointer:
+ SetParamVal<ParamType::TGLuintConstPointer>(valueIn, valueOut);
+ break;
+ case ParamType::TGLuintPointer:
+ SetParamVal<ParamType::TGLuintPointer>(valueIn, valueOut);
+ break;
+ case ParamType::TGLushort:
+ SetParamVal<ParamType::TGLushort>(valueIn, valueOut);
+ break;
+ case ParamType::TGLushortConstPointer:
+ SetParamVal<ParamType::TGLushortConstPointer>(valueIn, valueOut);
+ break;
+ case ParamType::TGLushortPointer:
+ SetParamVal<ParamType::TGLushortPointer>(valueIn, valueOut);
+ break;
+ case ParamType::TGLvoidConstPointer:
+ SetParamVal<ParamType::TGLvoidConstPointer>(valueIn, valueOut);
+ break;
+ case ParamType::TGLvoidConstPointerPointer:
+ SetParamVal<ParamType::TGLvoidConstPointerPointer>(valueIn, valueOut);
+ break;
+ case ParamType::TGraphicsResetStatus:
+ SetParamVal<ParamType::TGraphicsResetStatus>(valueIn, valueOut);
+ break;
+ case ParamType::THandleType:
+ SetParamVal<ParamType::THandleType>(valueIn, valueOut);
+ break;
+ case ParamType::TLightParameter:
+ SetParamVal<ParamType::TLightParameter>(valueIn, valueOut);
+ break;
+ case ParamType::TLogicalOperation:
+ SetParamVal<ParamType::TLogicalOperation>(valueIn, valueOut);
+ break;
+ case ParamType::TMaterialParameter:
+ SetParamVal<ParamType::TMaterialParameter>(valueIn, valueOut);
+ break;
+ case ParamType::TMatrixType:
+ SetParamVal<ParamType::TMatrixType>(valueIn, valueOut);
+ break;
+ case ParamType::TMemoryObjectID:
+ SetParamVal<ParamType::TMemoryObjectID>(valueIn, valueOut);
+ break;
+ case ParamType::TMemoryObjectIDConstPointer:
+ SetParamVal<ParamType::TMemoryObjectIDConstPointer>(valueIn, valueOut);
+ break;
+ case ParamType::TMemoryObjectIDPointer:
+ SetParamVal<ParamType::TMemoryObjectIDPointer>(valueIn, valueOut);
+ break;
+ case ParamType::TObjectType:
+ SetParamVal<ParamType::TObjectType>(valueIn, valueOut);
+ break;
+ case ParamType::TPointParameter:
+ SetParamVal<ParamType::TPointParameter>(valueIn, valueOut);
+ break;
+ case ParamType::TPrimitiveMode:
+ SetParamVal<ParamType::TPrimitiveMode>(valueIn, valueOut);
+ break;
+ case ParamType::TProgramPipelineID:
+ SetParamVal<ParamType::TProgramPipelineID>(valueIn, valueOut);
+ break;
+ case ParamType::TProgramPipelineIDConstPointer:
+ SetParamVal<ParamType::TProgramPipelineIDConstPointer>(valueIn, valueOut);
+ break;
+ case ParamType::TProgramPipelineIDPointer:
+ SetParamVal<ParamType::TProgramPipelineIDPointer>(valueIn, valueOut);
+ break;
+ case ParamType::TProvokingVertexConvention:
+ SetParamVal<ParamType::TProvokingVertexConvention>(valueIn, valueOut);
+ break;
+ case ParamType::TQueryID:
+ SetParamVal<ParamType::TQueryID>(valueIn, valueOut);
+ break;
+ case ParamType::TQueryIDConstPointer:
+ SetParamVal<ParamType::TQueryIDConstPointer>(valueIn, valueOut);
+ break;
+ case ParamType::TQueryIDPointer:
+ SetParamVal<ParamType::TQueryIDPointer>(valueIn, valueOut);
+ break;
+ case ParamType::TQueryType:
+ SetParamVal<ParamType::TQueryType>(valueIn, valueOut);
+ break;
+ case ParamType::TRenderbufferID:
+ SetParamVal<ParamType::TRenderbufferID>(valueIn, valueOut);
+ break;
+ case ParamType::TRenderbufferIDConstPointer:
+ SetParamVal<ParamType::TRenderbufferIDConstPointer>(valueIn, valueOut);
+ break;
+ case ParamType::TRenderbufferIDPointer:
+ SetParamVal<ParamType::TRenderbufferIDPointer>(valueIn, valueOut);
+ break;
+ case ParamType::TSamplerID:
+ SetParamVal<ParamType::TSamplerID>(valueIn, valueOut);
+ break;
+ case ParamType::TSamplerIDConstPointer:
+ SetParamVal<ParamType::TSamplerIDConstPointer>(valueIn, valueOut);
+ break;
+ case ParamType::TSamplerIDPointer:
+ SetParamVal<ParamType::TSamplerIDPointer>(valueIn, valueOut);
+ break;
+ case ParamType::TSemaphoreID:
+ SetParamVal<ParamType::TSemaphoreID>(valueIn, valueOut);
+ break;
+ case ParamType::TSemaphoreIDConstPointer:
+ SetParamVal<ParamType::TSemaphoreIDConstPointer>(valueIn, valueOut);
+ break;
+ case ParamType::TSemaphoreIDPointer:
+ SetParamVal<ParamType::TSemaphoreIDPointer>(valueIn, valueOut);
+ break;
+ case ParamType::TShaderProgramID:
+ SetParamVal<ParamType::TShaderProgramID>(valueIn, valueOut);
+ break;
+ case ParamType::TShaderProgramIDConstPointer:
+ SetParamVal<ParamType::TShaderProgramIDConstPointer>(valueIn, valueOut);
+ break;
+ case ParamType::TShaderProgramIDPointer:
+ SetParamVal<ParamType::TShaderProgramIDPointer>(valueIn, valueOut);
+ break;
+ case ParamType::TShaderType:
+ SetParamVal<ParamType::TShaderType>(valueIn, valueOut);
+ break;
+ case ParamType::TShadingModel:
+ SetParamVal<ParamType::TShadingModel>(valueIn, valueOut);
+ break;
+ case ParamType::TTextureEnvParameter:
+ SetParamVal<ParamType::TTextureEnvParameter>(valueIn, valueOut);
+ break;
+ case ParamType::TTextureEnvTarget:
+ SetParamVal<ParamType::TTextureEnvTarget>(valueIn, valueOut);
+ break;
+ case ParamType::TTextureID:
+ SetParamVal<ParamType::TTextureID>(valueIn, valueOut);
+ break;
+ case ParamType::TTextureIDConstPointer:
+ SetParamVal<ParamType::TTextureIDConstPointer>(valueIn, valueOut);
+ break;
+ case ParamType::TTextureIDPointer:
+ SetParamVal<ParamType::TTextureIDPointer>(valueIn, valueOut);
+ break;
+ case ParamType::TTextureTarget:
+ SetParamVal<ParamType::TTextureTarget>(valueIn, valueOut);
+ break;
+ case ParamType::TTextureType:
+ SetParamVal<ParamType::TTextureType>(valueIn, valueOut);
+ break;
+ case ParamType::TTimestamp:
+ SetParamVal<ParamType::TTimestamp>(valueIn, valueOut);
+ break;
+ case ParamType::TTransformFeedbackID:
+ SetParamVal<ParamType::TTransformFeedbackID>(valueIn, valueOut);
+ break;
+ case ParamType::TTransformFeedbackIDConstPointer:
+ SetParamVal<ParamType::TTransformFeedbackIDConstPointer>(valueIn, valueOut);
+ break;
+ case ParamType::TTransformFeedbackIDPointer:
+ SetParamVal<ParamType::TTransformFeedbackIDPointer>(valueIn, valueOut);
+ break;
+ case ParamType::TUniformBlockIndex:
+ SetParamVal<ParamType::TUniformBlockIndex>(valueIn, valueOut);
+ break;
+ case ParamType::TUniformLocation:
+ SetParamVal<ParamType::TUniformLocation>(valueIn, valueOut);
+ break;
+ case ParamType::TVertexArrayID:
+ SetParamVal<ParamType::TVertexArrayID>(valueIn, valueOut);
+ break;
+ case ParamType::TVertexArrayIDConstPointer:
+ SetParamVal<ParamType::TVertexArrayIDConstPointer>(valueIn, valueOut);
+ break;
+ case ParamType::TVertexArrayIDPointer:
+ SetParamVal<ParamType::TVertexArrayIDPointer>(valueIn, valueOut);
+ break;
+ case ParamType::TVertexAttribType:
+ SetParamVal<ParamType::TVertexAttribType>(valueIn, valueOut);
+ break;
+ case ParamType::TcharConstPointer:
+ SetParamVal<ParamType::TcharConstPointer>(valueIn, valueOut);
+ break;
+ case ParamType::TvoidConstPointer:
+ SetParamVal<ParamType::TvoidConstPointer>(valueIn, valueOut);
+ break;
+ case ParamType::TvoidConstPointerPointer:
+ SetParamVal<ParamType::TvoidConstPointerPointer>(valueIn, valueOut);
+ break;
+ case ParamType::TvoidPointer:
+ SetParamVal<ParamType::TvoidPointer>(valueIn, valueOut);
+ break;
+ case ParamType::TvoidPointerPointer:
+ SetParamVal<ParamType::TvoidPointerPointer>(valueIn, valueOut);
+ break;
+ }
+}
+
+struct CallCapture;
+struct ParamCapture;
+
+void WriteParamCaptureReplay(std::ostream &os, const CallCapture &call, const ParamCapture &param);
+const char *ParamTypeToString(ParamType paramType);
+
+enum class ResourceIDType
+{
+ Buffer,
+ FenceNV,
+ Framebuffer,
+ MemoryObject,
+ ProgramPipeline,
+ Query,
+ Renderbuffer,
+ Sampler,
+ Semaphore,
+ ShaderProgram,
+ Texture,
+ TransformFeedback,
+ VertexArray,
+ EnumCount,
+ InvalidEnum = EnumCount
+};
+
+ResourceIDType GetResourceIDTypeFromParamType(ParamType paramType);
+const char *GetResourceIDTypeName(ResourceIDType resourceIDType);
+
+template <typename ResourceType>
+struct GetResourceIDTypeFromType;
+
+template <>
+struct GetResourceIDTypeFromType<gl::BufferID>
+{
+ static constexpr ResourceIDType IDType = ResourceIDType::Buffer;
+};
+
+template <>
+struct GetResourceIDTypeFromType<gl::FenceNVID>
+{
+ static constexpr ResourceIDType IDType = ResourceIDType::FenceNV;
+};
+
+template <>
+struct GetResourceIDTypeFromType<gl::FramebufferID>
+{
+ static constexpr ResourceIDType IDType = ResourceIDType::Framebuffer;
+};
+
+template <>
+struct GetResourceIDTypeFromType<gl::MemoryObjectID>
+{
+ static constexpr ResourceIDType IDType = ResourceIDType::MemoryObject;
+};
+
+template <>
+struct GetResourceIDTypeFromType<gl::ProgramPipelineID>
+{
+ static constexpr ResourceIDType IDType = ResourceIDType::ProgramPipeline;
+};
+
+template <>
+struct GetResourceIDTypeFromType<gl::QueryID>
+{
+ static constexpr ResourceIDType IDType = ResourceIDType::Query;
+};
+
+template <>
+struct GetResourceIDTypeFromType<gl::RenderbufferID>
+{
+ static constexpr ResourceIDType IDType = ResourceIDType::Renderbuffer;
+};
+
+template <>
+struct GetResourceIDTypeFromType<gl::SamplerID>
+{
+ static constexpr ResourceIDType IDType = ResourceIDType::Sampler;
+};
+
+template <>
+struct GetResourceIDTypeFromType<gl::SemaphoreID>
+{
+ static constexpr ResourceIDType IDType = ResourceIDType::Semaphore;
+};
+
+template <>
+struct GetResourceIDTypeFromType<gl::ShaderProgramID>
+{
+ static constexpr ResourceIDType IDType = ResourceIDType::ShaderProgram;
+};
+
+template <>
+struct GetResourceIDTypeFromType<gl::TextureID>
+{
+ static constexpr ResourceIDType IDType = ResourceIDType::Texture;
+};
+
+template <>
+struct GetResourceIDTypeFromType<gl::TransformFeedbackID>
+{
+ static constexpr ResourceIDType IDType = ResourceIDType::TransformFeedback;
+};
+
+template <>
+struct GetResourceIDTypeFromType<gl::VertexArrayID>
+{
+ static constexpr ResourceIDType IDType = ResourceIDType::VertexArray;
+};
+
+} // namespace angle
+
+#endif // LIBANGLE_FRAME_CAPTURE_UTILS_AUTOGEN_H_