diff options
author | Drew DeVault <sir@cmpwn.com> | 2017-06-23 11:38:45 -0400 |
---|---|---|
committer | Drew DeVault <sir@cmpwn.com> | 2017-06-23 11:38:45 -0400 |
commit | b18209c904f421f3065d610718d7d9e9b8b9211f (patch) | |
tree | f1b5bcf3c1c7ee50e4a2a3f03c68c1136ef4ed44 /render/gles3/surface.c | |
parent | 168f0955ab5d6b614eb841bcb0ea684dd9105ef8 (diff) |
Switch to GLES2
Closes #13
Diffstat (limited to 'render/gles3/surface.c')
-rw-r--r-- | render/gles3/surface.c | 63 |
1 files changed, 0 insertions, 63 deletions
diff --git a/render/gles3/surface.c b/render/gles3/surface.c deleted file mode 100644 index 0ddf3ae0..00000000 --- a/render/gles3/surface.c +++ /dev/null @@ -1,63 +0,0 @@ -#include <stdint.h> -#include <stdlib.h> -#include <assert.h> -#include <GLES3/gl3.h> -#include <wayland-util.h> -#include <wayland-server-protocol.h> -#include <wlr/render.h> -#include <wlr/render/interface.h> -#include <wlr/render/matrix.h> -#include "render/gles3.h" - -static bool gles3_surface_attach_pixels(struct wlr_surface_state *surface, - uint32_t format, int width, int height, const unsigned char *pixels) { - assert(surface); - surface->wlr_surface->width = width; - surface->wlr_surface->height = height; - surface->wlr_surface->format = format; - GL_CALL(glGenTextures(1, &surface->tex_id)); - GL_CALL(glBindTexture(GL_TEXTURE_2D, surface->tex_id)); - GL_CALL(glTexImage2D(GL_TEXTURE_2D, 0, format, width, height, 0, - format, GL_UNSIGNED_BYTE, pixels)); - surface->wlr_surface->valid = true; - return true; -} - -static void gles3_surface_get_matrix(struct wlr_surface_state *surface, - float (*matrix)[16], const float (*projection)[16], int x, int y) { - struct wlr_surface *_surface = surface->wlr_surface; - float world[16]; - wlr_matrix_identity(matrix); - wlr_matrix_translate(&world, x, y, 0); - wlr_matrix_mul(matrix, &world, matrix); - wlr_matrix_scale(&world, _surface->width, _surface->height, 1); - wlr_matrix_mul(matrix, &world, matrix); - wlr_matrix_mul(projection, matrix, matrix); -} - -static void gles3_surface_bind(struct wlr_surface_state *surface) { - GL_CALL(glActiveTexture(GL_TEXTURE0 + 1)); - GL_CALL(glBindTexture(GL_TEXTURE_2D, surface->tex_id)); - GL_CALL(glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR)); - GL_CALL(glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR)); -} - -static void gles3_surface_destroy(struct wlr_surface_state *surface) { - GL_CALL(glDeleteTextures(1, &surface->tex_id)); - free(surface); -} - -static struct wlr_surface_impl wlr_surface_impl = { - .attach_pixels = gles3_surface_attach_pixels, - // .attach_shm = TODO - .get_matrix = gles3_surface_get_matrix, - .bind = gles3_surface_bind, - .destroy = gles3_surface_destroy, -}; - -struct wlr_surface *gles3_surface_init() { - struct wlr_surface_state *state = calloc(sizeof(struct wlr_surface_state), 1); - struct wlr_surface *surface = wlr_surface_init(state, &wlr_surface_impl); - state->wlr_surface = surface; - return surface; -} |