diff options
author | Yurii Zubrytskyi <zyy@google.com> | 2017-01-31 17:37:51 -0800 |
---|---|---|
committer | Greg Hartman <ghartman@google.com> | 2018-08-23 17:30:51 -0700 |
commit | 389d97349f6ea7922dd4f36d38ca243a6f0796b6 (patch) | |
tree | cde6eef2449310fbda8d811f739c92b4db3fdc71 | |
parent | 9e931bd35f1d98d9565e7a258d7d3d297591327e (diff) | |
download | opengl-transport-389d97349f6ea7922dd4f36d38ca243a6f0796b6.tar.gz |
IOStream and ChannelStream serialization functions
- IOStream serializes its internal state first, then calls
derived class' implementation.
- ChannelStream just saves/loads internal buffers
Change-Id: Iccb7302c9cfe1f0f5d2c592376d5498d1b586266
-rw-r--r-- | host/libs/virglrenderer/OpenglRender/IOStream.h | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/host/libs/virglrenderer/OpenglRender/IOStream.h b/host/libs/virglrenderer/OpenglRender/IOStream.h index c213d6fc7..9d6a6b202 100644 --- a/host/libs/virglrenderer/OpenglRender/IOStream.h +++ b/host/libs/virglrenderer/OpenglRender/IOStream.h @@ -16,6 +16,7 @@ #pragma once #include "ErrorLog.h" +#include "android/base/files/Stream.h" #include <assert.h> #include <inttypes.h> @@ -29,6 +30,7 @@ protected: ~IOStream() { // NOTE: m_buf was owned by the child class thus we expect it to be // released and flushed before the object destruction. + // TODO(zyy): uncomment this after all GL state is restored on snapshot assert(!m_buf || m_free == m_bufsize); } @@ -73,6 +75,18 @@ public: return stat; } + void save(android::base::Stream* stream) { + stream->putBe32(m_bufsize); + stream->putBe32(m_free); + onSave(stream); + } + + void load(android::base::Stream* stream) { + m_bufsize = stream->getBe32(); + m_free = stream->getBe32(); + m_buf = onLoad(stream); + } + virtual void* getDmaForReading(uint64_t guest_paddr) = 0; virtual void unlockDma(uint64_t guest_paddr) = 0; @@ -80,6 +94,8 @@ protected: virtual void *allocBuffer(size_t minSize) = 0; virtual int commitBuffer(size_t size) = 0; virtual const unsigned char *readRaw(void *buf, size_t *inout_len) = 0; + virtual void onSave(android::base::Stream* stream) = 0; + virtual unsigned char* onLoad(android::base::Stream* stream) = 0; private: unsigned char* m_buf = nullptr; |