[vulkan] Add counting stream
bug: 111137294
Great for figuring out byte sizes while still
using the same stream-like interface.
Change-Id: Iae328eb2531b271f68592d2745f4a19acb317b97
diff --git a/system/vulkan_enc/VulkanStream.cpp b/system/vulkan_enc/VulkanStream.cpp
index 33cbf90..14c4cca 100644
--- a/system/vulkan_enc/VulkanStream.cpp
+++ b/system/vulkan_enc/VulkanStream.cpp
@@ -145,4 +145,22 @@
return mImpl->write(buffer, size);
}
+VulkanCountingStream::VulkanCountingStream() : VulkanStream(nullptr) { }
+VulkanCountingStream::~VulkanCountingStream() = default;
+
+ssize_t VulkanCountingStream::read(void *buffer, size_t size) {
+ m_read += size;
+ return size;
+}
+
+ssize_t VulkanCountingStream::write(const void *buffer, size_t size) {
+ m_written += size;
+ return size;
+}
+
+void VulkanCountingStream::rewind() {
+ m_written = 0;
+ m_read = 0;
+}
+
} // namespace goldfish_vk
\ No newline at end of file
diff --git a/system/vulkan_enc/VulkanStream.h b/system/vulkan_enc/VulkanStream.h
index 21b08f0..99f88ab 100644
--- a/system/vulkan_enc/VulkanStream.h
+++ b/system/vulkan_enc/VulkanStream.h
@@ -46,4 +46,21 @@
std::unique_ptr<Impl> mImpl;
};
+class VulkanCountingStream : public VulkanStream {
+public:
+ VulkanCountingStream();
+ ~VulkanCountingStream();
+
+ ssize_t read(void *buffer, size_t size) override;
+ ssize_t write(const void *buffer, size_t size) override;
+
+ size_t bytesWritten() const { return m_written; }
+ size_t bytesRead() const { return m_read; }
+
+ void rewind();
+private:
+ size_t m_written = 0;
+ size_t m_read = 0;
+};
+
} // namespace goldfish_vk
\ No newline at end of file