12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394 |
- /*
- * 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;
- bool glswapped;
- #endif
- qemu_pixman_shareable share_handle;
- uint32_t share_handle_offset;
- } 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);
- void qemu_displaysurface_set_share_handle(DisplaySurface *surface,
- qemu_pixman_shareable handle,
- uint32_t offset);
- DisplaySurface *qemu_create_displaysurface(int width, int height);
- void qemu_free_displaysurface(DisplaySurface *surface);
- static inline int surface_is_allocated(DisplaySurface *surface)
- {
- return surface->flags & QEMU_ALLOCATED_FLAG;
- }
- static inline int surface_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
|