mirror of
https://gitlab.freedesktop.org/wlroots/wlroots.git
synced 2025-12-15 08:56:26 -05:00
Untie wlr_gles2_renderer and wlr_gles2_texture
This commit is contained in:
parent
0c7968d093
commit
f3f61bed3e
6 changed files with 60 additions and 33 deletions
|
|
@ -16,16 +16,16 @@
|
|||
|
||||
static const struct wlr_renderer_impl renderer_impl;
|
||||
|
||||
struct wlr_gles2_renderer *gles2_get_renderer(
|
||||
static struct wlr_gles2_renderer *gles2_get_renderer(
|
||||
struct wlr_renderer *wlr_renderer) {
|
||||
assert(wlr_renderer->impl == &renderer_impl);
|
||||
return (struct wlr_gles2_renderer *)wlr_renderer;
|
||||
}
|
||||
|
||||
struct wlr_gles2_renderer *gles2_get_renderer_in_context(
|
||||
static struct wlr_gles2_renderer *gles2_get_renderer_in_context(
|
||||
struct wlr_renderer *wlr_renderer) {
|
||||
struct wlr_gles2_renderer *renderer = gles2_get_renderer(wlr_renderer);
|
||||
assert(eglGetCurrentContext() == renderer->egl->context);
|
||||
assert(wlr_egl_is_current(renderer->egl));
|
||||
return renderer;
|
||||
}
|
||||
|
||||
|
|
@ -252,11 +252,32 @@ static bool gles2_read_pixels(struct wlr_renderer *wlr_renderer,
|
|||
return true;
|
||||
}
|
||||
|
||||
static bool gles2_format_supported(struct wlr_renderer *r,
|
||||
static bool gles2_format_supported(struct wlr_renderer *wlr_renderer,
|
||||
enum wl_shm_format wl_fmt) {
|
||||
return gles2_format_from_wl(wl_fmt) != NULL;
|
||||
}
|
||||
|
||||
static struct wlr_texture *gles2_texture_from_pixels(
|
||||
struct wlr_renderer *wlr_renderer, enum wl_shm_format wl_fmt,
|
||||
uint32_t stride, uint32_t width, uint32_t height, const void *data) {
|
||||
struct wlr_gles2_renderer *renderer = gles2_get_renderer(wlr_renderer);
|
||||
return wlr_gles2_texture_from_pixels(renderer->egl, wl_fmt, stride, width,
|
||||
height, data);
|
||||
}
|
||||
|
||||
static struct wlr_texture *gles2_texture_from_wl_drm(
|
||||
struct wlr_renderer *wlr_renderer, struct wl_resource *data) {
|
||||
struct wlr_gles2_renderer *renderer = gles2_get_renderer(wlr_renderer);
|
||||
return wlr_gles2_texture_from_wl_drm(renderer->egl, data);
|
||||
}
|
||||
|
||||
static struct wlr_texture *gles2_texture_from_dmabuf(
|
||||
struct wlr_renderer *wlr_renderer,
|
||||
struct wlr_dmabuf_buffer_attribs *attribs) {
|
||||
struct wlr_gles2_renderer *renderer = gles2_get_renderer(wlr_renderer);
|
||||
return wlr_gles2_texture_from_dmabuf(renderer->egl, attribs);
|
||||
}
|
||||
|
||||
static void gles2_destroy(struct wlr_renderer *wlr_renderer) {
|
||||
struct wlr_gles2_renderer *renderer = gles2_get_renderer(wlr_renderer);
|
||||
|
||||
|
|
@ -400,6 +421,10 @@ extern const GLchar tex_fragment_src_rgbx[];
|
|||
extern const GLchar tex_fragment_src_external[];
|
||||
|
||||
struct wlr_renderer *wlr_gles2_renderer_create(struct wlr_egl *egl) {
|
||||
if (!load_glapi()) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
struct wlr_gles2_renderer *renderer =
|
||||
calloc(1, sizeof(struct wlr_gles2_renderer));
|
||||
if (renderer == NULL) {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue