Redesign wlr_texture

- Textures are now immutable (apart from those created from raw
  pixels), no more invalid textures
- Move all wl_drm stuff in wlr_renderer
- Most of wlr_texture fields are now private
- Remove some duplicated DMA-BUF code in the DRM backend
- Add more assertions
- Stride is now always given as bytes rather than pixels
- Drop wl_shm functions

Fun fact: this patch has been written 10,000 meters up in the air.
This commit is contained in:
emersion 2018-03-24 18:30:28 -04:00
parent 80d3561d32
commit c63d94483b
No known key found for this signature in database
GPG key ID: 0FDE7BE0E88F5E48
24 changed files with 577 additions and 647 deletions

View file

@ -1,8 +1,6 @@
#ifndef WLR_RENDER_WLR_RENDERER_H
#define WLR_RENDER_WLR_RENDERER_H
#include <EGL/egl.h>
#include <EGL/eglext.h>
#include <stdint.h>
#include <wayland-server-protocol.h>
#include <wlr/render/wlr_texture.h>
@ -21,10 +19,6 @@ void wlr_renderer_clear(struct wlr_renderer *r, const float color[static 4]);
* box.
*/
void wlr_renderer_scissor(struct wlr_renderer *r, struct wlr_box *box);
/**
* Requests a texture handle from this renderer.
*/
struct wlr_texture *wlr_render_texture_create(struct wlr_renderer *r);
/**
* Renders the requested texture.
*/
@ -51,10 +45,15 @@ void wlr_render_colored_ellipse(struct wlr_renderer *r,
const enum wl_shm_format *wlr_renderer_get_formats(struct wlr_renderer *r,
size_t *len);
/**
* Returns true if this wl_buffer is a DRM buffer.
* Returns true if this wl_buffer is a wl_drm buffer.
*/
bool wlr_renderer_buffer_is_drm(struct wlr_renderer *renderer,
bool wlr_renderer_resource_is_wl_drm_buffer(struct wlr_renderer *renderer,
struct wl_resource *buffer);
/**
* Gets the width and height of a wl_drm buffer.
*/
void wlr_renderer_wl_drm_buffer_get_size(struct wlr_renderer *renderer,
struct wl_resource *buffer, int *width, int *height);
/**
* Reads out of pixels of the currently bound surface into data. `stride` is in
* bytes.