mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-04 00:03:54 -06:00
ui/gtk-egl: Render guest content with padding in fixed-scale mode
Scaling was not respected when rendering frames in gtk-egl.c (used if gl=on and X11 mode). To fix this, add fields x and y to struct egl_fb for x offset and y offset so we can add padding to window. Signed-off-by: Weifeng Liu <weifeng.liu.z@gmail.com> Message-ID: <20250511073337.876650-10-weifeng.liu.z@gmail.com> Acked-by: Gerd Hoffmann <kraxel@redhat.com> Acked-by: Marc-André Lureau <marcandre.lureau@redhat.com>
This commit is contained in:
parent
fdc09b028f
commit
f05e1a93f4
4 changed files with 43 additions and 9 deletions
|
@ -93,14 +93,18 @@ void egl_fb_destroy(egl_fb *fb)
|
|||
|
||||
fb->width = 0;
|
||||
fb->height = 0;
|
||||
fb->x = 0;
|
||||
fb->y = 0;
|
||||
fb->texture = 0;
|
||||
fb->framebuffer = 0;
|
||||
}
|
||||
|
||||
void egl_fb_setup_default(egl_fb *fb, int width, int height)
|
||||
void egl_fb_setup_default(egl_fb *fb, int width, int height, int x, int y)
|
||||
{
|
||||
fb->width = width;
|
||||
fb->height = height;
|
||||
fb->x = x;
|
||||
fb->y = y;
|
||||
fb->framebuffer = 0; /* default framebuffer */
|
||||
}
|
||||
|
||||
|
@ -145,6 +149,7 @@ void egl_fb_blit(egl_fb *dst, egl_fb *src, bool flip)
|
|||
glBindFramebuffer(GL_READ_FRAMEBUFFER, src->framebuffer);
|
||||
glBindFramebuffer(GL_DRAW_FRAMEBUFFER, dst->framebuffer);
|
||||
glViewport(0, 0, dst->width, dst->height);
|
||||
glClear(GL_COLOR_BUFFER_BIT);
|
||||
|
||||
if (src->dmabuf) {
|
||||
x1 = qemu_dmabuf_get_x(src->dmabuf);
|
||||
|
@ -161,7 +166,8 @@ void egl_fb_blit(egl_fb *dst, egl_fb *src, bool flip)
|
|||
x2 = x1 + w;
|
||||
|
||||
glBlitFramebuffer(x1, y1, x2, y2,
|
||||
0, 0, dst->width, dst->height,
|
||||
dst->x, dst->y,
|
||||
dst->x + dst->width, dst->y + dst->height,
|
||||
GL_COLOR_BUFFER_BIT, GL_LINEAR);
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue