From 18b6c72cb054b552ab02853312d536e3b781be5f Mon Sep 17 00:00:00 2001 From: Gurchetan Singh Date: Thu, 29 Aug 2024 13:02:29 -0700 Subject: [PATCH] gfxstream: guest: introduce QemuPipeStream stub For non-Android builds, this stub can be used for the QemuPipeStream. Reviewed-by: Aaron Ruby Acked-by: Yonggang Luo Acked-by: Adam Jackson Part-of: --- .../connection-manager/QemuPipeStream.cpp | 15 ++--- .../guest/connection-manager/QemuPipeStream.h | 9 +-- .../connection-manager/QemuPipeStreamStub.cpp | 62 +++++++++++++++++++ .../guest/connection-manager/meson.build | 7 +-- 4 files changed, 73 insertions(+), 20 deletions(-) create mode 100644 src/gfxstream/guest/connection-manager/QemuPipeStreamStub.cpp diff --git a/src/gfxstream/guest/connection-manager/QemuPipeStream.cpp b/src/gfxstream/guest/connection-manager/QemuPipeStream.cpp index fccfaafa2fb..9e6738786ba 100644 --- a/src/gfxstream/guest/connection-manager/QemuPipeStream.cpp +++ b/src/gfxstream/guest/connection-manager/QemuPipeStream.cpp @@ -28,12 +28,7 @@ static const size_t kReadSize = 512 * 1024; static const size_t kWriteOffset = kReadSize; QemuPipeStream::QemuPipeStream(size_t bufSize) - : IOStream(bufSize), - m_sock((QEMU_PIPE_HANDLE)(-1)), - m_bufsize(bufSize), - m_buf(NULL), - m_read(0), - m_readLeft(0) {} + : IOStream(bufSize), m_sock(-1), m_bufsize(bufSize), m_buf(NULL), m_read(0), m_readLeft(0) {} QemuPipeStream::QemuPipeStream(QEMU_PIPE_HANDLE sock, size_t bufSize) : IOStream(bufSize), m_sock(sock), m_bufsize(bufSize), m_buf(NULL), m_read(0), m_readLeft(0) {} @@ -41,7 +36,7 @@ QemuPipeStream::QemuPipeStream(QEMU_PIPE_HANDLE sock, size_t bufSize) QemuPipeStream::~QemuPipeStream() { if (valid()) { flush(); - qemu_pipe_close(m_sock); + qemu_pipe_close((QEMU_PIPE_HANDLE)m_sock); } if (m_buf != NULL) { free(m_buf); @@ -49,7 +44,7 @@ QemuPipeStream::~QemuPipeStream() { } int QemuPipeStream::connect(const char* serviceName) { - m_sock = qemu_pipe_open("opengles"); + m_sock = (int)qemu_pipe_open("opengles"); if (!valid()) { mesa_loge("%s: failed to connect to opengles pipe", __FUNCTION__); qemu_pipe_print_error(m_sock); @@ -121,8 +116,6 @@ int QemuPipeStream::writeFully(const void* buf, size_t len) { return qemu_pipe_write_fully(m_sock, buf, len); } -QEMU_PIPE_HANDLE QemuPipeStream::getSocket() const { return m_sock; } - const unsigned char* QemuPipeStream::readFully(void* buf, size_t len) { return commitBufferAndReadFully(0, buf, len); } @@ -236,6 +229,8 @@ const unsigned char* QemuPipeStream::read(void* buf, size_t* inout_len) { return NULL; } +bool QemuPipeStream::valid() { return qemu_pipe_valid(m_sock); } + int QemuPipeStream::recv(void* buf, size_t len) { if (!valid()) return int(ERR_INVALID_SOCKET); char* p = (char*)buf; diff --git a/src/gfxstream/guest/connection-manager/QemuPipeStream.h b/src/gfxstream/guest/connection-manager/QemuPipeStream.h index e2a6b66afc7..14f72a52081 100644 --- a/src/gfxstream/guest/connection-manager/QemuPipeStream.h +++ b/src/gfxstream/guest/connection-manager/QemuPipeStream.h @@ -20,7 +20,6 @@ * to communicate with the emulator's 'opengles' service. See * for more details. */ -#include #include #include @@ -43,20 +42,18 @@ class QemuPipeStream : public gfxstream::guest::IOStream { virtual const unsigned char* commitBufferAndReadFully(size_t size, void* buf, size_t len); virtual const unsigned char* read(void* buf, size_t* inout_len); - bool valid() { return qemu_pipe_valid(m_sock); } + bool valid(); int recv(void* buf, size_t len); virtual int writeFully(const void* buf, size_t len); - QEMU_PIPE_HANDLE getSocket() const; - private: - QEMU_PIPE_HANDLE m_sock; + int m_sock; size_t m_bufsize; unsigned char* m_buf; size_t m_read; size_t m_readLeft; - QemuPipeStream(QEMU_PIPE_HANDLE sock, size_t bufSize); + QemuPipeStream(int sock, size_t bufSize); }; #endif diff --git a/src/gfxstream/guest/connection-manager/QemuPipeStreamStub.cpp b/src/gfxstream/guest/connection-manager/QemuPipeStreamStub.cpp new file mode 100644 index 00000000000..0e7bd9c3c2f --- /dev/null +++ b/src/gfxstream/guest/connection-manager/QemuPipeStreamStub.cpp @@ -0,0 +1,62 @@ +/* + * Copyright 2024 Google LLC + * SPDX-License-Identifier: Apache-2.0 + */ + +#include "QemuPipeStream.h" + +QemuPipeStream::QemuPipeStream(size_t bufSize) : IOStream(bufSize) { (void)bufSize; } + +QemuPipeStream::~QemuPipeStream() {} + +int QemuPipeStream::connect(const char* serviceName) { + (void)serviceName; + return 0; +} + +uint64_t QemuPipeStream::processPipeInit() { return 0; } + +void* QemuPipeStream::allocBuffer(size_t minSize) { + (void)minSize; + return nullptr; +}; + +int QemuPipeStream::commitBuffer(size_t size) { + (void)size; + return 0; +} + +int QemuPipeStream::writeFully(const void* buf, size_t len) { + (void)buf; + (void)len; + return 0; +} + +const unsigned char* QemuPipeStream::readFully(void* buf, size_t len) { + (void)buf; + (void)len; + return nullptr; +} + +const unsigned char* QemuPipeStream::commitBufferAndReadFully(size_t writeSize, + void* userReadBufPtr, + size_t totalReadSize) { + (void)writeSize; + (void)userReadBufPtr; + (void)totalReadSize; + return nullptr; +} + +const unsigned char* QemuPipeStream::read(void* buf, size_t* inout_len) { + (void)buf; + (void)inout_len; + return nullptr; +} + +bool QemuPipeStream::valid() { return false; } + +int QemuPipeStream::recv(void* buf, size_t len) { + (void)buf; + (void)len; + return 0; +} diff --git a/src/gfxstream/guest/connection-manager/meson.build b/src/gfxstream/guest/connection-manager/meson.build index 7f7cdc680a2..e2a948baaa1 100644 --- a/src/gfxstream/guest/connection-manager/meson.build +++ b/src/gfxstream/guest/connection-manager/meson.build @@ -6,7 +6,7 @@ inc_connection_manager = include_directories('.') files_libconnection_manager = files( 'GfxStreamConnectionManager.cpp', 'GfxStreamConnection.cpp', - 'QemuPipeStream.cpp', + 'QemuPipeStreamStub.cpp', 'VirtioGpuPipeStream.cpp', ) @@ -15,10 +15,9 @@ libconnection_manager = static_library( files_libconnection_manager, cpp_args: gfxstream_guest_args, include_directories: [inc_connection_manager, inc_guest_iostream, - inc_guest_iostream, inc_qemu_pipe, - inc_qemu_pipe_types, inc_goldfish_address_space, + inc_guest_iostream, inc_goldfish_address_space, inc_platform_virtgpu, inc_src], - link_with: [lib_guest_iostream, lib_goldfish_address_space, lib_qemu_pipe, + link_with: [lib_guest_iostream, lib_goldfish_address_space, libplatform_virtgpu], dependencies: drm_dep )