Add wlr_shader to wlr-render

This commit is contained in:
Drew DeVault 2017-06-08 11:30:38 -04:00
parent fc1dc1b5b0
commit 211488131f
5 changed files with 167 additions and 47 deletions

28
include/render.h Normal file
View file

@ -0,0 +1,28 @@
#ifndef _WLR_RENDER_INTERNAL_H
#define _WLR_RENDER_INTERNAL_H
#include <stdint.h>
#include <wlr/render.h>
#include <wayland-util.h>
#include <GLES3/gl3.h>
#include <stdbool.h>
struct wlr_texture {
GLuint tex_id;
uint32_t format;
int width, height;
};
struct wlr_shader {
bool valid;
uint32_t format;
GLuint vert;
GLuint program;
struct wl_list link;
};
struct wlr_renderer {
struct wlr_shader *shader;
// TODO: EGL stuff
};
#endif

29
include/wlr/render.h Normal file
View file

@ -0,0 +1,29 @@
#ifndef _WLR_RENDER_H
#define _WLR_RENDER_H
#include <stdint.h>
#include <wayland-server-protocol.h>
struct wlr_surface;
struct wlr_surface *wlr_surface_create();
void wlr_surface_attach_pixels(struct wlr_surface *tex, uint32_t format,
int width, int height, const unsigned char *pixels);
void wlr_surface_attach_shm(struct wlr_surface *tex, uint32_t format,
struct wl_shm_buffer *shm);
// TODO: EGL
void wlr_surface_destroy(struct wlr_surface *tex);
struct wlr_shader;
struct wlr_shader *wlr_shader_init(const char *vertex);
bool wlr_shader_add_format(struct wlr_shader *shader, uint32_t format,
const char *frag);
bool wlr_shader_use(struct wlr_shader *shader, uint32_t format);
void wlr_shader_destroy(struct wlr_shader *shader);
struct wlr_renderer;
struct wlr_renderer *wlr_renderer_init();
void wlr_renderer_set_shader(struct wlr_renderer *renderer,
struct wlr_shader *shader);
bool wlr_render_quad(struct wlr_renderer *renderer, struct wlr_surface *tex,
float x, float y, float width, float height);
#endif