diff options
Diffstat (limited to 'opengl/libs/GLES_trace')
-rw-r--r-- | opengl/libs/GLES_trace/gltrace.proto | 106 | ||||
-rw-r--r-- | opengl/libs/GLES_trace/src/gltrace.pb.cpp | 252 | ||||
-rw-r--r-- | opengl/libs/GLES_trace/src/gltrace.pb.h | 254 | ||||
-rw-r--r-- | opengl/libs/GLES_trace/src/gltrace_api.cpp | 4656 | ||||
-rw-r--r-- | opengl/libs/GLES_trace/src/gltrace_api.h | 116 | ||||
-rwxr-xr-x | opengl/libs/GLES_trace/tools/genapi.py | 20 |
6 files changed, 5371 insertions, 33 deletions
diff --git a/opengl/libs/GLES_trace/gltrace.proto b/opengl/libs/GLES_trace/gltrace.proto index bbf3554..f8f4938 100644 --- a/opengl/libs/GLES_trace/gltrace.proto +++ b/opengl/libs/GLES_trace/gltrace.proto @@ -399,6 +399,110 @@ message GLMessage { glVertexPointer = 373; glViewport = 374; glWeightPointerOES = 375; + glReadBuffer = 376; + glDrawRangeElements = 377; + glTexImage3D = 378; + glTexSubImage3D = 379; + glCopyTexSubImage3D = 380; + glCompressedTexImage3D = 381; + glCompressedTexSubImage3D = 382; + glGenQueries = 383; + glDeleteQueries = 384; + glIsQuery = 385; + glBeginQuery = 386; + glEndQuery = 387; + glGetQueryiv = 388; + glGetQueryObjectuiv = 389; + glUnmapBuffer = 390; + glGetBufferPointerv = 391; + glDrawBuffers = 392; + glUniformMatrix2x3fv = 393; + glUniformMatrix3x2fv = 394; + glUniformMatrix2x4fv = 395; + glUniformMatrix4x2fv = 396; + glUniformMatrix3x4fv = 397; + glUniformMatrix4x3fv = 398; + glBlitFramebuffer = 399; + glRenderbufferStorageMultisample = 400; + glFramebufferTextureLayer = 401; + glMapBufferRange = 402; + glFlushMappedBufferRange = 403; + glBindVertexArray = 404; + glDeleteVertexArrays = 405; + glGenVertexArrays = 406; + glIsVertexArray = 407; + glGetIntegeri_v = 408; + glBeginTransformFeedback = 409; + glEndTransformFeedback = 410; + glBindBufferRange = 411; + glBindBufferBase = 412; + glTransformFeedbackVaryings = 413; + glGetTransformFeedbackVarying = 414; + glVertexAttribIPointer = 415; + glGetVertexAttribIiv = 416; + glGetVertexAttribIuiv = 417; + glVertexAttribI4i = 418; + glVertexAttribI4ui = 419; + glVertexAttribI4iv = 420; + glVertexAttribI4uiv = 421; + glGetUniformuiv = 422; + glGetFragDataLocation = 423; + glUniform1ui = 424; + glUniform2ui = 425; + glUniform3ui = 426; + glUniform4ui = 427; + glUniform1uiv = 428; + glUniform2uiv = 429; + glUniform3uiv = 430; + glUniform4uiv = 431; + glClearBufferiv = 432; + glClearBufferuiv = 433; + glClearBufferfv = 434; + glClearBufferfi = 435; + glGetStringi = 436; + glCopyBufferSubData = 437; + glGetUniformIndices = 438; + glGetActiveUniformsiv = 439; + glGetUniformBlockIndex = 440; + glGetActiveUniformBlockiv = 441; + glGetActiveUniformBlockName = 442; + glUniformBlockBinding = 443; + glDrawArraysInstanced = 444; + glDrawElementsInstanced = 445; + glFenceSync = 446; + glIsSync = 447; + glDeleteSync = 448; + glClientWaitSync = 449; + glWaitSync = 450; + glGetInteger64v = 451; + glGetSynciv = 452; + glGetInteger64i_v = 453; + glGetBufferParameteri64v = 454; + glGenSamplers = 455; + glDeleteSamplers = 456; + glIsSampler = 457; + glBindSampler = 458; + glSamplerParameteri = 459; + glSamplerParameteriv = 460; + glSamplerParameterf = 461; + glSamplerParameterfv = 462; + glGetSamplerParameteriv = 463; + glGetSamplerParameterfv = 464; + glVertexAttribDivisor = 465; + glBindTransformFeedback = 466; + glDeleteTransformFeedbacks = 467; + glGenTransformFeedbacks = 468; + glIsTransformFeedback = 469; + glPauseTransformFeedback = 470; + glResumeTransformFeedback = 471; + glGetProgramBinary = 472; + glProgramBinary = 473; + glProgramParameteri = 474; + glInvalidateFramebuffer = 475; + glInvalidateSubFramebuffer = 476; + glTexStorage2D = 477; + glTexStorage3D = 478; + glGetInternalformativ = 479; glActiveShaderProgramEXT = 502; glAlphaFuncQCOM = 503; @@ -523,6 +627,7 @@ message GLMessage { FLOAT = 5; // GLfloat, GLclampf BOOL = 6; // GLboolean ENUM = 7; // GLenum + INT64 = 8; // GLint64, GLuint64 }; required Type type = 1 [default = VOID]; @@ -533,6 +638,7 @@ message GLMessage { repeated bytes charValue = 5; repeated bytes rawBytes = 6; repeated bool boolValue = 7; + repeated int64 int64Value = 8; } message FrameBuffer { diff --git a/opengl/libs/GLES_trace/src/gltrace.pb.cpp b/opengl/libs/GLES_trace/src/gltrace.pb.cpp index d587c49..ed9a457 100644 --- a/opengl/libs/GLES_trace/src/gltrace.pb.cpp +++ b/opengl/libs/GLES_trace/src/gltrace.pb.cpp @@ -419,6 +419,110 @@ bool GLMessage_Function_IsValid(int value) { case 373: case 374: case 375: + case 376: + case 377: + case 378: + case 379: + case 380: + case 381: + case 382: + case 383: + case 384: + case 385: + case 386: + case 387: + case 388: + case 389: + case 390: + case 391: + case 392: + case 393: + case 394: + case 395: + case 396: + case 397: + case 398: + case 399: + case 400: + case 401: + case 402: + case 403: + case 404: + case 405: + case 406: + case 407: + case 408: + case 409: + case 410: + case 411: + case 412: + case 413: + case 414: + case 415: + case 416: + case 417: + case 418: + case 419: + case 420: + case 421: + case 422: + case 423: + case 424: + case 425: + case 426: + case 427: + case 428: + case 429: + case 430: + case 431: + case 432: + case 433: + case 434: + case 435: + case 436: + case 437: + case 438: + case 439: + case 440: + case 441: + case 442: + case 443: + case 444: + case 445: + case 446: + case 447: + case 448: + case 449: + case 450: + case 451: + case 452: + case 453: + case 454: + case 455: + case 456: + case 457: + case 458: + case 459: + case 460: + case 461: + case 462: + case 463: + case 464: + case 465: + case 466: + case 467: + case 468: + case 469: + case 470: + case 471: + case 472: + case 473: + case 474: + case 475: + case 476: + case 477: + case 478: + case 479: case 502: case 503: case 504: @@ -910,6 +1014,110 @@ const GLMessage_Function GLMessage::glVertexAttribPointer; const GLMessage_Function GLMessage::glVertexPointer; const GLMessage_Function GLMessage::glViewport; const GLMessage_Function GLMessage::glWeightPointerOES; +const GLMessage_Function GLMessage::glReadBuffer; +const GLMessage_Function GLMessage::glDrawRangeElements; +const GLMessage_Function GLMessage::glTexImage3D; +const GLMessage_Function GLMessage::glTexSubImage3D; +const GLMessage_Function GLMessage::glCopyTexSubImage3D; +const GLMessage_Function GLMessage::glCompressedTexImage3D; +const GLMessage_Function GLMessage::glCompressedTexSubImage3D; +const GLMessage_Function GLMessage::glGenQueries; +const GLMessage_Function GLMessage::glDeleteQueries; +const GLMessage_Function GLMessage::glIsQuery; +const GLMessage_Function GLMessage::glBeginQuery; +const GLMessage_Function GLMessage::glEndQuery; +const GLMessage_Function GLMessage::glGetQueryiv; +const GLMessage_Function GLMessage::glGetQueryObjectuiv; +const GLMessage_Function GLMessage::glUnmapBuffer; +const GLMessage_Function GLMessage::glGetBufferPointerv; +const GLMessage_Function GLMessage::glDrawBuffers; +const GLMessage_Function GLMessage::glUniformMatrix2x3fv; +const GLMessage_Function GLMessage::glUniformMatrix3x2fv; +const GLMessage_Function GLMessage::glUniformMatrix2x4fv; +const GLMessage_Function GLMessage::glUniformMatrix4x2fv; +const GLMessage_Function GLMessage::glUniformMatrix3x4fv; +const GLMessage_Function GLMessage::glUniformMatrix4x3fv; +const GLMessage_Function GLMessage::glBlitFramebuffer; +const GLMessage_Function GLMessage::glRenderbufferStorageMultisample; +const GLMessage_Function GLMessage::glFramebufferTextureLayer; +const GLMessage_Function GLMessage::glMapBufferRange; +const GLMessage_Function GLMessage::glFlushMappedBufferRange; +const GLMessage_Function GLMessage::glBindVertexArray; +const GLMessage_Function GLMessage::glDeleteVertexArrays; +const GLMessage_Function GLMessage::glGenVertexArrays; +const GLMessage_Function GLMessage::glIsVertexArray; +const GLMessage_Function GLMessage::glGetIntegeri_v; +const GLMessage_Function GLMessage::glBeginTransformFeedback; +const GLMessage_Function GLMessage::glEndTransformFeedback; +const GLMessage_Function GLMessage::glBindBufferRange; +const GLMessage_Function GLMessage::glBindBufferBase; +const GLMessage_Function GLMessage::glTransformFeedbackVaryings; +const GLMessage_Function GLMessage::glGetTransformFeedbackVarying; +const GLMessage_Function GLMessage::glVertexAttribIPointer; +const GLMessage_Function GLMessage::glGetVertexAttribIiv; +const GLMessage_Function GLMessage::glGetVertexAttribIuiv; +const GLMessage_Function GLMessage::glVertexAttribI4i; +const GLMessage_Function GLMessage::glVertexAttribI4ui; +const GLMessage_Function GLMessage::glVertexAttribI4iv; +const GLMessage_Function GLMessage::glVertexAttribI4uiv; +const GLMessage_Function GLMessage::glGetUniformuiv; +const GLMessage_Function GLMessage::glGetFragDataLocation; +const GLMessage_Function GLMessage::glUniform1ui; +const GLMessage_Function GLMessage::glUniform2ui; +const GLMessage_Function GLMessage::glUniform3ui; +const GLMessage_Function GLMessage::glUniform4ui; +const GLMessage_Function GLMessage::glUniform1uiv; +const GLMessage_Function GLMessage::glUniform2uiv; +const GLMessage_Function GLMessage::glUniform3uiv; +const GLMessage_Function GLMessage::glUniform4uiv; +const GLMessage_Function GLMessage::glClearBufferiv; +const GLMessage_Function GLMessage::glClearBufferuiv; +const GLMessage_Function GLMessage::glClearBufferfv; +const GLMessage_Function GLMessage::glClearBufferfi; +const GLMessage_Function GLMessage::glGetStringi; +const GLMessage_Function GLMessage::glCopyBufferSubData; +const GLMessage_Function GLMessage::glGetUniformIndices; +const GLMessage_Function GLMessage::glGetActiveUniformsiv; +const GLMessage_Function GLMessage::glGetUniformBlockIndex; +const GLMessage_Function GLMessage::glGetActiveUniformBlockiv; +const GLMessage_Function GLMessage::glGetActiveUniformBlockName; +const GLMessage_Function GLMessage::glUniformBlockBinding; +const GLMessage_Function GLMessage::glDrawArraysInstanced; +const GLMessage_Function GLMessage::glDrawElementsInstanced; +const GLMessage_Function GLMessage::glFenceSync; +const GLMessage_Function GLMessage::glIsSync; +const GLMessage_Function GLMessage::glDeleteSync; +const GLMessage_Function GLMessage::glClientWaitSync; +const GLMessage_Function GLMessage::glWaitSync; +const GLMessage_Function GLMessage::glGetInteger64v; +const GLMessage_Function GLMessage::glGetSynciv; +const GLMessage_Function GLMessage::glGetInteger64i_v; +const GLMessage_Function GLMessage::glGetBufferParameteri64v; +const GLMessage_Function GLMessage::glGenSamplers; +const GLMessage_Function GLMessage::glDeleteSamplers; +const GLMessage_Function GLMessage::glIsSampler; +const GLMessage_Function GLMessage::glBindSampler; +const GLMessage_Function GLMessage::glSamplerParameteri; +const GLMessage_Function GLMessage::glSamplerParameteriv; +const GLMessage_Function GLMessage::glSamplerParameterf; +const GLMessage_Function GLMessage::glSamplerParameterfv; +const GLMessage_Function GLMessage::glGetSamplerParameteriv; +const GLMessage_Function GLMessage::glGetSamplerParameterfv; +const GLMessage_Function GLMessage::glVertexAttribDivisor; +const GLMessage_Function GLMessage::glBindTransformFeedback; +const GLMessage_Function GLMessage::glDeleteTransformFeedbacks; +const GLMessage_Function GLMessage::glGenTransformFeedbacks; +const GLMessage_Function GLMessage::glIsTransformFeedback; +const GLMessage_Function GLMessage::glPauseTransformFeedback; +const GLMessage_Function GLMessage::glResumeTransformFeedback; +const GLMessage_Function GLMessage::glGetProgramBinary; +const GLMessage_Function GLMessage::glProgramBinary; +const GLMessage_Function GLMessage::glProgramParameteri; +const GLMessage_Function GLMessage::glInvalidateFramebuffer; +const GLMessage_Function GLMessage::glInvalidateSubFramebuffer; +const GLMessage_Function GLMessage::glTexStorage2D; +const GLMessage_Function GLMessage::glTexStorage3D; +const GLMessage_Function GLMessage::glGetInternalformativ; const GLMessage_Function GLMessage::glActiveShaderProgramEXT; const GLMessage_Function GLMessage::glAlphaFuncQCOM; const GLMessage_Function GLMessage::glBeginQueryEXT; @@ -1032,6 +1240,7 @@ bool GLMessage_DataType_Type_IsValid(int value) { case 5: case 6: case 7: + case 8: return true; default: return false; @@ -1046,6 +1255,7 @@ const GLMessage_DataType_Type GLMessage_DataType::INT; const GLMessage_DataType_Type GLMessage_DataType::FLOAT; const GLMessage_DataType_Type GLMessage_DataType::BOOL; const GLMessage_DataType_Type GLMessage_DataType::ENUM; +const GLMessage_DataType_Type GLMessage_DataType::INT64; const GLMessage_DataType_Type GLMessage_DataType::Type_MIN; const GLMessage_DataType_Type GLMessage_DataType::Type_MAX; const int GLMessage_DataType::Type_ARRAYSIZE; @@ -1058,6 +1268,7 @@ const int GLMessage_DataType::kFloatValueFieldNumber; const int GLMessage_DataType::kCharValueFieldNumber; const int GLMessage_DataType::kRawBytesFieldNumber; const int GLMessage_DataType::kBoolValueFieldNumber; +const int GLMessage_DataType::kInt64ValueFieldNumber; #endif // !_MSC_VER GLMessage_DataType::GLMessage_DataType() @@ -1115,6 +1326,7 @@ void GLMessage_DataType::Clear() { charvalue_.Clear(); rawbytes_.Clear(); boolvalue_.Clear(); + int64value_.Clear(); ::memset(_has_bits_, 0, sizeof(_has_bits_)); } @@ -1250,6 +1462,28 @@ bool GLMessage_DataType::MergePartialFromCodedStream( goto handle_uninterpreted; } if (input->ExpectTag(56)) goto parse_boolValue; + if (input->ExpectTag(64)) goto parse_int64Value; + break; + } + + // repeated int64 int64Value = 8; + case 8: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) { + parse_int64Value: + DO_((::google::protobuf::internal::WireFormatLite::ReadRepeatedPrimitive< + ::google::protobuf::int64, ::google::protobuf::internal::WireFormatLite::TYPE_INT64>( + 1, 64, input, this->mutable_int64value()))); + } else if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) + == ::google::protobuf::internal::WireFormatLite:: + WIRETYPE_LENGTH_DELIMITED) { + DO_((::google::protobuf::internal::WireFormatLite::ReadPackedPrimitiveNoInline< + ::google::protobuf::int64, ::google::protobuf::internal::WireFormatLite::TYPE_INT64>( + input, this->mutable_int64value()))); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(64)) goto parse_int64Value; if (input->ExpectAtEnd()) return true; break; } @@ -1312,6 +1546,12 @@ void GLMessage_DataType::SerializeWithCachedSizes( 7, this->boolvalue(i), output); } + // repeated int64 int64Value = 8; + for (int i = 0; i < this->int64value_size(); i++) { + ::google::protobuf::internal::WireFormatLite::WriteInt64( + 8, this->int64value(i), output); + } + } int GLMessage_DataType::ByteSize() const { @@ -1368,6 +1608,16 @@ int GLMessage_DataType::ByteSize() const { total_size += 1 * this->boolvalue_size() + data_size; } + // repeated int64 int64Value = 8; + { + int data_size = 0; + for (int i = 0; i < this->int64value_size(); i++) { + data_size += ::google::protobuf::internal::WireFormatLite:: + Int64Size(this->int64value(i)); + } + total_size += 1 * this->int64value_size() + data_size; + } + GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN(); _cached_size_ = total_size; GOOGLE_SAFE_CONCURRENT_WRITES_END(); @@ -1386,6 +1636,7 @@ void GLMessage_DataType::MergeFrom(const GLMessage_DataType& from) { charvalue_.MergeFrom(from.charvalue_); rawbytes_.MergeFrom(from.rawbytes_); boolvalue_.MergeFrom(from.boolvalue_); + int64value_.MergeFrom(from.int64value_); if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) { if (from._has_bit(0)) { set_type(from.type()); @@ -1417,6 +1668,7 @@ void GLMessage_DataType::Swap(GLMessage_DataType* other) { charvalue_.Swap(&other->charvalue_); rawbytes_.Swap(&other->rawbytes_); boolvalue_.Swap(&other->boolvalue_); + int64value_.Swap(&other->int64value_); std::swap(_has_bits_[0], other->_has_bits_[0]); std::swap(_cached_size_, other->_cached_size_); } diff --git a/opengl/libs/GLES_trace/src/gltrace.pb.h b/opengl/libs/GLES_trace/src/gltrace.pb.h index 0901be7..9eae26c 100644 --- a/opengl/libs/GLES_trace/src/gltrace.pb.h +++ b/opengl/libs/GLES_trace/src/gltrace.pb.h @@ -43,11 +43,12 @@ enum GLMessage_DataType_Type { GLMessage_DataType_Type_INT = 4, GLMessage_DataType_Type_FLOAT = 5, GLMessage_DataType_Type_BOOL = 6, - GLMessage_DataType_Type_ENUM = 7 + GLMessage_DataType_Type_ENUM = 7, + GLMessage_DataType_Type_INT64 = 8 }; bool GLMessage_DataType_Type_IsValid(int value); const GLMessage_DataType_Type GLMessage_DataType_Type_Type_MIN = GLMessage_DataType_Type_VOID; -const GLMessage_DataType_Type GLMessage_DataType_Type_Type_MAX = GLMessage_DataType_Type_ENUM; +const GLMessage_DataType_Type GLMessage_DataType_Type_Type_MAX = GLMessage_DataType_Type_INT64; const int GLMessage_DataType_Type_Type_ARRAYSIZE = GLMessage_DataType_Type_Type_MAX + 1; enum GLMessage_Function { @@ -427,6 +428,110 @@ enum GLMessage_Function { GLMessage_Function_glVertexPointer = 373, GLMessage_Function_glViewport = 374, GLMessage_Function_glWeightPointerOES = 375, + GLMessage_Function_glReadBuffer = 376, + GLMessage_Function_glDrawRangeElements = 377, + GLMessage_Function_glTexImage3D = 378, + GLMessage_Function_glTexSubImage3D = 379, + GLMessage_Function_glCopyTexSubImage3D = 380, + GLMessage_Function_glCompressedTexImage3D = 381, + GLMessage_Function_glCompressedTexSubImage3D = 382, + GLMessage_Function_glGenQueries = 383, + GLMessage_Function_glDeleteQueries = 384, + GLMessage_Function_glIsQuery = 385, + GLMessage_Function_glBeginQuery = 386, + GLMessage_Function_glEndQuery = 387, + GLMessage_Function_glGetQueryiv = 388, + GLMessage_Function_glGetQueryObjectuiv = 389, + GLMessage_Function_glUnmapBuffer = 390, + GLMessage_Function_glGetBufferPointerv = 391, + GLMessage_Function_glDrawBuffers = 392, + GLMessage_Function_glUniformMatrix2x3fv = 393, + GLMessage_Function_glUniformMatrix3x2fv = 394, + GLMessage_Function_glUniformMatrix2x4fv = 395, + GLMessage_Function_glUniformMatrix4x2fv = 396, + GLMessage_Function_glUniformMatrix3x4fv = 397, + GLMessage_Function_glUniformMatrix4x3fv = 398, + GLMessage_Function_glBlitFramebuffer = 399, + GLMessage_Function_glRenderbufferStorageMultisample = 400, + GLMessage_Function_glFramebufferTextureLayer = 401, + GLMessage_Function_glMapBufferRange = 402, + GLMessage_Function_glFlushMappedBufferRange = 403, + GLMessage_Function_glBindVertexArray = 404, + GLMessage_Function_glDeleteVertexArrays = 405, + GLMessage_Function_glGenVertexArrays = 406, + GLMessage_Function_glIsVertexArray = 407, + GLMessage_Function_glGetIntegeri_v = 408, + GLMessage_Function_glBeginTransformFeedback = 409, + GLMessage_Function_glEndTransformFeedback = 410, + GLMessage_Function_glBindBufferRange = 411, + GLMessage_Function_glBindBufferBase = 412, + GLMessage_Function_glTransformFeedbackVaryings = 413, + GLMessage_Function_glGetTransformFeedbackVarying = 414, + GLMessage_Function_glVertexAttribIPointer = 415, + GLMessage_Function_glGetVertexAttribIiv = 416, + GLMessage_Function_glGetVertexAttribIuiv = 417, + GLMessage_Function_glVertexAttribI4i = 418, + GLMessage_Function_glVertexAttribI4ui = 419, + GLMessage_Function_glVertexAttribI4iv = 420, + GLMessage_Function_glVertexAttribI4uiv = 421, + GLMessage_Function_glGetUniformuiv = 422, + GLMessage_Function_glGetFragDataLocation = 423, + GLMessage_Function_glUniform1ui = 424, + GLMessage_Function_glUniform2ui = 425, + GLMessage_Function_glUniform3ui = 426, + GLMessage_Function_glUniform4ui = 427, + GLMessage_Function_glUniform1uiv = 428, + GLMessage_Function_glUniform2uiv = 429, + GLMessage_Function_glUniform3uiv = 430, + GLMessage_Function_glUniform4uiv = 431, + GLMessage_Function_glClearBufferiv = 432, + GLMessage_Function_glClearBufferuiv = 433, + GLMessage_Function_glClearBufferfv = 434, + GLMessage_Function_glClearBufferfi = 435, + GLMessage_Function_glGetStringi = 436, + GLMessage_Function_glCopyBufferSubData = 437, + GLMessage_Function_glGetUniformIndices = 438, + GLMessage_Function_glGetActiveUniformsiv = 439, + GLMessage_Function_glGetUniformBlockIndex = 440, + GLMessage_Function_glGetActiveUniformBlockiv = 441, + GLMessage_Function_glGetActiveUniformBlockName = 442, + GLMessage_Function_glUniformBlockBinding = 443, + GLMessage_Function_glDrawArraysInstanced = 444, + GLMessage_Function_glDrawElementsInstanced = 445, + GLMessage_Function_glFenceSync = 446, + GLMessage_Function_glIsSync = 447, + GLMessage_Function_glDeleteSync = 448, + GLMessage_Function_glClientWaitSync = 449, + GLMessage_Function_glWaitSync = 450, + GLMessage_Function_glGetInteger64v = 451, + GLMessage_Function_glGetSynciv = 452, + GLMessage_Function_glGetInteger64i_v = 453, + GLMessage_Function_glGetBufferParameteri64v = 454, + GLMessage_Function_glGenSamplers = 455, + GLMessage_Function_glDeleteSamplers = 456, + GLMessage_Function_glIsSampler = 457, + GLMessage_Function_glBindSampler = 458, + GLMessage_Function_glSamplerParameteri = 459, + GLMessage_Function_glSamplerParameteriv = 460, + GLMessage_Function_glSamplerParameterf = 461, + GLMessage_Function_glSamplerParameterfv = 462, + GLMessage_Function_glGetSamplerParameteriv = 463, + GLMessage_Function_glGetSamplerParameterfv = 464, + GLMessage_Function_glVertexAttribDivisor = 465, + GLMessage_Function_glBindTransformFeedback = 466, + GLMessage_Function_glDeleteTransformFeedbacks = 467, + GLMessage_Function_glGenTransformFeedbacks = 468, + GLMessage_Function_glIsTransformFeedback = 469, + GLMessage_Function_glPauseTransformFeedback = 470, + GLMessage_Function_glResumeTransformFeedback = 471, + GLMessage_Function_glGetProgramBinary = 472, + GLMessage_Function_glProgramBinary = 473, + GLMessage_Function_glProgramParameteri = 474, + GLMessage_Function_glInvalidateFramebuffer = 475, + GLMessage_Function_glInvalidateSubFramebuffer = 476, + GLMessage_Function_glTexStorage2D = 477, + GLMessage_Function_glTexStorage3D = 478, + GLMessage_Function_glGetInternalformativ = 479, GLMessage_Function_glActiveShaderProgramEXT = 502, GLMessage_Function_glAlphaFuncQCOM = 503, GLMessage_Function_glBeginQueryEXT = 504, @@ -593,6 +698,7 @@ class GLMessage_DataType : public ::google::protobuf::MessageLite { static const Type FLOAT = GLMessage_DataType_Type_FLOAT; static const Type BOOL = GLMessage_DataType_Type_BOOL; static const Type ENUM = GLMessage_DataType_Type_ENUM; + static const Type INT64 = GLMessage_DataType_Type_INT64; static inline bool Type_IsValid(int value) { return GLMessage_DataType_Type_IsValid(value); } @@ -687,6 +793,18 @@ class GLMessage_DataType : public ::google::protobuf::MessageLite { inline ::google::protobuf::RepeatedField< bool >* mutable_boolvalue(); + // repeated int64 int64Value = 8; + inline int int64value_size() const; + inline void clear_int64value(); + static const int kInt64ValueFieldNumber = 8; + inline ::google::protobuf::int64 int64value(int index) const; + inline void set_int64value(int index, ::google::protobuf::int64 value); + inline void add_int64value(::google::protobuf::int64 value); + inline const ::google::protobuf::RepeatedField< ::google::protobuf::int64 >& + int64value() const; + inline ::google::protobuf::RepeatedField< ::google::protobuf::int64 >* + mutable_int64value(); + // @@protoc_insertion_point(class_scope:android.gltrace.GLMessage.DataType) private: mutable int _cached_size_; @@ -698,11 +816,12 @@ class GLMessage_DataType : public ::google::protobuf::MessageLite { ::google::protobuf::RepeatedPtrField< ::std::string> charvalue_; ::google::protobuf::RepeatedPtrField< ::std::string> rawbytes_; ::google::protobuf::RepeatedField< bool > boolvalue_; + ::google::protobuf::RepeatedField< ::google::protobuf::int64 > int64value_; friend void protobuf_AddDesc_gltrace_2eproto(); friend void protobuf_AssignDesc_gltrace_2eproto(); friend void protobuf_ShutdownFile_gltrace_2eproto(); - ::google::protobuf::uint32 _has_bits_[(7 + 31) / 32]; + ::google::protobuf::uint32 _has_bits_[(8 + 31) / 32]; // WHY DOES & HAVE LOWER PRECEDENCE THAN != !? inline bool _has_bit(int index) const { @@ -1243,6 +1362,110 @@ class GLMessage : public ::google::protobuf::MessageLite { static const Function glVertexPointer = GLMessage_Function_glVertexPointer; static const Function glViewport = GLMessage_Function_glViewport; static const Function glWeightPointerOES = GLMessage_Function_glWeightPointerOES; + static const Function glReadBuffer = GLMessage_Function_glReadBuffer; + static const Function glDrawRangeElements = GLMessage_Function_glDrawRangeElements; + static const Function glTexImage3D = GLMessage_Function_glTexImage3D; + static const Function glTexSubImage3D = GLMessage_Function_glTexSubImage3D; + static const Function glCopyTexSubImage3D = GLMessage_Function_glCopyTexSubImage3D; + static const Function glCompressedTexImage3D = GLMessage_Function_glCompressedTexImage3D; + static const Function glCompressedTexSubImage3D = GLMessage_Function_glCompressedTexSubImage3D; + static const Function glGenQueries = GLMessage_Function_glGenQueries; + static const Function glDeleteQueries = GLMessage_Function_glDeleteQueries; + static const Function glIsQuery = GLMessage_Function_glIsQuery; + static const Function glBeginQuery = GLMessage_Function_glBeginQuery; + static const Function glEndQuery = GLMessage_Function_glEndQuery; + static const Function glGetQueryiv = GLMessage_Function_glGetQueryiv; + static const Function glGetQueryObjectuiv = GLMessage_Function_glGetQueryObjectuiv; + static const Function glUnmapBuffer = GLMessage_Function_glUnmapBuffer; + static const Function glGetBufferPointerv = GLMessage_Function_glGetBufferPointerv; + static const Function glDrawBuffers = GLMessage_Function_glDrawBuffers; + static const Function glUniformMatrix2x3fv = GLMessage_Function_glUniformMatrix2x3fv; + static const Function glUniformMatrix3x2fv = GLMessage_Function_glUniformMatrix3x2fv; + static const Function glUniformMatrix2x4fv = GLMessage_Function_glUniformMatrix2x4fv; + static const Function glUniformMatrix4x2fv = GLMessage_Function_glUniformMatrix4x2fv; + static const Function glUniformMatrix3x4fv = GLMessage_Function_glUniformMatrix3x4fv; + static const Function glUniformMatrix4x3fv = GLMessage_Function_glUniformMatrix4x3fv; + static const Function glBlitFramebuffer = GLMessage_Function_glBlitFramebuffer; + static const Function glRenderbufferStorageMultisample = GLMessage_Function_glRenderbufferStorageMultisample; + static const Function glFramebufferTextureLayer = GLMessage_Function_glFramebufferTextureLayer; + static const Function glMapBufferRange = GLMessage_Function_glMapBufferRange; + static const Function glFlushMappedBufferRange = GLMessage_Function_glFlushMappedBufferRange; + static const Function glBindVertexArray = GLMessage_Function_glBindVertexArray; + static const Function glDeleteVertexArrays = GLMessage_Function_glDeleteVertexArrays; + static const Function glGenVertexArrays = GLMessage_Function_glGenVertexArrays; + static const Function glIsVertexArray = GLMessage_Function_glIsVertexArray; + static const Function glGetIntegeri_v = GLMessage_Function_glGetIntegeri_v; + static const Function glBeginTransformFeedback = GLMessage_Function_glBeginTransformFeedback; + static const Function glEndTransformFeedback = GLMessage_Function_glEndTransformFeedback; + static const Function glBindBufferRange = GLMessage_Function_glBindBufferRange; + static const Function glBindBufferBase = GLMessage_Function_glBindBufferBase; + static const Function glTransformFeedbackVaryings = GLMessage_Function_glTransformFeedbackVaryings; + static const Function glGetTransformFeedbackVarying = GLMessage_Function_glGetTransformFeedbackVarying; + static const Function glVertexAttribIPointer = GLMessage_Function_glVertexAttribIPointer; + static const Function glGetVertexAttribIiv = GLMessage_Function_glGetVertexAttribIiv; + static const Function glGetVertexAttribIuiv = GLMessage_Function_glGetVertexAttribIuiv; + static const Function glVertexAttribI4i = GLMessage_Function_glVertexAttribI4i; + static const Function glVertexAttribI4ui = GLMessage_Function_glVertexAttribI4ui; + static const Function glVertexAttribI4iv = GLMessage_Function_glVertexAttribI4iv; + static const Function glVertexAttribI4uiv = GLMessage_Function_glVertexAttribI4uiv; + static const Function glGetUniformuiv = GLMessage_Function_glGetUniformuiv; + static const Function glGetFragDataLocation = GLMessage_Function_glGetFragDataLocation; + static const Function glUniform1ui = GLMessage_Function_glUniform1ui; + static const Function glUniform2ui = GLMessage_Function_glUniform2ui; + static const Function glUniform3ui = GLMessage_Function_glUniform3ui; + static const Function glUniform4ui = GLMessage_Function_glUniform4ui; + static const Function glUniform1uiv = GLMessage_Function_glUniform1uiv; + static const Function glUniform2uiv = GLMessage_Function_glUniform2uiv; + static const Function glUniform3uiv = GLMessage_Function_glUniform3uiv; + static const Function glUniform4uiv = GLMessage_Function_glUniform4uiv; + static const Function glClearBufferiv = GLMessage_Function_glClearBufferiv; + static const Function glClearBufferuiv = GLMessage_Function_glClearBufferuiv; + static const Function glClearBufferfv = GLMessage_Function_glClearBufferfv; + static const Function glClearBufferfi = GLMessage_Function_glClearBufferfi; + static const Function glGetStringi = GLMessage_Function_glGetStringi; + static const Function glCopyBufferSubData = GLMessage_Function_glCopyBufferSubData; + static const Function glGetUniformIndices = GLMessage_Function_glGetUniformIndices; + static const Function glGetActiveUniformsiv = GLMessage_Function_glGetActiveUniformsiv; + static const Function glGetUniformBlockIndex = GLMessage_Function_glGetUniformBlockIndex; + static const Function glGetActiveUniformBlockiv = GLMessage_Function_glGetActiveUniformBlockiv; + static const Function glGetActiveUniformBlockName = GLMessage_Function_glGetActiveUniformBlockName; + static const Function glUniformBlockBinding = GLMessage_Function_glUniformBlockBinding; + static const Function glDrawArraysInstanced = GLMessage_Function_glDrawArraysInstanced; + static const Function glDrawElementsInstanced = GLMessage_Function_glDrawElementsInstanced; + static const Function glFenceSync = GLMessage_Function_glFenceSync; + static const Function glIsSync = GLMessage_Function_glIsSync; + static const Function glDeleteSync = GLMessage_Function_glDeleteSync; + static const Function glClientWaitSync = GLMessage_Function_glClientWaitSync; + static const Function glWaitSync = GLMessage_Function_glWaitSync; + static const Function glGetInteger64v = GLMessage_Function_glGetInteger64v; + static const Function glGetSynciv = GLMessage_Function_glGetSynciv; + static const Function glGetInteger64i_v = GLMessage_Function_glGetInteger64i_v; + static const Function glGetBufferParameteri64v = GLMessage_Function_glGetBufferParameteri64v; + static const Function glGenSamplers = GLMessage_Function_glGenSamplers; + static const Function glDeleteSamplers = GLMessage_Function_glDeleteSamplers; + static const Function glIsSampler = GLMessage_Function_glIsSampler; + static const Function glBindSampler = GLMessage_Function_glBindSampler; + static const Function glSamplerParameteri = GLMessage_Function_glSamplerParameteri; + static const Function glSamplerParameteriv = GLMessage_Function_glSamplerParameteriv; + static const Function glSamplerParameterf = GLMessage_Function_glSamplerParameterf; + static const Function glSamplerParameterfv = GLMessage_Function_glSamplerParameterfv; + static const Function glGetSamplerParameteriv = GLMessage_Function_glGetSamplerParameteriv; + static const Function glGetSamplerParameterfv = GLMessage_Function_glGetSamplerParameterfv; + static const Function glVertexAttribDivisor = GLMessage_Function_glVertexAttribDivisor; + static const Function glBindTransformFeedback = GLMessage_Function_glBindTransformFeedback; + static const Function glDeleteTransformFeedbacks = GLMessage_Function_glDeleteTransformFeedbacks; + static const Function glGenTransformFeedbacks = GLMessage_Function_glGenTransformFeedbacks; + static const Function glIsTransformFeedback = GLMessage_Function_glIsTransformFeedback; + static const Function glPauseTransformFeedback = GLMessage_Function_glPauseTransformFeedback; + static const Function glResumeTransformFeedback = GLMessage_Function_glResumeTransformFeedback; + static const Function glGetProgramBinary = GLMessage_Function_glGetProgramBinary; + static const Function glProgramBinary = GLMessage_Function_glProgramBinary; + static const Function glProgramParameteri = GLMessage_Function_glProgramParameteri; + static const Function glInvalidateFramebuffer = GLMessage_Function_glInvalidateFramebuffer; + static const Function glInvalidateSubFramebuffer = GLMessage_Function_glInvalidateSubFramebuffer; + static const Function glTexStorage2D = GLMessage_Function_glTexStorage2D; + static const Function glTexStorage3D = GLMessage_Function_glTexStorage3D; + static const Function glGetInternalformativ = GLMessage_Function_glGetInternalformativ; static const Function glActiveShaderProgramEXT = GLMessage_Function_glActiveShaderProgramEXT; static const Function glAlphaFuncQCOM = GLMessage_Function_glAlphaFuncQCOM; static const Function glBeginQueryEXT = GLMessage_Function_glBeginQueryEXT; @@ -1660,6 +1883,31 @@ GLMessage_DataType::mutable_boolvalue() { return &boolvalue_; } +// repeated int64 int64Value = 8; +inline int GLMessage_DataType::int64value_size() const { + return int64value_.size(); +} +inline void GLMessage_DataType::clear_int64value() { + int64value_.Clear(); +} +inline ::google::protobuf::int64 GLMessage_DataType::int64value(int index) const { + return int64value_.Get(index); +} +inline void GLMessage_DataType::set_int64value(int index, ::google::protobuf::int64 value) { + int64value_.Set(index, value); +} +inline void GLMessage_DataType::add_int64value(::google::protobuf::int64 value) { + int64value_.Add(value); +} +inline const ::google::protobuf::RepeatedField< ::google::protobuf::int64 >& +GLMessage_DataType::int64value() const { + return int64value_; +} +inline ::google::protobuf::RepeatedField< ::google::protobuf::int64 >* +GLMessage_DataType::mutable_int64value() { + return &int64value_; +} + // ------------------------------------------------------------------- // GLMessage_FrameBuffer diff --git a/opengl/libs/GLES_trace/src/gltrace_api.cpp b/opengl/libs/GLES_trace/src/gltrace_api.cpp index d7ab3c3..2b1a702 100644 --- a/opengl/libs/GLES_trace/src/gltrace_api.cpp +++ b/opengl/libs/GLES_trace/src/gltrace_api.cpp @@ -18,7 +18,7 @@ #include <cutils/log.h> #include <utils/Timers.h> -#include <GLES2/gl2.h> +#include <GLES3/gl3.h> #include "gltrace.pb.h" #include "gltrace_context.h" @@ -28,7 +28,7 @@ namespace android { namespace gltrace { -// Definitions for GL2 APIs +// Definitions for GL3 APIs void GLTrace_glActiveTexture(GLenum texture) { GLMessage glmsg; @@ -269,7 +269,7 @@ void GLTrace_glBindTexture(GLenum target, GLuint texture) { glContext->traceGLMessage(&glmsg); } -void GLTrace_glBlendColor(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha) { +void GLTrace_glBlendColor(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha) { GLMessage glmsg; GLTraceContext *glContext = getGLTraceContext(); @@ -615,7 +615,7 @@ void GLTrace_glClear(GLbitfield mask) { glContext->traceGLMessage(&glmsg); } -void GLTrace_glClearColor(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha) { +void GLTrace_glClearColor(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha) { GLMessage glmsg; GLTraceContext *glContext = getGLTraceContext(); @@ -661,7 +661,7 @@ void GLTrace_glClearColor(GLclampf red, GLclampf green, GLclampf blue, GLclampf glContext->traceGLMessage(&glmsg); } -void GLTrace_glClearDepthf(GLclampf depth) { +void GLTrace_glClearDepthf(GLfloat depth) { GLMessage glmsg; GLTraceContext *glContext = getGLTraceContext(); @@ -1425,28 +1425,28 @@ void GLTrace_glDepthMask(GLboolean flag) { glContext->traceGLMessage(&glmsg); } -void GLTrace_glDepthRangef(GLclampf zNear, GLclampf zFar) { +void GLTrace_glDepthRangef(GLfloat n, GLfloat f) { GLMessage glmsg; GLTraceContext *glContext = getGLTraceContext(); glmsg.set_function(GLMessage::glDepthRangef); - // copy argument zNear - GLMessage_DataType *arg_zNear = glmsg.add_args(); - arg_zNear->set_isarray(false); - arg_zNear->set_type(GLMessage::DataType::FLOAT); - arg_zNear->add_floatvalue(zNear); + // copy argument n + GLMessage_DataType *arg_n = glmsg.add_args(); + arg_n->set_isarray(false); + arg_n->set_type(GLMessage::DataType::FLOAT); + arg_n->add_floatvalue(n); - // copy argument zFar - GLMessage_DataType *arg_zFar = glmsg.add_args(); - arg_zFar->set_isarray(false); - arg_zFar->set_type(GLMessage::DataType::FLOAT); - arg_zFar->add_floatvalue(zFar); + // copy argument f + GLMessage_DataType *arg_f = glmsg.add_args(); + arg_f->set_isarray(false); + arg_f->set_type(GLMessage::DataType::FLOAT); + arg_f->add_floatvalue(f); // call function nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD); - glContext->hooks->gl.glDepthRangef(zNear, zFar); + glContext->hooks->gl.glDepthRangef(n, f); nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD); nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC); @@ -3705,7 +3705,7 @@ void GLTrace_glRenderbufferStorage(GLenum target, GLenum internalformat, GLsizei glContext->traceGLMessage(&glmsg); } -void GLTrace_glSampleCoverage(GLclampf value, GLboolean invert) { +void GLTrace_glSampleCoverage(GLfloat value, GLboolean invert) { GLMessage glmsg; GLTraceContext *glContext = getGLTraceContext(); @@ -5723,6 +5723,4626 @@ void GLTrace_glViewport(GLint x, GLint y, GLsizei width, GLsizei height) { glContext->traceGLMessage(&glmsg); } +void GLTrace_glReadBuffer(GLenum mode) { + GLMessage glmsg; + GLTraceContext *glContext = getGLTraceContext(); + + glmsg.set_function(GLMessage::glReadBuffer); + + // copy argument mode + GLMessage_DataType *arg_mode = glmsg.add_args(); + arg_mode->set_isarray(false); + arg_mode->set_type(GLMessage::DataType::ENUM); + arg_mode->add_intvalue((int)mode); + + // call function + nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); + nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD); + glContext->hooks->gl.glReadBuffer(mode); + nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD); + nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC); + + void *pointerArgs[] = { + }; + + fixupGLMessage(glContext, wallStartTime, wallEndTime, + threadStartTime, threadEndTime, + &glmsg, pointerArgs); + glContext->traceGLMessage(&glmsg); +} + +void GLTrace_glDrawRangeElements(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid* indices) { + GLMessage glmsg; + GLTraceContext *glContext = getGLTraceContext(); + + glmsg.set_function(GLMessage::glDrawRangeElements); + + // copy argument mode + GLMessage_DataType *arg_mode = glmsg.add_args(); + arg_mode->set_isarray(false); + arg_mode->set_type(GLMessage::DataType::ENUM); + arg_mode->add_intvalue((int)mode); + + // copy argument start + GLMessage_DataType *arg_start = glmsg.add_args(); + arg_start->set_isarray(false); + arg_start->set_type(GLMessage::DataType::INT); + arg_start->add_intvalue(start); + + // copy argument end + GLMessage_DataType *arg_end = glmsg.add_args(); + arg_end->set_isarray(false); + arg_end->set_type(GLMessage::DataType::INT); + arg_end->add_intvalue(end); + + // copy argument count + GLMessage_DataType *arg_count = glmsg.add_args(); + arg_count->set_isarray(false); + arg_count->set_type(GLMessage::DataType::INT); + arg_count->add_intvalue(count); + + // copy argument type + GLMessage_DataType *arg_type = glmsg.add_args(); + arg_type->set_isarray(false); + arg_type->set_type(GLMessage::DataType::ENUM); + arg_type->add_intvalue((int)type); + + // copy argument indices + GLMessage_DataType *arg_indices = glmsg.add_args(); + arg_indices->set_isarray(false); + arg_indices->set_type(GLMessage::DataType::INT); + arg_indices->add_intvalue((int)indices); + + // call function + nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); + nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD); + glContext->hooks->gl.glDrawRangeElements(mode, start, end, count, type, indices); + nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD); + nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC); + + void *pointerArgs[] = { + (void *) indices, + }; + + fixupGLMessage(glContext, wallStartTime, wallEndTime, + threadStartTime, threadEndTime, + &glmsg, pointerArgs); + glContext->traceGLMessage(&glmsg); +} + +void GLTrace_glTexImage3D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid* pixels) { + GLMessage glmsg; + GLTraceContext *glContext = getGLTraceContext(); + + glmsg.set_function(GLMessage::glTexImage3D); + + // copy argument target + GLMessage_DataType *arg_target = glmsg.add_args(); + arg_target->set_isarray(false); + arg_target->set_type(GLMessage::DataType::ENUM); + arg_target->add_intvalue((int)target); + + // copy argument level + GLMessage_DataType *arg_level = glmsg.add_args(); + arg_level->set_isarray(false); + arg_level->set_type(GLMessage::DataType::INT); + arg_level->add_intvalue(level); + + // copy argument internalformat + GLMessage_DataType *arg_internalformat = glmsg.add_args(); + arg_internalformat->set_isarray(false); + arg_internalformat->set_type(GLMessage::DataType::INT); + arg_internalformat->add_intvalue(internalformat); + + // copy argument width + GLMessage_DataType *arg_width = glmsg.add_args(); + arg_width->set_isarray(false); + arg_width->set_type(GLMessage::DataType::INT); + arg_width->add_intvalue(width); + + // copy argument height + GLMessage_DataType *arg_height = glmsg.add_args(); + arg_height->set_isarray(false); + arg_height->set_type(GLMessage::DataType::INT); + arg_height->add_intvalue(height); + + // copy argument depth + GLMessage_DataType *arg_depth = glmsg.add_args(); + arg_depth->set_isarray(false); + arg_depth->set_type(GLMessage::DataType::INT); + arg_depth->add_intvalue(depth); + + // copy argument border + GLMessage_DataType *arg_border = glmsg.add_args(); + arg_border->set_isarray(false); + arg_border->set_type(GLMessage::DataType::INT); + arg_border->add_intvalue(border); + + // copy argument format + GLMessage_DataType *arg_format = glmsg.add_args(); + arg_format->set_isarray(false); + arg_format->set_type(GLMessage::DataType::ENUM); + arg_format->add_intvalue((int)format); + + // copy argument type + GLMessage_DataType *arg_type = glmsg.add_args(); + arg_type->set_isarray(false); + arg_type->set_type(GLMessage::DataType::ENUM); + arg_type->add_intvalue((int)type); + + // copy argument pixels + GLMessage_DataType *arg_pixels = glmsg.add_args(); + arg_pixels->set_isarray(false); + arg_pixels->set_type(GLMessage::DataType::INT); + arg_pixels->add_intvalue((int)pixels); + + // call function + nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); + nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD); + glContext->hooks->gl.glTexImage3D(target, level, internalformat, width, height, depth, border, format, type, pixels); + nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD); + nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC); + + void *pointerArgs[] = { + (void *) pixels, + }; + + fixupGLMessage(glContext, wallStartTime, wallEndTime, + threadStartTime, threadEndTime, + &glmsg, pointerArgs); + glContext->traceGLMessage(&glmsg); +} + +void GLTrace_glTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid* pixels) { + GLMessage glmsg; + GLTraceContext *glContext = getGLTraceContext(); + + glmsg.set_function(GLMessage::glTexSubImage3D); + + // copy argument target + GLMessage_DataType *arg_target = glmsg.add_args(); + arg_target->set_isarray(false); + arg_target->set_type(GLMessage::DataType::ENUM); + arg_target->add_intvalue((int)target); + + // copy argument level + GLMessage_DataType *arg_level = glmsg.add_args(); + arg_level->set_isarray(false); + arg_level->set_type(GLMessage::DataType::INT); + arg_level->add_intvalue(level); + + // copy argument xoffset + GLMessage_DataType *arg_xoffset = glmsg.add_args(); + arg_xoffset->set_isarray(false); + arg_xoffset->set_type(GLMessage::DataType::INT); + arg_xoffset->add_intvalue(xoffset); + + // copy argument yoffset + GLMessage_DataType *arg_yoffset = glmsg.add_args(); + arg_yoffset->set_isarray(false); + arg_yoffset->set_type(GLMessage::DataType::INT); + arg_yoffset->add_intvalue(yoffset); + + // copy argument zoffset + GLMessage_DataType *arg_zoffset = glmsg.add_args(); + arg_zoffset->set_isarray(false); + arg_zoffset->set_type(GLMessage::DataType::INT); + arg_zoffset->add_intvalue(zoffset); + + // copy argument width + GLMessage_DataType *arg_width = glmsg.add_args(); + arg_width->set_isarray(false); + arg_width->set_type(GLMessage::DataType::INT); + arg_width->add_intvalue(width); + + // copy argument height + GLMessage_DataType *arg_height = glmsg.add_args(); + arg_height->set_isarray(false); + arg_height->set_type(GLMessage::DataType::INT); + arg_height->add_intvalue(height); + + // copy argument depth + GLMessage_DataType *arg_depth = glmsg.add_args(); + arg_depth->set_isarray(false); + arg_depth->set_type(GLMessage::DataType::INT); + arg_depth->add_intvalue(depth); + + // copy argument format + GLMessage_DataType *arg_format = glmsg.add_args(); + arg_format->set_isarray(false); + arg_format->set_type(GLMessage::DataType::ENUM); + arg_format->add_intvalue((int)format); + + // copy argument type + GLMessage_DataType *arg_type = glmsg.add_args(); + arg_type->set_isarray(false); + arg_type->set_type(GLMessage::DataType::ENUM); + arg_type->add_intvalue((int)type); + + // copy argument pixels + GLMessage_DataType *arg_pixels = glmsg.add_args(); + arg_pixels->set_isarray(false); + arg_pixels->set_type(GLMessage::DataType::INT); + arg_pixels->add_intvalue((int)pixels); + + // call function + nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); + nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD); + glContext->hooks->gl.glTexSubImage3D(target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, pixels); + nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD); + nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC); + + void *pointerArgs[] = { + (void *) pixels, + }; + + fixupGLMessage(glContext, wallStartTime, wallEndTime, + threadStartTime, threadEndTime, + &glmsg, pointerArgs); + glContext->traceGLMessage(&glmsg); +} + +void GLTrace_glCopyTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height) { + GLMessage glmsg; + GLTraceContext *glContext = getGLTraceContext(); + + glmsg.set_function(GLMessage::glCopyTexSubImage3D); + + // copy argument target + GLMessage_DataType *arg_target = glmsg.add_args(); + arg_target->set_isarray(false); + arg_target->set_type(GLMessage::DataType::ENUM); + arg_target->add_intvalue((int)target); + + // copy argument level + GLMessage_DataType *arg_level = glmsg.add_args(); + arg_level->set_isarray(false); + arg_level->set_type(GLMessage::DataType::INT); + arg_level->add_intvalue(level); + + // copy argument xoffset + GLMessage_DataType *arg_xoffset = glmsg.add_args(); + arg_xoffset->set_isarray(false); + arg_xoffset->set_type(GLMessage::DataType::INT); + arg_xoffset->add_intvalue(xoffset); + + // copy argument yoffset + GLMessage_DataType *arg_yoffset = glmsg.add_args(); + arg_yoffset->set_isarray(false); + arg_yoffset->set_type(GLMessage::DataType::INT); + arg_yoffset->add_intvalue(yoffset); + + // copy argument zoffset + GLMessage_DataType *arg_zoffset = glmsg.add_args(); + arg_zoffset->set_isarray(false); + arg_zoffset->set_type(GLMessage::DataType::INT); + arg_zoffset->add_intvalue(zoffset); + + // copy argument x + GLMessage_DataType *arg_x = glmsg.add_args(); + arg_x->set_isarray(false); + arg_x->set_type(GLMessage::DataType::INT); + arg_x->add_intvalue(x); + + // copy argument y + GLMessage_DataType *arg_y = glmsg.add_args(); + arg_y->set_isarray(false); + arg_y->set_type(GLMessage::DataType::INT); + arg_y->add_intvalue(y); + + // copy argument width + GLMessage_DataType *arg_width = glmsg.add_args(); + arg_width->set_isarray(false); + arg_width->set_type(GLMessage::DataType::INT); + arg_width->add_intvalue(width); + + // copy argument height + GLMessage_DataType *arg_height = glmsg.add_args(); + arg_height->set_isarray(false); + arg_height->set_type(GLMessage::DataType::INT); + arg_height->add_intvalue(height); + + // call function + nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); + nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD); + glContext->hooks->gl.glCopyTexSubImage3D(target, level, xoffset, yoffset, zoffset, x, y, width, height); + nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD); + nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC); + + void *pointerArgs[] = { + }; + + fixupGLMessage(glContext, wallStartTime, wallEndTime, + threadStartTime, threadEndTime, + &glmsg, pointerArgs); + glContext->traceGLMessage(&glmsg); +} + +void GLTrace_glCompressedTexImage3D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid* data) { + GLMessage glmsg; + GLTraceContext *glContext = getGLTraceContext(); + + glmsg.set_function(GLMessage::glCompressedTexImage3D); + + // copy argument target + GLMessage_DataType *arg_target = glmsg.add_args(); + arg_target->set_isarray(false); + arg_target->set_type(GLMessage::DataType::ENUM); + arg_target->add_intvalue((int)target); + + // copy argument level + GLMessage_DataType *arg_level = glmsg.add_args(); + arg_level->set_isarray(false); + arg_level->set_type(GLMessage::DataType::INT); + arg_level->add_intvalue(level); + + // copy argument internalformat + GLMessage_DataType *arg_internalformat = glmsg.add_args(); + arg_internalformat->set_isarray(false); + arg_internalformat->set_type(GLMessage::DataType::ENUM); + arg_internalformat->add_intvalue((int)internalformat); + + // copy argument width + GLMessage_DataType *arg_width = glmsg.add_args(); + arg_width->set_isarray(false); + arg_width->set_type(GLMessage::DataType::INT); + arg_width->add_intvalue(width); + + // copy argument height + GLMessage_DataType *arg_height = glmsg.add_args(); + arg_height->set_isarray(false); + arg_height->set_type(GLMessage::DataType::INT); + arg_height->add_intvalue(height); + + // copy argument depth + GLMessage_DataType *arg_depth = glmsg.add_args(); + arg_depth->set_isarray(false); + arg_depth->set_type(GLMessage::DataType::INT); + arg_depth->add_intvalue(depth); + + // copy argument border + GLMessage_DataType *arg_border = glmsg.add_args(); + arg_border->set_isarray(false); + arg_border->set_type(GLMessage::DataType::INT); + arg_border->add_intvalue(border); + + // copy argument imageSize + GLMessage_DataType *arg_imageSize = glmsg.add_args(); + arg_imageSize->set_isarray(false); + arg_imageSize->set_type(GLMessage::DataType::INT); + arg_imageSize->add_intvalue(imageSize); + + // copy argument data + GLMessage_DataType *arg_data = glmsg.add_args(); + arg_data->set_isarray(false); + arg_data->set_type(GLMessage::DataType::INT); + arg_data->add_intvalue((int)data); + + // call function + nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); + nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD); + glContext->hooks->gl.glCompressedTexImage3D(target, level, internalformat, width, height, depth, border, imageSize, data); + nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD); + nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC); + + void *pointerArgs[] = { + (void *) data, + }; + + fixupGLMessage(glContext, wallStartTime, wallEndTime, + threadStartTime, threadEndTime, + &glmsg, pointerArgs); + glContext->traceGLMessage(&glmsg); +} + +void GLTrace_glCompressedTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid* data) { + GLMessage glmsg; + GLTraceContext *glContext = getGLTraceContext(); + + glmsg.set_function(GLMessage::glCompressedTexSubImage3D); + + // copy argument target + GLMessage_DataType *arg_target = glmsg.add_args(); + arg_target->set_isarray(false); + arg_target->set_type(GLMessage::DataType::ENUM); + arg_target->add_intvalue((int)target); + + // copy argument level + GLMessage_DataType *arg_level = glmsg.add_args(); + arg_level->set_isarray(false); + arg_level->set_type(GLMessage::DataType::INT); + arg_level->add_intvalue(level); + + // copy argument xoffset + GLMessage_DataType *arg_xoffset = glmsg.add_args(); + arg_xoffset->set_isarray(false); + arg_xoffset->set_type(GLMessage::DataType::INT); + arg_xoffset->add_intvalue(xoffset); + + // copy argument yoffset + GLMessage_DataType *arg_yoffset = glmsg.add_args(); + arg_yoffset->set_isarray(false); + arg_yoffset->set_type(GLMessage::DataType::INT); + arg_yoffset->add_intvalue(yoffset); + + // copy argument zoffset + GLMessage_DataType *arg_zoffset = glmsg.add_args(); + arg_zoffset->set_isarray(false); + arg_zoffset->set_type(GLMessage::DataType::INT); + arg_zoffset->add_intvalue(zoffset); + + // copy argument width + GLMessage_DataType *arg_width = glmsg.add_args(); + arg_width->set_isarray(false); + arg_width->set_type(GLMessage::DataType::INT); + arg_width->add_intvalue(width); + + // copy argument height + GLMessage_DataType *arg_height = glmsg.add_args(); + arg_height->set_isarray(false); + arg_height->set_type(GLMessage::DataType::INT); + arg_height->add_intvalue(height); + + // copy argument depth + GLMessage_DataType *arg_depth = glmsg.add_args(); + arg_depth->set_isarray(false); + arg_depth->set_type(GLMessage::DataType::INT); + arg_depth->add_intvalue(depth); + + // copy argument format + GLMessage_DataType *arg_format = glmsg.add_args(); + arg_format->set_isarray(false); + arg_format->set_type(GLMessage::DataType::ENUM); + arg_format->add_intvalue((int)format); + + // copy argument imageSize + GLMessage_DataType *arg_imageSize = glmsg.add_args(); + arg_imageSize->set_isarray(false); + arg_imageSize->set_type(GLMessage::DataType::INT); + arg_imageSize->add_intvalue(imageSize); + + // copy argument data + GLMessage_DataType *arg_data = glmsg.add_args(); + arg_data->set_isarray(false); + arg_data->set_type(GLMessage::DataType::INT); + arg_data->add_intvalue((int)data); + + // call function + nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); + nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD); + glContext->hooks->gl.glCompressedTexSubImage3D(target, level, xoffset, yoffset, zoffset, width, height, depth, format, imageSize, data); + nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD); + nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC); + + void *pointerArgs[] = { + (void *) data, + }; + + fixupGLMessage(glContext, wallStartTime, wallEndTime, + threadStartTime, threadEndTime, + &glmsg, pointerArgs); + glContext->traceGLMessage(&glmsg); +} + +void GLTrace_glGenQueries(GLsizei n, GLuint* ids) { + GLMessage glmsg; + GLTraceContext *glContext = getGLTraceContext(); + + glmsg.set_function(GLMessage::glGenQueries); + + // copy argument n + GLMessage_DataType *arg_n = glmsg.add_args(); + arg_n->set_isarray(false); + arg_n->set_type(GLMessage::DataType::INT); + arg_n->add_intvalue(n); + + // copy argument ids + GLMessage_DataType *arg_ids = glmsg.add_args(); + arg_ids->set_isarray(false); + arg_ids->set_type(GLMessage::DataType::INT); + arg_ids->add_intvalue((int)ids); + + // call function + nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); + nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD); + glContext->hooks->gl.glGenQueries(n, ids); + nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD); + nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC); + + void *pointerArgs[] = { + (void *) ids, + }; + + fixupGLMessage(glContext, wallStartTime, wallEndTime, + threadStartTime, threadEndTime, + &glmsg, pointerArgs); + glContext->traceGLMessage(&glmsg); +} + +void GLTrace_glDeleteQueries(GLsizei n, const GLuint* ids) { + GLMessage glmsg; + GLTraceContext *glContext = getGLTraceContext(); + + glmsg.set_function(GLMessage::glDeleteQueries); + + // copy argument n + GLMessage_DataType *arg_n = glmsg.add_args(); + arg_n->set_isarray(false); + arg_n->set_type(GLMessage::DataType::INT); + arg_n->add_intvalue(n); + + // copy argument ids + GLMessage_DataType *arg_ids = glmsg.add_args(); + arg_ids->set_isarray(false); + arg_ids->set_type(GLMessage::DataType::INT); + arg_ids->add_intvalue((int)ids); + + // call function + nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); + nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD); + glContext->hooks->gl.glDeleteQueries(n, ids); + nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD); + nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC); + + void *pointerArgs[] = { + (void *) ids, + }; + + fixupGLMessage(glContext, wallStartTime, wallEndTime, + threadStartTime, threadEndTime, + &glmsg, pointerArgs); + glContext->traceGLMessage(&glmsg); +} + +GLboolean GLTrace_glIsQuery(GLuint id) { + GLMessage glmsg; + GLTraceContext *glContext = getGLTraceContext(); + + glmsg.set_function(GLMessage::glIsQuery); + + // copy argument id + GLMessage_DataType *arg_id = glmsg.add_args(); + arg_id->set_isarray(false); + arg_id->set_type(GLMessage::DataType::INT); + arg_id->add_intvalue(id); + + // call function + nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); + nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD); + GLboolean retValue = glContext->hooks->gl.glIsQuery(id); + nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD); + nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC); + + // set return value + GLMessage_DataType *rt = glmsg.mutable_returnvalue(); + rt->set_isarray(false); + rt->set_type(GLMessage::DataType::BOOL); + rt->add_boolvalue(retValue); + + void *pointerArgs[] = { + }; + + fixupGLMessage(glContext, wallStartTime, wallEndTime, + threadStartTime, threadEndTime, + &glmsg, pointerArgs); + glContext->traceGLMessage(&glmsg); + + return retValue; +} + +void GLTrace_glBeginQuery(GLenum target, GLuint id) { + GLMessage glmsg; + GLTraceContext *glContext = getGLTraceContext(); + + glmsg.set_function(GLMessage::glBeginQuery); + + // copy argument target + GLMessage_DataType *arg_target = glmsg.add_args(); + arg_target->set_isarray(false); + arg_target->set_type(GLMessage::DataType::ENUM); + arg_target->add_intvalue((int)target); + + // copy argument id + GLMessage_DataType *arg_id = glmsg.add_args(); + arg_id->set_isarray(false); + arg_id->set_type(GLMessage::DataType::INT); + arg_id->add_intvalue(id); + + // call function + nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); + nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD); + glContext->hooks->gl.glBeginQuery(target, id); + nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD); + nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC); + + void *pointerArgs[] = { + }; + + fixupGLMessage(glContext, wallStartTime, wallEndTime, + threadStartTime, threadEndTime, + &glmsg, pointerArgs); + glContext->traceGLMessage(&glmsg); +} + +void GLTrace_glEndQuery(GLenum target) { + GLMessage glmsg; + GLTraceContext *glContext = getGLTraceContext(); + + glmsg.set_function(GLMessage::glEndQuery); + + // copy argument target + GLMessage_DataType *arg_target = glmsg.add_args(); + arg_target->set_isarray(false); + arg_target->set_type(GLMessage::DataType::ENUM); + arg_target->add_intvalue((int)target); + + // call function + nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); + nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD); + glContext->hooks->gl.glEndQuery(target); + nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD); + nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC); + + void *pointerArgs[] = { + }; + + fixupGLMessage(glContext, wallStartTime, wallEndTime, + threadStartTime, threadEndTime, + &glmsg, pointerArgs); + glContext->traceGLMessage(&glmsg); +} + +void GLTrace_glGetQueryiv(GLenum target, GLenum pname, GLint* params) { + GLMessage glmsg; + GLTraceContext *glContext = getGLTraceContext(); + + glmsg.set_function(GLMessage::glGetQueryiv); + + // copy argument target + GLMessage_DataType *arg_target = glmsg.add_args(); + arg_target->set_isarray(false); + arg_target->set_type(GLMessage::DataType::ENUM); + arg_target->add_intvalue((int)target); + + // copy argument pname + GLMessage_DataType *arg_pname = glmsg.add_args(); + arg_pname->set_isarray(false); + arg_pname->set_type(GLMessage::DataType::ENUM); + arg_pname->add_intvalue((int)pname); + + // copy argument params + GLMessage_DataType *arg_params = glmsg.add_args(); + arg_params->set_isarray(false); + arg_params->set_type(GLMessage::DataType::INT); + arg_params->add_intvalue((int)params); + + // call function + nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); + nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD); + glContext->hooks->gl.glGetQueryiv(target, pname, params); + nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD); + nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC); + + void *pointerArgs[] = { + (void *) params, + }; + + fixupGLMessage(glContext, wallStartTime, wallEndTime, + threadStartTime, threadEndTime, + &glmsg, pointerArgs); + glContext->traceGLMessage(&glmsg); +} + +void GLTrace_glGetQueryObjectuiv(GLuint id, GLenum pname, GLuint* params) { + GLMessage glmsg; + GLTraceContext *glContext = getGLTraceContext(); + + glmsg.set_function(GLMessage::glGetQueryObjectuiv); + + // copy argument id + GLMessage_DataType *arg_id = glmsg.add_args(); + arg_id->set_isarray(false); + arg_id->set_type(GLMessage::DataType::INT); + arg_id->add_intvalue(id); + + // copy argument pname + GLMessage_DataType *arg_pname = glmsg.add_args(); + arg_pname->set_isarray(false); + arg_pname->set_type(GLMessage::DataType::ENUM); + arg_pname->add_intvalue((int)pname); + + // copy argument params + GLMessage_DataType *arg_params = glmsg.add_args(); + arg_params->set_isarray(false); + arg_params->set_type(GLMessage::DataType::INT); + arg_params->add_intvalue((int)params); + + // call function + nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); + nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD); + glContext->hooks->gl.glGetQueryObjectuiv(id, pname, params); + nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD); + nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC); + + void *pointerArgs[] = { + (void *) params, + }; + + fixupGLMessage(glContext, wallStartTime, wallEndTime, + threadStartTime, threadEndTime, + &glmsg, pointerArgs); + glContext->traceGLMessage(&glmsg); +} + +GLboolean GLTrace_glUnmapBuffer(GLenum target) { + GLMessage glmsg; + GLTraceContext *glContext = getGLTraceContext(); + + glmsg.set_function(GLMessage::glUnmapBuffer); + + // copy argument target + GLMessage_DataType *arg_target = glmsg.add_args(); + arg_target->set_isarray(false); + arg_target->set_type(GLMessage::DataType::ENUM); + arg_target->add_intvalue((int)target); + + // call function + nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); + nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD); + GLboolean retValue = glContext->hooks->gl.glUnmapBuffer(target); + nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD); + nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC); + + // set return value + GLMessage_DataType *rt = glmsg.mutable_returnvalue(); + rt->set_isarray(false); + rt->set_type(GLMessage::DataType::BOOL); + rt->add_boolvalue(retValue); + + void *pointerArgs[] = { + }; + + fixupGLMessage(glContext, wallStartTime, wallEndTime, + threadStartTime, threadEndTime, + &glmsg, pointerArgs); + glContext->traceGLMessage(&glmsg); + + return retValue; +} + +void GLTrace_glGetBufferPointerv(GLenum target, GLenum pname, GLvoid** params) { + GLMessage glmsg; + GLTraceContext *glContext = getGLTraceContext(); + + glmsg.set_function(GLMessage::glGetBufferPointerv); + + // copy argument target + GLMessage_DataType *arg_target = glmsg.add_args(); + arg_target->set_isarray(false); + arg_target->set_type(GLMessage::DataType::ENUM); + arg_target->add_intvalue((int)target); + + // copy argument pname + GLMessage_DataType *arg_pname = glmsg.add_args(); + arg_pname->set_isarray(false); + arg_pname->set_type(GLMessage::DataType::ENUM); + arg_pname->add_intvalue((int)pname); + + // copy argument params + GLMessage_DataType *arg_params = glmsg.add_args(); + arg_params->set_isarray(false); + arg_params->set_type(GLMessage::DataType::INT); + arg_params->add_intvalue((int)params); + + // call function + nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); + nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD); + glContext->hooks->gl.glGetBufferPointerv(target, pname, params); + nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD); + nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC); + + void *pointerArgs[] = { + (void *) params, + }; + + fixupGLMessage(glContext, wallStartTime, wallEndTime, + threadStartTime, threadEndTime, + &glmsg, pointerArgs); + glContext->traceGLMessage(&glmsg); +} + +void GLTrace_glDrawBuffers(GLsizei n, const GLenum* bufs) { + GLMessage glmsg; + GLTraceContext *glContext = getGLTraceContext(); + + glmsg.set_function(GLMessage::glDrawBuffers); + + // copy argument n + GLMessage_DataType *arg_n = glmsg.add_args(); + arg_n->set_isarray(false); + arg_n->set_type(GLMessage::DataType::INT); + arg_n->add_intvalue(n); + + // copy argument bufs + GLMessage_DataType *arg_bufs = glmsg.add_args(); + arg_bufs->set_isarray(false); + arg_bufs->set_type(GLMessage::DataType::INT); + arg_bufs->add_intvalue((int)bufs); + + // call function + nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); + nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD); + glContext->hooks->gl.glDrawBuffers(n, bufs); + nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD); + nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC); + + void *pointerArgs[] = { + (void *) bufs, + }; + + fixupGLMessage(glContext, wallStartTime, wallEndTime, + threadStartTime, threadEndTime, + &glmsg, pointerArgs); + glContext->traceGLMessage(&glmsg); +} + +void GLTrace_glUniformMatrix2x3fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat* value) { + GLMessage glmsg; + GLTraceContext *glContext = getGLTraceContext(); + + glmsg.set_function(GLMessage::glUniformMatrix2x3fv); + + // copy argument location + GLMessage_DataType *arg_location = glmsg.add_args(); + arg_location->set_isarray(false); + arg_location->set_type(GLMessage::DataType::INT); + arg_location->add_intvalue(location); + + // copy argument count + GLMessage_DataType *arg_count = glmsg.add_args(); + arg_count->set_isarray(false); + arg_count->set_type(GLMessage::DataType::INT); + arg_count->add_intvalue(count); + + // copy argument transpose + GLMessage_DataType *arg_transpose = glmsg.add_args(); + arg_transpose->set_isarray(false); + arg_transpose->set_type(GLMessage::DataType::BOOL); + arg_transpose->add_boolvalue(transpose); + + // copy argument value + GLMessage_DataType *arg_value = glmsg.add_args(); + arg_value->set_isarray(false); + arg_value->set_type(GLMessage::DataType::INT); + arg_value->add_intvalue((int)value); + + // call function + nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); + nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD); + glContext->hooks->gl.glUniformMatrix2x3fv(location, count, transpose, value); + nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD); + nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC); + + void *pointerArgs[] = { + (void *) value, + }; + + fixupGLMessage(glContext, wallStartTime, wallEndTime, + threadStartTime, threadEndTime, + &glmsg, pointerArgs); + glContext->traceGLMessage(&glmsg); +} + +void GLTrace_glUniformMatrix3x2fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat* value) { + GLMessage glmsg; + GLTraceContext *glContext = getGLTraceContext(); + + glmsg.set_function(GLMessage::glUniformMatrix3x2fv); + + // copy argument location + GLMessage_DataType *arg_location = glmsg.add_args(); + arg_location->set_isarray(false); + arg_location->set_type(GLMessage::DataType::INT); + arg_location->add_intvalue(location); + + // copy argument count + GLMessage_DataType *arg_count = glmsg.add_args(); + arg_count->set_isarray(false); + arg_count->set_type(GLMessage::DataType::INT); + arg_count->add_intvalue(count); + + // copy argument transpose + GLMessage_DataType *arg_transpose = glmsg.add_args(); + arg_transpose->set_isarray(false); + arg_transpose->set_type(GLMessage::DataType::BOOL); + arg_transpose->add_boolvalue(transpose); + + // copy argument value + GLMessage_DataType *arg_value = glmsg.add_args(); + arg_value->set_isarray(false); + arg_value->set_type(GLMessage::DataType::INT); + arg_value->add_intvalue((int)value); + + // call function + nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); + nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD); + glContext->hooks->gl.glUniformMatrix3x2fv(location, count, transpose, value); + nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD); + nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC); + + void *pointerArgs[] = { + (void *) value, + }; + + fixupGLMessage(glContext, wallStartTime, wallEndTime, + threadStartTime, threadEndTime, + &glmsg, pointerArgs); + glContext->traceGLMessage(&glmsg); +} + +void GLTrace_glUniformMatrix2x4fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat* value) { + GLMessage glmsg; + GLTraceContext *glContext = getGLTraceContext(); + + glmsg.set_function(GLMessage::glUniformMatrix2x4fv); + + // copy argument location + GLMessage_DataType *arg_location = glmsg.add_args(); + arg_location->set_isarray(false); + arg_location->set_type(GLMessage::DataType::INT); + arg_location->add_intvalue(location); + + // copy argument count + GLMessage_DataType *arg_count = glmsg.add_args(); + arg_count->set_isarray(false); + arg_count->set_type(GLMessage::DataType::INT); + arg_count->add_intvalue(count); + + // copy argument transpose + GLMessage_DataType *arg_transpose = glmsg.add_args(); + arg_transpose->set_isarray(false); + arg_transpose->set_type(GLMessage::DataType::BOOL); + arg_transpose->add_boolvalue(transpose); + + // copy argument value + GLMessage_DataType *arg_value = glmsg.add_args(); + arg_value->set_isarray(false); + arg_value->set_type(GLMessage::DataType::INT); + arg_value->add_intvalue((int)value); + + // call function + nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); + nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD); + glContext->hooks->gl.glUniformMatrix2x4fv(location, count, transpose, value); + nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD); + nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC); + + void *pointerArgs[] = { + (void *) value, + }; + + fixupGLMessage(glContext, wallStartTime, wallEndTime, + threadStartTime, threadEndTime, + &glmsg, pointerArgs); + glContext->traceGLMessage(&glmsg); +} + +void GLTrace_glUniformMatrix4x2fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat* value) { + GLMessage glmsg; + GLTraceContext *glContext = getGLTraceContext(); + + glmsg.set_function(GLMessage::glUniformMatrix4x2fv); + + // copy argument location + GLMessage_DataType *arg_location = glmsg.add_args(); + arg_location->set_isarray(false); + arg_location->set_type(GLMessage::DataType::INT); + arg_location->add_intvalue(location); + + // copy argument count + GLMessage_DataType *arg_count = glmsg.add_args(); + arg_count->set_isarray(false); + arg_count->set_type(GLMessage::DataType::INT); + arg_count->add_intvalue(count); + + // copy argument transpose + GLMessage_DataType *arg_transpose = glmsg.add_args(); + arg_transpose->set_isarray(false); + arg_transpose->set_type(GLMessage::DataType::BOOL); + arg_transpose->add_boolvalue(transpose); + + // copy argument value + GLMessage_DataType *arg_value = glmsg.add_args(); + arg_value->set_isarray(false); + arg_value->set_type(GLMessage::DataType::INT); + arg_value->add_intvalue((int)value); + + // call function + nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); + nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD); + glContext->hooks->gl.glUniformMatrix4x2fv(location, count, transpose, value); + nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD); + nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC); + + void *pointerArgs[] = { + (void *) value, + }; + + fixupGLMessage(glContext, wallStartTime, wallEndTime, + threadStartTime, threadEndTime, + &glmsg, pointerArgs); + glContext->traceGLMessage(&glmsg); +} + +void GLTrace_glUniformMatrix3x4fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat* value) { + GLMessage glmsg; + GLTraceContext *glContext = getGLTraceContext(); + + glmsg.set_function(GLMessage::glUniformMatrix3x4fv); + + // copy argument location + GLMessage_DataType *arg_location = glmsg.add_args(); + arg_location->set_isarray(false); + arg_location->set_type(GLMessage::DataType::INT); + arg_location->add_intvalue(location); + + // copy argument count + GLMessage_DataType *arg_count = glmsg.add_args(); + arg_count->set_isarray(false); + arg_count->set_type(GLMessage::DataType::INT); + arg_count->add_intvalue(count); + + // copy argument transpose + GLMessage_DataType *arg_transpose = glmsg.add_args(); + arg_transpose->set_isarray(false); + arg_transpose->set_type(GLMessage::DataType::BOOL); + arg_transpose->add_boolvalue(transpose); + + // copy argument value + GLMessage_DataType *arg_value = glmsg.add_args(); + arg_value->set_isarray(false); + arg_value->set_type(GLMessage::DataType::INT); + arg_value->add_intvalue((int)value); + + // call function + nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); + nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD); + glContext->hooks->gl.glUniformMatrix3x4fv(location, count, transpose, value); + nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD); + nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC); + + void *pointerArgs[] = { + (void *) value, + }; + + fixupGLMessage(glContext, wallStartTime, wallEndTime, + threadStartTime, threadEndTime, + &glmsg, pointerArgs); + glContext->traceGLMessage(&glmsg); +} + +void GLTrace_glUniformMatrix4x3fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat* value) { + GLMessage glmsg; + GLTraceContext *glContext = getGLTraceContext(); + + glmsg.set_function(GLMessage::glUniformMatrix4x3fv); + + // copy argument location + GLMessage_DataType *arg_location = glmsg.add_args(); + arg_location->set_isarray(false); + arg_location->set_type(GLMessage::DataType::INT); + arg_location->add_intvalue(location); + + // copy argument count + GLMessage_DataType *arg_count = glmsg.add_args(); + arg_count->set_isarray(false); + arg_count->set_type(GLMessage::DataType::INT); + arg_count->add_intvalue(count); + + // copy argument transpose + GLMessage_DataType *arg_transpose = glmsg.add_args(); + arg_transpose->set_isarray(false); + arg_transpose->set_type(GLMessage::DataType::BOOL); + arg_transpose->add_boolvalue(transpose); + + // copy argument value + GLMessage_DataType *arg_value = glmsg.add_args(); + arg_value->set_isarray(false); + arg_value->set_type(GLMessage::DataType::INT); + arg_value->add_intvalue((int)value); + + // call function + nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); + nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD); + glContext->hooks->gl.glUniformMatrix4x3fv(location, count, transpose, value); + nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD); + nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC); + + void *pointerArgs[] = { + (void *) value, + }; + + fixupGLMessage(glContext, wallStartTime, wallEndTime, + threadStartTime, threadEndTime, + &glmsg, pointerArgs); + glContext->traceGLMessage(&glmsg); +} + +void GLTrace_glBlitFramebuffer(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter) { + GLMessage glmsg; + GLTraceContext *glContext = getGLTraceContext(); + + glmsg.set_function(GLMessage::glBlitFramebuffer); + + // copy argument srcX0 + GLMessage_DataType *arg_srcX0 = glmsg.add_args(); + arg_srcX0->set_isarray(false); + arg_srcX0->set_type(GLMessage::DataType::INT); + arg_srcX0->add_intvalue(srcX0); + + // copy argument srcY0 + GLMessage_DataType *arg_srcY0 = glmsg.add_args(); + arg_srcY0->set_isarray(false); + arg_srcY0->set_type(GLMessage::DataType::INT); + arg_srcY0->add_intvalue(srcY0); + + // copy argument srcX1 + GLMessage_DataType *arg_srcX1 = glmsg.add_args(); + arg_srcX1->set_isarray(false); + arg_srcX1->set_type(GLMessage::DataType::INT); + arg_srcX1->add_intvalue(srcX1); + + // copy argument srcY1 + GLMessage_DataType *arg_srcY1 = glmsg.add_args(); + arg_srcY1->set_isarray(false); + arg_srcY1->set_type(GLMessage::DataType::INT); + arg_srcY1->add_intvalue(srcY1); + + // copy argument dstX0 + GLMessage_DataType *arg_dstX0 = glmsg.add_args(); + arg_dstX0->set_isarray(false); + arg_dstX0->set_type(GLMessage::DataType::INT); + arg_dstX0->add_intvalue(dstX0); + + // copy argument dstY0 + GLMessage_DataType *arg_dstY0 = glmsg.add_args(); + arg_dstY0->set_isarray(false); + arg_dstY0->set_type(GLMessage::DataType::INT); + arg_dstY0->add_intvalue(dstY0); + + // copy argument dstX1 + GLMessage_DataType *arg_dstX1 = glmsg.add_args(); + arg_dstX1->set_isarray(false); + arg_dstX1->set_type(GLMessage::DataType::INT); + arg_dstX1->add_intvalue(dstX1); + + // copy argument dstY1 + GLMessage_DataType *arg_dstY1 = glmsg.add_args(); + arg_dstY1->set_isarray(false); + arg_dstY1->set_type(GLMessage::DataType::INT); + arg_dstY1->add_intvalue(dstY1); + + // copy argument mask + GLMessage_DataType *arg_mask = glmsg.add_args(); + arg_mask->set_isarray(false); + arg_mask->set_type(GLMessage::DataType::INT); + arg_mask->add_intvalue(mask); + + // copy argument filter + GLMessage_DataType *arg_filter = glmsg.add_args(); + arg_filter->set_isarray(false); + arg_filter->set_type(GLMessage::DataType::ENUM); + arg_filter->add_intvalue((int)filter); + + // call function + nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); + nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD); + glContext->hooks->gl.glBlitFramebuffer(srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask, filter); + nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD); + nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC); + + void *pointerArgs[] = { + }; + + fixupGLMessage(glContext, wallStartTime, wallEndTime, + threadStartTime, threadEndTime, + &glmsg, pointerArgs); + glContext->traceGLMessage(&glmsg); +} + +void GLTrace_glRenderbufferStorageMultisample(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height) { + GLMessage glmsg; + GLTraceContext *glContext = getGLTraceContext(); + + glmsg.set_function(GLMessage::glRenderbufferStorageMultisample); + + // copy argument target + GLMessage_DataType *arg_target = glmsg.add_args(); + arg_target->set_isarray(false); + arg_target->set_type(GLMessage::DataType::ENUM); + arg_target->add_intvalue((int)target); + + // copy argument samples + GLMessage_DataType *arg_samples = glmsg.add_args(); + arg_samples->set_isarray(false); + arg_samples->set_type(GLMessage::DataType::INT); + arg_samples->add_intvalue(samples); + + // copy argument internalformat + GLMessage_DataType *arg_internalformat = glmsg.add_args(); + arg_internalformat->set_isarray(false); + arg_internalformat->set_type(GLMessage::DataType::ENUM); + arg_internalformat->add_intvalue((int)internalformat); + + // copy argument width + GLMessage_DataType *arg_width = glmsg.add_args(); + arg_width->set_isarray(false); + arg_width->set_type(GLMessage::DataType::INT); + arg_width->add_intvalue(width); + + // copy argument height + GLMessage_DataType *arg_height = glmsg.add_args(); + arg_height->set_isarray(false); + arg_height->set_type(GLMessage::DataType::INT); + arg_height->add_intvalue(height); + + // call function + nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); + nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD); + glContext->hooks->gl.glRenderbufferStorageMultisample(target, samples, internalformat, width, height); + nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD); + nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC); + + void *pointerArgs[] = { + }; + + fixupGLMessage(glContext, wallStartTime, wallEndTime, + threadStartTime, threadEndTime, + &glmsg, pointerArgs); + glContext->traceGLMessage(&glmsg); +} + +void GLTrace_glFramebufferTextureLayer(GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer) { + GLMessage glmsg; + GLTraceContext *glContext = getGLTraceContext(); + + glmsg.set_function(GLMessage::glFramebufferTextureLayer); + + // copy argument target + GLMessage_DataType *arg_target = glmsg.add_args(); + arg_target->set_isarray(false); + arg_target->set_type(GLMessage::DataType::ENUM); + arg_target->add_intvalue((int)target); + + // copy argument attachment + GLMessage_DataType *arg_attachment = glmsg.add_args(); + arg_attachment->set_isarray(false); + arg_attachment->set_type(GLMessage::DataType::ENUM); + arg_attachment->add_intvalue((int)attachment); + + // copy argument texture + GLMessage_DataType *arg_texture = glmsg.add_args(); + arg_texture->set_isarray(false); + arg_texture->set_type(GLMessage::DataType::INT); + arg_texture->add_intvalue(texture); + + // copy argument level + GLMessage_DataType *arg_level = glmsg.add_args(); + arg_level->set_isarray(false); + arg_level->set_type(GLMessage::DataType::INT); + arg_level->add_intvalue(level); + + // copy argument layer + GLMessage_DataType *arg_layer = glmsg.add_args(); + arg_layer->set_isarray(false); + arg_layer->set_type(GLMessage::DataType::INT); + arg_layer->add_intvalue(layer); + + // call function + nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); + nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD); + glContext->hooks->gl.glFramebufferTextureLayer(target, attachment, texture, level, layer); + nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD); + nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC); + + void *pointerArgs[] = { + }; + + fixupGLMessage(glContext, wallStartTime, wallEndTime, + threadStartTime, threadEndTime, + &glmsg, pointerArgs); + glContext->traceGLMessage(&glmsg); +} + +GLvoid* GLTrace_glMapBufferRange(GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access) { + GLMessage glmsg; + GLTraceContext *glContext = getGLTraceContext(); + + glmsg.set_function(GLMessage::glMapBufferRange); + + // copy argument target + GLMessage_DataType *arg_target = glmsg.add_args(); + arg_target->set_isarray(false); + arg_target->set_type(GLMessage::DataType::ENUM); + arg_target->add_intvalue((int)target); + + // copy argument offset + GLMessage_DataType *arg_offset = glmsg.add_args(); + arg_offset->set_isarray(false); + arg_offset->set_type(GLMessage::DataType::INT); + arg_offset->add_intvalue(offset); + + // copy argument length + GLMessage_DataType *arg_length = glmsg.add_args(); + arg_length->set_isarray(false); + arg_length->set_type(GLMessage::DataType::INT); + arg_length->add_intvalue(length); + + // copy argument access + GLMessage_DataType *arg_access = glmsg.add_args(); + arg_access->set_isarray(false); + arg_access->set_type(GLMessage::DataType::INT); + arg_access->add_intvalue(access); + + // call function + nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); + nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD); + GLvoid* retValue = glContext->hooks->gl.glMapBufferRange(target, offset, length, access); + nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD); + nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC); + + // set return value + GLMessage_DataType *rt = glmsg.mutable_returnvalue(); + rt->set_isarray(false); + rt->set_type(GLMessage::DataType::INT); + rt->add_intvalue((int)retValue); + + void *pointerArgs[] = { + (void *) retValue, + }; + + fixupGLMessage(glContext, wallStartTime, wallEndTime, + threadStartTime, threadEndTime, + &glmsg, pointerArgs); + glContext->traceGLMessage(&glmsg); + + return retValue; +} + +void GLTrace_glFlushMappedBufferRange(GLenum target, GLintptr offset, GLsizeiptr length) { + GLMessage glmsg; + GLTraceContext *glContext = getGLTraceContext(); + + glmsg.set_function(GLMessage::glFlushMappedBufferRange); + + // copy argument target + GLMessage_DataType *arg_target = glmsg.add_args(); + arg_target->set_isarray(false); + arg_target->set_type(GLMessage::DataType::ENUM); + arg_target->add_intvalue((int)target); + + // copy argument offset + GLMessage_DataType *arg_offset = glmsg.add_args(); + arg_offset->set_isarray(false); + arg_offset->set_type(GLMessage::DataType::INT); + arg_offset->add_intvalue(offset); + + // copy argument length + GLMessage_DataType *arg_length = glmsg.add_args(); + arg_length->set_isarray(false); + arg_length->set_type(GLMessage::DataType::INT); + arg_length->add_intvalue(length); + + // call function + nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); + nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD); + glContext->hooks->gl.glFlushMappedBufferRange(target, offset, length); + nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD); + nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC); + + void *pointerArgs[] = { + }; + + fixupGLMessage(glContext, wallStartTime, wallEndTime, + threadStartTime, threadEndTime, + &glmsg, pointerArgs); + glContext->traceGLMessage(&glmsg); +} + +void GLTrace_glBindVertexArray(GLuint array) { + GLMessage glmsg; + GLTraceContext *glContext = getGLTraceContext(); + + glmsg.set_function(GLMessage::glBindVertexArray); + + // copy argument array + GLMessage_DataType *arg_array = glmsg.add_args(); + arg_array->set_isarray(false); + arg_array->set_type(GLMessage::DataType::INT); + arg_array->add_intvalue(array); + + // call function + nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); + nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD); + glContext->hooks->gl.glBindVertexArray(array); + nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD); + nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC); + + void *pointerArgs[] = { + }; + + fixupGLMessage(glContext, wallStartTime, wallEndTime, + threadStartTime, threadEndTime, + &glmsg, pointerArgs); + glContext->traceGLMessage(&glmsg); +} + +void GLTrace_glDeleteVertexArrays(GLsizei n, const GLuint* arrays) { + GLMessage glmsg; + GLTraceContext *glContext = getGLTraceContext(); + + glmsg.set_function(GLMessage::glDeleteVertexArrays); + + // copy argument n + GLMessage_DataType *arg_n = glmsg.add_args(); + arg_n->set_isarray(false); + arg_n->set_type(GLMessage::DataType::INT); + arg_n->add_intvalue(n); + + // copy argument arrays + GLMessage_DataType *arg_arrays = glmsg.add_args(); + arg_arrays->set_isarray(false); + arg_arrays->set_type(GLMessage::DataType::INT); + arg_arrays->add_intvalue((int)arrays); + + // call function + nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); + nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD); + glContext->hooks->gl.glDeleteVertexArrays(n, arrays); + nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD); + nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC); + + void *pointerArgs[] = { + (void *) arrays, + }; + + fixupGLMessage(glContext, wallStartTime, wallEndTime, + threadStartTime, threadEndTime, + &glmsg, pointerArgs); + glContext->traceGLMessage(&glmsg); +} + +void GLTrace_glGenVertexArrays(GLsizei n, GLuint* arrays) { + GLMessage glmsg; + GLTraceContext *glContext = getGLTraceContext(); + + glmsg.set_function(GLMessage::glGenVertexArrays); + + // copy argument n + GLMessage_DataType *arg_n = glmsg.add_args(); + arg_n->set_isarray(false); + arg_n->set_type(GLMessage::DataType::INT); + arg_n->add_intvalue(n); + + // copy argument arrays + GLMessage_DataType *arg_arrays = glmsg.add_args(); + arg_arrays->set_isarray(false); + arg_arrays->set_type(GLMessage::DataType::INT); + arg_arrays->add_intvalue((int)arrays); + + // call function + nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); + nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD); + glContext->hooks->gl.glGenVertexArrays(n, arrays); + nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD); + nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC); + + void *pointerArgs[] = { + (void *) arrays, + }; + + fixupGLMessage(glContext, wallStartTime, wallEndTime, + threadStartTime, threadEndTime, + &glmsg, pointerArgs); + glContext->traceGLMessage(&glmsg); +} + +GLboolean GLTrace_glIsVertexArray(GLuint array) { + GLMessage glmsg; + GLTraceContext *glContext = getGLTraceContext(); + + glmsg.set_function(GLMessage::glIsVertexArray); + + // copy argument array + GLMessage_DataType *arg_array = glmsg.add_args(); + arg_array->set_isarray(false); + arg_array->set_type(GLMessage::DataType::INT); + arg_array->add_intvalue(array); + + // call function + nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); + nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD); + GLboolean retValue = glContext->hooks->gl.glIsVertexArray(array); + nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD); + nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC); + + // set return value + GLMessage_DataType *rt = glmsg.mutable_returnvalue(); + rt->set_isarray(false); + rt->set_type(GLMessage::DataType::BOOL); + rt->add_boolvalue(retValue); + + void *pointerArgs[] = { + }; + + fixupGLMessage(glContext, wallStartTime, wallEndTime, + threadStartTime, threadEndTime, + &glmsg, pointerArgs); + glContext->traceGLMessage(&glmsg); + + return retValue; +} + +void GLTrace_glGetIntegeri_v(GLenum target, GLuint index, GLint* data) { + GLMessage glmsg; + GLTraceContext *glContext = getGLTraceContext(); + + glmsg.set_function(GLMessage::glGetIntegeri_v); + + // copy argument target + GLMessage_DataType *arg_target = glmsg.add_args(); + arg_target->set_isarray(false); + arg_target->set_type(GLMessage::DataType::ENUM); + arg_target->add_intvalue((int)target); + + // copy argument index + GLMessage_DataType *arg_index = glmsg.add_args(); + arg_index->set_isarray(false); + arg_index->set_type(GLMessage::DataType::INT); + arg_index->add_intvalue(index); + + // copy argument data + GLMessage_DataType *arg_data = glmsg.add_args(); + arg_data->set_isarray(false); + arg_data->set_type(GLMessage::DataType::INT); + arg_data->add_intvalue((int)data); + + // call function + nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); + nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD); + glContext->hooks->gl.glGetIntegeri_v(target, index, data); + nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD); + nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC); + + void *pointerArgs[] = { + (void *) data, + }; + + fixupGLMessage(glContext, wallStartTime, wallEndTime, + threadStartTime, threadEndTime, + &glmsg, pointerArgs); + glContext->traceGLMessage(&glmsg); +} + +void GLTrace_glBeginTransformFeedback(GLenum primitiveMode) { + GLMessage glmsg; + GLTraceContext *glContext = getGLTraceContext(); + + glmsg.set_function(GLMessage::glBeginTransformFeedback); + + // copy argument primitiveMode + GLMessage_DataType *arg_primitiveMode = glmsg.add_args(); + arg_primitiveMode->set_isarray(false); + arg_primitiveMode->set_type(GLMessage::DataType::ENUM); + arg_primitiveMode->add_intvalue((int)primitiveMode); + + // call function + nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); + nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD); + glContext->hooks->gl.glBeginTransformFeedback(primitiveMode); + nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD); + nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC); + + void *pointerArgs[] = { + }; + + fixupGLMessage(glContext, wallStartTime, wallEndTime, + threadStartTime, threadEndTime, + &glmsg, pointerArgs); + glContext->traceGLMessage(&glmsg); +} + +void GLTrace_glEndTransformFeedback(void) { + GLMessage glmsg; + GLTraceContext *glContext = getGLTraceContext(); + + glmsg.set_function(GLMessage::glEndTransformFeedback); + + // call function + nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); + nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD); + glContext->hooks->gl.glEndTransformFeedback(); + nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD); + nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC); + + void *pointerArgs[] = { + }; + + fixupGLMessage(glContext, wallStartTime, wallEndTime, + threadStartTime, threadEndTime, + &glmsg, pointerArgs); + glContext->traceGLMessage(&glmsg); +} + +void GLTrace_glBindBufferRange(GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size) { + GLMessage glmsg; + GLTraceContext *glContext = getGLTraceContext(); + + glmsg.set_function(GLMessage::glBindBufferRange); + + // copy argument target + GLMessage_DataType *arg_target = glmsg.add_args(); + arg_target->set_isarray(false); + arg_target->set_type(GLMessage::DataType::ENUM); + arg_target->add_intvalue((int)target); + + // copy argument index + GLMessage_DataType *arg_index = glmsg.add_args(); + arg_index->set_isarray(false); + arg_index->set_type(GLMessage::DataType::INT); + arg_index->add_intvalue(index); + + // copy argument buffer + GLMessage_DataType *arg_buffer = glmsg.add_args(); + arg_buffer->set_isarray(false); + arg_buffer->set_type(GLMessage::DataType::INT); + arg_buffer->add_intvalue(buffer); + + // copy argument offset + GLMessage_DataType *arg_offset = glmsg.add_args(); + arg_offset->set_isarray(false); + arg_offset->set_type(GLMessage::DataType::INT); + arg_offset->add_intvalue(offset); + + // copy argument size + GLMessage_DataType *arg_size = glmsg.add_args(); + arg_size->set_isarray(false); + arg_size->set_type(GLMessage::DataType::INT); + arg_size->add_intvalue(size); + + // call function + nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); + nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD); + glContext->hooks->gl.glBindBufferRange(target, index, buffer, offset, size); + nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD); + nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC); + + void *pointerArgs[] = { + }; + + fixupGLMessage(glContext, wallStartTime, wallEndTime, + threadStartTime, threadEndTime, + &glmsg, pointerArgs); + glContext->traceGLMessage(&glmsg); +} + +void GLTrace_glBindBufferBase(GLenum target, GLuint index, GLuint buffer) { + GLMessage glmsg; + GLTraceContext *glContext = getGLTraceContext(); + + glmsg.set_function(GLMessage::glBindBufferBase); + + // copy argument target + GLMessage_DataType *arg_target = glmsg.add_args(); + arg_target->set_isarray(false); + arg_target->set_type(GLMessage::DataType::ENUM); + arg_target->add_intvalue((int)target); + + // copy argument index + GLMessage_DataType *arg_index = glmsg.add_args(); + arg_index->set_isarray(false); + arg_index->set_type(GLMessage::DataType::INT); + arg_index->add_intvalue(index); + + // copy argument buffer + GLMessage_DataType *arg_buffer = glmsg.add_args(); + arg_buffer->set_isarray(false); + arg_buffer->set_type(GLMessage::DataType::INT); + arg_buffer->add_intvalue(buffer); + + // call function + nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); + nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD); + glContext->hooks->gl.glBindBufferBase(target, index, buffer); + nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD); + nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC); + + void *pointerArgs[] = { + }; + + fixupGLMessage(glContext, wallStartTime, wallEndTime, + threadStartTime, threadEndTime, + &glmsg, pointerArgs); + glContext->traceGLMessage(&glmsg); +} + +void GLTrace_glTransformFeedbackVaryings(GLuint program, GLsizei count, const GLchar* const* varyings, GLenum bufferMode) { + GLMessage glmsg; + GLTraceContext *glContext = getGLTraceContext(); + + glmsg.set_function(GLMessage::glTransformFeedbackVaryings); + + // copy argument program + GLMessage_DataType *arg_program = glmsg.add_args(); + arg_program->set_isarray(false); + arg_program->set_type(GLMessage::DataType::INT); + arg_program->add_intvalue(program); + + // copy argument count + GLMessage_DataType *arg_count = glmsg.add_args(); + arg_count->set_isarray(false); + arg_count->set_type(GLMessage::DataType::INT); + arg_count->add_intvalue(count); + + // copy argument varyings + GLMessage_DataType *arg_varyings = glmsg.add_args(); + arg_varyings->set_isarray(false); + arg_varyings->set_type(GLMessage::DataType::INT); + arg_varyings->add_intvalue((int)varyings); + + // copy argument bufferMode + GLMessage_DataType *arg_bufferMode = glmsg.add_args(); + arg_bufferMode->set_isarray(false); + arg_bufferMode->set_type(GLMessage::DataType::ENUM); + arg_bufferMode->add_intvalue((int)bufferMode); + + // call function + nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); + nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD); + glContext->hooks->gl.glTransformFeedbackVaryings(program, count, varyings, bufferMode); + nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD); + nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC); + + void *pointerArgs[] = { + (void *) varyings, + }; + + fixupGLMessage(glContext, wallStartTime, wallEndTime, + threadStartTime, threadEndTime, + &glmsg, pointerArgs); + glContext->traceGLMessage(&glmsg); +} + +void GLTrace_glGetTransformFeedbackVarying(GLuint program, GLuint index, GLsizei bufSize, GLsizei* length, GLsizei* size, GLenum* type, GLchar* name) { + GLMessage glmsg; + GLTraceContext *glContext = getGLTraceContext(); + + glmsg.set_function(GLMessage::glGetTransformFeedbackVarying); + + // copy argument program + GLMessage_DataType *arg_program = glmsg.add_args(); + arg_program->set_isarray(false); + arg_program->set_type(GLMessage::DataType::INT); + arg_program->add_intvalue(program); + + // copy argument index + GLMessage_DataType *arg_index = glmsg.add_args(); + arg_index->set_isarray(false); + arg_index->set_type(GLMessage::DataType::INT); + arg_index->add_intvalue(index); + + // copy argument bufSize + GLMessage_DataType *arg_bufSize = glmsg.add_args(); + arg_bufSize->set_isarray(false); + arg_bufSize->set_type(GLMessage::DataType::INT); + arg_bufSize->add_intvalue(bufSize); + + // copy argument length + GLMessage_DataType *arg_length = glmsg.add_args(); + arg_length->set_isarray(false); + arg_length->set_type(GLMessage::DataType::INT); + arg_length->add_intvalue((int)length); + + // copy argument size + GLMessage_DataType *arg_size = glmsg.add_args(); + arg_size->set_isarray(false); + arg_size->set_type(GLMessage::DataType::INT); + arg_size->add_intvalue((int)size); + + // copy argument type + GLMessage_DataType *arg_type = glmsg.add_args(); + arg_type->set_isarray(false); + arg_type->set_type(GLMessage::DataType::INT); + arg_type->add_intvalue((int)type); + + // copy argument name + GLMessage_DataType *arg_name = glmsg.add_args(); + arg_name->set_isarray(false); + arg_name->set_type(GLMessage::DataType::INT); + arg_name->add_intvalue((int)name); + + // call function + nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); + nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD); + glContext->hooks->gl.glGetTransformFeedbackVarying(program, index, bufSize, length, size, type, name); + nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD); + nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC); + + void *pointerArgs[] = { + (void *) length, + (void *) size, + (void *) type, + (void *) name, + }; + + fixupGLMessage(glContext, wallStartTime, wallEndTime, + threadStartTime, threadEndTime, + &glmsg, pointerArgs); + glContext->traceGLMessage(&glmsg); +} + +void GLTrace_glVertexAttribIPointer(GLuint index, GLint size, GLenum type, GLsizei stride, const GLvoid* pointer) { + GLMessage glmsg; + GLTraceContext *glContext = getGLTraceContext(); + + glmsg.set_function(GLMessage::glVertexAttribIPointer); + + // copy argument index + GLMessage_DataType *arg_index = glmsg.add_args(); + arg_index->set_isarray(false); + arg_index->set_type(GLMessage::DataType::INT); + arg_index->add_intvalue(index); + + // copy argument size + GLMessage_DataType *arg_size = glmsg.add_args(); + arg_size->set_isarray(false); + arg_size->set_type(GLMessage::DataType::INT); + arg_size->add_intvalue(size); + + // copy argument type + GLMessage_DataType *arg_type = glmsg.add_args(); + arg_type->set_isarray(false); + arg_type->set_type(GLMessage::DataType::ENUM); + arg_type->add_intvalue((int)type); + + // copy argument stride + GLMessage_DataType *arg_stride = glmsg.add_args(); + arg_stride->set_isarray(false); + arg_stride->set_type(GLMessage::DataType::INT); + arg_stride->add_intvalue(stride); + + // copy argument pointer + GLMessage_DataType *arg_pointer = glmsg.add_args(); + arg_pointer->set_isarray(false); + arg_pointer->set_type(GLMessage::DataType::INT); + arg_pointer->add_intvalue((int)pointer); + + // call function + nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); + nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD); + glContext->hooks->gl.glVertexAttribIPointer(index, size, type, stride, pointer); + nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD); + nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC); + + void *pointerArgs[] = { + (void *) pointer, + }; + + fixupGLMessage(glContext, wallStartTime, wallEndTime, + threadStartTime, threadEndTime, + &glmsg, pointerArgs); + glContext->traceGLMessage(&glmsg); +} + +void GLTrace_glGetVertexAttribIiv(GLuint index, GLenum pname, GLint* params) { + GLMessage glmsg; + GLTraceContext *glContext = getGLTraceContext(); + + glmsg.set_function(GLMessage::glGetVertexAttribIiv); + + // copy argument index + GLMessage_DataType *arg_index = glmsg.add_args(); + arg_index->set_isarray(false); + arg_index->set_type(GLMessage::DataType::INT); + arg_index->add_intvalue(index); + + // copy argument pname + GLMessage_DataType *arg_pname = glmsg.add_args(); + arg_pname->set_isarray(false); + arg_pname->set_type(GLMessage::DataType::ENUM); + arg_pname->add_intvalue((int)pname); + + // copy argument params + GLMessage_DataType *arg_params = glmsg.add_args(); + arg_params->set_isarray(false); + arg_params->set_type(GLMessage::DataType::INT); + arg_params->add_intvalue((int)params); + + // call function + nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); + nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD); + glContext->hooks->gl.glGetVertexAttribIiv(index, pname, params); + nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD); + nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC); + + void *pointerArgs[] = { + (void *) params, + }; + + fixupGLMessage(glContext, wallStartTime, wallEndTime, + threadStartTime, threadEndTime, + &glmsg, pointerArgs); + glContext->traceGLMessage(&glmsg); +} + +void GLTrace_glGetVertexAttribIuiv(GLuint index, GLenum pname, GLuint* params) { + GLMessage glmsg; + GLTraceContext *glContext = getGLTraceContext(); + + glmsg.set_function(GLMessage::glGetVertexAttribIuiv); + + // copy argument index + GLMessage_DataType *arg_index = glmsg.add_args(); + arg_index->set_isarray(false); + arg_index->set_type(GLMessage::DataType::INT); + arg_index->add_intvalue(index); + + // copy argument pname + GLMessage_DataType *arg_pname = glmsg.add_args(); + arg_pname->set_isarray(false); + arg_pname->set_type(GLMessage::DataType::ENUM); + arg_pname->add_intvalue((int)pname); + + // copy argument params + GLMessage_DataType *arg_params = glmsg.add_args(); + arg_params->set_isarray(false); + arg_params->set_type(GLMessage::DataType::INT); + arg_params->add_intvalue((int)params); + + // call function + nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); + nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD); + glContext->hooks->gl.glGetVertexAttribIuiv(index, pname, params); + nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD); + nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC); + + void *pointerArgs[] = { + (void *) params, + }; + + fixupGLMessage(glContext, wallStartTime, wallEndTime, + threadStartTime, threadEndTime, + &glmsg, pointerArgs); + glContext->traceGLMessage(&glmsg); +} + +void GLTrace_glVertexAttribI4i(GLuint index, GLint x, GLint y, GLint z, GLint w) { + GLMessage glmsg; + GLTraceContext *glContext = getGLTraceContext(); + + glmsg.set_function(GLMessage::glVertexAttribI4i); + + // copy argument index + GLMessage_DataType *arg_index = glmsg.add_args(); + arg_index->set_isarray(false); + arg_index->set_type(GLMessage::DataType::INT); + arg_index->add_intvalue(index); + + // copy argument x + GLMessage_DataType *arg_x = glmsg.add_args(); + arg_x->set_isarray(false); + arg_x->set_type(GLMessage::DataType::INT); + arg_x->add_intvalue(x); + + // copy argument y + GLMessage_DataType *arg_y = glmsg.add_args(); + arg_y->set_isarray(false); + arg_y->set_type(GLMessage::DataType::INT); + arg_y->add_intvalue(y); + + // copy argument z + GLMessage_DataType *arg_z = glmsg.add_args(); + arg_z->set_isarray(false); + arg_z->set_type(GLMessage::DataType::INT); + arg_z->add_intvalue(z); + + // copy argument w + GLMessage_DataType *arg_w = glmsg.add_args(); + arg_w->set_isarray(false); + arg_w->set_type(GLMessage::DataType::INT); + arg_w->add_intvalue(w); + + // call function + nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); + nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD); + glContext->hooks->gl.glVertexAttribI4i(index, x, y, z, w); + nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD); + nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC); + + void *pointerArgs[] = { + }; + + fixupGLMessage(glContext, wallStartTime, wallEndTime, + threadStartTime, threadEndTime, + &glmsg, pointerArgs); + glContext->traceGLMessage(&glmsg); +} + +void GLTrace_glVertexAttribI4ui(GLuint index, GLuint x, GLuint y, GLuint z, GLuint w) { + GLMessage glmsg; + GLTraceContext *glContext = getGLTraceContext(); + + glmsg.set_function(GLMessage::glVertexAttribI4ui); + + // copy argument index + GLMessage_DataType *arg_index = glmsg.add_args(); + arg_index->set_isarray(false); + arg_index->set_type(GLMessage::DataType::INT); + arg_index->add_intvalue(index); + + // copy argument x + GLMessage_DataType *arg_x = glmsg.add_args(); + arg_x->set_isarray(false); + arg_x->set_type(GLMessage::DataType::INT); + arg_x->add_intvalue(x); + + // copy argument y + GLMessage_DataType *arg_y = glmsg.add_args(); + arg_y->set_isarray(false); + arg_y->set_type(GLMessage::DataType::INT); + arg_y->add_intvalue(y); + + // copy argument z + GLMessage_DataType *arg_z = glmsg.add_args(); + arg_z->set_isarray(false); + arg_z->set_type(GLMessage::DataType::INT); + arg_z->add_intvalue(z); + + // copy argument w + GLMessage_DataType *arg_w = glmsg.add_args(); + arg_w->set_isarray(false); + arg_w->set_type(GLMessage::DataType::INT); + arg_w->add_intvalue(w); + + // call function + nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); + nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD); + glContext->hooks->gl.glVertexAttribI4ui(index, x, y, z, w); + nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD); + nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC); + + void *pointerArgs[] = { + }; + + fixupGLMessage(glContext, wallStartTime, wallEndTime, + threadStartTime, threadEndTime, + &glmsg, pointerArgs); + glContext->traceGLMessage(&glmsg); +} + +void GLTrace_glVertexAttribI4iv(GLuint index, const GLint* v) { + GLMessage glmsg; + GLTraceContext *glContext = getGLTraceContext(); + + glmsg.set_function(GLMessage::glVertexAttribI4iv); + + // copy argument index + GLMessage_DataType *arg_index = glmsg.add_args(); + arg_index->set_isarray(false); + arg_index->set_type(GLMessage::DataType::INT); + arg_index->add_intvalue(index); + + // copy argument v + GLMessage_DataType *arg_v = glmsg.add_args(); + arg_v->set_isarray(false); + arg_v->set_type(GLMessage::DataType::INT); + arg_v->add_intvalue((int)v); + + // call function + nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); + nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD); + glContext->hooks->gl.glVertexAttribI4iv(index, v); + nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD); + nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC); + + void *pointerArgs[] = { + (void *) v, + }; + + fixupGLMessage(glContext, wallStartTime, wallEndTime, + threadStartTime, threadEndTime, + &glmsg, pointerArgs); + glContext->traceGLMessage(&glmsg); +} + +void GLTrace_glVertexAttribI4uiv(GLuint index, const GLuint* v) { + GLMessage glmsg; + GLTraceContext *glContext = getGLTraceContext(); + + glmsg.set_function(GLMessage::glVertexAttribI4uiv); + + // copy argument index + GLMessage_DataType *arg_index = glmsg.add_args(); + arg_index->set_isarray(false); + arg_index->set_type(GLMessage::DataType::INT); + arg_index->add_intvalue(index); + + // copy argument v + GLMessage_DataType *arg_v = glmsg.add_args(); + arg_v->set_isarray(false); + arg_v->set_type(GLMessage::DataType::INT); + arg_v->add_intvalue((int)v); + + // call function + nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); + nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD); + glContext->hooks->gl.glVertexAttribI4uiv(index, v); + nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD); + nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC); + + void *pointerArgs[] = { + (void *) v, + }; + + fixupGLMessage(glContext, wallStartTime, wallEndTime, + threadStartTime, threadEndTime, + &glmsg, pointerArgs); + glContext->traceGLMessage(&glmsg); +} + +void GLTrace_glGetUniformuiv(GLuint program, GLint location, GLuint* params) { + GLMessage glmsg; + GLTraceContext *glContext = getGLTraceContext(); + + glmsg.set_function(GLMessage::glGetUniformuiv); + + // copy argument program + GLMessage_DataType *arg_program = glmsg.add_args(); + arg_program->set_isarray(false); + arg_program->set_type(GLMessage::DataType::INT); + arg_program->add_intvalue(program); + + // copy argument location + GLMessage_DataType *arg_location = glmsg.add_args(); + arg_location->set_isarray(false); + arg_location->set_type(GLMessage::DataType::INT); + arg_location->add_intvalue(location); + + // copy argument params + GLMessage_DataType *arg_params = glmsg.add_args(); + arg_params->set_isarray(false); + arg_params->set_type(GLMessage::DataType::INT); + arg_params->add_intvalue((int)params); + + // call function + nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); + nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD); + glContext->hooks->gl.glGetUniformuiv(program, location, params); + nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD); + nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC); + + void *pointerArgs[] = { + (void *) params, + }; + + fixupGLMessage(glContext, wallStartTime, wallEndTime, + threadStartTime, threadEndTime, + &glmsg, pointerArgs); + glContext->traceGLMessage(&glmsg); +} + +GLint GLTrace_glGetFragDataLocation(GLuint program, const GLchar *name) { + GLMessage glmsg; + GLTraceContext *glContext = getGLTraceContext(); + + glmsg.set_function(GLMessage::glGetFragDataLocation); + + // copy argument program + GLMessage_DataType *arg_program = glmsg.add_args(); + arg_program->set_isarray(false); + arg_program->set_type(GLMessage::DataType::INT); + arg_program->add_intvalue(program); + + // copy argument name + GLMessage_DataType *arg_name = glmsg.add_args(); + arg_name->set_isarray(false); + arg_name->set_type(GLMessage::DataType::INT); + arg_name->add_intvalue((int)name); + + // call function + nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); + nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD); + GLint retValue = glContext->hooks->gl.glGetFragDataLocation(program, name); + nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD); + nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC); + + // set return value + GLMessage_DataType *rt = glmsg.mutable_returnvalue(); + rt->set_isarray(false); + rt->set_type(GLMessage::DataType::INT); + rt->add_intvalue(retValue); + + void *pointerArgs[] = { + (void *) name, + }; + + fixupGLMessage(glContext, wallStartTime, wallEndTime, + threadStartTime, threadEndTime, + &glmsg, pointerArgs); + glContext->traceGLMessage(&glmsg); + + return retValue; +} + +void GLTrace_glUniform1ui(GLint location, GLuint v0) { + GLMessage glmsg; + GLTraceContext *glContext = getGLTraceContext(); + + glmsg.set_function(GLMessage::glUniform1ui); + + // copy argument location + GLMessage_DataType *arg_location = glmsg.add_args(); + arg_location->set_isarray(false); + arg_location->set_type(GLMessage::DataType::INT); + arg_location->add_intvalue(location); + + // copy argument v0 + GLMessage_DataType *arg_v0 = glmsg.add_args(); + arg_v0->set_isarray(false); + arg_v0->set_type(GLMessage::DataType::INT); + arg_v0->add_intvalue(v0); + + // call function + nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); + nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD); + glContext->hooks->gl.glUniform1ui(location, v0); + nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD); + nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC); + + void *pointerArgs[] = { + }; + + fixupGLMessage(glContext, wallStartTime, wallEndTime, + threadStartTime, threadEndTime, + &glmsg, pointerArgs); + glContext->traceGLMessage(&glmsg); +} + +void GLTrace_glUniform2ui(GLint location, GLuint v0, GLuint v1) { + GLMessage glmsg; + GLTraceContext *glContext = getGLTraceContext(); + + glmsg.set_function(GLMessage::glUniform2ui); + + // copy argument location + GLMessage_DataType *arg_location = glmsg.add_args(); + arg_location->set_isarray(false); + arg_location->set_type(GLMessage::DataType::INT); + arg_location->add_intvalue(location); + + // copy argument v0 + GLMessage_DataType *arg_v0 = glmsg.add_args(); + arg_v0->set_isarray(false); + arg_v0->set_type(GLMessage::DataType::INT); + arg_v0->add_intvalue(v0); + + // copy argument v1 + GLMessage_DataType *arg_v1 = glmsg.add_args(); + arg_v1->set_isarray(false); + arg_v1->set_type(GLMessage::DataType::INT); + arg_v1->add_intvalue(v1); + + // call function + nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); + nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD); + glContext->hooks->gl.glUniform2ui(location, v0, v1); + nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD); + nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC); + + void *pointerArgs[] = { + }; + + fixupGLMessage(glContext, wallStartTime, wallEndTime, + threadStartTime, threadEndTime, + &glmsg, pointerArgs); + glContext->traceGLMessage(&glmsg); +} + +void GLTrace_glUniform3ui(GLint location, GLuint v0, GLuint v1, GLuint v2) { + GLMessage glmsg; + GLTraceContext *glContext = getGLTraceContext(); + + glmsg.set_function(GLMessage::glUniform3ui); + + // copy argument location + GLMessage_DataType *arg_location = glmsg.add_args(); + arg_location->set_isarray(false); + arg_location->set_type(GLMessage::DataType::INT); + arg_location->add_intvalue(location); + + // copy argument v0 + GLMessage_DataType *arg_v0 = glmsg.add_args(); + arg_v0->set_isarray(false); + arg_v0->set_type(GLMessage::DataType::INT); + arg_v0->add_intvalue(v0); + + // copy argument v1 + GLMessage_DataType *arg_v1 = glmsg.add_args(); + arg_v1->set_isarray(false); + arg_v1->set_type(GLMessage::DataType::INT); + arg_v1->add_intvalue(v1); + + // copy argument v2 + GLMessage_DataType *arg_v2 = glmsg.add_args(); + arg_v2->set_isarray(false); + arg_v2->set_type(GLMessage::DataType::INT); + arg_v2->add_intvalue(v2); + + // call function + nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); + nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD); + glContext->hooks->gl.glUniform3ui(location, v0, v1, v2); + nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD); + nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC); + + void *pointerArgs[] = { + }; + + fixupGLMessage(glContext, wallStartTime, wallEndTime, + threadStartTime, threadEndTime, + &glmsg, pointerArgs); + glContext->traceGLMessage(&glmsg); +} + +void GLTrace_glUniform4ui(GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3) { + GLMessage glmsg; + GLTraceContext *glContext = getGLTraceContext(); + + glmsg.set_function(GLMessage::glUniform4ui); + + // copy argument location + GLMessage_DataType *arg_location = glmsg.add_args(); + arg_location->set_isarray(false); + arg_location->set_type(GLMessage::DataType::INT); + arg_location->add_intvalue(location); + + // copy argument v0 + GLMessage_DataType *arg_v0 = glmsg.add_args(); + arg_v0->set_isarray(false); + arg_v0->set_type(GLMessage::DataType::INT); + arg_v0->add_intvalue(v0); + + // copy argument v1 + GLMessage_DataType *arg_v1 = glmsg.add_args(); + arg_v1->set_isarray(false); + arg_v1->set_type(GLMessage::DataType::INT); + arg_v1->add_intvalue(v1); + + // copy argument v2 + GLMessage_DataType *arg_v2 = glmsg.add_args(); + arg_v2->set_isarray(false); + arg_v2->set_type(GLMessage::DataType::INT); + arg_v2->add_intvalue(v2); + + // copy argument v3 + GLMessage_DataType *arg_v3 = glmsg.add_args(); + arg_v3->set_isarray(false); + arg_v3->set_type(GLMessage::DataType::INT); + arg_v3->add_intvalue(v3); + + // call function + nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); + nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD); + glContext->hooks->gl.glUniform4ui(location, v0, v1, v2, v3); + nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD); + nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC); + + void *pointerArgs[] = { + }; + + fixupGLMessage(glContext, wallStartTime, wallEndTime, + threadStartTime, threadEndTime, + &glmsg, pointerArgs); + glContext->traceGLMessage(&glmsg); +} + +void GLTrace_glUniform1uiv(GLint location, GLsizei count, const GLuint* value) { + GLMessage glmsg; + GLTraceContext *glContext = getGLTraceContext(); + + glmsg.set_function(GLMessage::glUniform1uiv); + + // copy argument location + GLMessage_DataType *arg_location = glmsg.add_args(); + arg_location->set_isarray(false); + arg_location->set_type(GLMessage::DataType::INT); + arg_location->add_intvalue(location); + + // copy argument count + GLMessage_DataType *arg_count = glmsg.add_args(); + arg_count->set_isarray(false); + arg_count->set_type(GLMessage::DataType::INT); + arg_count->add_intvalue(count); + + // copy argument value + GLMessage_DataType *arg_value = glmsg.add_args(); + arg_value->set_isarray(false); + arg_value->set_type(GLMessage::DataType::INT); + arg_value->add_intvalue((int)value); + + // call function + nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); + nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD); + glContext->hooks->gl.glUniform1uiv(location, count, value); + nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD); + nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC); + + void *pointerArgs[] = { + (void *) value, + }; + + fixupGLMessage(glContext, wallStartTime, wallEndTime, + threadStartTime, threadEndTime, + &glmsg, pointerArgs); + glContext->traceGLMessage(&glmsg); +} + +void GLTrace_glUniform2uiv(GLint location, GLsizei count, const GLuint* value) { + GLMessage glmsg; + GLTraceContext *glContext = getGLTraceContext(); + + glmsg.set_function(GLMessage::glUniform2uiv); + + // copy argument location + GLMessage_DataType *arg_location = glmsg.add_args(); + arg_location->set_isarray(false); + arg_location->set_type(GLMessage::DataType::INT); + arg_location->add_intvalue(location); + + // copy argument count + GLMessage_DataType *arg_count = glmsg.add_args(); + arg_count->set_isarray(false); + arg_count->set_type(GLMessage::DataType::INT); + arg_count->add_intvalue(count); + + // copy argument value + GLMessage_DataType *arg_value = glmsg.add_args(); + arg_value->set_isarray(false); + arg_value->set_type(GLMessage::DataType::INT); + arg_value->add_intvalue((int)value); + + // call function + nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); + nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD); + glContext->hooks->gl.glUniform2uiv(location, count, value); + nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD); + nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC); + + void *pointerArgs[] = { + (void *) value, + }; + + fixupGLMessage(glContext, wallStartTime, wallEndTime, + threadStartTime, threadEndTime, + &glmsg, pointerArgs); + glContext->traceGLMessage(&glmsg); +} + +void GLTrace_glUniform3uiv(GLint location, GLsizei count, const GLuint* value) { + GLMessage glmsg; + GLTraceContext *glContext = getGLTraceContext(); + + glmsg.set_function(GLMessage::glUniform3uiv); + + // copy argument location + GLMessage_DataType *arg_location = glmsg.add_args(); + arg_location->set_isarray(false); + arg_location->set_type(GLMessage::DataType::INT); + arg_location->add_intvalue(location); + + // copy argument count + GLMessage_DataType *arg_count = glmsg.add_args(); + arg_count->set_isarray(false); + arg_count->set_type(GLMessage::DataType::INT); + arg_count->add_intvalue(count); + + // copy argument value + GLMessage_DataType *arg_value = glmsg.add_args(); + arg_value->set_isarray(false); + arg_value->set_type(GLMessage::DataType::INT); + arg_value->add_intvalue((int)value); + + // call function + nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); + nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD); + glContext->hooks->gl.glUniform3uiv(location, count, value); + nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD); + nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC); + + void *pointerArgs[] = { + (void *) value, + }; + + fixupGLMessage(glContext, wallStartTime, wallEndTime, + threadStartTime, threadEndTime, + &glmsg, pointerArgs); + glContext->traceGLMessage(&glmsg); +} + +void GLTrace_glUniform4uiv(GLint location, GLsizei count, const GLuint* value) { + GLMessage glmsg; + GLTraceContext *glContext = getGLTraceContext(); + + glmsg.set_function(GLMessage::glUniform4uiv); + + // copy argument location + GLMessage_DataType *arg_location = glmsg.add_args(); + arg_location->set_isarray(false); + arg_location->set_type(GLMessage::DataType::INT); + arg_location->add_intvalue(location); + + // copy argument count + GLMessage_DataType *arg_count = glmsg.add_args(); + arg_count->set_isarray(false); + arg_count->set_type(GLMessage::DataType::INT); + arg_count->add_intvalue(count); + + // copy argument value + GLMessage_DataType *arg_value = glmsg.add_args(); + arg_value->set_isarray(false); + arg_value->set_type(GLMessage::DataType::INT); + arg_value->add_intvalue((int)value); + + // call function + nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); + nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD); + glContext->hooks->gl.glUniform4uiv(location, count, value); + nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD); + nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC); + + void *pointerArgs[] = { + (void *) value, + }; + + fixupGLMessage(glContext, wallStartTime, wallEndTime, + threadStartTime, threadEndTime, + &glmsg, pointerArgs); + glContext->traceGLMessage(&glmsg); +} + +void GLTrace_glClearBufferiv(GLenum buffer, GLint drawbuffer, const GLint* value) { + GLMessage glmsg; + GLTraceContext *glContext = getGLTraceContext(); + + glmsg.set_function(GLMessage::glClearBufferiv); + + // copy argument buffer + GLMessage_DataType *arg_buffer = glmsg.add_args(); + arg_buffer->set_isarray(false); + arg_buffer->set_type(GLMessage::DataType::ENUM); + arg_buffer->add_intvalue((int)buffer); + + // copy argument drawbuffer + GLMessage_DataType *arg_drawbuffer = glmsg.add_args(); + arg_drawbuffer->set_isarray(false); + arg_drawbuffer->set_type(GLMessage::DataType::INT); + arg_drawbuffer->add_intvalue(drawbuffer); + + // copy argument value + GLMessage_DataType *arg_value = glmsg.add_args(); + arg_value->set_isarray(false); + arg_value->set_type(GLMessage::DataType::INT); + arg_value->add_intvalue((int)value); + + // call function + nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); + nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD); + glContext->hooks->gl.glClearBufferiv(buffer, drawbuffer, value); + nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD); + nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC); + + void *pointerArgs[] = { + (void *) value, + }; + + fixupGLMessage(glContext, wallStartTime, wallEndTime, + threadStartTime, threadEndTime, + &glmsg, pointerArgs); + glContext->traceGLMessage(&glmsg); +} + +void GLTrace_glClearBufferuiv(GLenum buffer, GLint drawbuffer, const GLuint* value) { + GLMessage glmsg; + GLTraceContext *glContext = getGLTraceContext(); + + glmsg.set_function(GLMessage::glClearBufferuiv); + + // copy argument buffer + GLMessage_DataType *arg_buffer = glmsg.add_args(); + arg_buffer->set_isarray(false); + arg_buffer->set_type(GLMessage::DataType::ENUM); + arg_buffer->add_intvalue((int)buffer); + + // copy argument drawbuffer + GLMessage_DataType *arg_drawbuffer = glmsg.add_args(); + arg_drawbuffer->set_isarray(false); + arg_drawbuffer->set_type(GLMessage::DataType::INT); + arg_drawbuffer->add_intvalue(drawbuffer); + + // copy argument value + GLMessage_DataType *arg_value = glmsg.add_args(); + arg_value->set_isarray(false); + arg_value->set_type(GLMessage::DataType::INT); + arg_value->add_intvalue((int)value); + + // call function + nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); + nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD); + glContext->hooks->gl.glClearBufferuiv(buffer, drawbuffer, value); + nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD); + nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC); + + void *pointerArgs[] = { + (void *) value, + }; + + fixupGLMessage(glContext, wallStartTime, wallEndTime, + threadStartTime, threadEndTime, + &glmsg, pointerArgs); + glContext->traceGLMessage(&glmsg); +} + +void GLTrace_glClearBufferfv(GLenum buffer, GLint drawbuffer, const GLfloat* value) { + GLMessage glmsg; + GLTraceContext *glContext = getGLTraceContext(); + + glmsg.set_function(GLMessage::glClearBufferfv); + + // copy argument buffer + GLMessage_DataType *arg_buffer = glmsg.add_args(); + arg_buffer->set_isarray(false); + arg_buffer->set_type(GLMessage::DataType::ENUM); + arg_buffer->add_intvalue((int)buffer); + + // copy argument drawbuffer + GLMessage_DataType *arg_drawbuffer = glmsg.add_args(); + arg_drawbuffer->set_isarray(false); + arg_drawbuffer->set_type(GLMessage::DataType::INT); + arg_drawbuffer->add_intvalue(drawbuffer); + + // copy argument value + GLMessage_DataType *arg_value = glmsg.add_args(); + arg_value->set_isarray(false); + arg_value->set_type(GLMessage::DataType::INT); + arg_value->add_intvalue((int)value); + + // call function + nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); + nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD); + glContext->hooks->gl.glClearBufferfv(buffer, drawbuffer, value); + nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD); + nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC); + + void *pointerArgs[] = { + (void *) value, + }; + + fixupGLMessage(glContext, wallStartTime, wallEndTime, + threadStartTime, threadEndTime, + &glmsg, pointerArgs); + glContext->traceGLMessage(&glmsg); +} + +void GLTrace_glClearBufferfi(GLenum buffer, GLint drawbuffer, GLfloat depth, GLint stencil) { + GLMessage glmsg; + GLTraceContext *glContext = getGLTraceContext(); + + glmsg.set_function(GLMessage::glClearBufferfi); + + // copy argument buffer + GLMessage_DataType *arg_buffer = glmsg.add_args(); + arg_buffer->set_isarray(false); + arg_buffer->set_type(GLMessage::DataType::ENUM); + arg_buffer->add_intvalue((int)buffer); + + // copy argument drawbuffer + GLMessage_DataType *arg_drawbuffer = glmsg.add_args(); + arg_drawbuffer->set_isarray(false); + arg_drawbuffer->set_type(GLMessage::DataType::INT); + arg_drawbuffer->add_intvalue(drawbuffer); + + // copy argument depth + GLMessage_DataType *arg_depth = glmsg.add_args(); + arg_depth->set_isarray(false); + arg_depth->set_type(GLMessage::DataType::FLOAT); + arg_depth->add_floatvalue(depth); + + // copy argument stencil + GLMessage_DataType *arg_stencil = glmsg.add_args(); + arg_stencil->set_isarray(false); + arg_stencil->set_type(GLMessage::DataType::INT); + arg_stencil->add_intvalue(stencil); + + // call function + nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); + nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD); + glContext->hooks->gl.glClearBufferfi(buffer, drawbuffer, depth, stencil); + nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD); + nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC); + + void *pointerArgs[] = { + }; + + fixupGLMessage(glContext, wallStartTime, wallEndTime, + threadStartTime, threadEndTime, + &glmsg, pointerArgs); + glContext->traceGLMessage(&glmsg); +} + +const GLubyte* GLTrace_glGetStringi(GLenum name, GLuint index) { + GLMessage glmsg; + GLTraceContext *glContext = getGLTraceContext(); + + glmsg.set_function(GLMessage::glGetStringi); + + // copy argument name + GLMessage_DataType *arg_name = glmsg.add_args(); + arg_name->set_isarray(false); + arg_name->set_type(GLMessage::DataType::ENUM); + arg_name->add_intvalue((int)name); + + // copy argument index + GLMessage_DataType *arg_index = glmsg.add_args(); + arg_index->set_isarray(false); + arg_index->set_type(GLMessage::DataType::INT); + arg_index->add_intvalue(index); + + // call function + nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); + nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD); + const GLubyte* retValue = glContext->hooks->gl.glGetStringi(name, index); + nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD); + nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC); + + // set return value + GLMessage_DataType *rt = glmsg.mutable_returnvalue(); + rt->set_isarray(false); + rt->set_type(GLMessage::DataType::INT); + rt->add_intvalue((int)retValue); + + void *pointerArgs[] = { + (void *) retValue, + }; + + fixupGLMessage(glContext, wallStartTime, wallEndTime, + threadStartTime, threadEndTime, + &glmsg, pointerArgs); + glContext->traceGLMessage(&glmsg); + + return retValue; +} + +void GLTrace_glCopyBufferSubData(GLenum readTarget, GLenum writeTarget, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size) { + GLMessage glmsg; + GLTraceContext *glContext = getGLTraceContext(); + + glmsg.set_function(GLMessage::glCopyBufferSubData); + + // copy argument readTarget + GLMessage_DataType *arg_readTarget = glmsg.add_args(); + arg_readTarget->set_isarray(false); + arg_readTarget->set_type(GLMessage::DataType::ENUM); + arg_readTarget->add_intvalue((int)readTarget); + + // copy argument writeTarget + GLMessage_DataType *arg_writeTarget = glmsg.add_args(); + arg_writeTarget->set_isarray(false); + arg_writeTarget->set_type(GLMessage::DataType::ENUM); + arg_writeTarget->add_intvalue((int)writeTarget); + + // copy argument readOffset + GLMessage_DataType *arg_readOffset = glmsg.add_args(); + arg_readOffset->set_isarray(false); + arg_readOffset->set_type(GLMessage::DataType::INT); + arg_readOffset->add_intvalue(readOffset); + + // copy argument writeOffset + GLMessage_DataType *arg_writeOffset = glmsg.add_args(); + arg_writeOffset->set_isarray(false); + arg_writeOffset->set_type(GLMessage::DataType::INT); + arg_writeOffset->add_intvalue(writeOffset); + + // copy argument size + GLMessage_DataType *arg_size = glmsg.add_args(); + arg_size->set_isarray(false); + arg_size->set_type(GLMessage::DataType::INT); + arg_size->add_intvalue(size); + + // call function + nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); + nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD); + glContext->hooks->gl.glCopyBufferSubData(readTarget, writeTarget, readOffset, writeOffset, size); + nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD); + nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC); + + void *pointerArgs[] = { + }; + + fixupGLMessage(glContext, wallStartTime, wallEndTime, + threadStartTime, threadEndTime, + &glmsg, pointerArgs); + glContext->traceGLMessage(&glmsg); +} + +void GLTrace_glGetUniformIndices(GLuint program, GLsizei uniformCount, const GLchar* const* uniformNames, GLuint* uniformIndices) { + GLMessage glmsg; + GLTraceContext *glContext = getGLTraceContext(); + + glmsg.set_function(GLMessage::glGetUniformIndices); + + // copy argument program + GLMessage_DataType *arg_program = glmsg.add_args(); + arg_program->set_isarray(false); + arg_program->set_type(GLMessage::DataType::INT); + arg_program->add_intvalue(program); + + // copy argument uniformCount + GLMessage_DataType *arg_uniformCount = glmsg.add_args(); + arg_uniformCount->set_isarray(false); + arg_uniformCount->set_type(GLMessage::DataType::INT); + arg_uniformCount->add_intvalue(uniformCount); + + // copy argument uniformNames + GLMessage_DataType *arg_uniformNames = glmsg.add_args(); + arg_uniformNames->set_isarray(false); + arg_uniformNames->set_type(GLMessage::DataType::INT); + arg_uniformNames->add_intvalue((int)uniformNames); + + // copy argument uniformIndices + GLMessage_DataType *arg_uniformIndices = glmsg.add_args(); + arg_uniformIndices->set_isarray(false); + arg_uniformIndices->set_type(GLMessage::DataType::INT); + arg_uniformIndices->add_intvalue((int)uniformIndices); + + // call function + nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); + nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD); + glContext->hooks->gl.glGetUniformIndices(program, uniformCount, uniformNames, uniformIndices); + nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD); + nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC); + + void *pointerArgs[] = { + (void *) uniformNames, + (void *) uniformIndices, + }; + + fixupGLMessage(glContext, wallStartTime, wallEndTime, + threadStartTime, threadEndTime, + &glmsg, pointerArgs); + glContext->traceGLMessage(&glmsg); +} + +void GLTrace_glGetActiveUniformsiv(GLuint program, GLsizei uniformCount, const GLuint* uniformIndices, GLenum pname, GLint* params) { + GLMessage glmsg; + GLTraceContext *glContext = getGLTraceContext(); + + glmsg.set_function(GLMessage::glGetActiveUniformsiv); + + // copy argument program + GLMessage_DataType *arg_program = glmsg.add_args(); + arg_program->set_isarray(false); + arg_program->set_type(GLMessage::DataType::INT); + arg_program->add_intvalue(program); + + // copy argument uniformCount + GLMessage_DataType *arg_uniformCount = glmsg.add_args(); + arg_uniformCount->set_isarray(false); + arg_uniformCount->set_type(GLMessage::DataType::INT); + arg_uniformCount->add_intvalue(uniformCount); + + // copy argument uniformIndices + GLMessage_DataType *arg_uniformIndices = glmsg.add_args(); + arg_uniformIndices->set_isarray(false); + arg_uniformIndices->set_type(GLMessage::DataType::INT); + arg_uniformIndices->add_intvalue((int)uniformIndices); + + // copy argument pname + GLMessage_DataType *arg_pname = glmsg.add_args(); + arg_pname->set_isarray(false); + arg_pname->set_type(GLMessage::DataType::ENUM); + arg_pname->add_intvalue((int)pname); + + // copy argument params + GLMessage_DataType *arg_params = glmsg.add_args(); + arg_params->set_isarray(false); + arg_params->set_type(GLMessage::DataType::INT); + arg_params->add_intvalue((int)params); + + // call function + nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); + nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD); + glContext->hooks->gl.glGetActiveUniformsiv(program, uniformCount, uniformIndices, pname, params); + nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD); + nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC); + + void *pointerArgs[] = { + (void *) uniformIndices, + (void *) params, + }; + + fixupGLMessage(glContext, wallStartTime, wallEndTime, + threadStartTime, threadEndTime, + &glmsg, pointerArgs); + glContext->traceGLMessage(&glmsg); +} + +GLuint GLTrace_glGetUniformBlockIndex(GLuint program, const GLchar* uniformBlockName) { + GLMessage glmsg; + GLTraceContext *glContext = getGLTraceContext(); + + glmsg.set_function(GLMessage::glGetUniformBlockIndex); + + // copy argument program + GLMessage_DataType *arg_program = glmsg.add_args(); + arg_program->set_isarray(false); + arg_program->set_type(GLMessage::DataType::INT); + arg_program->add_intvalue(program); + + // copy argument uniformBlockName + GLMessage_DataType *arg_uniformBlockName = glmsg.add_args(); + arg_uniformBlockName->set_isarray(false); + arg_uniformBlockName->set_type(GLMessage::DataType::INT); + arg_uniformBlockName->add_intvalue((int)uniformBlockName); + + // call function + nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); + nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD); + GLuint retValue = glContext->hooks->gl.glGetUniformBlockIndex(program, uniformBlockName); + nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD); + nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC); + + // set return value + GLMessage_DataType *rt = glmsg.mutable_returnvalue(); + rt->set_isarray(false); + rt->set_type(GLMessage::DataType::INT); + rt->add_intvalue(retValue); + + void *pointerArgs[] = { + (void *) uniformBlockName, + }; + + fixupGLMessage(glContext, wallStartTime, wallEndTime, + threadStartTime, threadEndTime, + &glmsg, pointerArgs); + glContext->traceGLMessage(&glmsg); + + return retValue; +} + +void GLTrace_glGetActiveUniformBlockiv(GLuint program, GLuint uniformBlockIndex, GLenum pname, GLint* params) { + GLMessage glmsg; + GLTraceContext *glContext = getGLTraceContext(); + + glmsg.set_function(GLMessage::glGetActiveUniformBlockiv); + + // copy argument program + GLMessage_DataType *arg_program = glmsg.add_args(); + arg_program->set_isarray(false); + arg_program->set_type(GLMessage::DataType::INT); + arg_program->add_intvalue(program); + + // copy argument uniformBlockIndex + GLMessage_DataType *arg_uniformBlockIndex = glmsg.add_args(); + arg_uniformBlockIndex->set_isarray(false); + arg_uniformBlockIndex->set_type(GLMessage::DataType::INT); + arg_uniformBlockIndex->add_intvalue(uniformBlockIndex); + + // copy argument pname + GLMessage_DataType *arg_pname = glmsg.add_args(); + arg_pname->set_isarray(false); + arg_pname->set_type(GLMessage::DataType::ENUM); + arg_pname->add_intvalue((int)pname); + + // copy argument params + GLMessage_DataType *arg_params = glmsg.add_args(); + arg_params->set_isarray(false); + arg_params->set_type(GLMessage::DataType::INT); + arg_params->add_intvalue((int)params); + + // call function + nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); + nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD); + glContext->hooks->gl.glGetActiveUniformBlockiv(program, uniformBlockIndex, pname, params); + nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD); + nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC); + + void *pointerArgs[] = { + (void *) params, + }; + + fixupGLMessage(glContext, wallStartTime, wallEndTime, + threadStartTime, threadEndTime, + &glmsg, pointerArgs); + glContext->traceGLMessage(&glmsg); +} + +void GLTrace_glGetActiveUniformBlockName(GLuint program, GLuint uniformBlockIndex, GLsizei bufSize, GLsizei* length, GLchar* uniformBlockName) { + GLMessage glmsg; + GLTraceContext *glContext = getGLTraceContext(); + + glmsg.set_function(GLMessage::glGetActiveUniformBlockName); + + // copy argument program + GLMessage_DataType *arg_program = glmsg.add_args(); + arg_program->set_isarray(false); + arg_program->set_type(GLMessage::DataType::INT); + arg_program->add_intvalue(program); + + // copy argument uniformBlockIndex + GLMessage_DataType *arg_uniformBlockIndex = glmsg.add_args(); + arg_uniformBlockIndex->set_isarray(false); + arg_uniformBlockIndex->set_type(GLMessage::DataType::INT); + arg_uniformBlockIndex->add_intvalue(uniformBlockIndex); + + // copy argument bufSize + GLMessage_DataType *arg_bufSize = glmsg.add_args(); + arg_bufSize->set_isarray(false); + arg_bufSize->set_type(GLMessage::DataType::INT); + arg_bufSize->add_intvalue(bufSize); + + // copy argument length + GLMessage_DataType *arg_length = glmsg.add_args(); + arg_length->set_isarray(false); + arg_length->set_type(GLMessage::DataType::INT); + arg_length->add_intvalue((int)length); + + // copy argument uniformBlockName + GLMessage_DataType *arg_uniformBlockName = glmsg.add_args(); + arg_uniformBlockName->set_isarray(false); + arg_uniformBlockName->set_type(GLMessage::DataType::INT); + arg_uniformBlockName->add_intvalue((int)uniformBlockName); + + // call function + nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); + nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD); + glContext->hooks->gl.glGetActiveUniformBlockName(program, uniformBlockIndex, bufSize, length, uniformBlockName); + nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD); + nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC); + + void *pointerArgs[] = { + (void *) length, + (void *) uniformBlockName, + }; + + fixupGLMessage(glContext, wallStartTime, wallEndTime, + threadStartTime, threadEndTime, + &glmsg, pointerArgs); + glContext->traceGLMessage(&glmsg); +} + +void GLTrace_glUniformBlockBinding(GLuint program, GLuint uniformBlockIndex, GLuint uniformBlockBinding) { + GLMessage glmsg; + GLTraceContext *glContext = getGLTraceContext(); + + glmsg.set_function(GLMessage::glUniformBlockBinding); + + // copy argument program + GLMessage_DataType *arg_program = glmsg.add_args(); + arg_program->set_isarray(false); + arg_program->set_type(GLMessage::DataType::INT); + arg_program->add_intvalue(program); + + // copy argument uniformBlockIndex + GLMessage_DataType *arg_uniformBlockIndex = glmsg.add_args(); + arg_uniformBlockIndex->set_isarray(false); + arg_uniformBlockIndex->set_type(GLMessage::DataType::INT); + arg_uniformBlockIndex->add_intvalue(uniformBlockIndex); + + // copy argument uniformBlockBinding + GLMessage_DataType *arg_uniformBlockBinding = glmsg.add_args(); + arg_uniformBlockBinding->set_isarray(false); + arg_uniformBlockBinding->set_type(GLMessage::DataType::INT); + arg_uniformBlockBinding->add_intvalue(uniformBlockBinding); + + // call function + nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); + nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD); + glContext->hooks->gl.glUniformBlockBinding(program, uniformBlockIndex, uniformBlockBinding); + nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD); + nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC); + + void *pointerArgs[] = { + }; + + fixupGLMessage(glContext, wallStartTime, wallEndTime, + threadStartTime, threadEndTime, + &glmsg, pointerArgs); + glContext->traceGLMessage(&glmsg); +} + +void GLTrace_glDrawArraysInstanced(GLenum mode, GLint first, GLsizei count, GLsizei instanceCount) { + GLMessage glmsg; + GLTraceContext *glContext = getGLTraceContext(); + + glmsg.set_function(GLMessage::glDrawArraysInstanced); + + // copy argument mode + GLMessage_DataType *arg_mode = glmsg.add_args(); + arg_mode->set_isarray(false); + arg_mode->set_type(GLMessage::DataType::ENUM); + arg_mode->add_intvalue((int)mode); + + // copy argument first + GLMessage_DataType *arg_first = glmsg.add_args(); + arg_first->set_isarray(false); + arg_first->set_type(GLMessage::DataType::INT); + arg_first->add_intvalue(first); + + // copy argument count + GLMessage_DataType *arg_count = glmsg.add_args(); + arg_count->set_isarray(false); + arg_count->set_type(GLMessage::DataType::INT); + arg_count->add_intvalue(count); + + // copy argument instanceCount + GLMessage_DataType *arg_instanceCount = glmsg.add_args(); + arg_instanceCount->set_isarray(false); + arg_instanceCount->set_type(GLMessage::DataType::INT); + arg_instanceCount->add_intvalue(instanceCount); + + // call function + nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); + nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD); + glContext->hooks->gl.glDrawArraysInstanced(mode, first, count, instanceCount); + nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD); + nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC); + + void *pointerArgs[] = { + }; + + fixupGLMessage(glContext, wallStartTime, wallEndTime, + threadStartTime, threadEndTime, + &glmsg, pointerArgs); + glContext->traceGLMessage(&glmsg); +} + +void GLTrace_glDrawElementsInstanced(GLenum mode, GLsizei count, GLenum type, const GLvoid* indices, GLsizei instanceCount) { + GLMessage glmsg; + GLTraceContext *glContext = getGLTraceContext(); + + glmsg.set_function(GLMessage::glDrawElementsInstanced); + + // copy argument mode + GLMessage_DataType *arg_mode = glmsg.add_args(); + arg_mode->set_isarray(false); + arg_mode->set_type(GLMessage::DataType::ENUM); + arg_mode->add_intvalue((int)mode); + + // copy argument count + GLMessage_DataType *arg_count = glmsg.add_args(); + arg_count->set_isarray(false); + arg_count->set_type(GLMessage::DataType::INT); + arg_count->add_intvalue(count); + + // copy argument type + GLMessage_DataType *arg_type = glmsg.add_args(); + arg_type->set_isarray(false); + arg_type->set_type(GLMessage::DataType::ENUM); + arg_type->add_intvalue((int)type); + + // copy argument indices + GLMessage_DataType *arg_indices = glmsg.add_args(); + arg_indices->set_isarray(false); + arg_indices->set_type(GLMessage::DataType::INT); + arg_indices->add_intvalue((int)indices); + + // copy argument instanceCount + GLMessage_DataType *arg_instanceCount = glmsg.add_args(); + arg_instanceCount->set_isarray(false); + arg_instanceCount->set_type(GLMessage::DataType::INT); + arg_instanceCount->add_intvalue(instanceCount); + + // call function + nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); + nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD); + glContext->hooks->gl.glDrawElementsInstanced(mode, count, type, indices, instanceCount); + nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD); + nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC); + + void *pointerArgs[] = { + (void *) indices, + }; + + fixupGLMessage(glContext, wallStartTime, wallEndTime, + threadStartTime, threadEndTime, + &glmsg, pointerArgs); + glContext->traceGLMessage(&glmsg); +} + +GLsync GLTrace_glFenceSync(GLenum condition, GLbitfield flags) { + GLMessage glmsg; + GLTraceContext *glContext = getGLTraceContext(); + + glmsg.set_function(GLMessage::glFenceSync); + + // copy argument condition + GLMessage_DataType *arg_condition = glmsg.add_args(); + arg_condition->set_isarray(false); + arg_condition->set_type(GLMessage::DataType::ENUM); + arg_condition->add_intvalue((int)condition); + + // copy argument flags + GLMessage_DataType *arg_flags = glmsg.add_args(); + arg_flags->set_isarray(false); + arg_flags->set_type(GLMessage::DataType::INT); + arg_flags->add_intvalue(flags); + + // call function + nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); + nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD); + GLsync retValue = glContext->hooks->gl.glFenceSync(condition, flags); + nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD); + nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC); + + // set return value + GLMessage_DataType *rt = glmsg.mutable_returnvalue(); + rt->set_isarray(false); + rt->set_type(GLMessage::DataType::INT); + rt->add_intvalue((int)retValue); + + void *pointerArgs[] = { + (void *) retValue, + }; + + fixupGLMessage(glContext, wallStartTime, wallEndTime, + threadStartTime, threadEndTime, + &glmsg, pointerArgs); + glContext->traceGLMessage(&glmsg); + + return retValue; +} + +GLboolean GLTrace_glIsSync(GLsync sync) { + GLMessage glmsg; + GLTraceContext *glContext = getGLTraceContext(); + + glmsg.set_function(GLMessage::glIsSync); + + // copy argument sync + GLMessage_DataType *arg_sync = glmsg.add_args(); + arg_sync->set_isarray(false); + arg_sync->set_type(GLMessage::DataType::INT); + arg_sync->add_intvalue((int)sync); + + // call function + nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); + nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD); + GLboolean retValue = glContext->hooks->gl.glIsSync(sync); + nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD); + nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC); + + // set return value + GLMessage_DataType *rt = glmsg.mutable_returnvalue(); + rt->set_isarray(false); + rt->set_type(GLMessage::DataType::BOOL); + rt->add_boolvalue(retValue); + + void *pointerArgs[] = { + (void *) sync, + }; + + fixupGLMessage(glContext, wallStartTime, wallEndTime, + threadStartTime, threadEndTime, + &glmsg, pointerArgs); + glContext->traceGLMessage(&glmsg); + + return retValue; +} + +void GLTrace_glDeleteSync(GLsync sync) { + GLMessage glmsg; + GLTraceContext *glContext = getGLTraceContext(); + + glmsg.set_function(GLMessage::glDeleteSync); + + // copy argument sync + GLMessage_DataType *arg_sync = glmsg.add_args(); + arg_sync->set_isarray(false); + arg_sync->set_type(GLMessage::DataType::INT); + arg_sync->add_intvalue((int)sync); + + // call function + nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); + nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD); + glContext->hooks->gl.glDeleteSync(sync); + nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD); + nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC); + + void *pointerArgs[] = { + (void *) sync, + }; + + fixupGLMessage(glContext, wallStartTime, wallEndTime, + threadStartTime, threadEndTime, + &glmsg, pointerArgs); + glContext->traceGLMessage(&glmsg); +} + +GLenum GLTrace_glClientWaitSync(GLsync sync, GLbitfield flags, GLuint64 timeout) { + GLMessage glmsg; + GLTraceContext *glContext = getGLTraceContext(); + + glmsg.set_function(GLMessage::glClientWaitSync); + + // copy argument sync + GLMessage_DataType *arg_sync = glmsg.add_args(); + arg_sync->set_isarray(false); + arg_sync->set_type(GLMessage::DataType::INT); + arg_sync->add_intvalue((int)sync); + + // copy argument flags + GLMessage_DataType *arg_flags = glmsg.add_args(); + arg_flags->set_isarray(false); + arg_flags->set_type(GLMessage::DataType::INT); + arg_flags->add_intvalue(flags); + + // copy argument timeout + GLMessage_DataType *arg_timeout = glmsg.add_args(); + arg_timeout->set_isarray(false); + arg_timeout->set_type(GLMessage::DataType::INT64); + arg_timeout->add_int64value(timeout); + + // call function + nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); + nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD); + GLenum retValue = glContext->hooks->gl.glClientWaitSync(sync, flags, timeout); + nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD); + nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC); + + // set return value + GLMessage_DataType *rt = glmsg.mutable_returnvalue(); + rt->set_isarray(false); + rt->set_type(GLMessage::DataType::ENUM); + rt->add_intvalue((int)retValue); + + void *pointerArgs[] = { + (void *) sync, + }; + + fixupGLMessage(glContext, wallStartTime, wallEndTime, + threadStartTime, threadEndTime, + &glmsg, pointerArgs); + glContext->traceGLMessage(&glmsg); + + return retValue; +} + +void GLTrace_glWaitSync(GLsync sync, GLbitfield flags, GLuint64 timeout) { + GLMessage glmsg; + GLTraceContext *glContext = getGLTraceContext(); + + glmsg.set_function(GLMessage::glWaitSync); + + // copy argument sync + GLMessage_DataType *arg_sync = glmsg.add_args(); + arg_sync->set_isarray(false); + arg_sync->set_type(GLMessage::DataType::INT); + arg_sync->add_intvalue((int)sync); + + // copy argument flags + GLMessage_DataType *arg_flags = glmsg.add_args(); + arg_flags->set_isarray(false); + arg_flags->set_type(GLMessage::DataType::INT); + arg_flags->add_intvalue(flags); + + // copy argument timeout + GLMessage_DataType *arg_timeout = glmsg.add_args(); + arg_timeout->set_isarray(false); + arg_timeout->set_type(GLMessage::DataType::INT64); + arg_timeout->add_int64value(timeout); + + // call function + nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); + nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD); + glContext->hooks->gl.glWaitSync(sync, flags, timeout); + nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD); + nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC); + + void *pointerArgs[] = { + (void *) sync, + }; + + fixupGLMessage(glContext, wallStartTime, wallEndTime, + threadStartTime, threadEndTime, + &glmsg, pointerArgs); + glContext->traceGLMessage(&glmsg); +} + +void GLTrace_glGetInteger64v(GLenum pname, GLint64* params) { + GLMessage glmsg; + GLTraceContext *glContext = getGLTraceContext(); + + glmsg.set_function(GLMessage::glGetInteger64v); + + // copy argument pname + GLMessage_DataType *arg_pname = glmsg.add_args(); + arg_pname->set_isarray(false); + arg_pname->set_type(GLMessage::DataType::ENUM); + arg_pname->add_intvalue((int)pname); + + // copy argument params + GLMessage_DataType *arg_params = glmsg.add_args(); + arg_params->set_isarray(false); + arg_params->set_type(GLMessage::DataType::INT); + arg_params->add_intvalue((int)params); + + // call function + nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); + nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD); + glContext->hooks->gl.glGetInteger64v(pname, params); + nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD); + nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC); + + void *pointerArgs[] = { + (void *) params, + }; + + fixupGLMessage(glContext, wallStartTime, wallEndTime, + threadStartTime, threadEndTime, + &glmsg, pointerArgs); + glContext->traceGLMessage(&glmsg); +} + +void GLTrace_glGetSynciv(GLsync sync, GLenum pname, GLsizei bufSize, GLsizei* length, GLint* values) { + GLMessage glmsg; + GLTraceContext *glContext = getGLTraceContext(); + + glmsg.set_function(GLMessage::glGetSynciv); + + // copy argument sync + GLMessage_DataType *arg_sync = glmsg.add_args(); + arg_sync->set_isarray(false); + arg_sync->set_type(GLMessage::DataType::INT); + arg_sync->add_intvalue((int)sync); + + // copy argument pname + GLMessage_DataType *arg_pname = glmsg.add_args(); + arg_pname->set_isarray(false); + arg_pname->set_type(GLMessage::DataType::ENUM); + arg_pname->add_intvalue((int)pname); + + // copy argument bufSize + GLMessage_DataType *arg_bufSize = glmsg.add_args(); + arg_bufSize->set_isarray(false); + arg_bufSize->set_type(GLMessage::DataType::INT); + arg_bufSize->add_intvalue(bufSize); + + // copy argument length + GLMessage_DataType *arg_length = glmsg.add_args(); + arg_length->set_isarray(false); + arg_length->set_type(GLMessage::DataType::INT); + arg_length->add_intvalue((int)length); + + // copy argument values + GLMessage_DataType *arg_values = glmsg.add_args(); + arg_values->set_isarray(false); + arg_values->set_type(GLMessage::DataType::INT); + arg_values->add_intvalue((int)values); + + // call function + nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); + nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD); + glContext->hooks->gl.glGetSynciv(sync, pname, bufSize, length, values); + nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD); + nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC); + + void *pointerArgs[] = { + (void *) sync, + (void *) length, + (void *) values, + }; + + fixupGLMessage(glContext, wallStartTime, wallEndTime, + threadStartTime, threadEndTime, + &glmsg, pointerArgs); + glContext->traceGLMessage(&glmsg); +} + +void GLTrace_glGetInteger64i_v(GLenum target, GLuint index, GLint64* data) { + GLMessage glmsg; + GLTraceContext *glContext = getGLTraceContext(); + + glmsg.set_function(GLMessage::glGetInteger64i_v); + + // copy argument target + GLMessage_DataType *arg_target = glmsg.add_args(); + arg_target->set_isarray(false); + arg_target->set_type(GLMessage::DataType::ENUM); + arg_target->add_intvalue((int)target); + + // copy argument index + GLMessage_DataType *arg_index = glmsg.add_args(); + arg_index->set_isarray(false); + arg_index->set_type(GLMessage::DataType::INT); + arg_index->add_intvalue(index); + + // copy argument data + GLMessage_DataType *arg_data = glmsg.add_args(); + arg_data->set_isarray(false); + arg_data->set_type(GLMessage::DataType::INT); + arg_data->add_intvalue((int)data); + + // call function + nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); + nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD); + glContext->hooks->gl.glGetInteger64i_v(target, index, data); + nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD); + nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC); + + void *pointerArgs[] = { + (void *) data, + }; + + fixupGLMessage(glContext, wallStartTime, wallEndTime, + threadStartTime, threadEndTime, + &glmsg, pointerArgs); + glContext->traceGLMessage(&glmsg); +} + +void GLTrace_glGetBufferParameteri64v(GLenum target, GLenum pname, GLint64* params) { + GLMessage glmsg; + GLTraceContext *glContext = getGLTraceContext(); + + glmsg.set_function(GLMessage::glGetBufferParameteri64v); + + // copy argument target + GLMessage_DataType *arg_target = glmsg.add_args(); + arg_target->set_isarray(false); + arg_target->set_type(GLMessage::DataType::ENUM); + arg_target->add_intvalue((int)target); + + // copy argument pname + GLMessage_DataType *arg_pname = glmsg.add_args(); + arg_pname->set_isarray(false); + arg_pname->set_type(GLMessage::DataType::ENUM); + arg_pname->add_intvalue((int)pname); + + // copy argument params + GLMessage_DataType *arg_params = glmsg.add_args(); + arg_params->set_isarray(false); + arg_params->set_type(GLMessage::DataType::INT); + arg_params->add_intvalue((int)params); + + // call function + nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); + nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD); + glContext->hooks->gl.glGetBufferParameteri64v(target, pname, params); + nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD); + nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC); + + void *pointerArgs[] = { + (void *) params, + }; + + fixupGLMessage(glContext, wallStartTime, wallEndTime, + threadStartTime, threadEndTime, + &glmsg, pointerArgs); + glContext->traceGLMessage(&glmsg); +} + +void GLTrace_glGenSamplers(GLsizei count, GLuint* samplers) { + GLMessage glmsg; + GLTraceContext *glContext = getGLTraceContext(); + + glmsg.set_function(GLMessage::glGenSamplers); + + // copy argument count + GLMessage_DataType *arg_count = glmsg.add_args(); + arg_count->set_isarray(false); + arg_count->set_type(GLMessage::DataType::INT); + arg_count->add_intvalue(count); + + // copy argument samplers + GLMessage_DataType *arg_samplers = glmsg.add_args(); + arg_samplers->set_isarray(false); + arg_samplers->set_type(GLMessage::DataType::INT); + arg_samplers->add_intvalue((int)samplers); + + // call function + nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); + nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD); + glContext->hooks->gl.glGenSamplers(count, samplers); + nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD); + nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC); + + void *pointerArgs[] = { + (void *) samplers, + }; + + fixupGLMessage(glContext, wallStartTime, wallEndTime, + threadStartTime, threadEndTime, + &glmsg, pointerArgs); + glContext->traceGLMessage(&glmsg); +} + +void GLTrace_glDeleteSamplers(GLsizei count, const GLuint* samplers) { + GLMessage glmsg; + GLTraceContext *glContext = getGLTraceContext(); + + glmsg.set_function(GLMessage::glDeleteSamplers); + + // copy argument count + GLMessage_DataType *arg_count = glmsg.add_args(); + arg_count->set_isarray(false); + arg_count->set_type(GLMessage::DataType::INT); + arg_count->add_intvalue(count); + + // copy argument samplers + GLMessage_DataType *arg_samplers = glmsg.add_args(); + arg_samplers->set_isarray(false); + arg_samplers->set_type(GLMessage::DataType::INT); + arg_samplers->add_intvalue((int)samplers); + + // call function + nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); + nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD); + glContext->hooks->gl.glDeleteSamplers(count, samplers); + nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD); + nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC); + + void *pointerArgs[] = { + (void *) samplers, + }; + + fixupGLMessage(glContext, wallStartTime, wallEndTime, + threadStartTime, threadEndTime, + &glmsg, pointerArgs); + glContext->traceGLMessage(&glmsg); +} + +GLboolean GLTrace_glIsSampler(GLuint sampler) { + GLMessage glmsg; + GLTraceContext *glContext = getGLTraceContext(); + + glmsg.set_function(GLMessage::glIsSampler); + + // copy argument sampler + GLMessage_DataType *arg_sampler = glmsg.add_args(); + arg_sampler->set_isarray(false); + arg_sampler->set_type(GLMessage::DataType::INT); + arg_sampler->add_intvalue(sampler); + + // call function + nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); + nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD); + GLboolean retValue = glContext->hooks->gl.glIsSampler(sampler); + nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD); + nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC); + + // set return value + GLMessage_DataType *rt = glmsg.mutable_returnvalue(); + rt->set_isarray(false); + rt->set_type(GLMessage::DataType::BOOL); + rt->add_boolvalue(retValue); + + void *pointerArgs[] = { + }; + + fixupGLMessage(glContext, wallStartTime, wallEndTime, + threadStartTime, threadEndTime, + &glmsg, pointerArgs); + glContext->traceGLMessage(&glmsg); + + return retValue; +} + +void GLTrace_glBindSampler(GLuint unit, GLuint sampler) { + GLMessage glmsg; + GLTraceContext *glContext = getGLTraceContext(); + + glmsg.set_function(GLMessage::glBindSampler); + + // copy argument unit + GLMessage_DataType *arg_unit = glmsg.add_args(); + arg_unit->set_isarray(false); + arg_unit->set_type(GLMessage::DataType::INT); + arg_unit->add_intvalue(unit); + + // copy argument sampler + GLMessage_DataType *arg_sampler = glmsg.add_args(); + arg_sampler->set_isarray(false); + arg_sampler->set_type(GLMessage::DataType::INT); + arg_sampler->add_intvalue(sampler); + + // call function + nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); + nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD); + glContext->hooks->gl.glBindSampler(unit, sampler); + nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD); + nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC); + + void *pointerArgs[] = { + }; + + fixupGLMessage(glContext, wallStartTime, wallEndTime, + threadStartTime, threadEndTime, + &glmsg, pointerArgs); + glContext->traceGLMessage(&glmsg); +} + +void GLTrace_glSamplerParameteri(GLuint sampler, GLenum pname, GLint param) { + GLMessage glmsg; + GLTraceContext *glContext = getGLTraceContext(); + + glmsg.set_function(GLMessage::glSamplerParameteri); + + // copy argument sampler + GLMessage_DataType *arg_sampler = glmsg.add_args(); + arg_sampler->set_isarray(false); + arg_sampler->set_type(GLMessage::DataType::INT); + arg_sampler->add_intvalue(sampler); + + // copy argument pname + GLMessage_DataType *arg_pname = glmsg.add_args(); + arg_pname->set_isarray(false); + arg_pname->set_type(GLMessage::DataType::ENUM); + arg_pname->add_intvalue((int)pname); + + // copy argument param + GLMessage_DataType *arg_param = glmsg.add_args(); + arg_param->set_isarray(false); + arg_param->set_type(GLMessage::DataType::INT); + arg_param->add_intvalue(param); + + // call function + nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); + nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD); + glContext->hooks->gl.glSamplerParameteri(sampler, pname, param); + nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD); + nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC); + + void *pointerArgs[] = { + }; + + fixupGLMessage(glContext, wallStartTime, wallEndTime, + threadStartTime, threadEndTime, + &glmsg, pointerArgs); + glContext->traceGLMessage(&glmsg); +} + +void GLTrace_glSamplerParameteriv(GLuint sampler, GLenum pname, const GLint* param) { + GLMessage glmsg; + GLTraceContext *glContext = getGLTraceContext(); + + glmsg.set_function(GLMessage::glSamplerParameteriv); + + // copy argument sampler + GLMessage_DataType *arg_sampler = glmsg.add_args(); + arg_sampler->set_isarray(false); + arg_sampler->set_type(GLMessage::DataType::INT); + arg_sampler->add_intvalue(sampler); + + // copy argument pname + GLMessage_DataType *arg_pname = glmsg.add_args(); + arg_pname->set_isarray(false); + arg_pname->set_type(GLMessage::DataType::ENUM); + arg_pname->add_intvalue((int)pname); + + // copy argument param + GLMessage_DataType *arg_param = glmsg.add_args(); + arg_param->set_isarray(false); + arg_param->set_type(GLMessage::DataType::INT); + arg_param->add_intvalue((int)param); + + // call function + nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); + nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD); + glContext->hooks->gl.glSamplerParameteriv(sampler, pname, param); + nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD); + nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC); + + void *pointerArgs[] = { + (void *) param, + }; + + fixupGLMessage(glContext, wallStartTime, wallEndTime, + threadStartTime, threadEndTime, + &glmsg, pointerArgs); + glContext->traceGLMessage(&glmsg); +} + +void GLTrace_glSamplerParameterf(GLuint sampler, GLenum pname, GLfloat param) { + GLMessage glmsg; + GLTraceContext *glContext = getGLTraceContext(); + + glmsg.set_function(GLMessage::glSamplerParameterf); + + // copy argument sampler + GLMessage_DataType *arg_sampler = glmsg.add_args(); + arg_sampler->set_isarray(false); + arg_sampler->set_type(GLMessage::DataType::INT); + arg_sampler->add_intvalue(sampler); + + // copy argument pname + GLMessage_DataType *arg_pname = glmsg.add_args(); + arg_pname->set_isarray(false); + arg_pname->set_type(GLMessage::DataType::ENUM); + arg_pname->add_intvalue((int)pname); + + // copy argument param + GLMessage_DataType *arg_param = glmsg.add_args(); + arg_param->set_isarray(false); + arg_param->set_type(GLMessage::DataType::FLOAT); + arg_param->add_floatvalue(param); + + // call function + nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); + nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD); + glContext->hooks->gl.glSamplerParameterf(sampler, pname, param); + nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD); + nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC); + + void *pointerArgs[] = { + }; + + fixupGLMessage(glContext, wallStartTime, wallEndTime, + threadStartTime, threadEndTime, + &glmsg, pointerArgs); + glContext->traceGLMessage(&glmsg); +} + +void GLTrace_glSamplerParameterfv(GLuint sampler, GLenum pname, const GLfloat* param) { + GLMessage glmsg; + GLTraceContext *glContext = getGLTraceContext(); + + glmsg.set_function(GLMessage::glSamplerParameterfv); + + // copy argument sampler + GLMessage_DataType *arg_sampler = glmsg.add_args(); + arg_sampler->set_isarray(false); + arg_sampler->set_type(GLMessage::DataType::INT); + arg_sampler->add_intvalue(sampler); + + // copy argument pname + GLMessage_DataType *arg_pname = glmsg.add_args(); + arg_pname->set_isarray(false); + arg_pname->set_type(GLMessage::DataType::ENUM); + arg_pname->add_intvalue((int)pname); + + // copy argument param + GLMessage_DataType *arg_param = glmsg.add_args(); + arg_param->set_isarray(false); + arg_param->set_type(GLMessage::DataType::INT); + arg_param->add_intvalue((int)param); + + // call function + nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); + nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD); + glContext->hooks->gl.glSamplerParameterfv(sampler, pname, param); + nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD); + nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC); + + void *pointerArgs[] = { + (void *) param, + }; + + fixupGLMessage(glContext, wallStartTime, wallEndTime, + threadStartTime, threadEndTime, + &glmsg, pointerArgs); + glContext->traceGLMessage(&glmsg); +} + +void GLTrace_glGetSamplerParameteriv(GLuint sampler, GLenum pname, GLint* params) { + GLMessage glmsg; + GLTraceContext *glContext = getGLTraceContext(); + + glmsg.set_function(GLMessage::glGetSamplerParameteriv); + + // copy argument sampler + GLMessage_DataType *arg_sampler = glmsg.add_args(); + arg_sampler->set_isarray(false); + arg_sampler->set_type(GLMessage::DataType::INT); + arg_sampler->add_intvalue(sampler); + + // copy argument pname + GLMessage_DataType *arg_pname = glmsg.add_args(); + arg_pname->set_isarray(false); + arg_pname->set_type(GLMessage::DataType::ENUM); + arg_pname->add_intvalue((int)pname); + + // copy argument params + GLMessage_DataType *arg_params = glmsg.add_args(); + arg_params->set_isarray(false); + arg_params->set_type(GLMessage::DataType::INT); + arg_params->add_intvalue((int)params); + + // call function + nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); + nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD); + glContext->hooks->gl.glGetSamplerParameteriv(sampler, pname, params); + nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD); + nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC); + + void *pointerArgs[] = { + (void *) params, + }; + + fixupGLMessage(glContext, wallStartTime, wallEndTime, + threadStartTime, threadEndTime, + &glmsg, pointerArgs); + glContext->traceGLMessage(&glmsg); +} + +void GLTrace_glGetSamplerParameterfv(GLuint sampler, GLenum pname, GLfloat* params) { + GLMessage glmsg; + GLTraceContext *glContext = getGLTraceContext(); + + glmsg.set_function(GLMessage::glGetSamplerParameterfv); + + // copy argument sampler + GLMessage_DataType *arg_sampler = glmsg.add_args(); + arg_sampler->set_isarray(false); + arg_sampler->set_type(GLMessage::DataType::INT); + arg_sampler->add_intvalue(sampler); + + // copy argument pname + GLMessage_DataType *arg_pname = glmsg.add_args(); + arg_pname->set_isarray(false); + arg_pname->set_type(GLMessage::DataType::ENUM); + arg_pname->add_intvalue((int)pname); + + // copy argument params + GLMessage_DataType *arg_params = glmsg.add_args(); + arg_params->set_isarray(false); + arg_params->set_type(GLMessage::DataType::INT); + arg_params->add_intvalue((int)params); + + // call function + nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); + nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD); + glContext->hooks->gl.glGetSamplerParameterfv(sampler, pname, params); + nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD); + nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC); + + void *pointerArgs[] = { + (void *) params, + }; + + fixupGLMessage(glContext, wallStartTime, wallEndTime, + threadStartTime, threadEndTime, + &glmsg, pointerArgs); + glContext->traceGLMessage(&glmsg); +} + +void GLTrace_glVertexAttribDivisor(GLuint index, GLuint divisor) { + GLMessage glmsg; + GLTraceContext *glContext = getGLTraceContext(); + + glmsg.set_function(GLMessage::glVertexAttribDivisor); + + // copy argument index + GLMessage_DataType *arg_index = glmsg.add_args(); + arg_index->set_isarray(false); + arg_index->set_type(GLMessage::DataType::INT); + arg_index->add_intvalue(index); + + // copy argument divisor + GLMessage_DataType *arg_divisor = glmsg.add_args(); + arg_divisor->set_isarray(false); + arg_divisor->set_type(GLMessage::DataType::INT); + arg_divisor->add_intvalue(divisor); + + // call function + nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); + nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD); + glContext->hooks->gl.glVertexAttribDivisor(index, divisor); + nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD); + nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC); + + void *pointerArgs[] = { + }; + + fixupGLMessage(glContext, wallStartTime, wallEndTime, + threadStartTime, threadEndTime, + &glmsg, pointerArgs); + glContext->traceGLMessage(&glmsg); +} + +void GLTrace_glBindTransformFeedback(GLenum target, GLuint id) { + GLMessage glmsg; + GLTraceContext *glContext = getGLTraceContext(); + + glmsg.set_function(GLMessage::glBindTransformFeedback); + + // copy argument target + GLMessage_DataType *arg_target = glmsg.add_args(); + arg_target->set_isarray(false); + arg_target->set_type(GLMessage::DataType::ENUM); + arg_target->add_intvalue((int)target); + + // copy argument id + GLMessage_DataType *arg_id = glmsg.add_args(); + arg_id->set_isarray(false); + arg_id->set_type(GLMessage::DataType::INT); + arg_id->add_intvalue(id); + + // call function + nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); + nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD); + glContext->hooks->gl.glBindTransformFeedback(target, id); + nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD); + nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC); + + void *pointerArgs[] = { + }; + + fixupGLMessage(glContext, wallStartTime, wallEndTime, + threadStartTime, threadEndTime, + &glmsg, pointerArgs); + glContext->traceGLMessage(&glmsg); +} + +void GLTrace_glDeleteTransformFeedbacks(GLsizei n, const GLuint* ids) { + GLMessage glmsg; + GLTraceContext *glContext = getGLTraceContext(); + + glmsg.set_function(GLMessage::glDeleteTransformFeedbacks); + + // copy argument n + GLMessage_DataType *arg_n = glmsg.add_args(); + arg_n->set_isarray(false); + arg_n->set_type(GLMessage::DataType::INT); + arg_n->add_intvalue(n); + + // copy argument ids + GLMessage_DataType *arg_ids = glmsg.add_args(); + arg_ids->set_isarray(false); + arg_ids->set_type(GLMessage::DataType::INT); + arg_ids->add_intvalue((int)ids); + + // call function + nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); + nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD); + glContext->hooks->gl.glDeleteTransformFeedbacks(n, ids); + nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD); + nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC); + + void *pointerArgs[] = { + (void *) ids, + }; + + fixupGLMessage(glContext, wallStartTime, wallEndTime, + threadStartTime, threadEndTime, + &glmsg, pointerArgs); + glContext->traceGLMessage(&glmsg); +} + +void GLTrace_glGenTransformFeedbacks(GLsizei n, GLuint* ids) { + GLMessage glmsg; + GLTraceContext *glContext = getGLTraceContext(); + + glmsg.set_function(GLMessage::glGenTransformFeedbacks); + + // copy argument n + GLMessage_DataType *arg_n = glmsg.add_args(); + arg_n->set_isarray(false); + arg_n->set_type(GLMessage::DataType::INT); + arg_n->add_intvalue(n); + + // copy argument ids + GLMessage_DataType *arg_ids = glmsg.add_args(); + arg_ids->set_isarray(false); + arg_ids->set_type(GLMessage::DataType::INT); + arg_ids->add_intvalue((int)ids); + + // call function + nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); + nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD); + glContext->hooks->gl.glGenTransformFeedbacks(n, ids); + nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD); + nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC); + + void *pointerArgs[] = { + (void *) ids, + }; + + fixupGLMessage(glContext, wallStartTime, wallEndTime, + threadStartTime, threadEndTime, + &glmsg, pointerArgs); + glContext->traceGLMessage(&glmsg); +} + +GLboolean GLTrace_glIsTransformFeedback(GLuint id) { + GLMessage glmsg; + GLTraceContext *glContext = getGLTraceContext(); + + glmsg.set_function(GLMessage::glIsTransformFeedback); + + // copy argument id + GLMessage_DataType *arg_id = glmsg.add_args(); + arg_id->set_isarray(false); + arg_id->set_type(GLMessage::DataType::INT); + arg_id->add_intvalue(id); + + // call function + nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); + nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD); + GLboolean retValue = glContext->hooks->gl.glIsTransformFeedback(id); + nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD); + nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC); + + // set return value + GLMessage_DataType *rt = glmsg.mutable_returnvalue(); + rt->set_isarray(false); + rt->set_type(GLMessage::DataType::BOOL); + rt->add_boolvalue(retValue); + + void *pointerArgs[] = { + }; + + fixupGLMessage(glContext, wallStartTime, wallEndTime, + threadStartTime, threadEndTime, + &glmsg, pointerArgs); + glContext->traceGLMessage(&glmsg); + + return retValue; +} + +void GLTrace_glPauseTransformFeedback(void) { + GLMessage glmsg; + GLTraceContext *glContext = getGLTraceContext(); + + glmsg.set_function(GLMessage::glPauseTransformFeedback); + + // call function + nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); + nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD); + glContext->hooks->gl.glPauseTransformFeedback(); + nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD); + nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC); + + void *pointerArgs[] = { + }; + + fixupGLMessage(glContext, wallStartTime, wallEndTime, + threadStartTime, threadEndTime, + &glmsg, pointerArgs); + glContext->traceGLMessage(&glmsg); +} + +void GLTrace_glResumeTransformFeedback(void) { + GLMessage glmsg; + GLTraceContext *glContext = getGLTraceContext(); + + glmsg.set_function(GLMessage::glResumeTransformFeedback); + + // call function + nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); + nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD); + glContext->hooks->gl.glResumeTransformFeedback(); + nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD); + nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC); + + void *pointerArgs[] = { + }; + + fixupGLMessage(glContext, wallStartTime, wallEndTime, + threadStartTime, threadEndTime, + &glmsg, pointerArgs); + glContext->traceGLMessage(&glmsg); +} + +void GLTrace_glGetProgramBinary(GLuint program, GLsizei bufSize, GLsizei* length, GLenum* binaryFormat, GLvoid* binary) { + GLMessage glmsg; + GLTraceContext *glContext = getGLTraceContext(); + + glmsg.set_function(GLMessage::glGetProgramBinary); + + // copy argument program + GLMessage_DataType *arg_program = glmsg.add_args(); + arg_program->set_isarray(false); + arg_program->set_type(GLMessage::DataType::INT); + arg_program->add_intvalue(program); + + // copy argument bufSize + GLMessage_DataType *arg_bufSize = glmsg.add_args(); + arg_bufSize->set_isarray(false); + arg_bufSize->set_type(GLMessage::DataType::INT); + arg_bufSize->add_intvalue(bufSize); + + // copy argument length + GLMessage_DataType *arg_length = glmsg.add_args(); + arg_length->set_isarray(false); + arg_length->set_type(GLMessage::DataType::INT); + arg_length->add_intvalue((int)length); + + // copy argument binaryFormat + GLMessage_DataType *arg_binaryFormat = glmsg.add_args(); + arg_binaryFormat->set_isarray(false); + arg_binaryFormat->set_type(GLMessage::DataType::INT); + arg_binaryFormat->add_intvalue((int)binaryFormat); + + // copy argument binary + GLMessage_DataType *arg_binary = glmsg.add_args(); + arg_binary->set_isarray(false); + arg_binary->set_type(GLMessage::DataType::INT); + arg_binary->add_intvalue((int)binary); + + // call function + nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); + nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD); + glContext->hooks->gl.glGetProgramBinary(program, bufSize, length, binaryFormat, binary); + nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD); + nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC); + + void *pointerArgs[] = { + (void *) length, + (void *) binaryFormat, + (void *) binary, + }; + + fixupGLMessage(glContext, wallStartTime, wallEndTime, + threadStartTime, threadEndTime, + &glmsg, pointerArgs); + glContext->traceGLMessage(&glmsg); +} + +void GLTrace_glProgramBinary(GLuint program, GLenum binaryFormat, const GLvoid* binary, GLsizei length) { + GLMessage glmsg; + GLTraceContext *glContext = getGLTraceContext(); + + glmsg.set_function(GLMessage::glProgramBinary); + + // copy argument program + GLMessage_DataType *arg_program = glmsg.add_args(); + arg_program->set_isarray(false); + arg_program->set_type(GLMessage::DataType::INT); + arg_program->add_intvalue(program); + + // copy argument binaryFormat + GLMessage_DataType *arg_binaryFormat = glmsg.add_args(); + arg_binaryFormat->set_isarray(false); + arg_binaryFormat->set_type(GLMessage::DataType::ENUM); + arg_binaryFormat->add_intvalue((int)binaryFormat); + + // copy argument binary + GLMessage_DataType *arg_binary = glmsg.add_args(); + arg_binary->set_isarray(false); + arg_binary->set_type(GLMessage::DataType::INT); + arg_binary->add_intvalue((int)binary); + + // copy argument length + GLMessage_DataType *arg_length = glmsg.add_args(); + arg_length->set_isarray(false); + arg_length->set_type(GLMessage::DataType::INT); + arg_length->add_intvalue(length); + + // call function + nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); + nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD); + glContext->hooks->gl.glProgramBinary(program, binaryFormat, binary, length); + nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD); + nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC); + + void *pointerArgs[] = { + (void *) binary, + }; + + fixupGLMessage(glContext, wallStartTime, wallEndTime, + threadStartTime, threadEndTime, + &glmsg, pointerArgs); + glContext->traceGLMessage(&glmsg); +} + +void GLTrace_glProgramParameteri(GLuint program, GLenum pname, GLint value) { + GLMessage glmsg; + GLTraceContext *glContext = getGLTraceContext(); + + glmsg.set_function(GLMessage::glProgramParameteri); + + // copy argument program + GLMessage_DataType *arg_program = glmsg.add_args(); + arg_program->set_isarray(false); + arg_program->set_type(GLMessage::DataType::INT); + arg_program->add_intvalue(program); + + // copy argument pname + GLMessage_DataType *arg_pname = glmsg.add_args(); + arg_pname->set_isarray(false); + arg_pname->set_type(GLMessage::DataType::ENUM); + arg_pname->add_intvalue((int)pname); + + // copy argument value + GLMessage_DataType *arg_value = glmsg.add_args(); + arg_value->set_isarray(false); + arg_value->set_type(GLMessage::DataType::INT); + arg_value->add_intvalue(value); + + // call function + nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); + nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD); + glContext->hooks->gl.glProgramParameteri(program, pname, value); + nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD); + nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC); + + void *pointerArgs[] = { + }; + + fixupGLMessage(glContext, wallStartTime, wallEndTime, + threadStartTime, threadEndTime, + &glmsg, pointerArgs); + glContext->traceGLMessage(&glmsg); +} + +void GLTrace_glInvalidateFramebuffer(GLenum target, GLsizei numAttachments, const GLenum* attachments) { + GLMessage glmsg; + GLTraceContext *glContext = getGLTraceContext(); + + glmsg.set_function(GLMessage::glInvalidateFramebuffer); + + // copy argument target + GLMessage_DataType *arg_target = glmsg.add_args(); + arg_target->set_isarray(false); + arg_target->set_type(GLMessage::DataType::ENUM); + arg_target->add_intvalue((int)target); + + // copy argument numAttachments + GLMessage_DataType *arg_numAttachments = glmsg.add_args(); + arg_numAttachments->set_isarray(false); + arg_numAttachments->set_type(GLMessage::DataType::INT); + arg_numAttachments->add_intvalue(numAttachments); + + // copy argument attachments + GLMessage_DataType *arg_attachments = glmsg.add_args(); + arg_attachments->set_isarray(false); + arg_attachments->set_type(GLMessage::DataType::INT); + arg_attachments->add_intvalue((int)attachments); + + // call function + nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); + nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD); + glContext->hooks->gl.glInvalidateFramebuffer(target, numAttachments, attachments); + nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD); + nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC); + + void *pointerArgs[] = { + (void *) attachments, + }; + + fixupGLMessage(glContext, wallStartTime, wallEndTime, + threadStartTime, threadEndTime, + &glmsg, pointerArgs); + glContext->traceGLMessage(&glmsg); +} + +void GLTrace_glInvalidateSubFramebuffer(GLenum target, GLsizei numAttachments, const GLenum* attachments, GLint x, GLint y, GLsizei width, GLsizei height) { + GLMessage glmsg; + GLTraceContext *glContext = getGLTraceContext(); + + glmsg.set_function(GLMessage::glInvalidateSubFramebuffer); + + // copy argument target + GLMessage_DataType *arg_target = glmsg.add_args(); + arg_target->set_isarray(false); + arg_target->set_type(GLMessage::DataType::ENUM); + arg_target->add_intvalue((int)target); + + // copy argument numAttachments + GLMessage_DataType *arg_numAttachments = glmsg.add_args(); + arg_numAttachments->set_isarray(false); + arg_numAttachments->set_type(GLMessage::DataType::INT); + arg_numAttachments->add_intvalue(numAttachments); + + // copy argument attachments + GLMessage_DataType *arg_attachments = glmsg.add_args(); + arg_attachments->set_isarray(false); + arg_attachments->set_type(GLMessage::DataType::INT); + arg_attachments->add_intvalue((int)attachments); + + // copy argument x + GLMessage_DataType *arg_x = glmsg.add_args(); + arg_x->set_isarray(false); + arg_x->set_type(GLMessage::DataType::INT); + arg_x->add_intvalue(x); + + // copy argument y + GLMessage_DataType *arg_y = glmsg.add_args(); + arg_y->set_isarray(false); + arg_y->set_type(GLMessage::DataType::INT); + arg_y->add_intvalue(y); + + // copy argument width + GLMessage_DataType *arg_width = glmsg.add_args(); + arg_width->set_isarray(false); + arg_width->set_type(GLMessage::DataType::INT); + arg_width->add_intvalue(width); + + // copy argument height + GLMessage_DataType *arg_height = glmsg.add_args(); + arg_height->set_isarray(false); + arg_height->set_type(GLMessage::DataType::INT); + arg_height->add_intvalue(height); + + // call function + nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); + nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD); + glContext->hooks->gl.glInvalidateSubFramebuffer(target, numAttachments, attachments, x, y, width, height); + nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD); + nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC); + + void *pointerArgs[] = { + (void *) attachments, + }; + + fixupGLMessage(glContext, wallStartTime, wallEndTime, + threadStartTime, threadEndTime, + &glmsg, pointerArgs); + glContext->traceGLMessage(&glmsg); +} + +void GLTrace_glTexStorage2D(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height) { + GLMessage glmsg; + GLTraceContext *glContext = getGLTraceContext(); + + glmsg.set_function(GLMessage::glTexStorage2D); + + // copy argument target + GLMessage_DataType *arg_target = glmsg.add_args(); + arg_target->set_isarray(false); + arg_target->set_type(GLMessage::DataType::ENUM); + arg_target->add_intvalue((int)target); + + // copy argument levels + GLMessage_DataType *arg_levels = glmsg.add_args(); + arg_levels->set_isarray(false); + arg_levels->set_type(GLMessage::DataType::INT); + arg_levels->add_intvalue(levels); + + // copy argument internalformat + GLMessage_DataType *arg_internalformat = glmsg.add_args(); + arg_internalformat->set_isarray(false); + arg_internalformat->set_type(GLMessage::DataType::ENUM); + arg_internalformat->add_intvalue((int)internalformat); + + // copy argument width + GLMessage_DataType *arg_width = glmsg.add_args(); + arg_width->set_isarray(false); + arg_width->set_type(GLMessage::DataType::INT); + arg_width->add_intvalue(width); + + // copy argument height + GLMessage_DataType *arg_height = glmsg.add_args(); + arg_height->set_isarray(false); + arg_height->set_type(GLMessage::DataType::INT); + arg_height->add_intvalue(height); + + // call function + nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); + nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD); + glContext->hooks->gl.glTexStorage2D(target, levels, internalformat, width, height); + nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD); + nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC); + + void *pointerArgs[] = { + }; + + fixupGLMessage(glContext, wallStartTime, wallEndTime, + threadStartTime, threadEndTime, + &glmsg, pointerArgs); + glContext->traceGLMessage(&glmsg); +} + +void GLTrace_glTexStorage3D(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth) { + GLMessage glmsg; + GLTraceContext *glContext = getGLTraceContext(); + + glmsg.set_function(GLMessage::glTexStorage3D); + + // copy argument target + GLMessage_DataType *arg_target = glmsg.add_args(); + arg_target->set_isarray(false); + arg_target->set_type(GLMessage::DataType::ENUM); + arg_target->add_intvalue((int)target); + + // copy argument levels + GLMessage_DataType *arg_levels = glmsg.add_args(); + arg_levels->set_isarray(false); + arg_levels->set_type(GLMessage::DataType::INT); + arg_levels->add_intvalue(levels); + + // copy argument internalformat + GLMessage_DataType *arg_internalformat = glmsg.add_args(); + arg_internalformat->set_isarray(false); + arg_internalformat->set_type(GLMessage::DataType::ENUM); + arg_internalformat->add_intvalue((int)internalformat); + + // copy argument width + GLMessage_DataType *arg_width = glmsg.add_args(); + arg_width->set_isarray(false); + arg_width->set_type(GLMessage::DataType::INT); + arg_width->add_intvalue(width); + + // copy argument height + GLMessage_DataType *arg_height = glmsg.add_args(); + arg_height->set_isarray(false); + arg_height->set_type(GLMessage::DataType::INT); + arg_height->add_intvalue(height); + + // copy argument depth + GLMessage_DataType *arg_depth = glmsg.add_args(); + arg_depth->set_isarray(false); + arg_depth->set_type(GLMessage::DataType::INT); + arg_depth->add_intvalue(depth); + + // call function + nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); + nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD); + glContext->hooks->gl.glTexStorage3D(target, levels, internalformat, width, height, depth); + nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD); + nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC); + + void *pointerArgs[] = { + }; + + fixupGLMessage(glContext, wallStartTime, wallEndTime, + threadStartTime, threadEndTime, + &glmsg, pointerArgs); + glContext->traceGLMessage(&glmsg); +} + +void GLTrace_glGetInternalformativ(GLenum target, GLenum internalformat, GLenum pname, GLsizei bufSize, GLint* params) { + GLMessage glmsg; + GLTraceContext *glContext = getGLTraceContext(); + + glmsg.set_function(GLMessage::glGetInternalformativ); + + // copy argument target + GLMessage_DataType *arg_target = glmsg.add_args(); + arg_target->set_isarray(false); + arg_target->set_type(GLMessage::DataType::ENUM); + arg_target->add_intvalue((int)target); + + // copy argument internalformat + GLMessage_DataType *arg_internalformat = glmsg.add_args(); + arg_internalformat->set_isarray(false); + arg_internalformat->set_type(GLMessage::DataType::ENUM); + arg_internalformat->add_intvalue((int)internalformat); + + // copy argument pname + GLMessage_DataType *arg_pname = glmsg.add_args(); + arg_pname->set_isarray(false); + arg_pname->set_type(GLMessage::DataType::ENUM); + arg_pname->add_intvalue((int)pname); + + // copy argument bufSize + GLMessage_DataType *arg_bufSize = glmsg.add_args(); + arg_bufSize->set_isarray(false); + arg_bufSize->set_type(GLMessage::DataType::INT); + arg_bufSize->add_intvalue(bufSize); + + // copy argument params + GLMessage_DataType *arg_params = glmsg.add_args(); + arg_params->set_isarray(false); + arg_params->set_type(GLMessage::DataType::INT); + arg_params->add_intvalue((int)params); + + // call function + nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC); + nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD); + glContext->hooks->gl.glGetInternalformativ(target, internalformat, pname, bufSize, params); + nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD); + nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC); + + void *pointerArgs[] = { + (void *) params, + }; + + fixupGLMessage(glContext, wallStartTime, wallEndTime, + threadStartTime, threadEndTime, + &glmsg, pointerArgs); + glContext->traceGLMessage(&glmsg); +} + // Definitions for GL2Ext APIs diff --git a/opengl/libs/GLES_trace/src/gltrace_api.h b/opengl/libs/GLES_trace/src/gltrace_api.h index 64c6e9a..3a839dd 100644 --- a/opengl/libs/GLES_trace/src/gltrace_api.h +++ b/opengl/libs/GLES_trace/src/gltrace_api.h @@ -19,7 +19,7 @@ namespace android { namespace gltrace { -// Declarations for GL2 APIs +// Declarations for GL3 APIs void GLTrace_glActiveTexture(GLenum texture); void GLTrace_glAttachShader(GLuint program, GLuint shader); @@ -28,7 +28,7 @@ void GLTrace_glBindBuffer(GLenum target, GLuint buffer); void GLTrace_glBindFramebuffer(GLenum target, GLuint framebuffer); void GLTrace_glBindRenderbuffer(GLenum target, GLuint renderbuffer); void GLTrace_glBindTexture(GLenum target, GLuint texture); -void GLTrace_glBlendColor(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha); +void GLTrace_glBlendColor(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); void GLTrace_glBlendEquation(GLenum mode); void GLTrace_glBlendEquationSeparate(GLenum modeRGB, GLenum modeAlpha); void GLTrace_glBlendFunc(GLenum sfactor, GLenum dfactor); @@ -37,8 +37,8 @@ void GLTrace_glBufferData(GLenum target, GLsizeiptr size, const GLvoid* data, GL void GLTrace_glBufferSubData(GLenum target, GLintptr offset, GLsizeiptr size, const GLvoid* data); GLenum GLTrace_glCheckFramebufferStatus(GLenum target); void GLTrace_glClear(GLbitfield mask); -void GLTrace_glClearColor(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha); -void GLTrace_glClearDepthf(GLclampf depth); +void GLTrace_glClearColor(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); +void GLTrace_glClearDepthf(GLfloat depth); void GLTrace_glClearStencil(GLint s); void GLTrace_glColorMask(GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha); void GLTrace_glCompileShader(GLuint shader); @@ -57,7 +57,7 @@ void GLTrace_glDeleteShader(GLuint shader); void GLTrace_glDeleteTextures(GLsizei n, const GLuint* textures); void GLTrace_glDepthFunc(GLenum func); void GLTrace_glDepthMask(GLboolean flag); -void GLTrace_glDepthRangef(GLclampf zNear, GLclampf zFar); +void GLTrace_glDepthRangef(GLfloat n, GLfloat f); void GLTrace_glDetachShader(GLuint program, GLuint shader); void GLTrace_glDisable(GLenum cap); void GLTrace_glDisableVertexAttribArray(GLuint index); @@ -116,7 +116,7 @@ void GLTrace_glPolygonOffset(GLfloat factor, GLfloat units); void GLTrace_glReadPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid* pixels); void GLTrace_glReleaseShaderCompiler(void); void GLTrace_glRenderbufferStorage(GLenum target, GLenum internalformat, GLsizei width, GLsizei height); -void GLTrace_glSampleCoverage(GLclampf value, GLboolean invert); +void GLTrace_glSampleCoverage(GLfloat value, GLboolean invert); void GLTrace_glScissor(GLint x, GLint y, GLsizei width, GLsizei height); void GLTrace_glShaderBinary(GLsizei n, const GLuint* shaders, GLenum binaryformat, const GLvoid* binary, GLsizei length); void GLTrace_glShaderSource(GLuint shader, GLsizei count, const GLchar* const* string, const GLint* length); @@ -163,6 +163,110 @@ void GLTrace_glVertexAttrib4f(GLuint indx, GLfloat x, GLfloat y, GLfloat z, GLfl void GLTrace_glVertexAttrib4fv(GLuint indx, const GLfloat* values); void GLTrace_glVertexAttribPointer(GLuint indx, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const GLvoid* ptr); void GLTrace_glViewport(GLint x, GLint y, GLsizei width, GLsizei height); +void GLTrace_glReadBuffer(GLenum mode); +void GLTrace_glDrawRangeElements(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid* indices); +void GLTrace_glTexImage3D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid* pixels); +void GLTrace_glTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid* pixels); +void GLTrace_glCopyTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height); +void GLTrace_glCompressedTexImage3D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid* data); +void GLTrace_glCompressedTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid* data); +void GLTrace_glGenQueries(GLsizei n, GLuint* ids); +void GLTrace_glDeleteQueries(GLsizei n, const GLuint* ids); +GLboolean GLTrace_glIsQuery(GLuint id); +void GLTrace_glBeginQuery(GLenum target, GLuint id); +void GLTrace_glEndQuery(GLenum target); +void GLTrace_glGetQueryiv(GLenum target, GLenum pname, GLint* params); +void GLTrace_glGetQueryObjectuiv(GLuint id, GLenum pname, GLuint* params); +GLboolean GLTrace_glUnmapBuffer(GLenum target); +void GLTrace_glGetBufferPointerv(GLenum target, GLenum pname, GLvoid** params); +void GLTrace_glDrawBuffers(GLsizei n, const GLenum* bufs); +void GLTrace_glUniformMatrix2x3fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat* value); +void GLTrace_glUniformMatrix3x2fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat* value); +void GLTrace_glUniformMatrix2x4fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat* value); +void GLTrace_glUniformMatrix4x2fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat* value); +void GLTrace_glUniformMatrix3x4fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat* value); +void GLTrace_glUniformMatrix4x3fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat* value); +void GLTrace_glBlitFramebuffer(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter); +void GLTrace_glRenderbufferStorageMultisample(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); +void GLTrace_glFramebufferTextureLayer(GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer); +GLvoid* GLTrace_glMapBufferRange(GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access); +void GLTrace_glFlushMappedBufferRange(GLenum target, GLintptr offset, GLsizeiptr length); +void GLTrace_glBindVertexArray(GLuint array); +void GLTrace_glDeleteVertexArrays(GLsizei n, const GLuint* arrays); +void GLTrace_glGenVertexArrays(GLsizei n, GLuint* arrays); +GLboolean GLTrace_glIsVertexArray(GLuint array); +void GLTrace_glGetIntegeri_v(GLenum target, GLuint index, GLint* data); +void GLTrace_glBeginTransformFeedback(GLenum primitiveMode); +void GLTrace_glEndTransformFeedback(void); +void GLTrace_glBindBufferRange(GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size); +void GLTrace_glBindBufferBase(GLenum target, GLuint index, GLuint buffer); +void GLTrace_glTransformFeedbackVaryings(GLuint program, GLsizei count, const GLchar* const* varyings, GLenum bufferMode); +void GLTrace_glGetTransformFeedbackVarying(GLuint program, GLuint index, GLsizei bufSize, GLsizei* length, GLsizei* size, GLenum* type, GLchar* name); +void GLTrace_glVertexAttribIPointer(GLuint index, GLint size, GLenum type, GLsizei stride, const GLvoid* pointer); +void GLTrace_glGetVertexAttribIiv(GLuint index, GLenum pname, GLint* params); +void GLTrace_glGetVertexAttribIuiv(GLuint index, GLenum pname, GLuint* params); +void GLTrace_glVertexAttribI4i(GLuint index, GLint x, GLint y, GLint z, GLint w); +void GLTrace_glVertexAttribI4ui(GLuint index, GLuint x, GLuint y, GLuint z, GLuint w); +void GLTrace_glVertexAttribI4iv(GLuint index, const GLint* v); +void GLTrace_glVertexAttribI4uiv(GLuint index, const GLuint* v); +void GLTrace_glGetUniformuiv(GLuint program, GLint location, GLuint* params); +GLint GLTrace_glGetFragDataLocation(GLuint program, const GLchar *name); +void GLTrace_glUniform1ui(GLint location, GLuint v0); +void GLTrace_glUniform2ui(GLint location, GLuint v0, GLuint v1); +void GLTrace_glUniform3ui(GLint location, GLuint v0, GLuint v1, GLuint v2); +void GLTrace_glUniform4ui(GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3); +void GLTrace_glUniform1uiv(GLint location, GLsizei count, const GLuint* value); +void GLTrace_glUniform2uiv(GLint location, GLsizei count, const GLuint* value); +void GLTrace_glUniform3uiv(GLint location, GLsizei count, const GLuint* value); +void GLTrace_glUniform4uiv(GLint location, GLsizei count, const GLuint* value); +void GLTrace_glClearBufferiv(GLenum buffer, GLint drawbuffer, const GLint* value); +void GLTrace_glClearBufferuiv(GLenum buffer, GLint drawbuffer, const GLuint* value); +void GLTrace_glClearBufferfv(GLenum buffer, GLint drawbuffer, const GLfloat* value); +void GLTrace_glClearBufferfi(GLenum buffer, GLint drawbuffer, GLfloat depth, GLint stencil); +const GLubyte* GLTrace_glGetStringi(GLenum name, GLuint index); +void GLTrace_glCopyBufferSubData(GLenum readTarget, GLenum writeTarget, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size); +void GLTrace_glGetUniformIndices(GLuint program, GLsizei uniformCount, const GLchar* const* uniformNames, GLuint* uniformIndices); +void GLTrace_glGetActiveUniformsiv(GLuint program, GLsizei uniformCount, const GLuint* uniformIndices, GLenum pname, GLint* params); +GLuint GLTrace_glGetUniformBlockIndex(GLuint program, const GLchar* uniformBlockName); +void GLTrace_glGetActiveUniformBlockiv(GLuint program, GLuint uniformBlockIndex, GLenum pname, GLint* params); +void GLTrace_glGetActiveUniformBlockName(GLuint program, GLuint uniformBlockIndex, GLsizei bufSize, GLsizei* length, GLchar* uniformBlockName); +void GLTrace_glUniformBlockBinding(GLuint program, GLuint uniformBlockIndex, GLuint uniformBlockBinding); +void GLTrace_glDrawArraysInstanced(GLenum mode, GLint first, GLsizei count, GLsizei instanceCount); +void GLTrace_glDrawElementsInstanced(GLenum mode, GLsizei count, GLenum type, const GLvoid* indices, GLsizei instanceCount); +GLsync GLTrace_glFenceSync(GLenum condition, GLbitfield flags); +GLboolean GLTrace_glIsSync(GLsync sync); +void GLTrace_glDeleteSync(GLsync sync); +GLenum GLTrace_glClientWaitSync(GLsync sync, GLbitfield flags, GLuint64 timeout); +void GLTrace_glWaitSync(GLsync sync, GLbitfield flags, GLuint64 timeout); +void GLTrace_glGetInteger64v(GLenum pname, GLint64* params); +void GLTrace_glGetSynciv(GLsync sync, GLenum pname, GLsizei bufSize, GLsizei* length, GLint* values); +void GLTrace_glGetInteger64i_v(GLenum target, GLuint index, GLint64* data); +void GLTrace_glGetBufferParameteri64v(GLenum target, GLenum pname, GLint64* params); +void GLTrace_glGenSamplers(GLsizei count, GLuint* samplers); +void GLTrace_glDeleteSamplers(GLsizei count, const GLuint* samplers); +GLboolean GLTrace_glIsSampler(GLuint sampler); +void GLTrace_glBindSampler(GLuint unit, GLuint sampler); +void GLTrace_glSamplerParameteri(GLuint sampler, GLenum pname, GLint param); +void GLTrace_glSamplerParameteriv(GLuint sampler, GLenum pname, const GLint* param); +void GLTrace_glSamplerParameterf(GLuint sampler, GLenum pname, GLfloat param); +void GLTrace_glSamplerParameterfv(GLuint sampler, GLenum pname, const GLfloat* param); +void GLTrace_glGetSamplerParameteriv(GLuint sampler, GLenum pname, GLint* params); +void GLTrace_glGetSamplerParameterfv(GLuint sampler, GLenum pname, GLfloat* params); +void GLTrace_glVertexAttribDivisor(GLuint index, GLuint divisor); +void GLTrace_glBindTransformFeedback(GLenum target, GLuint id); +void GLTrace_glDeleteTransformFeedbacks(GLsizei n, const GLuint* ids); +void GLTrace_glGenTransformFeedbacks(GLsizei n, GLuint* ids); +GLboolean GLTrace_glIsTransformFeedback(GLuint id); +void GLTrace_glPauseTransformFeedback(void); +void GLTrace_glResumeTransformFeedback(void); +void GLTrace_glGetProgramBinary(GLuint program, GLsizei bufSize, GLsizei* length, GLenum* binaryFormat, GLvoid* binary); +void GLTrace_glProgramBinary(GLuint program, GLenum binaryFormat, const GLvoid* binary, GLsizei length); +void GLTrace_glProgramParameteri(GLuint program, GLenum pname, GLint value); +void GLTrace_glInvalidateFramebuffer(GLenum target, GLsizei numAttachments, const GLenum* attachments); +void GLTrace_glInvalidateSubFramebuffer(GLenum target, GLsizei numAttachments, const GLenum* attachments, GLint x, GLint y, GLsizei width, GLsizei height); +void GLTrace_glTexStorage2D(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height); +void GLTrace_glTexStorage3D(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth); +void GLTrace_glGetInternalformativ(GLenum target, GLenum internalformat, GLenum pname, GLsizei bufSize, GLint* params); // Declarations for GL2Ext APIs diff --git a/opengl/libs/GLES_trace/tools/genapi.py b/opengl/libs/GLES_trace/tools/genapi.py index 24034c1..60686eb 100755 --- a/opengl/libs/GLES_trace/tools/genapi.py +++ b/opengl/libs/GLES_trace/tools/genapi.py @@ -60,6 +60,8 @@ class DataType: return "add_floatvalue(" elif self.name == "bool": return "add_boolvalue(" + elif self.name == "int64": + return "add_int64value(" else: raise ValueError("Unknown value type %s" % self.name) @@ -71,9 +73,10 @@ DataType.BOOL = DataType("bool") DataType.INT = DataType("int") DataType.FLOAT = DataType("float") DataType.POINTER = DataType("pointer") +DataType.INT64 = DataType("int64") # mapping of GL types to protobuf DataType -GL2PROTOBUF_TYPE_MAP = { +GLPROTOBUF_TYPE_MAP = { "GLvoid":DataType.VOID, "void":DataType.VOID, "GLchar":DataType.CHAR, @@ -95,9 +98,14 @@ GL2PROTOBUF_TYPE_MAP = { "GLsizeiptr":DataType.INT, "GLintptr":DataType.INT, "GLeglImageOES":DataType.POINTER, + "GLint64":DataType.INT64, + "GLuint64":DataType.INT64, + "GLsync":DataType.POINTER, } API_SPECS = [ + ('GL3','../GLES2/gl3_api.in'), + ('GL3Ext','../GLES2/gl3ext_api.in'), ('GL2','../GLES2/gl2_api.in'), ('GL2Ext','../GLES2/gl2ext_api.in'), ('GL1','../GLES_CM/gl_api.in'), @@ -126,7 +134,7 @@ HEADER_LICENSE = """/* HEADER_INCLUDES = """ #include <cutils/log.h> #include <utils/Timers.h> -#include <GLES2/gl2.h> +#include <GLES3/gl3.h> #include "gltrace.pb.h" #include "gltrace_context.h" @@ -210,7 +218,7 @@ def getDataTypeFromKw(kw): if kw.count('*') > 0: return DataType.POINTER - return GL2PROTOBUF_TYPE_MAP.get(kw) + return GLPROTOBUF_TYPE_MAP.get(kw) def getNameTypePair(decl): """ Split declaration of a variable to a tuple of (variable name, DataType). @@ -356,7 +364,7 @@ def parseAllSpecs(specs): def removeDuplicates(apis): '''Remove all duplicate function entries. - The input list contains functions declared in GL1 and GL2 APIs. + The input list contains functions declared in GL1, GL2, and GL3 APIs. This will return a list that contains only the first function if there are multiple functions with the same name.''' uniqs = [] @@ -402,7 +410,7 @@ def genSrcs(apis, fname): f.writelines(lines) if __name__ == '__main__': - apis = parseAllSpecs(API_SPECS) # read in all the specfiles - apis = removeDuplicates(apis) # remove duplication of functions common to GL1 and GL2 + apis = parseAllSpecs(API_SPECS) # read in all the specfiles + apis = removeDuplicates(apis) # remove duplication of functions common to multiple versions genHeaders(apis, 'gltrace_api.h') # generate header file genSrcs(apis, 'gltrace_api.cpp') # generate source file |