mirror of
https://github.com/gnif/LookingGlass.git
synced 2025-08-09 20:24:14 +00:00
[client] egl: added DMA texture support for direct upload
Note: This only works with the KVMFR kernel module in a VM->VM configuration. If this causes issues it can be disabled with the new option `app:allowDMA`
This commit is contained in:
@@ -84,6 +84,13 @@ static struct Option options[] =
|
||||
.type = OPTION_TYPE_INT,
|
||||
.value.x_int = 1000
|
||||
},
|
||||
{
|
||||
.module = "app",
|
||||
.name = "allowDMA",
|
||||
.description = "Allow direct DMA transfers if possible (VM-VM only for now)",
|
||||
.type = OPTION_TYPE_BOOL,
|
||||
.value.x_bool = true
|
||||
},
|
||||
|
||||
// window options
|
||||
{
|
||||
@@ -401,6 +408,7 @@ bool config_load(int argc, char * argv[])
|
||||
// setup the application params for the basic types
|
||||
params.cursorPollInterval = option_get_int ("app", "cursorPollInterval");
|
||||
params.framePollInterval = option_get_int ("app", "framePollInterval" );
|
||||
params.allowDMA = option_get_bool ("app", "allowDMA" );
|
||||
|
||||
params.windowTitle = option_get_string("win", "title" );
|
||||
params.autoResize = option_get_bool ("win", "autoResize" );
|
||||
|
@@ -375,7 +375,10 @@ static int frameThread(void * unused)
|
||||
|
||||
//FIXME: Should use LGMP_Q_FRAME_LEN
|
||||
struct DMAFrameInfo dmaInfo[2] = {0};
|
||||
const bool useDMA = ivshmemHasDMA(&state.shm) && state.lgr->supports &&
|
||||
const bool useDMA =
|
||||
params.allowDMA &&
|
||||
ivshmemHasDMA(&state.shm) &&
|
||||
state.lgr->supports &&
|
||||
state.lgr->supports(state.lgrData, LG_SUPPORTS_DMABUF);
|
||||
|
||||
if (useDMA)
|
||||
@@ -479,7 +482,7 @@ static int frameThread(void * unused)
|
||||
frame->width, frame->height,
|
||||
frame->stride, frame->pitch);
|
||||
|
||||
if (!state.lgr->on_frame_format(state.lgrData, lgrFormat))
|
||||
if (!state.lgr->on_frame_format(state.lgrData, lgrFormat, useDMA))
|
||||
{
|
||||
DEBUG_ERROR("renderer failed to configure format");
|
||||
state.state = APP_STATE_SHUTDOWN;
|
||||
@@ -557,7 +560,6 @@ static int frameThread(void * unused)
|
||||
|
||||
atomic_fetch_add_explicit(&state.frameCount, 1, memory_order_relaxed);
|
||||
lgSignalEvent(e_frame);
|
||||
|
||||
lgmpClientMessageDone(queue);
|
||||
}
|
||||
|
||||
|
@@ -158,6 +158,7 @@ struct AppParams
|
||||
|
||||
unsigned int cursorPollInterval;
|
||||
unsigned int framePollInterval;
|
||||
bool allowDMA;
|
||||
|
||||
bool forceRenderer;
|
||||
unsigned int forceRendererIndex;
|
||||
|
Reference in New Issue
Block a user