#ifndef COMMON_FRAME_CAPTURE_UTILS_H_
#define COMMON_FRAME_CAPTURE_UTILS_H_
#include "common/frame_capture_utils_autogen.h"
#include "common/gl_enum_utils_autogen.h"
namespace angle
{
namespace
{
template <typename ParamValueType>
struct ParamValueTrait
{ … };
template <>
struct ParamValueTrait<gl::FramebufferID>
{ … };
template <>
struct ParamValueTrait<gl::BufferID>
{ … };
template <>
struct ParamValueTrait<gl::RenderbufferID>
{ … };
template <>
struct ParamValueTrait<gl::TextureID>
{ … };
template <>
struct ParamValueTrait<gl::ShaderProgramID>
{ … };
}
ParamData;
struct ParamCapture : angle::NonCopyable
{ … };
Captures;
class ParamBuffer final : angle::NonCopyable
{ … };
struct CallCapture
{ … };
template <typename T>
void ParamBuffer::addValueParam(const char *paramName, ParamType paramType, T paramValue)
{ … }
template <typename T>
void ParamBuffer::setValueParamAtIndex(const char *paramName,
ParamType paramType,
T paramValue,
int index)
{ … }
template <typename T>
void ParamBuffer::addEnumParam(const char *paramName,
gl::GLESEnum enumGroup,
ParamType paramType,
T paramValue)
{ … }
template <typename T>
void ParamBuffer::addEnumParam(const char *paramName,
gl::BigGLEnum enumGroup,
ParamType paramType,
T paramValue)
{ … }
template <typename T>
void ParamBuffer::addUnnamedParam(ParamType paramType, T paramValue)
{ … }
template <ParamType ParamT, typename T>
void WriteParamValueReplay(std::ostream &os, const CallCapture &call, T value);
template <>
void WriteParamValueReplay<ParamType::TGLboolean>(std::ostream &os,
const CallCapture &call,
GLboolean value);
template <>
void WriteParamValueReplay<ParamType::TGLbooleanPointer>(std::ostream &os,
const CallCapture &call,
GLboolean *value);
template <>
void WriteParamValueReplay<ParamType::TvoidConstPointer>(std::ostream &os,
const CallCapture &call,
const void *value);
template <>
void WriteParamValueReplay<ParamType::TvoidPointer>(std::ostream &os,
const CallCapture &call,
void *value);
template <>
void WriteParamValueReplay<ParamType::TGLfloatConstPointer>(std::ostream &os,
const CallCapture &call,
const GLfloat *value);
template <>
void WriteParamValueReplay<ParamType::TGLintConstPointer>(std::ostream &os,
const CallCapture &call,
const GLint *value);
template <>
void WriteParamValueReplay<ParamType::TGLsizeiPointer>(std::ostream &os,
const CallCapture &call,
GLsizei *value);
template <>
void WriteParamValueReplay<ParamType::TGLuintPointer>(std::ostream &os,
const CallCapture &call,
GLuint *value);
template <>
void WriteParamValueReplay<ParamType::TGLuintConstPointer>(std::ostream &os,
const CallCapture &call,
const GLuint *value);
template <>
void WriteParamValueReplay<ParamType::TGLDEBUGPROCKHR>(std::ostream &os,
const CallCapture &call,
GLDEBUGPROCKHR value);
template <>
void WriteParamValueReplay<ParamType::TGLDEBUGPROC>(std::ostream &os,
const CallCapture &call,
GLDEBUGPROC value);
template <>
void WriteParamValueReplay<ParamType::TBufferID>(std::ostream &os,
const CallCapture &call,
gl::BufferID value);
template <>
void WriteParamValueReplay<ParamType::TFenceNVID>(std::ostream &os,
const CallCapture &call,
gl::FenceNVID value);
template <>
void WriteParamValueReplay<ParamType::TFramebufferID>(std::ostream &os,
const CallCapture &call,
gl::FramebufferID value);
template <>
void WriteParamValueReplay<ParamType::TMemoryObjectID>(std::ostream &os,
const CallCapture &call,
gl::MemoryObjectID value);
template <>
void WriteParamValueReplay<ParamType::TProgramPipelineID>(std::ostream &os,
const CallCapture &call,
gl::ProgramPipelineID value);
template <>
void WriteParamValueReplay<ParamType::TQueryID>(std::ostream &os,
const CallCapture &call,
gl::QueryID value);
template <>
void WriteParamValueReplay<ParamType::TRenderbufferID>(std::ostream &os,
const CallCapture &call,
gl::RenderbufferID value);
template <>
void WriteParamValueReplay<ParamType::TSamplerID>(std::ostream &os,
const CallCapture &call,
gl::SamplerID value);
template <>
void WriteParamValueReplay<ParamType::TSemaphoreID>(std::ostream &os,
const CallCapture &call,
gl::SemaphoreID value);
template <>
void WriteParamValueReplay<ParamType::TShaderProgramID>(std::ostream &os,
const CallCapture &call,
gl::ShaderProgramID value);
template <>
void WriteParamValueReplay<ParamType::TTextureID>(std::ostream &os,
const CallCapture &call,
gl::TextureID value);
template <>
void WriteParamValueReplay<ParamType::TTransformFeedbackID>(std::ostream &os,
const CallCapture &call,
gl::TransformFeedbackID value);
template <>
void WriteParamValueReplay<ParamType::TVertexArrayID>(std::ostream &os,
const CallCapture &call,
gl::VertexArrayID value);
template <>
void WriteParamValueReplay<ParamType::TUniformLocation>(std::ostream &os,
const CallCapture &call,
gl::UniformLocation value);
template <>
void WriteParamValueReplay<ParamType::TUniformBlockIndex>(std::ostream &os,
const CallCapture &call,
gl::UniformBlockIndex value);
template <>
void WriteParamValueReplay<ParamType::TSyncID>(std::ostream &os,
const CallCapture &call,
gl::SyncID value);
template <>
void WriteParamValueReplay<ParamType::TGLubyte>(std::ostream &os,
const CallCapture &call,
GLubyte value);
template <>
void WriteParamValueReplay<ParamType::TContextID>(std::ostream &os,
const CallCapture &call,
gl::ContextID value);
template <>
void WriteParamValueReplay<ParamType::Tegl_DisplayPointer>(std::ostream &os,
const CallCapture &call,
egl::Display *value);
template <>
void WriteParamValueReplay<ParamType::TImageID>(std::ostream &os,
const CallCapture &call,
egl::ImageID value);
template <>
void WriteParamValueReplay<ParamType::TSurfaceID>(std::ostream &os,
const CallCapture &call,
egl::SurfaceID value);
template <>
void WriteParamValueReplay<ParamType::TEGLDEBUGPROCKHR>(std::ostream &os,
const CallCapture &call,
EGLDEBUGPROCKHR value);
template <>
void WriteParamValueReplay<ParamType::TEGLGetBlobFuncANDROID>(std::ostream &os,
const CallCapture &call,
EGLGetBlobFuncANDROID value);
template <>
void WriteParamValueReplay<ParamType::TEGLSetBlobFuncANDROID>(std::ostream &os,
const CallCapture &call,
EGLSetBlobFuncANDROID value);
template <>
void WriteParamValueReplay<ParamType::TEGLClientBuffer>(std::ostream &os,
const CallCapture &call,
EGLClientBuffer value);
template <>
void WriteParamValueReplay<ParamType::TEGLAttribPointer>(std::ostream &os,
const CallCapture &call,
EGLAttrib *value);
template <>
void WriteParamValueReplay<ParamType::TEGLAttribConstPointer>(std::ostream &os,
const CallCapture &call,
const EGLAttrib *value);
template <>
void WriteParamValueReplay<ParamType::TEGLintPointer>(std::ostream &os,
const CallCapture &call,
EGLint *value);
template <>
void WriteParamValueReplay<ParamType::TEGLintConstPointer>(std::ostream &os,
const CallCapture &call,
const EGLint *value);
template <>
void WriteParamValueReplay<ParamType::Tegl_ConfigPointer>(std::ostream &os,
const CallCapture &call,
egl::Config *value);
template <>
void WriteParamValueReplay<ParamType::Tegl_SyncID>(std::ostream &os,
const CallCapture &call,
egl::SyncID value);
template <>
void WriteParamValueReplay<ParamType::TEGLTime>(std::ostream &os,
const CallCapture &call,
EGLTime value);
template <>
void WriteParamValueReplay<ParamType::TEGLTimeKHR>(std::ostream &os,
const CallCapture &call,
EGLTimeKHR value);
template <ParamType ParamT, typename T>
void WriteParamValueReplay(std::ostream &os, const CallCapture &call, T value)
{ … }
struct FmtPointerIndex
{ … };
inline std::ostream &operator<<(std::ostream &os, const FmtPointerIndex &fmt)
{ … }
template <typename ParamValueType>
bool FindResourceIDsInCall(const CallCapture &call, std::vector<ParamValueType> &idsOut);
}
#endif