Hi Gerd On Fri, Feb 19, 2016 at 1:32 PM, Marc-André Lureau <marcandre.lureau@xxxxxxxxx> wrote: > Hi > > On Fri, Feb 19, 2016 at 10:14 AM, Gerd Hoffmann <kraxel@xxxxxxxxxx> wrote: >> Signed-off-by: Gerd Hoffmann <kraxel@xxxxxxxxxx> >> --- >> include/ui/spice-display.h | 1 + >> ui/spice-display.c | 30 ++++++++++++++++++++++++++++++ >> 2 files changed, 31 insertions(+) >> > > Could eventually be squashed with "add opengl/virgl/dmabuf support" patch > > Reviewed-by: Marc-André Lureau <marcandre.lureau@xxxxxxxxxx> Sigh, too bad this wasn't actually picked or squashed with the series. This is required for the spice client to know the area of the GL surface to draw. (currently it also receives monitor config from 2d/QXL, which it associates to GL scanout when enabled, which results in some clipping visible in virt-manager). Imho it would be worth to include in 2.6. > >> diff --git a/include/ui/spice-display.h b/include/ui/spice-display.h >> index dd9cf6f..f9388c2 100644 >> --- a/include/ui/spice-display.h >> +++ b/include/ui/spice-display.h >> @@ -71,6 +71,7 @@ typedef struct QXLCookie { >> QXLRect area; >> int redraw; >> } render; >> + void *data; >> } u; >> } QXLCookie; >> >> diff --git a/ui/spice-display.c b/ui/spice-display.c >> index 96beb02..34e6d51 100644 >> --- a/ui/spice-display.c >> +++ b/ui/spice-display.c >> @@ -660,6 +660,11 @@ static void interface_async_complete(QXLInstance *sin, uint64_t cookie_token) >> qemu_bh_schedule(ssd->gl_unblock_bh); >> break; >> } >> + case QXL_COOKIE_TYPE_IO: >> + if (cookie->io == QXL_IO_MONITORS_CONFIG_ASYNC) { >> + g_free(cookie->u.data); >> + } >> + break; >> #endif >> default: >> /* should never be called, used in qxl native mode only */ >> @@ -795,6 +800,29 @@ static const DisplayChangeListenerOps display_listener_ops = { >> >> #ifdef HAVE_SPICE_GL >> >> +static void qemu_spice_gl_monitor_config(SimpleSpiceDisplay *ssd, >> + int x, int y, int w, int h) >> +{ >> + QXLMonitorsConfig *config; >> + QXLCookie *cookie; >> + >> + config = g_malloc0(sizeof(QXLMonitorsConfig) + sizeof(QXLHead)); >> + config->count = 1; >> + config->max_allowed = 1; >> + config->heads[0].x = x; >> + config->heads[0].y = y; >> + config->heads[0].width = w; >> + config->heads[0].height = h; >> + cookie = qxl_cookie_new(QXL_COOKIE_TYPE_IO, >> + QXL_IO_MONITORS_CONFIG_ASYNC); >> + cookie->u.data = config; >> + >> + spice_qxl_monitors_config_async(&ssd->qxl, >> + (uintptr_t)config, >> + MEMSLOT_GROUP_HOST, >> + (uintptr_t)cookie); >> +} >> + >> static void qemu_spice_gl_block(SimpleSpiceDisplay *ssd, bool block) >> { >> uint64_t timeout; >> @@ -934,6 +962,8 @@ static void qemu_spice_gl_scanout(DisplayChangeListener *dcl, >> surface_width(ssd->ds), >> surface_height(ssd->ds), >> stride, fourcc, y_0_top); >> + >> + qemu_spice_gl_monitor_config(ssd, x, y, w, h); >> } >> >> static void qemu_spice_gl_update(DisplayChangeListener *dcl, >> -- >> 1.8.3.1 >> > > > > -- > Marc-André Lureau -- Marc-André Lureau _______________________________________________ Spice-devel mailing list Spice-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/spice-devel