2021-01-18 05:15:36 +01:00
|
|
|
#ifndef RENDER_PIXMAN_H
|
|
|
|
#define RENDER_PIXMAN_H
|
|
|
|
|
|
|
|
#include <wlr/render/pixman.h>
|
|
|
|
#include <wlr/render/wlr_renderer.h>
|
|
|
|
#include <wlr/render/drm_format_set.h>
|
|
|
|
#include "render/pixel_format.h"
|
|
|
|
|
|
|
|
struct wlr_pixman_pixel_format {
|
|
|
|
uint32_t drm_format;
|
|
|
|
pixman_format_code_t pixman_format;
|
|
|
|
};
|
|
|
|
|
|
|
|
struct wlr_pixman_buffer;
|
|
|
|
|
|
|
|
struct wlr_pixman_renderer {
|
|
|
|
struct wlr_renderer wlr_renderer;
|
|
|
|
|
|
|
|
struct wl_list buffers; // wlr_pixman_buffer.link
|
2021-04-21 12:02:42 +02:00
|
|
|
struct wl_list textures; // wlr_pixman_texture.link
|
2021-01-18 05:15:36 +01:00
|
|
|
|
|
|
|
struct wlr_pixman_buffer *current_buffer;
|
|
|
|
int32_t width, height;
|
|
|
|
|
|
|
|
struct wlr_drm_format_set drm_formats;
|
|
|
|
};
|
|
|
|
|
|
|
|
struct wlr_pixman_buffer {
|
|
|
|
struct wlr_buffer *buffer;
|
|
|
|
struct wlr_pixman_renderer *renderer;
|
|
|
|
|
|
|
|
pixman_image_t *image;
|
|
|
|
|
|
|
|
struct wl_listener buffer_destroy;
|
|
|
|
struct wl_list link; // wlr_pixman_renderer.buffers
|
|
|
|
};
|
|
|
|
|
|
|
|
struct wlr_pixman_texture {
|
|
|
|
struct wlr_texture wlr_texture;
|
|
|
|
struct wlr_pixman_renderer *renderer;
|
2021-04-21 12:02:42 +02:00
|
|
|
struct wl_list link; // wlr_pixman_renderer.textures
|
2021-01-18 05:15:36 +01:00
|
|
|
|
|
|
|
pixman_image_t *image;
|
2021-04-26 19:41:43 +02:00
|
|
|
pixman_format_code_t format;
|
|
|
|
const struct wlr_pixel_format_info *format_info;
|
|
|
|
|
|
|
|
void *data; // if created via texture_from_pixels
|
|
|
|
struct wlr_buffer *buffer; // if created via texture_from_buffer
|
2021-01-18 05:15:36 +01:00
|
|
|
};
|
|
|
|
|
|
|
|
pixman_format_code_t get_pixman_format_from_drm(uint32_t fmt);
|
2021-04-26 22:58:01 +02:00
|
|
|
uint32_t get_drm_format_from_pixman(pixman_format_code_t fmt);
|
2021-01-18 05:15:36 +01:00
|
|
|
const uint32_t *get_pixman_drm_formats(size_t *len);
|
|
|
|
|
|
|
|
#endif
|