Implement shm buffer surface attach interface

Implement surface_attach method. This is called when a client attaches an shm
buffer with wl_surface_attach().

Implement the GLES2 interface for attaching shm buffers. This creates an opengl
texture with the shm buffer contents for the surface.

This commit also includes some working code to render the surfaces onto the
screen for demonstration purposes.
This commit is contained in:
Tony Crisci 2017-08-03 14:20:51 -04:00
parent 555914a13b
commit 6610aa7ca7
4 changed files with 49 additions and 4 deletions

View file

@ -28,7 +28,18 @@ void handle_output_frame(struct output_state *output, struct timespec *ts) {
wlr_output_make_current(wlr_output);
wlr_renderer_begin(sample->renderer, wlr_output);
// TODO: render surfaces
struct wl_resource *_res;
float matrix[16];
wl_list_for_each(_res, &sample->compositor.surfaces, link) {
struct wlr_surface *surface = wl_resource_get_user_data(_res);
if (surface->valid) {
wlr_surface_get_matrix(surface, &matrix,
&wlr_output->transform_matrix, 200, 200);
wlr_render_with_matrix(sample->renderer, surface, &matrix);
}
}
wlr_renderer_end(sample->renderer);
wlr_output_swap_buffers(wlr_output);
}