diff options
author | Drew DeVault <sir@cmpwn.com> | 2017-06-29 16:00:24 -0400 |
---|---|---|
committer | Drew DeVault <sir@cmpwn.com> | 2017-06-29 16:00:24 -0400 |
commit | 8920b5d607c6b3b5d04894fc1837ac4f2d9558ae (patch) | |
tree | 3c79b4faff213544ed247e1c126fc89508bdd75d /render/gles2/pixel_format.c | |
parent | 97f6e9b69aecf1fbcbc2fa95cb2009f873c86d40 (diff) | |
parent | 486ec5953cf51f5fde834bf8fa7fbe56f0be9a0e (diff) |
Merge branch 'wlcore'
Diffstat (limited to 'render/gles2/pixel_format.c')
-rw-r--r-- | render/gles2/pixel_format.c | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/render/gles2/pixel_format.c b/render/gles2/pixel_format.c new file mode 100644 index 00000000..a0b9d09f --- /dev/null +++ b/render/gles2/pixel_format.c @@ -0,0 +1,45 @@ +#include <GLES2/gl2.h> +#include <GLES2/gl2ext.h> +#include "render/gles2.h" + +// Adapted from weston +struct pixel_format formats[] = { + { + .wl_format = WL_SHM_FORMAT_ARGB8888, + .depth = 32, + .bpp = 32, + .gl_format = GL_BGRA_EXT, + .gl_type = GL_UNSIGNED_BYTE, + .shader = &shaders.rgba + }, + { + .wl_format = WL_SHM_FORMAT_XRGB8888, + .depth = 24, + .bpp = 32, + .gl_format = GL_BGRA_EXT, + .gl_type = GL_UNSIGNED_BYTE, + .shader = &shaders.rgbx + }, + { + .wl_format = WL_SHM_FORMAT_XBGR8888, + .gl_format = GL_RGBA, + .gl_type = GL_UNSIGNED_BYTE, + .shader = &shaders.rgbx + }, + { + .wl_format = WL_SHM_FORMAT_ABGR8888, + .gl_format = GL_RGBA, + .gl_type = GL_UNSIGNED_BYTE, + .shader = &shaders.rgba + }, +}; +// TODO: more pixel formats + +const struct pixel_format *gl_format_for_wl_format(enum wl_shm_format fmt) { + for (size_t i = 0; i < sizeof(formats) / sizeof(*formats); ++i) { + if (formats[i].wl_format == fmt) { + return &formats[i]; + } + } + return NULL; +} |