ui/console: move DisplaySurface to its own header
Mostly for readability reasons. Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com> Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
This commit is contained in:
parent
6f11081991
commit
6d8cd7c220
@ -6,11 +6,7 @@
|
|||||||
#include "qemu/notify.h"
|
#include "qemu/notify.h"
|
||||||
#include "qapi/qapi-types-ui.h"
|
#include "qapi/qapi-types-ui.h"
|
||||||
#include "ui/input.h"
|
#include "ui/input.h"
|
||||||
|
#include "ui/surface.h"
|
||||||
#ifdef CONFIG_OPENGL
|
|
||||||
# include <epoxy/gl.h>
|
|
||||||
# include "ui/shader.h"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#define TYPE_QEMU_CONSOLE "qemu-console"
|
#define TYPE_QEMU_CONSOLE "qemu-console"
|
||||||
OBJECT_DECLARE_TYPE(QemuConsole, QemuConsoleClass, QEMU_CONSOLE)
|
OBJECT_DECLARE_TYPE(QemuConsole, QemuConsoleClass, QEMU_CONSOLE)
|
||||||
@ -136,9 +132,6 @@ struct QemuConsoleClass {
|
|||||||
ObjectClass parent_class;
|
ObjectClass parent_class;
|
||||||
};
|
};
|
||||||
|
|
||||||
#define QEMU_ALLOCATED_FLAG 0x01
|
|
||||||
#define QEMU_PLACEHOLDER_FLAG 0x02
|
|
||||||
|
|
||||||
typedef struct ScanoutTexture {
|
typedef struct ScanoutTexture {
|
||||||
uint32_t backing_id;
|
uint32_t backing_id;
|
||||||
bool backing_y_0_top;
|
bool backing_y_0_top;
|
||||||
@ -151,20 +144,6 @@ typedef struct ScanoutTexture {
|
|||||||
void *d3d_tex2d;
|
void *d3d_tex2d;
|
||||||
} ScanoutTexture;
|
} ScanoutTexture;
|
||||||
|
|
||||||
typedef struct DisplaySurface {
|
|
||||||
pixman_image_t *image;
|
|
||||||
uint8_t flags;
|
|
||||||
#ifdef CONFIG_OPENGL
|
|
||||||
GLenum glformat;
|
|
||||||
GLenum gltype;
|
|
||||||
GLuint texture;
|
|
||||||
#endif
|
|
||||||
#ifdef WIN32
|
|
||||||
HANDLE handle;
|
|
||||||
uint32_t handle_offset;
|
|
||||||
#endif
|
|
||||||
} DisplaySurface;
|
|
||||||
|
|
||||||
typedef struct QemuUIInfo {
|
typedef struct QemuUIInfo {
|
||||||
/* physical dimension */
|
/* physical dimension */
|
||||||
uint16_t width_mm;
|
uint16_t width_mm;
|
||||||
@ -344,30 +323,6 @@ struct DisplayGLCtx {
|
|||||||
};
|
};
|
||||||
|
|
||||||
DisplayState *init_displaystate(void);
|
DisplayState *init_displaystate(void);
|
||||||
DisplaySurface *qemu_create_displaysurface_from(int width, int height,
|
|
||||||
pixman_format_code_t format,
|
|
||||||
int linesize, uint8_t *data);
|
|
||||||
DisplaySurface *qemu_create_displaysurface_pixman(pixman_image_t *image);
|
|
||||||
DisplaySurface *qemu_create_placeholder_surface(int w, int h,
|
|
||||||
const char *msg);
|
|
||||||
#ifdef WIN32
|
|
||||||
void qemu_displaysurface_win32_set_handle(DisplaySurface *surface,
|
|
||||||
HANDLE h, uint32_t offset);
|
|
||||||
#endif
|
|
||||||
PixelFormat qemu_default_pixelformat(int bpp);
|
|
||||||
|
|
||||||
DisplaySurface *qemu_create_displaysurface(int width, int height);
|
|
||||||
void qemu_free_displaysurface(DisplaySurface *surface);
|
|
||||||
|
|
||||||
static inline int is_buffer_shared(DisplaySurface *surface)
|
|
||||||
{
|
|
||||||
return !(surface->flags & QEMU_ALLOCATED_FLAG);
|
|
||||||
}
|
|
||||||
|
|
||||||
static inline int is_placeholder(DisplaySurface *surface)
|
|
||||||
{
|
|
||||||
return surface->flags & QEMU_PLACEHOLDER_FLAG;
|
|
||||||
}
|
|
||||||
|
|
||||||
void register_displaychangelistener(DisplayChangeListener *dcl);
|
void register_displaychangelistener(DisplayChangeListener *dcl);
|
||||||
void update_displaychangelistener(DisplayChangeListener *dcl,
|
void update_displaychangelistener(DisplayChangeListener *dcl,
|
||||||
@ -415,43 +370,6 @@ int dpy_gl_ctx_make_current(QemuConsole *con, QEMUGLContext ctx);
|
|||||||
|
|
||||||
bool console_has_gl(QemuConsole *con);
|
bool console_has_gl(QemuConsole *con);
|
||||||
|
|
||||||
static inline int surface_stride(DisplaySurface *s)
|
|
||||||
{
|
|
||||||
return pixman_image_get_stride(s->image);
|
|
||||||
}
|
|
||||||
|
|
||||||
static inline void *surface_data(DisplaySurface *s)
|
|
||||||
{
|
|
||||||
return pixman_image_get_data(s->image);
|
|
||||||
}
|
|
||||||
|
|
||||||
static inline int surface_width(DisplaySurface *s)
|
|
||||||
{
|
|
||||||
return pixman_image_get_width(s->image);
|
|
||||||
}
|
|
||||||
|
|
||||||
static inline int surface_height(DisplaySurface *s)
|
|
||||||
{
|
|
||||||
return pixman_image_get_height(s->image);
|
|
||||||
}
|
|
||||||
|
|
||||||
static inline pixman_format_code_t surface_format(DisplaySurface *s)
|
|
||||||
{
|
|
||||||
return pixman_image_get_format(s->image);
|
|
||||||
}
|
|
||||||
|
|
||||||
static inline int surface_bits_per_pixel(DisplaySurface *s)
|
|
||||||
{
|
|
||||||
int bits = PIXMAN_FORMAT_BPP(surface_format(s));
|
|
||||||
return bits;
|
|
||||||
}
|
|
||||||
|
|
||||||
static inline int surface_bytes_per_pixel(DisplaySurface *s)
|
|
||||||
{
|
|
||||||
int bits = PIXMAN_FORMAT_BPP(surface_format(s));
|
|
||||||
return DIV_ROUND_UP(bits, 8);
|
|
||||||
}
|
|
||||||
|
|
||||||
typedef uint32_t console_ch_t;
|
typedef uint32_t console_ch_t;
|
||||||
|
|
||||||
static inline void console_write_ch(console_ch_t *dest, uint32_t ch)
|
static inline void console_write_ch(console_ch_t *dest, uint32_t ch)
|
||||||
|
95
include/ui/surface.h
Normal file
95
include/ui/surface.h
Normal file
@ -0,0 +1,95 @@
|
|||||||
|
/*
|
||||||
|
* SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
* QEMU UI Console
|
||||||
|
*/
|
||||||
|
#ifndef SURFACE_H
|
||||||
|
#define SURFACE_H
|
||||||
|
|
||||||
|
#include "ui/qemu-pixman.h"
|
||||||
|
|
||||||
|
#ifdef CONFIG_OPENGL
|
||||||
|
# include <epoxy/gl.h>
|
||||||
|
# include "ui/shader.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#define QEMU_ALLOCATED_FLAG 0x01
|
||||||
|
#define QEMU_PLACEHOLDER_FLAG 0x02
|
||||||
|
|
||||||
|
typedef struct DisplaySurface {
|
||||||
|
pixman_image_t *image;
|
||||||
|
uint8_t flags;
|
||||||
|
#ifdef CONFIG_OPENGL
|
||||||
|
GLenum glformat;
|
||||||
|
GLenum gltype;
|
||||||
|
GLuint texture;
|
||||||
|
#endif
|
||||||
|
#ifdef WIN32
|
||||||
|
HANDLE handle;
|
||||||
|
uint32_t handle_offset;
|
||||||
|
#endif
|
||||||
|
} DisplaySurface;
|
||||||
|
|
||||||
|
PixelFormat qemu_default_pixelformat(int bpp);
|
||||||
|
|
||||||
|
DisplaySurface *qemu_create_displaysurface_from(int width, int height,
|
||||||
|
pixman_format_code_t format,
|
||||||
|
int linesize, uint8_t *data);
|
||||||
|
DisplaySurface *qemu_create_displaysurface_pixman(pixman_image_t *image);
|
||||||
|
DisplaySurface *qemu_create_placeholder_surface(int w, int h,
|
||||||
|
const char *msg);
|
||||||
|
#ifdef WIN32
|
||||||
|
void qemu_displaysurface_win32_set_handle(DisplaySurface *surface,
|
||||||
|
HANDLE h, uint32_t offset);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
DisplaySurface *qemu_create_displaysurface(int width, int height);
|
||||||
|
void qemu_free_displaysurface(DisplaySurface *surface);
|
||||||
|
|
||||||
|
static inline int is_buffer_shared(DisplaySurface *surface)
|
||||||
|
{
|
||||||
|
return !(surface->flags & QEMU_ALLOCATED_FLAG);
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline int is_placeholder(DisplaySurface *surface)
|
||||||
|
{
|
||||||
|
return surface->flags & QEMU_PLACEHOLDER_FLAG;
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline int surface_stride(DisplaySurface *s)
|
||||||
|
{
|
||||||
|
return pixman_image_get_stride(s->image);
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline void *surface_data(DisplaySurface *s)
|
||||||
|
{
|
||||||
|
return pixman_image_get_data(s->image);
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline int surface_width(DisplaySurface *s)
|
||||||
|
{
|
||||||
|
return pixman_image_get_width(s->image);
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline int surface_height(DisplaySurface *s)
|
||||||
|
{
|
||||||
|
return pixman_image_get_height(s->image);
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline pixman_format_code_t surface_format(DisplaySurface *s)
|
||||||
|
{
|
||||||
|
return pixman_image_get_format(s->image);
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline int surface_bits_per_pixel(DisplaySurface *s)
|
||||||
|
{
|
||||||
|
int bits = PIXMAN_FORMAT_BPP(surface_format(s));
|
||||||
|
return bits;
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline int surface_bytes_per_pixel(DisplaySurface *s)
|
||||||
|
{
|
||||||
|
int bits = PIXMAN_FORMAT_BPP(surface_format(s));
|
||||||
|
return DIV_ROUND_UP(bits, 8);
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
Loading…
Reference in New Issue
Block a user