Loading opengl/libs/GLES2_dbg/generate_debugger_message_proto.py +10 −0 Original line number Diff line number Diff line Loading @@ -118,7 +118,17 @@ message Message optional int32 arg6 = 18; optional int32 arg7 = 19; optional int32 arg8 = 20; optional bytes data = 10; // variable length data used for GL call enum DataType { ReferencedImage = 0; // for image sourced from ReadPixels NonreferencedImage = 1; // for image sourced from ReadPixels }; optional DataType data_type = 23; // most data types can be inferred from function optional int32 pixel_format = 24; // used for image data if format and type optional int32 pixel_type = 25; // cannot be determined from arg optional float time = 11; // duration of previous GL call (ms) enum Prop { Loading opengl/libs/GLES2_dbg/src/dbgcontext.cpp +31 −3 Original line number Diff line number Diff line Loading @@ -16,7 +16,8 @@ #include "header.h" extern "C" { extern "C" { #include "liblzf/lzf.h" } Loading @@ -26,11 +27,13 @@ namespace android DbgContext::DbgContext(const unsigned version, const gl_hooks_t * const hooks, const unsigned MAX_VERTEX_ATTRIBS) : lzf_buf(NULL), lzf_bufSize(0) , lzf_readIndex(0), lzf_refSize(0), lzf_refBufSize(0) , version(version), hooks(hooks) , MAX_VERTEX_ATTRIBS(MAX_VERTEX_ATTRIBS) , vertexAttribs(new VertexAttrib[MAX_VERTEX_ATTRIBS]) , hasNonVBOAttribs(false), indexBuffers(NULL), indexBuffer(NULL) { lzf_ref[0] = lzf_ref[1] = NULL; for (unsigned i = 0; i < MAX_VERTEX_ATTRIBS; i++) vertexAttribs[i] = VertexAttrib(); } Loading @@ -39,6 +42,8 @@ DbgContext::~DbgContext() { delete vertexAttribs; free(lzf_buf); free(lzf_ref[0]); free(lzf_ref[1]); } DbgContext * CreateDbgContext(const unsigned version, const gl_hooks_t * const hooks) Loading Loading @@ -77,11 +82,34 @@ unsigned DbgContext::Compress(const void * in_data, unsigned in_len) } unsigned compressedSize = lzf_compress((const char *)in_data, in_len, lzf_buf, lzf_bufSize); LOGD("DbgContext::lzf_compress in=%u out=%u", in_len, compressedSize); assert (0 < compressedSize); return compressedSize; } void * DbgContext::GetReadPixelsBuffer(const unsigned size) { if (lzf_refSize < size) { lzf_refSize = size; lzf_refBufSize = lzf_refSize + 64; lzf_ref[0] = (unsigned *)realloc(lzf_ref[0], lzf_refBufSize); memset(lzf_ref[0], 0, lzf_refSize); lzf_ref[1] = (unsigned *)realloc(lzf_ref[1], lzf_refBufSize); memset(lzf_ref[1], 0, lzf_refSize); } lzf_refSize = size; lzf_readIndex ^= 1; return lzf_ref[lzf_readIndex]; } unsigned DbgContext::CompressReadPixelBuffer() { unsigned * const ref = lzf_ref[lzf_readIndex ^ 1]; unsigned * const src = lzf_ref[lzf_readIndex]; for (unsigned i = 0; i < lzf_refSize / sizeof(*ref) + 1; i++) ref[i] ^= src[i]; return Compress(ref, lzf_refSize); } void DbgContext::glUseProgram(GLuint program) { while (GLenum error = hooks->gl.glGetError()) Loading opengl/libs/GLES2_dbg/src/debugger_message.pb.cpp +134 −9 Original line number Diff line number Diff line Loading @@ -450,6 +450,23 @@ const Message_Type Message::Type_MIN; const Message_Type Message::Type_MAX; const int Message::Type_ARRAYSIZE; #endif // _MSC_VER bool Message_DataType_IsValid(int value) { switch(value) { case 0: case 1: return true; default: return false; } } #ifndef _MSC_VER const Message_DataType Message::ReferencedImage; const Message_DataType Message::NonreferencedImage; const Message_DataType Message::DataType_MIN; const Message_DataType Message::DataType_MAX; const int Message::DataType_ARRAYSIZE; #endif // _MSC_VER bool Message_Prop_IsValid(int value) { switch(value) { case 0: Loading Loading @@ -484,6 +501,9 @@ const int Message::kArg6FieldNumber; const int Message::kArg7FieldNumber; const int Message::kArg8FieldNumber; const int Message::kDataFieldNumber; const int Message::kDataTypeFieldNumber; const int Message::kPixelFormatFieldNumber; const int Message::kPixelTypeFieldNumber; const int Message::kTimeFieldNumber; const int Message::kPropFieldNumber; const int Message::kClockFieldNumber; Loading Loading @@ -520,6 +540,9 @@ void Message::SharedCtor() { arg7_ = 0; arg8_ = 0; data_ = const_cast< ::std::string*>(&_default_data_); data_type_ = 0; pixel_format_ = 0; pixel_type_ = 0; time_ = 0; prop_ = 0; clock_ = 0; Loading Loading @@ -576,9 +599,12 @@ void Message::Clear() { data_->clear(); } } time_ = 0; data_type_ = 0; } if (_has_bits_[16 / 32] & (0xffu << (16 % 32))) { pixel_format_ = 0; pixel_type_ = 0; time_ = 0; prop_ = 0; clock_ = 0; } Loading Loading @@ -762,7 +788,7 @@ bool Message::MergePartialFromCodedStream( DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< float, ::google::protobuf::internal::WireFormatLite::TYPE_FLOAT>( input, &time_))); _set_bit(15); _set_bit(18); } else { goto handle_uninterpreted; } Loading Loading @@ -877,6 +903,57 @@ bool Message::MergePartialFromCodedStream( DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< float, ::google::protobuf::internal::WireFormatLite::TYPE_FLOAT>( input, &clock_))); _set_bit(20); } else { goto handle_uninterpreted; } if (input->ExpectTag(184)) goto parse_data_type; break; } // optional .com.android.glesv2debugger.Message.DataType data_type = 23; case 23: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) { parse_data_type: int value; DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< int, ::google::protobuf::internal::WireFormatLite::TYPE_ENUM>( input, &value))); if (::com::android::glesv2debugger::Message_DataType_IsValid(value)) { set_data_type(static_cast< ::com::android::glesv2debugger::Message_DataType >(value)); } } else { goto handle_uninterpreted; } if (input->ExpectTag(192)) goto parse_pixel_format; break; } // optional int32 pixel_format = 24; case 24: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) { parse_pixel_format: DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>( input, &pixel_format_))); _set_bit(16); } else { goto handle_uninterpreted; } if (input->ExpectTag(200)) goto parse_pixel_type; break; } // optional int32 pixel_type = 25; case 25: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) { parse_pixel_type: DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>( input, &pixel_type_))); _set_bit(17); } else { goto handle_uninterpreted; Loading Loading @@ -956,7 +1033,7 @@ void Message::SerializeWithCachedSizes( } // optional float time = 11; if (_has_bit(15)) { if (_has_bit(18)) { ::google::protobuf::internal::WireFormatLite::WriteFloat(11, this->time(), output); } Loading Loading @@ -986,16 +1063,32 @@ void Message::SerializeWithCachedSizes( } // optional .com.android.glesv2debugger.Message.Prop prop = 21; if (_has_bit(16)) { if (_has_bit(19)) { ::google::protobuf::internal::WireFormatLite::WriteEnum( 21, this->prop(), output); } // optional float clock = 22; if (_has_bit(17)) { if (_has_bit(20)) { ::google::protobuf::internal::WireFormatLite::WriteFloat(22, this->clock(), output); } // optional .com.android.glesv2debugger.Message.DataType data_type = 23; if (_has_bit(15)) { ::google::protobuf::internal::WireFormatLite::WriteEnum( 23, this->data_type(), output); } // optional int32 pixel_format = 24; if (_has_bit(16)) { ::google::protobuf::internal::WireFormatLite::WriteInt32(24, this->pixel_format(), output); } // optional int32 pixel_type = 25; if (_has_bit(17)) { ::google::protobuf::internal::WireFormatLite::WriteInt32(25, this->pixel_type(), output); } } int Message::ByteSize() const { Loading Loading @@ -1105,13 +1198,33 @@ int Message::ByteSize() const { this->data()); } // optional .com.android.glesv2debugger.Message.DataType data_type = 23; if (has_data_type()) { total_size += 2 + ::google::protobuf::internal::WireFormatLite::EnumSize(this->data_type()); } } if (_has_bits_[16 / 32] & (0xffu << (16 % 32))) { // optional int32 pixel_format = 24; if (has_pixel_format()) { total_size += 2 + ::google::protobuf::internal::WireFormatLite::Int32Size( this->pixel_format()); } // optional int32 pixel_type = 25; if (has_pixel_type()) { total_size += 2 + ::google::protobuf::internal::WireFormatLite::Int32Size( this->pixel_type()); } // optional float time = 11; if (has_time()) { total_size += 1 + 4; } } if (_has_bits_[16 / 32] & (0xffu << (16 % 32))) { // optional .com.android.glesv2debugger.Message.Prop prop = 21; if (has_prop()) { total_size += 2 + Loading Loading @@ -1186,14 +1299,23 @@ void Message::MergeFrom(const Message& from) { set_data(from.data()); } if (from._has_bit(15)) { set_time(from.time()); set_data_type(from.data_type()); } } if (from._has_bits_[16 / 32] & (0xffu << (16 % 32))) { if (from._has_bit(16)) { set_prop(from.prop()); set_pixel_format(from.pixel_format()); } if (from._has_bit(17)) { set_pixel_type(from.pixel_type()); } if (from._has_bit(18)) { set_time(from.time()); } if (from._has_bit(19)) { set_prop(from.prop()); } if (from._has_bit(20)) { set_clock(from.clock()); } } Loading Loading @@ -1228,6 +1350,9 @@ void Message::Swap(Message* other) { std::swap(arg7_, other->arg7_); std::swap(arg8_, other->arg8_); std::swap(data_, other->data_); std::swap(data_type_, other->data_type_); std::swap(pixel_format_, other->pixel_format_); std::swap(pixel_type_, other->pixel_type_); std::swap(time_, other->time_); std::swap(prop_, other->prop_); std::swap(clock_, other->clock_); Loading opengl/libs/GLES2_dbg/src/debugger_message.pb.h +105 −10 Original line number Diff line number Diff line Loading @@ -243,6 +243,15 @@ const Message_Type Message_Type_Type_MIN = Message_Type_BeforeCall; const Message_Type Message_Type_Type_MAX = Message_Type_Response; const int Message_Type_Type_ARRAYSIZE = Message_Type_Type_MAX + 1; enum Message_DataType { Message_DataType_ReferencedImage = 0, Message_DataType_NonreferencedImage = 1 }; bool Message_DataType_IsValid(int value); const Message_DataType Message_DataType_DataType_MIN = Message_DataType_ReferencedImage; const Message_DataType Message_DataType_DataType_MAX = Message_DataType_NonreferencedImage; const int Message_DataType_DataType_ARRAYSIZE = Message_DataType_DataType_MAX + 1; enum Message_Prop { Message_Prop_Capture = 0, Message_Prop_TimeMode = 1 Loading Loading @@ -511,6 +520,19 @@ class Message : public ::google::protobuf::MessageLite { static const int Type_ARRAYSIZE = Message_Type_Type_ARRAYSIZE; typedef Message_DataType DataType; static const DataType ReferencedImage = Message_DataType_ReferencedImage; static const DataType NonreferencedImage = Message_DataType_NonreferencedImage; static inline bool DataType_IsValid(int value) { return Message_DataType_IsValid(value); } static const DataType DataType_MIN = Message_DataType_DataType_MIN; static const DataType DataType_MAX = Message_DataType_DataType_MAX; static const int DataType_ARRAYSIZE = Message_DataType_DataType_ARRAYSIZE; typedef Message_Prop Prop; static const Prop Capture = Message_Prop_Capture; static const Prop TimeMode = Message_Prop_TimeMode; Loading Loading @@ -634,6 +656,27 @@ class Message : public ::google::protobuf::MessageLite { inline void set_data(const void* value, size_t size); inline ::std::string* mutable_data(); // optional .com.android.glesv2debugger.Message.DataType data_type = 23; inline bool has_data_type() const; inline void clear_data_type(); static const int kDataTypeFieldNumber = 23; inline ::com::android::glesv2debugger::Message_DataType data_type() const; inline void set_data_type(::com::android::glesv2debugger::Message_DataType value); // optional int32 pixel_format = 24; inline bool has_pixel_format() const; inline void clear_pixel_format(); static const int kPixelFormatFieldNumber = 24; inline ::google::protobuf::int32 pixel_format() const; inline void set_pixel_format(::google::protobuf::int32 value); // optional int32 pixel_type = 25; inline bool has_pixel_type() const; inline void clear_pixel_type(); static const int kPixelTypeFieldNumber = 25; inline ::google::protobuf::int32 pixel_type() const; inline void set_pixel_type(::google::protobuf::int32 value); // optional float time = 11; inline bool has_time() const; inline void clear_time(); Loading Loading @@ -675,6 +718,9 @@ class Message : public ::google::protobuf::MessageLite { ::google::protobuf::int32 arg8_; ::std::string* data_; static const ::std::string _default_data_; int data_type_; ::google::protobuf::int32 pixel_format_; ::google::protobuf::int32 pixel_type_; float time_; int prop_; float clock_; Loading @@ -682,7 +728,7 @@ class Message : public ::google::protobuf::MessageLite { friend void protobuf_AssignDesc_debugger_5fmessage_2eproto(); friend void protobuf_ShutdownFile_debugger_5fmessage_2eproto(); ::google::protobuf::uint32 _has_bits_[(18 + 31) / 32]; ::google::protobuf::uint32 _has_bits_[(21 + 31) / 32]; // WHY DOES & HAVE LOWER PRECEDENCE THAN != !? inline bool _has_bit(int index) const { Loading Loading @@ -973,52 +1019,101 @@ inline ::std::string* Message::mutable_data() { return data_; } // optional .com.android.glesv2debugger.Message.DataType data_type = 23; inline bool Message::has_data_type() const { return _has_bit(15); } inline void Message::clear_data_type() { data_type_ = 0; _clear_bit(15); } inline ::com::android::glesv2debugger::Message_DataType Message::data_type() const { return static_cast< ::com::android::glesv2debugger::Message_DataType >(data_type_); } inline void Message::set_data_type(::com::android::glesv2debugger::Message_DataType value) { GOOGLE_DCHECK(::com::android::glesv2debugger::Message_DataType_IsValid(value)); _set_bit(15); data_type_ = value; } // optional int32 pixel_format = 24; inline bool Message::has_pixel_format() const { return _has_bit(16); } inline void Message::clear_pixel_format() { pixel_format_ = 0; _clear_bit(16); } inline ::google::protobuf::int32 Message::pixel_format() const { return pixel_format_; } inline void Message::set_pixel_format(::google::protobuf::int32 value) { _set_bit(16); pixel_format_ = value; } // optional int32 pixel_type = 25; inline bool Message::has_pixel_type() const { return _has_bit(17); } inline void Message::clear_pixel_type() { pixel_type_ = 0; _clear_bit(17); } inline ::google::protobuf::int32 Message::pixel_type() const { return pixel_type_; } inline void Message::set_pixel_type(::google::protobuf::int32 value) { _set_bit(17); pixel_type_ = value; } // optional float time = 11; inline bool Message::has_time() const { return _has_bit(15); return _has_bit(18); } inline void Message::clear_time() { time_ = 0; _clear_bit(15); _clear_bit(18); } inline float Message::time() const { return time_; } inline void Message::set_time(float value) { _set_bit(15); _set_bit(18); time_ = value; } // optional .com.android.glesv2debugger.Message.Prop prop = 21; inline bool Message::has_prop() const { return _has_bit(16); return _has_bit(19); } inline void Message::clear_prop() { prop_ = 0; _clear_bit(16); _clear_bit(19); } inline ::com::android::glesv2debugger::Message_Prop Message::prop() const { return static_cast< ::com::android::glesv2debugger::Message_Prop >(prop_); } inline void Message::set_prop(::com::android::glesv2debugger::Message_Prop value) { GOOGLE_DCHECK(::com::android::glesv2debugger::Message_Prop_IsValid(value)); _set_bit(16); _set_bit(19); prop_ = value; } // optional float clock = 22; inline bool Message::has_clock() const { return _has_bit(17); return _has_bit(20); } inline void Message::clear_clock() { clock_ = 0; _clear_bit(17); _clear_bit(20); } inline float Message::clock() const { return clock_; } inline void Message::set_clock(float value) { _set_bit(17); _set_bit(20); clock_ = value; } Loading opengl/libs/GLES2_dbg/src/header.h +15 −5 Original line number Diff line number Diff line Loading @@ -60,8 +60,13 @@ struct DbgContext { private: unsigned lzf_bufSize; // used as buffer and reference frame for ReadPixels; malloc/free unsigned * lzf_ref [2]; unsigned lzf_readIndex; // 0 or 1 unsigned lzf_refSize, lzf_refBufSize; // bytes public: char * lzf_buf; char * lzf_buf; // auto malloc/free; output of lzf_compress const unsigned version; // 0 is GLES1, 1 is GLES2 const gl_hooks_t * const hooks; Loading Loading @@ -100,6 +105,11 @@ public: void Fetch(const unsigned index, std::string * const data) const; unsigned Compress(const void * in_data, unsigned in_len); // compressed to lzf_buf void * GetReadPixelsBuffer(const unsigned size); bool IsReadPixelBuffer(const void * const ptr) { return ptr == lzf_ref[lzf_readIndex]; } unsigned CompressReadPixelBuffer(); void glUseProgram(GLuint program); void glEnableVertexAttribArray(GLuint index); Loading Loading
opengl/libs/GLES2_dbg/generate_debugger_message_proto.py +10 −0 Original line number Diff line number Diff line Loading @@ -118,7 +118,17 @@ message Message optional int32 arg6 = 18; optional int32 arg7 = 19; optional int32 arg8 = 20; optional bytes data = 10; // variable length data used for GL call enum DataType { ReferencedImage = 0; // for image sourced from ReadPixels NonreferencedImage = 1; // for image sourced from ReadPixels }; optional DataType data_type = 23; // most data types can be inferred from function optional int32 pixel_format = 24; // used for image data if format and type optional int32 pixel_type = 25; // cannot be determined from arg optional float time = 11; // duration of previous GL call (ms) enum Prop { Loading
opengl/libs/GLES2_dbg/src/dbgcontext.cpp +31 −3 Original line number Diff line number Diff line Loading @@ -16,7 +16,8 @@ #include "header.h" extern "C" { extern "C" { #include "liblzf/lzf.h" } Loading @@ -26,11 +27,13 @@ namespace android DbgContext::DbgContext(const unsigned version, const gl_hooks_t * const hooks, const unsigned MAX_VERTEX_ATTRIBS) : lzf_buf(NULL), lzf_bufSize(0) , lzf_readIndex(0), lzf_refSize(0), lzf_refBufSize(0) , version(version), hooks(hooks) , MAX_VERTEX_ATTRIBS(MAX_VERTEX_ATTRIBS) , vertexAttribs(new VertexAttrib[MAX_VERTEX_ATTRIBS]) , hasNonVBOAttribs(false), indexBuffers(NULL), indexBuffer(NULL) { lzf_ref[0] = lzf_ref[1] = NULL; for (unsigned i = 0; i < MAX_VERTEX_ATTRIBS; i++) vertexAttribs[i] = VertexAttrib(); } Loading @@ -39,6 +42,8 @@ DbgContext::~DbgContext() { delete vertexAttribs; free(lzf_buf); free(lzf_ref[0]); free(lzf_ref[1]); } DbgContext * CreateDbgContext(const unsigned version, const gl_hooks_t * const hooks) Loading Loading @@ -77,11 +82,34 @@ unsigned DbgContext::Compress(const void * in_data, unsigned in_len) } unsigned compressedSize = lzf_compress((const char *)in_data, in_len, lzf_buf, lzf_bufSize); LOGD("DbgContext::lzf_compress in=%u out=%u", in_len, compressedSize); assert (0 < compressedSize); return compressedSize; } void * DbgContext::GetReadPixelsBuffer(const unsigned size) { if (lzf_refSize < size) { lzf_refSize = size; lzf_refBufSize = lzf_refSize + 64; lzf_ref[0] = (unsigned *)realloc(lzf_ref[0], lzf_refBufSize); memset(lzf_ref[0], 0, lzf_refSize); lzf_ref[1] = (unsigned *)realloc(lzf_ref[1], lzf_refBufSize); memset(lzf_ref[1], 0, lzf_refSize); } lzf_refSize = size; lzf_readIndex ^= 1; return lzf_ref[lzf_readIndex]; } unsigned DbgContext::CompressReadPixelBuffer() { unsigned * const ref = lzf_ref[lzf_readIndex ^ 1]; unsigned * const src = lzf_ref[lzf_readIndex]; for (unsigned i = 0; i < lzf_refSize / sizeof(*ref) + 1; i++) ref[i] ^= src[i]; return Compress(ref, lzf_refSize); } void DbgContext::glUseProgram(GLuint program) { while (GLenum error = hooks->gl.glGetError()) Loading
opengl/libs/GLES2_dbg/src/debugger_message.pb.cpp +134 −9 Original line number Diff line number Diff line Loading @@ -450,6 +450,23 @@ const Message_Type Message::Type_MIN; const Message_Type Message::Type_MAX; const int Message::Type_ARRAYSIZE; #endif // _MSC_VER bool Message_DataType_IsValid(int value) { switch(value) { case 0: case 1: return true; default: return false; } } #ifndef _MSC_VER const Message_DataType Message::ReferencedImage; const Message_DataType Message::NonreferencedImage; const Message_DataType Message::DataType_MIN; const Message_DataType Message::DataType_MAX; const int Message::DataType_ARRAYSIZE; #endif // _MSC_VER bool Message_Prop_IsValid(int value) { switch(value) { case 0: Loading Loading @@ -484,6 +501,9 @@ const int Message::kArg6FieldNumber; const int Message::kArg7FieldNumber; const int Message::kArg8FieldNumber; const int Message::kDataFieldNumber; const int Message::kDataTypeFieldNumber; const int Message::kPixelFormatFieldNumber; const int Message::kPixelTypeFieldNumber; const int Message::kTimeFieldNumber; const int Message::kPropFieldNumber; const int Message::kClockFieldNumber; Loading Loading @@ -520,6 +540,9 @@ void Message::SharedCtor() { arg7_ = 0; arg8_ = 0; data_ = const_cast< ::std::string*>(&_default_data_); data_type_ = 0; pixel_format_ = 0; pixel_type_ = 0; time_ = 0; prop_ = 0; clock_ = 0; Loading Loading @@ -576,9 +599,12 @@ void Message::Clear() { data_->clear(); } } time_ = 0; data_type_ = 0; } if (_has_bits_[16 / 32] & (0xffu << (16 % 32))) { pixel_format_ = 0; pixel_type_ = 0; time_ = 0; prop_ = 0; clock_ = 0; } Loading Loading @@ -762,7 +788,7 @@ bool Message::MergePartialFromCodedStream( DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< float, ::google::protobuf::internal::WireFormatLite::TYPE_FLOAT>( input, &time_))); _set_bit(15); _set_bit(18); } else { goto handle_uninterpreted; } Loading Loading @@ -877,6 +903,57 @@ bool Message::MergePartialFromCodedStream( DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< float, ::google::protobuf::internal::WireFormatLite::TYPE_FLOAT>( input, &clock_))); _set_bit(20); } else { goto handle_uninterpreted; } if (input->ExpectTag(184)) goto parse_data_type; break; } // optional .com.android.glesv2debugger.Message.DataType data_type = 23; case 23: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) { parse_data_type: int value; DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< int, ::google::protobuf::internal::WireFormatLite::TYPE_ENUM>( input, &value))); if (::com::android::glesv2debugger::Message_DataType_IsValid(value)) { set_data_type(static_cast< ::com::android::glesv2debugger::Message_DataType >(value)); } } else { goto handle_uninterpreted; } if (input->ExpectTag(192)) goto parse_pixel_format; break; } // optional int32 pixel_format = 24; case 24: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) { parse_pixel_format: DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>( input, &pixel_format_))); _set_bit(16); } else { goto handle_uninterpreted; } if (input->ExpectTag(200)) goto parse_pixel_type; break; } // optional int32 pixel_type = 25; case 25: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) { parse_pixel_type: DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>( input, &pixel_type_))); _set_bit(17); } else { goto handle_uninterpreted; Loading Loading @@ -956,7 +1033,7 @@ void Message::SerializeWithCachedSizes( } // optional float time = 11; if (_has_bit(15)) { if (_has_bit(18)) { ::google::protobuf::internal::WireFormatLite::WriteFloat(11, this->time(), output); } Loading Loading @@ -986,16 +1063,32 @@ void Message::SerializeWithCachedSizes( } // optional .com.android.glesv2debugger.Message.Prop prop = 21; if (_has_bit(16)) { if (_has_bit(19)) { ::google::protobuf::internal::WireFormatLite::WriteEnum( 21, this->prop(), output); } // optional float clock = 22; if (_has_bit(17)) { if (_has_bit(20)) { ::google::protobuf::internal::WireFormatLite::WriteFloat(22, this->clock(), output); } // optional .com.android.glesv2debugger.Message.DataType data_type = 23; if (_has_bit(15)) { ::google::protobuf::internal::WireFormatLite::WriteEnum( 23, this->data_type(), output); } // optional int32 pixel_format = 24; if (_has_bit(16)) { ::google::protobuf::internal::WireFormatLite::WriteInt32(24, this->pixel_format(), output); } // optional int32 pixel_type = 25; if (_has_bit(17)) { ::google::protobuf::internal::WireFormatLite::WriteInt32(25, this->pixel_type(), output); } } int Message::ByteSize() const { Loading Loading @@ -1105,13 +1198,33 @@ int Message::ByteSize() const { this->data()); } // optional .com.android.glesv2debugger.Message.DataType data_type = 23; if (has_data_type()) { total_size += 2 + ::google::protobuf::internal::WireFormatLite::EnumSize(this->data_type()); } } if (_has_bits_[16 / 32] & (0xffu << (16 % 32))) { // optional int32 pixel_format = 24; if (has_pixel_format()) { total_size += 2 + ::google::protobuf::internal::WireFormatLite::Int32Size( this->pixel_format()); } // optional int32 pixel_type = 25; if (has_pixel_type()) { total_size += 2 + ::google::protobuf::internal::WireFormatLite::Int32Size( this->pixel_type()); } // optional float time = 11; if (has_time()) { total_size += 1 + 4; } } if (_has_bits_[16 / 32] & (0xffu << (16 % 32))) { // optional .com.android.glesv2debugger.Message.Prop prop = 21; if (has_prop()) { total_size += 2 + Loading Loading @@ -1186,14 +1299,23 @@ void Message::MergeFrom(const Message& from) { set_data(from.data()); } if (from._has_bit(15)) { set_time(from.time()); set_data_type(from.data_type()); } } if (from._has_bits_[16 / 32] & (0xffu << (16 % 32))) { if (from._has_bit(16)) { set_prop(from.prop()); set_pixel_format(from.pixel_format()); } if (from._has_bit(17)) { set_pixel_type(from.pixel_type()); } if (from._has_bit(18)) { set_time(from.time()); } if (from._has_bit(19)) { set_prop(from.prop()); } if (from._has_bit(20)) { set_clock(from.clock()); } } Loading Loading @@ -1228,6 +1350,9 @@ void Message::Swap(Message* other) { std::swap(arg7_, other->arg7_); std::swap(arg8_, other->arg8_); std::swap(data_, other->data_); std::swap(data_type_, other->data_type_); std::swap(pixel_format_, other->pixel_format_); std::swap(pixel_type_, other->pixel_type_); std::swap(time_, other->time_); std::swap(prop_, other->prop_); std::swap(clock_, other->clock_); Loading
opengl/libs/GLES2_dbg/src/debugger_message.pb.h +105 −10 Original line number Diff line number Diff line Loading @@ -243,6 +243,15 @@ const Message_Type Message_Type_Type_MIN = Message_Type_BeforeCall; const Message_Type Message_Type_Type_MAX = Message_Type_Response; const int Message_Type_Type_ARRAYSIZE = Message_Type_Type_MAX + 1; enum Message_DataType { Message_DataType_ReferencedImage = 0, Message_DataType_NonreferencedImage = 1 }; bool Message_DataType_IsValid(int value); const Message_DataType Message_DataType_DataType_MIN = Message_DataType_ReferencedImage; const Message_DataType Message_DataType_DataType_MAX = Message_DataType_NonreferencedImage; const int Message_DataType_DataType_ARRAYSIZE = Message_DataType_DataType_MAX + 1; enum Message_Prop { Message_Prop_Capture = 0, Message_Prop_TimeMode = 1 Loading Loading @@ -511,6 +520,19 @@ class Message : public ::google::protobuf::MessageLite { static const int Type_ARRAYSIZE = Message_Type_Type_ARRAYSIZE; typedef Message_DataType DataType; static const DataType ReferencedImage = Message_DataType_ReferencedImage; static const DataType NonreferencedImage = Message_DataType_NonreferencedImage; static inline bool DataType_IsValid(int value) { return Message_DataType_IsValid(value); } static const DataType DataType_MIN = Message_DataType_DataType_MIN; static const DataType DataType_MAX = Message_DataType_DataType_MAX; static const int DataType_ARRAYSIZE = Message_DataType_DataType_ARRAYSIZE; typedef Message_Prop Prop; static const Prop Capture = Message_Prop_Capture; static const Prop TimeMode = Message_Prop_TimeMode; Loading Loading @@ -634,6 +656,27 @@ class Message : public ::google::protobuf::MessageLite { inline void set_data(const void* value, size_t size); inline ::std::string* mutable_data(); // optional .com.android.glesv2debugger.Message.DataType data_type = 23; inline bool has_data_type() const; inline void clear_data_type(); static const int kDataTypeFieldNumber = 23; inline ::com::android::glesv2debugger::Message_DataType data_type() const; inline void set_data_type(::com::android::glesv2debugger::Message_DataType value); // optional int32 pixel_format = 24; inline bool has_pixel_format() const; inline void clear_pixel_format(); static const int kPixelFormatFieldNumber = 24; inline ::google::protobuf::int32 pixel_format() const; inline void set_pixel_format(::google::protobuf::int32 value); // optional int32 pixel_type = 25; inline bool has_pixel_type() const; inline void clear_pixel_type(); static const int kPixelTypeFieldNumber = 25; inline ::google::protobuf::int32 pixel_type() const; inline void set_pixel_type(::google::protobuf::int32 value); // optional float time = 11; inline bool has_time() const; inline void clear_time(); Loading Loading @@ -675,6 +718,9 @@ class Message : public ::google::protobuf::MessageLite { ::google::protobuf::int32 arg8_; ::std::string* data_; static const ::std::string _default_data_; int data_type_; ::google::protobuf::int32 pixel_format_; ::google::protobuf::int32 pixel_type_; float time_; int prop_; float clock_; Loading @@ -682,7 +728,7 @@ class Message : public ::google::protobuf::MessageLite { friend void protobuf_AssignDesc_debugger_5fmessage_2eproto(); friend void protobuf_ShutdownFile_debugger_5fmessage_2eproto(); ::google::protobuf::uint32 _has_bits_[(18 + 31) / 32]; ::google::protobuf::uint32 _has_bits_[(21 + 31) / 32]; // WHY DOES & HAVE LOWER PRECEDENCE THAN != !? inline bool _has_bit(int index) const { Loading Loading @@ -973,52 +1019,101 @@ inline ::std::string* Message::mutable_data() { return data_; } // optional .com.android.glesv2debugger.Message.DataType data_type = 23; inline bool Message::has_data_type() const { return _has_bit(15); } inline void Message::clear_data_type() { data_type_ = 0; _clear_bit(15); } inline ::com::android::glesv2debugger::Message_DataType Message::data_type() const { return static_cast< ::com::android::glesv2debugger::Message_DataType >(data_type_); } inline void Message::set_data_type(::com::android::glesv2debugger::Message_DataType value) { GOOGLE_DCHECK(::com::android::glesv2debugger::Message_DataType_IsValid(value)); _set_bit(15); data_type_ = value; } // optional int32 pixel_format = 24; inline bool Message::has_pixel_format() const { return _has_bit(16); } inline void Message::clear_pixel_format() { pixel_format_ = 0; _clear_bit(16); } inline ::google::protobuf::int32 Message::pixel_format() const { return pixel_format_; } inline void Message::set_pixel_format(::google::protobuf::int32 value) { _set_bit(16); pixel_format_ = value; } // optional int32 pixel_type = 25; inline bool Message::has_pixel_type() const { return _has_bit(17); } inline void Message::clear_pixel_type() { pixel_type_ = 0; _clear_bit(17); } inline ::google::protobuf::int32 Message::pixel_type() const { return pixel_type_; } inline void Message::set_pixel_type(::google::protobuf::int32 value) { _set_bit(17); pixel_type_ = value; } // optional float time = 11; inline bool Message::has_time() const { return _has_bit(15); return _has_bit(18); } inline void Message::clear_time() { time_ = 0; _clear_bit(15); _clear_bit(18); } inline float Message::time() const { return time_; } inline void Message::set_time(float value) { _set_bit(15); _set_bit(18); time_ = value; } // optional .com.android.glesv2debugger.Message.Prop prop = 21; inline bool Message::has_prop() const { return _has_bit(16); return _has_bit(19); } inline void Message::clear_prop() { prop_ = 0; _clear_bit(16); _clear_bit(19); } inline ::com::android::glesv2debugger::Message_Prop Message::prop() const { return static_cast< ::com::android::glesv2debugger::Message_Prop >(prop_); } inline void Message::set_prop(::com::android::glesv2debugger::Message_Prop value) { GOOGLE_DCHECK(::com::android::glesv2debugger::Message_Prop_IsValid(value)); _set_bit(16); _set_bit(19); prop_ = value; } // optional float clock = 22; inline bool Message::has_clock() const { return _has_bit(17); return _has_bit(20); } inline void Message::clear_clock() { clock_ = 0; _clear_bit(17); _clear_bit(20); } inline float Message::clock() const { return clock_; } inline void Message::set_clock(float value) { _set_bit(17); _set_bit(20); clock_ = value; } Loading
opengl/libs/GLES2_dbg/src/header.h +15 −5 Original line number Diff line number Diff line Loading @@ -60,8 +60,13 @@ struct DbgContext { private: unsigned lzf_bufSize; // used as buffer and reference frame for ReadPixels; malloc/free unsigned * lzf_ref [2]; unsigned lzf_readIndex; // 0 or 1 unsigned lzf_refSize, lzf_refBufSize; // bytes public: char * lzf_buf; char * lzf_buf; // auto malloc/free; output of lzf_compress const unsigned version; // 0 is GLES1, 1 is GLES2 const gl_hooks_t * const hooks; Loading Loading @@ -100,6 +105,11 @@ public: void Fetch(const unsigned index, std::string * const data) const; unsigned Compress(const void * in_data, unsigned in_len); // compressed to lzf_buf void * GetReadPixelsBuffer(const unsigned size); bool IsReadPixelBuffer(const void * const ptr) { return ptr == lzf_ref[lzf_readIndex]; } unsigned CompressReadPixelBuffer(); void glUseProgram(GLuint program); void glEnableVertexAttribArray(GLuint index); Loading