aboutsummaryrefslogtreecommitdiff
path: root/render/gles2/pixel_format.c
diff options
context:
space:
mode:
authorDrew DeVault <sir@cmpwn.com>2018-11-04 14:30:16 +0100
committerGitHub <noreply@github.com>2018-11-04 14:30:16 +0100
commitcb503973cea7c7929c2fcc6fbeb886f2b8a6fa5a (patch)
treeac8d5cee0ea9c0f7a37f1e89ce80a5eb2fcff5e9 /render/gles2/pixel_format.c
parent675cf8457ef3493112def366d7090731172ee872 (diff)
parentd592dcdedd78136bbc60193473b230505f94d907 (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.c20
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;
}