gfxstream: guest: introduce QemuPipeStream stub
For non-Android builds, this stub can be used for the QemuPipeStream. Reviewed-by: Aaron Ruby <aruby@blackberry.com> Acked-by: Yonggang Luo <luoyonggang@gmail.com> Acked-by: Adam Jackson <ajax@redhat.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/27246>
This commit is contained in:

committed by
Marge Bot

parent
31ceda8bdc
commit
18b6c72cb0
@@ -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;
|
||||
|
@@ -20,7 +20,6 @@
|
||||
* to communicate with the emulator's 'opengles' service. See
|
||||
* <hardware/qemu_pipe.h> for more details.
|
||||
*/
|
||||
#include <qemu_pipe_bp.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
#include <memory>
|
||||
@@ -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
|
||||
|
@@ -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;
|
||||
}
|
@@ -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
|
||||
)
|
||||
|
Reference in New Issue
Block a user