emulator: opengl: Use QEMU pipe.

This patch modifies the guest libraries to use the new
fast qemu "opengles" pipe to communicate with the host
renderer process.

Note that the renderer is still listening on a TCP socket
on port 22468.

Change-Id: I6ab84f972a8024e1fdababa4615d0650c8d461bf

Conflicts:

	tools/emulator/opengl/tests/gles_android_wrapper/Android.mk
	tools/emulator/opengl/tests/gles_android_wrapper/ServerConnection.h
This commit is contained in:
David 'Digit' Turner
2011-05-03 16:21:12 +02:00
parent 7b73c9f1d3
commit 892a6306e7
10 changed files with 317 additions and 36 deletions

View File

@@ -15,12 +15,16 @@
*/
#include "HostConnection.h"
#include "TcpStream.h"
#include "QemuPipeStream.h"
#include "ThreadInfo.h"
#include <cutils/log.h>
#define STREAM_BUFFER_SIZE 4*1024*1024
#define STREAM_PORT_NUM 4141
/* Set to 1 to use a QEMU pipe, or 0 for a TCP connection */
#define USE_QEMU_PIPE 1
HostConnection::HostConnection() :
m_stream(NULL),
m_glEnc(NULL),
@@ -37,36 +41,52 @@ HostConnection::~HostConnection()
HostConnection *HostConnection::get()
{
/* TODO: Make this configurable with a system property */
const int useQemuPipe = USE_QEMU_PIPE;
// Get thread info
EGLThreadInfo *tinfo = getEGLThreadInfo();
if (!tinfo) {
return NULL;
}
//
// create new host connection for that thread if needed
//
if (tinfo->hostConn == NULL) {
HostConnection *con = new HostConnection();
if (NULL == con) {
return NULL;
}
TcpStream *stream = new TcpStream(STREAM_BUFFER_SIZE);
if (!stream) {
LOGE("Failed to create TcpStream for host connection!!!\n");
delete con;
return NULL;
if (useQemuPipe) {
QemuPipeStream *stream = new QemuPipeStream(STREAM_BUFFER_SIZE);
if (!stream) {
LOGE("Failed to create QemuPipeStream for host connection!!!\n");
delete con;
return NULL;
}
if (stream->connect() < 0) {
LOGE("Failed to connect to host !!!\n");
delete con;
return NULL;
}
con->m_stream = stream;
}
else /* !useQemuPipe */
{
TcpStream *stream = new TcpStream(STREAM_BUFFER_SIZE);
if (!stream) {
LOGE("Failed to create TcpStream for host connection!!!\n");
delete con;
return NULL;
}
if (stream->connect("10.0.2.2", STREAM_PORT_NUM) < 0) {
LOGE("Failed to connect to host !!!\n");
delete con;
return NULL;
if (stream->connect("10.0.2.2", STREAM_PORT_NUM) < 0) {
LOGE("Failed to connect to host !!!\n");
delete con;
return NULL;
}
con->m_stream = stream;
}
LOGD("Host Connection established \n");
con->m_stream = stream;
tinfo->hostConn = con;
}