summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYurii Zubrytskyi <zyy@google.com>2017-01-31 17:37:51 -0800
committerGreg Hartman <ghartman@google.com>2018-08-23 17:30:51 -0700
commit389d97349f6ea7922dd4f36d38ca243a6f0796b6 (patch)
treecde6eef2449310fbda8d811f739c92b4db3fdc71
parent9e931bd35f1d98d9565e7a258d7d3d297591327e (diff)
downloadopengl-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.h16
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;