Hi, On Thu, May 23, 2019 at 01:01:12PM +0300, Snir Sheriber wrote: > Hi, > > On 5/22/19 6:02 PM, Marc-André Lureau wrote: > > Hi > > > > On Sun, Mar 17, 2019 at 4:28 PM Snir Sheriber <ssheribe@xxxxxxxxxx> wrote: > > > When GDK_SCALE is != 1 and egl is used, the image presented does not > > > fit to the window (scale of 2 is often used with hidpi monitors). > > > Usually this is not a problem since all components are adjusted by > > > gdk/gtk but with egl, pixel-based data is not being scaled. In this > > > case window's scale value can be used in order to determine whether > > > to use a pixel resource with higher resolution data. > > > > > > In order to reproduce the problem set spice with virgl/Intel-vGPU > > > and run spice-gtk with GDK_SCALE=2 > > > --- > > > Changes from v1: > > > -commit msg > > > -replace var naming (ws with win_scale) > > > > > > > > > This patch is kind of RFC, it fixes the issue, but it's a bit hacky > > > and specific. I didn't come across other scale issues but it is likely > > > that more of these exist and better and generic fix is needed. > > > > > > --- > > > src/spice-widget-egl.c | 15 +++++++++++++-- > > > src/spice-widget-priv.h | 1 + > > > 2 files changed, 14 insertions(+), 2 deletions(-) > > > > > > diff --git a/src/spice-widget-egl.c b/src/spice-widget-egl.c > > > index 43fccd7..600c87a 100644 > > > --- a/src/spice-widget-egl.c > > > +++ b/src/spice-widget-egl.c > > > @@ -326,6 +326,8 @@ static gboolean spice_widget_init_egl_win(SpiceDisplay *display, GdkWindow *win, > > > if (d->egl.surface) > > > return TRUE; > > > > > > + d->egl.scale = gdk_window_get_scale_factor(win); > > Why not use gtk_widget_get_scale_factor() directly from > > spice_egl_resize_display? > > There is no special objection for that, just because i adjust > scaling also in spice_egl_update_display and i assumed scaling > is not being changed frequently. But it can be changed, right? In that case, d->egl.scale would not have the right value in spice_egl_resize_display() Note that user tested that this patches fixes so I'd add that to commit log: https://gitlab.freedesktop.org/spice/spice-gtk/issues/99 Cheers, > Snir. > > > > + > > > #ifdef GDK_WINDOWING_X11 > > > if (GDK_IS_X11_WINDOW(win)) { > > > native = (EGLNativeWindowType)GDK_WINDOW_XID(win); > > > @@ -431,15 +433,17 @@ void spice_egl_resize_display(SpiceDisplay *display, int w, int h) > > > { > > > SpiceDisplayPrivate *d = display->priv; > > > int prog; > > > + gint win_scale; > > > > > > if (!gl_make_current(display, NULL)) > > > return; > > > > > > + win_scale = d->egl.scale; > > > glGetIntegerv(GL_CURRENT_PROGRAM, &prog); > > > > > > glUseProgram(d->egl.prog); > > > - apply_ortho(d->egl.mproj, 0, w, 0, h, -1, 1); > > > - glViewport(0, 0, w, h); > > > + apply_ortho(d->egl.mproj, 0, w * win_scale , 0, h * win_scale, -1, 1); > > > + glViewport(0, 0, w * win_scale, h * win_scale); > > > > > > if (d->ready) > > > spice_egl_update_display(display); > > > @@ -559,6 +563,13 @@ void spice_egl_update_display(SpiceDisplay *display) > > > > > > spice_display_get_scaling(display, &s, &x, &y, &w, &h); > > > > > > + // Adjust to gdk scale > > > + s *= d->egl.scale; > > > + x *= d->egl.scale; > > > + y *= d->egl.scale; > > > + w *= d->egl.scale; > > > + h *= d->egl.scale; > > > + > > > glClearColor(0.0f, 0.0f, 0.0f, 0.0f); > > > glClear(GL_COLOR_BUFFER_BIT); > > > > > > diff --git a/src/spice-widget-priv.h b/src/spice-widget-priv.h > > > index 65eb404..8f110ac 100644 > > > --- a/src/spice-widget-priv.h > > > +++ b/src/spice-widget-priv.h > > > @@ -149,6 +149,7 @@ struct _SpiceDisplayPrivate { > > > EGLImageKHR image; > > > gboolean call_draw_done; > > > SpiceGlScanout scanout; > > > + gint scale; > > > } egl; > > > #endif // HAVE_EGL > > > double scroll_delta_y; > > > -- > > > 2.19.1 > > > > > > _______________________________________________ > > > Spice-devel mailing list > > > Spice-devel@xxxxxxxxxxxxxxxxxxxxx > > > https://lists.freedesktop.org/mailman/listinfo/spice-devel > > > > > _______________________________________________ > Spice-devel mailing list > Spice-devel@xxxxxxxxxxxxxxxxxxxxx > https://lists.freedesktop.org/mailman/listinfo/spice-devel
Attachment:
signature.asc
Description: PGP signature
_______________________________________________ Spice-devel mailing list Spice-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/spice-devel