diff options
author | Drew DeVault <sir@cmpwn.com> | 2018-11-04 14:30:16 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-11-04 14:30:16 +0100 |
commit | cb503973cea7c7929c2fcc6fbeb886f2b8a6fa5a (patch) | |
tree | ac8d5cee0ea9c0f7a37f1e89ce80a5eb2fcff5e9 /render/gles2/pixel_format.c | |
parent | 675cf8457ef3493112def366d7090731172ee872 (diff) | |
parent | d592dcdedd78136bbc60193473b230505f94d907 (diff) |
Merge pull request #1350 from emersion/check-gles2-bgra-ext
render/gles2: remove assumptions about supported formats
Diffstat (limited to 'render/gles2/pixel_format.c')
-rw-r--r-- | render/gles2/pixel_format.c | 20 |
1 files changed, 16 insertions, 4 deletions
diff --git a/render/gles2/pixel_format.c b/render/gles2/pixel_format.c index 6f42e72e..a4b4c101 100644 --- a/render/gles2/pixel_format.c +++ b/render/gles2/pixel_format.c @@ -3,9 +3,9 @@ #include "render/gles2.h" /* -* The wayland formats are little endian while the GL formats are big endian, -* so WL_SHM_FORMAT_ARGB8888 is actually compatible with GL_BGRA_EXT. -*/ + * The wayland formats are little endian while the GL formats are big endian, + * so WL_SHM_FORMAT_ARGB8888 is actually compatible with GL_BGRA_EXT. + */ static const struct wlr_gles2_pixel_format formats[] = { { .wl_format = WL_SHM_FORMAT_ARGB8888, @@ -60,7 +60,19 @@ const struct wlr_gles2_pixel_format *get_gles2_format_from_wl( return NULL; } -const enum wl_shm_format *get_gles2_formats(size_t *len) { +const struct wlr_gles2_pixel_format *get_gles2_format_from_gl( + GLint gl_format, GLint gl_type, bool alpha) { + for (size_t i = 0; i < sizeof(formats) / sizeof(*formats); ++i) { + if (formats[i].gl_format == gl_format && + formats[i].gl_type == gl_type && + formats[i].has_alpha == alpha) { + return &formats[i]; + } + } + return NULL; +} + +const enum wl_shm_format *get_gles2_wl_formats(size_t *len) { *len = sizeof(wl_formats) / sizeof(wl_formats[0]); return wl_formats; } |