aboutsummaryrefslogtreecommitdiff
path: root/include/ui
diff options
context:
space:
mode:
authorMarc-André Lureau <marcandre.lureau@redhat.com>2021-02-20 16:23:03 +0400
committerMarc-André Lureau <marcandre.lureau@redhat.com>2021-12-21 10:50:21 +0400
commitebced091854517f063c46ce8e522ebc45e9bccdf (patch)
treecce5e99c1341377a0b7ff871473136b4600dc34f /include/ui
parentf6ef71bded95d99106d4541cf1f420376818732e (diff)
downloadqemu-ebced091854517f063c46ce8e522ebc45e9bccdf.zip
qemu-ebced091854517f063c46ce8e522ebc45e9bccdf.tar.gz
qemu-ebced091854517f063c46ce8e522ebc45e9bccdf.tar.bz2
console: save current scanout details
Add a new DisplayScanout structure to save the current scanout details. This allows to attach later UI backends and set the scanout. Introduce displaychangelistener_display_console() helper function to handle the dpy_gfx_switch/gl_scanout() & dpy_gfx_update() calls. Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com> Acked-by: Gerd Hoffmann <kraxel@redhat.com>
Diffstat (limited to 'include/ui')
-rw-r--r--include/ui/console.h27
1 files changed, 27 insertions, 0 deletions
diff --git a/include/ui/console.h b/include/ui/console.h
index eefd7e4..f590819 100644
--- a/include/ui/console.h
+++ b/include/ui/console.h
@@ -108,6 +108,17 @@ struct QemuConsoleClass {
#define QEMU_ALLOCATED_FLAG 0x01
#define QEMU_PLACEHOLDER_FLAG 0x02
+typedef struct ScanoutTexture {
+ uint32_t backing_id;
+ bool backing_y_0_top;
+ uint32_t backing_width;
+ uint32_t backing_height;
+ uint32_t x;
+ uint32_t y;
+ uint32_t width;
+ uint32_t height;
+} ScanoutTexture;
+
typedef struct DisplaySurface {
pixman_format_code_t format;
pixman_image_t *image;
@@ -178,6 +189,22 @@ typedef struct QemuDmaBuf {
bool draw_submitted;
} QemuDmaBuf;
+enum display_scanout {
+ SCANOUT_NONE,
+ SCANOUT_SURFACE,
+ SCANOUT_TEXTURE,
+ SCANOUT_DMABUF,
+};
+
+typedef struct DisplayScanout {
+ enum display_scanout kind;
+ union {
+ /* DisplaySurface *surface; is kept in QemuConsole */
+ ScanoutTexture texture;
+ QemuDmaBuf *dmabuf;
+ };
+} DisplayScanout;
+
typedef struct DisplayState DisplayState;
typedef struct DisplayGLCtx DisplayGLCtx;