mirror of
https://gitlab.freedesktop.org/wlroots/wlroots.git
synced 2026-05-07 10:48:05 +02:00
render: gles2: renderer: Add NV12 to render format set
The previous commit adds a synthetic NV12 render format to the set, but it is contingent upon the presence of the R8 and GR88 render formats. Signed-off-by: Andri Yngvason <andri@yngvason.is>
This commit is contained in:
parent
6e6d0f4731
commit
d96f1d6795
2 changed files with 12 additions and 1 deletions
|
|
@ -53,6 +53,7 @@ struct wlr_gles2_renderer {
|
|||
int drm_fd;
|
||||
|
||||
struct wlr_drm_format_set shm_texture_formats;
|
||||
struct wlr_drm_format_set dmabuf_render_formats;
|
||||
|
||||
const char *exts_str;
|
||||
struct {
|
||||
|
|
|
|||
|
|
@ -15,6 +15,7 @@
|
|||
#include <wlr/util/box.h>
|
||||
#include <wlr/util/log.h>
|
||||
#include <xf86drm.h>
|
||||
#include "render/drm_format_set.h"
|
||||
#include "render/egl.h"
|
||||
#include "render/gles2.h"
|
||||
#include "render/pixel_format.h"
|
||||
|
|
@ -215,7 +216,7 @@ static const struct wlr_drm_format_set *gles2_get_texture_formats(
|
|||
static const struct wlr_drm_format_set *gles2_get_render_formats(
|
||||
struct wlr_renderer *wlr_renderer) {
|
||||
struct wlr_gles2_renderer *renderer = gles2_get_renderer(wlr_renderer);
|
||||
return wlr_egl_get_dmabuf_render_formats(renderer->egl);
|
||||
return &renderer->dmabuf_render_formats;
|
||||
}
|
||||
|
||||
static int gles2_get_drm_fd(struct wlr_renderer *wlr_renderer) {
|
||||
|
|
@ -266,6 +267,7 @@ static void gles2_destroy(struct wlr_renderer *wlr_renderer) {
|
|||
wlr_egl_destroy(renderer->egl);
|
||||
|
||||
wlr_drm_format_set_finish(&renderer->shm_texture_formats);
|
||||
wlr_drm_format_set_finish(&renderer->dmabuf_render_formats);
|
||||
|
||||
if (renderer->drm_fd >= 0) {
|
||||
close(renderer->drm_fd);
|
||||
|
|
@ -723,6 +725,14 @@ struct wlr_renderer *wlr_gles2_renderer_create(struct wlr_egl *egl) {
|
|||
|
||||
get_gles2_shm_formats(renderer, &renderer->shm_texture_formats);
|
||||
|
||||
wlr_drm_format_set_copy(&renderer->dmabuf_render_formats,
|
||||
wlr_egl_get_dmabuf_render_formats(renderer->egl));
|
||||
|
||||
if (wlr_drm_format_set_has(&renderer->dmabuf_render_formats, DRM_FORMAT_R8, DRM_FORMAT_MOD_LINEAR) &&
|
||||
wlr_drm_format_set_has(&renderer->dmabuf_render_formats, DRM_FORMAT_GR88, DRM_FORMAT_MOD_LINEAR)) {
|
||||
wlr_drm_format_set_add(&renderer->dmabuf_render_formats, DRM_FORMAT_NV12, DRM_FORMAT_MOD_LINEAR);
|
||||
}
|
||||
|
||||
int drm_fd = wlr_renderer_get_drm_fd(&renderer->wlr_renderer);
|
||||
uint64_t cap_syncobj_timeline;
|
||||
if (drm_fd >= 0 && drmGetCap(drm_fd, DRM_CAP_SYNCOBJ_TIMELINE, &cap_syncobj_timeline) == 0) {
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue