mirror of
				https://gitlab.freedesktop.org/wlroots/wlroots.git
				synced 2025-11-03 09:01:40 -05:00 
			
		
		
		
	
						commit
						24ae081001
					
				
					 20 changed files with 43 additions and 50 deletions
				
			
		| 
						 | 
					@ -11,7 +11,7 @@
 | 
				
			||||||
#include <wlr/interfaces/wlr_output.h>
 | 
					#include <wlr/interfaces/wlr_output.h>
 | 
				
			||||||
#include <wlr/util/list.h>
 | 
					#include <wlr/util/list.h>
 | 
				
			||||||
#include <wlr/util/log.h>
 | 
					#include <wlr/util/log.h>
 | 
				
			||||||
#include <wlr/egl.h>
 | 
					#include <wlr/render/egl.h>
 | 
				
			||||||
#include "backend/drm/drm.h"
 | 
					#include "backend/drm/drm.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static bool wlr_drm_backend_start(struct wlr_backend *backend) {
 | 
					static bool wlr_drm_backend_start(struct wlr_backend *backend) {
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -177,9 +177,6 @@ void wlr_drm_resources_free(struct wlr_drm_backend *drm) {
 | 
				
			||||||
		if (plane->wlr_tex) {
 | 
							if (plane->wlr_tex) {
 | 
				
			||||||
			wlr_texture_destroy(plane->wlr_tex);
 | 
								wlr_texture_destroy(plane->wlr_tex);
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		if (plane->wlr_rend) {
 | 
					 | 
				
			||||||
			wlr_renderer_destroy(plane->wlr_rend);
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	free(drm->crtcs);
 | 
						free(drm->crtcs);
 | 
				
			||||||
| 
						 | 
					@ -193,7 +190,7 @@ static void wlr_drm_connector_make_current(struct wlr_output *output) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static void wlr_drm_connector_swap_buffers(struct wlr_output *output) {
 | 
					static void wlr_drm_connector_swap_buffers(struct wlr_output *output) {
 | 
				
			||||||
	struct wlr_drm_connector *conn = (struct wlr_drm_connector *)output;
 | 
						struct wlr_drm_connector *conn = (struct wlr_drm_connector *)output;
 | 
				
			||||||
	struct wlr_drm_backend *drm = conn->drm;
 | 
						struct wlr_drm_backend *drm = (struct wlr_drm_backend *)output->backend;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	struct wlr_drm_crtc *crtc = conn->crtc;
 | 
						struct wlr_drm_crtc *crtc = conn->crtc;
 | 
				
			||||||
	struct wlr_drm_plane *plane = crtc->primary;
 | 
						struct wlr_drm_plane *plane = crtc->primary;
 | 
				
			||||||
| 
						 | 
					@ -216,7 +213,8 @@ static void wlr_drm_connector_swap_buffers(struct wlr_output *output) {
 | 
				
			||||||
static void wlr_drm_connector_set_gamma(struct wlr_output *output,
 | 
					static void wlr_drm_connector_set_gamma(struct wlr_output *output,
 | 
				
			||||||
		uint16_t size, uint16_t *r, uint16_t *g, uint16_t *b) {
 | 
							uint16_t size, uint16_t *r, uint16_t *g, uint16_t *b) {
 | 
				
			||||||
	struct wlr_drm_connector *conn = (struct wlr_drm_connector *)output;
 | 
						struct wlr_drm_connector *conn = (struct wlr_drm_connector *)output;
 | 
				
			||||||
	drmModeCrtcSetGamma(conn->drm->fd, conn->crtc->id, size, r, g, b);
 | 
						struct wlr_drm_backend *drm = (struct wlr_drm_backend *)output->backend;
 | 
				
			||||||
 | 
						drmModeCrtcSetGamma(drm->fd, conn->crtc->id, size, r, g, b);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static uint16_t wlr_drm_connector_get_gamma_size(struct wlr_output *output) {
 | 
					static uint16_t wlr_drm_connector_get_gamma_size(struct wlr_output *output) {
 | 
				
			||||||
| 
						 | 
					@ -230,7 +228,7 @@ void wlr_drm_connector_start_renderer(struct wlr_drm_connector *conn) {
 | 
				
			||||||
		return;
 | 
							return;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	struct wlr_drm_backend *drm = conn->drm;
 | 
						struct wlr_drm_backend *drm = (struct wlr_drm_backend *)conn->output.backend;
 | 
				
			||||||
	struct wlr_drm_crtc *crtc = conn->crtc;
 | 
						struct wlr_drm_crtc *crtc = conn->crtc;
 | 
				
			||||||
	struct wlr_drm_plane *plane = crtc->primary;
 | 
						struct wlr_drm_plane *plane = crtc->primary;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -253,7 +251,7 @@ static void wlr_drm_connector_enable(struct wlr_output *output, bool enable) {
 | 
				
			||||||
		return;
 | 
							return;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	struct wlr_drm_backend *drm = conn->drm;
 | 
						struct wlr_drm_backend *drm = (struct wlr_drm_backend *)output->backend;
 | 
				
			||||||
	drm->iface->conn_enable(drm, conn, enable);
 | 
						drm->iface->conn_enable(drm, conn, enable);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (enable) {
 | 
						if (enable) {
 | 
				
			||||||
| 
						 | 
					@ -406,7 +404,7 @@ error_conn:
 | 
				
			||||||
static bool wlr_drm_connector_set_mode(struct wlr_output *output,
 | 
					static bool wlr_drm_connector_set_mode(struct wlr_output *output,
 | 
				
			||||||
		struct wlr_output_mode *mode) {
 | 
							struct wlr_output_mode *mode) {
 | 
				
			||||||
	struct wlr_drm_connector *conn = (struct wlr_drm_connector *)output;
 | 
						struct wlr_drm_connector *conn = (struct wlr_drm_connector *)output;
 | 
				
			||||||
	struct wlr_drm_backend *drm = conn->drm;
 | 
						struct wlr_drm_backend *drm = (struct wlr_drm_backend *)output->backend;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	wlr_log(L_INFO, "Modesetting '%s' with '%ux%u@%u mHz'", conn->output.name,
 | 
						wlr_log(L_INFO, "Modesetting '%s' with '%ux%u@%u mHz'", conn->output.name,
 | 
				
			||||||
			mode->width, mode->height, mode->refresh);
 | 
								mode->width, mode->height, mode->refresh);
 | 
				
			||||||
| 
						 | 
					@ -472,7 +470,7 @@ static bool wlr_drm_connector_set_cursor(struct wlr_output *output,
 | 
				
			||||||
		const uint8_t *buf, int32_t stride, uint32_t width, uint32_t height,
 | 
							const uint8_t *buf, int32_t stride, uint32_t width, uint32_t height,
 | 
				
			||||||
		int32_t hotspot_x, int32_t hotspot_y, bool update_pixels) {
 | 
							int32_t hotspot_x, int32_t hotspot_y, bool update_pixels) {
 | 
				
			||||||
	struct wlr_drm_connector *conn = (struct wlr_drm_connector *)output;
 | 
						struct wlr_drm_connector *conn = (struct wlr_drm_connector *)output;
 | 
				
			||||||
	struct wlr_drm_backend *drm = conn->drm;
 | 
						struct wlr_drm_backend *drm = (struct wlr_drm_backend *)output->backend;
 | 
				
			||||||
	struct wlr_drm_renderer *renderer = &drm->renderer;
 | 
						struct wlr_drm_renderer *renderer = &drm->renderer;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	struct wlr_drm_crtc *crtc = conn->crtc;
 | 
						struct wlr_drm_crtc *crtc = conn->crtc;
 | 
				
			||||||
| 
						 | 
					@ -525,12 +523,7 @@ static bool wlr_drm_connector_set_cursor(struct wlr_output *output,
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		// TODO the image needs to be rotated depending on the output rotation
 | 
							// TODO the image needs to be rotated depending on the output rotation
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		plane->wlr_rend = wlr_gles2_renderer_create(&drm->backend);
 | 
							plane->wlr_tex = wlr_render_texture_create(plane->surf.renderer->wlr_rend);
 | 
				
			||||||
		if (!plane->wlr_rend) {
 | 
					 | 
				
			||||||
			return false;
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
		plane->wlr_tex = wlr_render_texture_create(plane->wlr_rend);
 | 
					 | 
				
			||||||
		if (!plane->wlr_tex) {
 | 
							if (!plane->wlr_tex) {
 | 
				
			||||||
			return false;
 | 
								return false;
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
| 
						 | 
					@ -595,7 +588,7 @@ static bool wlr_drm_connector_set_cursor(struct wlr_output *output,
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	float matrix[16];
 | 
						float matrix[16];
 | 
				
			||||||
	wlr_texture_get_matrix(plane->wlr_tex, &matrix, &plane->matrix, 0, 0);
 | 
						wlr_texture_get_matrix(plane->wlr_tex, &matrix, &plane->matrix, 0, 0);
 | 
				
			||||||
	wlr_render_with_matrix(plane->wlr_rend, plane->wlr_tex, &matrix);
 | 
						wlr_render_with_matrix(plane->surf.renderer->wlr_rend, plane->wlr_tex, &matrix);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	glFinish();
 | 
						glFinish();
 | 
				
			||||||
	glPixelStorei(GL_UNPACK_ROW_LENGTH_EXT, bo_stride);
 | 
						glPixelStorei(GL_UNPACK_ROW_LENGTH_EXT, bo_stride);
 | 
				
			||||||
| 
						 | 
					@ -612,7 +605,7 @@ static bool wlr_drm_connector_set_cursor(struct wlr_output *output,
 | 
				
			||||||
static bool wlr_drm_connector_move_cursor(struct wlr_output *output,
 | 
					static bool wlr_drm_connector_move_cursor(struct wlr_output *output,
 | 
				
			||||||
		int x, int y) {
 | 
							int x, int y) {
 | 
				
			||||||
	struct wlr_drm_connector *conn = (struct wlr_drm_connector *)output;
 | 
						struct wlr_drm_connector *conn = (struct wlr_drm_connector *)output;
 | 
				
			||||||
	struct wlr_drm_backend *drm = conn->drm;
 | 
						struct wlr_drm_backend *drm = (struct wlr_drm_backend *)output->backend;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	int width, height, tmp;
 | 
						int width, height, tmp;
 | 
				
			||||||
	wlr_output_effective_resolution(output, &width, &height);
 | 
						wlr_output_effective_resolution(output, &width, &height);
 | 
				
			||||||
| 
						 | 
					@ -715,14 +708,13 @@ void wlr_drm_scan_connectors(struct wlr_drm_backend *drm) {
 | 
				
			||||||
				drmModeFreeConnector(drm_conn);
 | 
									drmModeFreeConnector(drm_conn);
 | 
				
			||||||
				continue;
 | 
									continue;
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
			wlr_output_init(&wlr_conn->output, &output_impl);
 | 
								wlr_output_init(&wlr_conn->output, &drm->backend, &output_impl);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			struct wl_event_loop *ev = wl_display_get_event_loop(drm->display);
 | 
								struct wl_event_loop *ev = wl_display_get_event_loop(drm->display);
 | 
				
			||||||
			wlr_conn->retry_pageflip = wl_event_loop_add_timer(ev, retry_pageflip,
 | 
								wlr_conn->retry_pageflip = wl_event_loop_add_timer(ev, retry_pageflip,
 | 
				
			||||||
				wlr_conn);
 | 
									wlr_conn);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			wlr_conn->drm = drm;
 | 
					 | 
				
			||||||
			wlr_conn->state = WLR_DRM_CONN_DISCONNECTED;
 | 
								wlr_conn->state = WLR_DRM_CONN_DISCONNECTED;
 | 
				
			||||||
			wlr_conn->id = drm_conn->connector_id;
 | 
								wlr_conn->id = drm_conn->connector_id;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -828,7 +820,7 @@ void wlr_drm_scan_connectors(struct wlr_drm_backend *drm) {
 | 
				
			||||||
static void page_flip_handler(int fd, unsigned seq,
 | 
					static void page_flip_handler(int fd, unsigned seq,
 | 
				
			||||||
		unsigned tv_sec, unsigned tv_usec, void *user) {
 | 
							unsigned tv_sec, unsigned tv_usec, void *user) {
 | 
				
			||||||
	struct wlr_drm_connector *conn = user;
 | 
						struct wlr_drm_connector *conn = user;
 | 
				
			||||||
	struct wlr_drm_backend *drm = conn->drm;
 | 
						struct wlr_drm_backend *drm = (struct wlr_drm_backend *)conn->output.backend;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	conn->pageflip_pending = false;
 | 
						conn->pageflip_pending = false;
 | 
				
			||||||
	if (conn->state != WLR_DRM_CONN_CONNECTED) {
 | 
						if (conn->state != WLR_DRM_CONN_CONNECTED) {
 | 
				
			||||||
| 
						 | 
					@ -899,7 +891,7 @@ void wlr_drm_connector_cleanup(struct wlr_drm_connector *conn) {
 | 
				
			||||||
		return;
 | 
							return;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	struct wlr_drm_backend *drm = conn->drm;
 | 
						struct wlr_drm_backend *drm = (struct wlr_drm_backend *)conn->output.backend;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	switch (conn->state) {
 | 
						switch (conn->state) {
 | 
				
			||||||
	case WLR_DRM_CONN_CONNECTED:
 | 
						case WLR_DRM_CONN_CONNECTED:
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -8,8 +8,8 @@
 | 
				
			||||||
#include <EGL/eglext.h>
 | 
					#include <EGL/eglext.h>
 | 
				
			||||||
#include <wayland-util.h>
 | 
					#include <wayland-util.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#include <wlr/egl.h>
 | 
					 | 
				
			||||||
#include <wlr/util/log.h>
 | 
					#include <wlr/util/log.h>
 | 
				
			||||||
 | 
					#include <wlr/render/egl.h>
 | 
				
			||||||
#include <wlr/render/matrix.h>
 | 
					#include <wlr/render/matrix.h>
 | 
				
			||||||
#include <wlr/render/gles2.h>
 | 
					#include <wlr/render/gles2.h>
 | 
				
			||||||
#include <wlr/render.h>
 | 
					#include <wlr/render.h>
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -4,7 +4,7 @@
 | 
				
			||||||
#include <EGL/egl.h>
 | 
					#include <EGL/egl.h>
 | 
				
			||||||
#include <EGL/eglext.h>
 | 
					#include <EGL/eglext.h>
 | 
				
			||||||
#include <wayland-server.h>
 | 
					#include <wayland-server.h>
 | 
				
			||||||
#include <wlr/egl.h>
 | 
					#include <wlr/render/egl.h>
 | 
				
			||||||
#include <wlr/backend/interface.h>
 | 
					#include <wlr/backend/interface.h>
 | 
				
			||||||
#include <wlr/interfaces/wlr_output.h>
 | 
					#include <wlr/interfaces/wlr_output.h>
 | 
				
			||||||
#include <wlr/interfaces/wlr_input_device.h>
 | 
					#include <wlr/interfaces/wlr_input_device.h>
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -241,7 +241,7 @@ struct wlr_output *wlr_wl_output_create(struct wlr_backend *_backend) {
 | 
				
			||||||
		wlr_log(L_ERROR, "Failed to allocate wlr_wl_backend_output");
 | 
							wlr_log(L_ERROR, "Failed to allocate wlr_wl_backend_output");
 | 
				
			||||||
		return NULL;
 | 
							return NULL;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	wlr_output_init(&output->wlr_output, &output_impl);
 | 
						wlr_output_init(&output->wlr_output, &backend->backend, &output_impl);
 | 
				
			||||||
	struct wlr_output *wlr_output = &output->wlr_output;
 | 
						struct wlr_output *wlr_output = &output->wlr_output;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	wlr_output->width = 640;
 | 
						wlr_output->width = 640;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -15,7 +15,7 @@
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
#include <wlr/backend/interface.h>
 | 
					#include <wlr/backend/interface.h>
 | 
				
			||||||
#include <wlr/backend/x11.h>
 | 
					#include <wlr/backend/x11.h>
 | 
				
			||||||
#include <wlr/egl.h>
 | 
					#include <wlr/render/egl.h>
 | 
				
			||||||
#include <wlr/interfaces/wlr_output.h>
 | 
					#include <wlr/interfaces/wlr_output.h>
 | 
				
			||||||
#include <wlr/interfaces/wlr_input_device.h>
 | 
					#include <wlr/interfaces/wlr_input_device.h>
 | 
				
			||||||
#include <wlr/interfaces/wlr_keyboard.h>
 | 
					#include <wlr/interfaces/wlr_keyboard.h>
 | 
				
			||||||
| 
						 | 
					@ -264,7 +264,7 @@ static bool wlr_x11_backend_start(struct wlr_backend *backend) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	output->x11 = x11;
 | 
						output->x11 = x11;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	wlr_output_init(&output->wlr_output, &output_impl);
 | 
						wlr_output_init(&output->wlr_output, &x11->backend, &output_impl);
 | 
				
			||||||
	snprintf(output->wlr_output.name, sizeof(output->wlr_output.name), "X11-1");
 | 
						snprintf(output->wlr_output.name, sizeof(output->wlr_output.name), "X11-1");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	output->win = xcb_generate_id(x11->xcb_conn);
 | 
						output->win = xcb_generate_id(x11->xcb_conn);
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -12,7 +12,7 @@
 | 
				
			||||||
#include <wlr/backend/session.h>
 | 
					#include <wlr/backend/session.h>
 | 
				
			||||||
#include <wlr/backend/drm.h>
 | 
					#include <wlr/backend/drm.h>
 | 
				
			||||||
#include <wlr/types/wlr_output.h>
 | 
					#include <wlr/types/wlr_output.h>
 | 
				
			||||||
#include <wlr/egl.h>
 | 
					#include <wlr/render/egl.h>
 | 
				
			||||||
#include <wlr/util/list.h>
 | 
					#include <wlr/util/list.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#include "iface.h"
 | 
					#include "iface.h"
 | 
				
			||||||
| 
						 | 
					@ -30,7 +30,6 @@ struct wlr_drm_plane {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Only used by cursor
 | 
						// Only used by cursor
 | 
				
			||||||
	float matrix[16];
 | 
						float matrix[16];
 | 
				
			||||||
	struct wlr_renderer *wlr_rend;
 | 
					 | 
				
			||||||
	struct wlr_texture *wlr_tex;
 | 
						struct wlr_texture *wlr_tex;
 | 
				
			||||||
	struct gbm_bo *cursor_bo;
 | 
						struct gbm_bo *cursor_bo;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -113,7 +112,6 @@ struct wlr_drm_mode {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
struct wlr_drm_connector {
 | 
					struct wlr_drm_connector {
 | 
				
			||||||
	struct wlr_output output;
 | 
						struct wlr_output output;
 | 
				
			||||||
	struct wlr_drm_backend *drm;
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
	enum wlr_drm_connector_state state;
 | 
						enum wlr_drm_connector_state state;
 | 
				
			||||||
	uint32_t id;
 | 
						uint32_t id;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -5,7 +5,7 @@
 | 
				
			||||||
#include <wayland-client.h>
 | 
					#include <wayland-client.h>
 | 
				
			||||||
#include <wayland-server.h>
 | 
					#include <wayland-server.h>
 | 
				
			||||||
#include <wayland-egl.h>
 | 
					#include <wayland-egl.h>
 | 
				
			||||||
#include <wlr/egl.h>
 | 
					#include <wlr/render/egl.h>
 | 
				
			||||||
#include <wlr/backend/wayland.h>
 | 
					#include <wlr/backend/wayland.h>
 | 
				
			||||||
#include <wlr/types/wlr_output.h>
 | 
					#include <wlr/types/wlr_output.h>
 | 
				
			||||||
#include <wlr/types/wlr_input_device.h>
 | 
					#include <wlr/types/wlr_input_device.h>
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -5,7 +5,7 @@
 | 
				
			||||||
#include <xcb/xcb.h>
 | 
					#include <xcb/xcb.h>
 | 
				
			||||||
#include <X11/Xlib-xcb.h>
 | 
					#include <X11/Xlib-xcb.h>
 | 
				
			||||||
#include <wayland-server.h>
 | 
					#include <wayland-server.h>
 | 
				
			||||||
#include <wlr/egl.h>
 | 
					#include <wlr/render/egl.h>
 | 
				
			||||||
#include <wlr/types/wlr_output.h>
 | 
					#include <wlr/types/wlr_output.h>
 | 
				
			||||||
#include <wlr/types/wlr_input_device.h>
 | 
					#include <wlr/types/wlr_input_device.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -8,9 +8,9 @@
 | 
				
			||||||
#include <GLES2/gl2ext.h>
 | 
					#include <GLES2/gl2ext.h>
 | 
				
			||||||
#include <EGL/egl.h>
 | 
					#include <EGL/egl.h>
 | 
				
			||||||
#include <EGL/eglext.h>
 | 
					#include <EGL/eglext.h>
 | 
				
			||||||
#include <wlr/egl.h>
 | 
					 | 
				
			||||||
#include <wlr/backend.h>
 | 
					#include <wlr/backend.h>
 | 
				
			||||||
#include <wlr/render.h>
 | 
					#include <wlr/render.h>
 | 
				
			||||||
 | 
					#include <wlr/render/egl.h>
 | 
				
			||||||
#include <wlr/render/interface.h>
 | 
					#include <wlr/render/interface.h>
 | 
				
			||||||
#include <wlr/util/log.h>
 | 
					#include <wlr/util/log.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -3,7 +3,7 @@
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#include <wayland-server.h>
 | 
					#include <wayland-server.h>
 | 
				
			||||||
#include <wlr/backend/session.h>
 | 
					#include <wlr/backend/session.h>
 | 
				
			||||||
#include <wlr/egl.h>
 | 
					#include <wlr/render/egl.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
struct wlr_backend_impl;
 | 
					struct wlr_backend_impl;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -3,7 +3,7 @@
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#include <stdbool.h>
 | 
					#include <stdbool.h>
 | 
				
			||||||
#include <wlr/backend.h>
 | 
					#include <wlr/backend.h>
 | 
				
			||||||
#include <wlr/egl.h>
 | 
					#include <wlr/render/egl.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
struct wlr_backend_impl {
 | 
					struct wlr_backend_impl {
 | 
				
			||||||
	bool (*start)(struct wlr_backend *backend);
 | 
						bool (*start)(struct wlr_backend *backend);
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,8 +1,9 @@
 | 
				
			||||||
#ifndef WLR_INTERFACES_WLR_OUTPUT_H
 | 
					#ifndef WLR_INTERFACES_WLR_OUTPUT_H
 | 
				
			||||||
#define WLR_INTERFACES_WLR_OUTPUT_H
 | 
					#define WLR_INTERFACES_WLR_OUTPUT_H
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#include <wlr/types/wlr_output.h>
 | 
					 | 
				
			||||||
#include <stdbool.h>
 | 
					#include <stdbool.h>
 | 
				
			||||||
 | 
					#include <wlr/types/wlr_output.h>
 | 
				
			||||||
 | 
					#include <wlr/backend.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
struct wlr_output_impl {
 | 
					struct wlr_output_impl {
 | 
				
			||||||
	void (*enable)(struct wlr_output *output, bool enable);
 | 
						void (*enable)(struct wlr_output *output, bool enable);
 | 
				
			||||||
| 
						 | 
					@ -21,7 +22,8 @@ struct wlr_output_impl {
 | 
				
			||||||
	uint16_t (*get_gamma_size)(struct wlr_output *output);
 | 
						uint16_t (*get_gamma_size)(struct wlr_output *output);
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void wlr_output_init(struct wlr_output *output, const struct wlr_output_impl *impl);
 | 
					void wlr_output_init(struct wlr_output *output, struct wlr_backend *backend,
 | 
				
			||||||
 | 
						const struct wlr_output_impl *impl);
 | 
				
			||||||
void wlr_output_free(struct wlr_output *output);
 | 
					void wlr_output_free(struct wlr_output *output);
 | 
				
			||||||
void wlr_output_update_matrix(struct wlr_output *output);
 | 
					void wlr_output_update_matrix(struct wlr_output *output);
 | 
				
			||||||
struct wl_global *wlr_output_create_global(
 | 
					struct wl_global *wlr_output_create_global(
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,9 +1,10 @@
 | 
				
			||||||
#ifndef WLR_TYPES_WLR_OUTPUT_H
 | 
					#ifndef WLR_TYPES_WLR_OUTPUT_H
 | 
				
			||||||
#define WLR_TYPES_WLR_OUTPUT_H
 | 
					#define WLR_TYPES_WLR_OUTPUT_H
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#include <wayland-server.h>
 | 
					 | 
				
			||||||
#include <wlr/util/list.h>
 | 
					 | 
				
			||||||
#include <stdbool.h>
 | 
					#include <stdbool.h>
 | 
				
			||||||
 | 
					#include <wayland-server.h>
 | 
				
			||||||
 | 
					#include <wlr/backend.h>
 | 
				
			||||||
 | 
					#include <wlr/util/list.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
struct wlr_output_mode {
 | 
					struct wlr_output_mode {
 | 
				
			||||||
	uint32_t flags; // enum wl_output_mode
 | 
						uint32_t flags; // enum wl_output_mode
 | 
				
			||||||
| 
						 | 
					@ -15,6 +16,7 @@ struct wlr_output_impl;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
struct wlr_output {
 | 
					struct wlr_output {
 | 
				
			||||||
	const struct wlr_output_impl *impl;
 | 
						const struct wlr_output_impl *impl;
 | 
				
			||||||
 | 
						struct wlr_backend *backend;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	struct wl_global *wl_global;
 | 
						struct wl_global *wl_global;
 | 
				
			||||||
	struct wl_list wl_resources;
 | 
						struct wl_list wl_resources;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -3,7 +3,7 @@
 | 
				
			||||||
#include <GLES2/gl2.h>
 | 
					#include <GLES2/gl2.h>
 | 
				
			||||||
#include <stdlib.h>
 | 
					#include <stdlib.h>
 | 
				
			||||||
#include <wlr/util/log.h>
 | 
					#include <wlr/util/log.h>
 | 
				
			||||||
#include <wlr/egl.h>
 | 
					#include <wlr/render/egl.h>
 | 
				
			||||||
#include "render/glapi.h"
 | 
					#include "render/glapi.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Extension documentation
 | 
					// Extension documentation
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -5,9 +5,9 @@
 | 
				
			||||||
#include <GLES2/gl2ext.h>
 | 
					#include <GLES2/gl2ext.h>
 | 
				
			||||||
#include <wayland-util.h>
 | 
					#include <wayland-util.h>
 | 
				
			||||||
#include <wayland-server-protocol.h>
 | 
					#include <wayland-server-protocol.h>
 | 
				
			||||||
#include <wlr/egl.h>
 | 
					 | 
				
			||||||
#include <wlr/backend.h>
 | 
					#include <wlr/backend.h>
 | 
				
			||||||
#include <wlr/render.h>
 | 
					#include <wlr/render.h>
 | 
				
			||||||
 | 
					#include <wlr/render/egl.h>
 | 
				
			||||||
#include <wlr/render/interface.h>
 | 
					#include <wlr/render/interface.h>
 | 
				
			||||||
#include <wlr/render/matrix.h>
 | 
					#include <wlr/render/matrix.h>
 | 
				
			||||||
#include <wlr/util/log.h>
 | 
					#include <wlr/util/log.h>
 | 
				
			||||||
| 
						 | 
					@ -246,9 +246,8 @@ struct wlr_renderer *wlr_gles2_renderer_create(struct wlr_backend *backend) {
 | 
				
			||||||
		return NULL;
 | 
							return NULL;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	wlr_renderer_init(&renderer->wlr_renderer, &wlr_renderer_impl);
 | 
						wlr_renderer_init(&renderer->wlr_renderer, &wlr_renderer_impl);
 | 
				
			||||||
	if (backend) {
 | 
					
 | 
				
			||||||
		struct wlr_egl *egl = wlr_backend_get_egl(backend);
 | 
						renderer->egl = wlr_backend_get_egl(backend);
 | 
				
			||||||
		renderer->egl = egl;
 | 
					
 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	return &renderer->wlr_renderer;
 | 
						return &renderer->wlr_renderer;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -5,8 +5,8 @@
 | 
				
			||||||
#include <GLES2/gl2ext.h>
 | 
					#include <GLES2/gl2ext.h>
 | 
				
			||||||
#include <wayland-util.h>
 | 
					#include <wayland-util.h>
 | 
				
			||||||
#include <wayland-server-protocol.h>
 | 
					#include <wayland-server-protocol.h>
 | 
				
			||||||
#include <wlr/egl.h>
 | 
					 | 
				
			||||||
#include <wlr/render.h>
 | 
					#include <wlr/render.h>
 | 
				
			||||||
 | 
					#include <wlr/render/egl.h>
 | 
				
			||||||
#include <wlr/render/interface.h>
 | 
					#include <wlr/render/interface.h>
 | 
				
			||||||
#include <wlr/render/matrix.h>
 | 
					#include <wlr/render/matrix.h>
 | 
				
			||||||
#include <wlr/util/log.h>
 | 
					#include <wlr/util/log.h>
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -153,8 +153,7 @@ static bool set_cursor(struct wlr_output *output, const uint8_t *buf,
 | 
				
			||||||
	output->cursor.height = height;
 | 
						output->cursor.height = height;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (!output->cursor.renderer) {
 | 
						if (!output->cursor.renderer) {
 | 
				
			||||||
		/* NULL egl is okay given that we are only using pixel buffers */
 | 
							output->cursor.renderer = wlr_gles2_renderer_create(output->backend);
 | 
				
			||||||
		output->cursor.renderer = wlr_gles2_renderer_create(NULL);
 | 
					 | 
				
			||||||
		if (!output->cursor.renderer) {
 | 
							if (!output->cursor.renderer) {
 | 
				
			||||||
			return false;
 | 
								return false;
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
| 
						 | 
					@ -307,8 +306,9 @@ bool wlr_output_move_cursor(struct wlr_output *output, int x, int y) {
 | 
				
			||||||
	return output->impl->move_cursor(output, x, y);
 | 
						return output->impl->move_cursor(output, x, y);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void wlr_output_init(struct wlr_output *output,
 | 
					void wlr_output_init(struct wlr_output *output, struct wlr_backend *backend,
 | 
				
			||||||
		const struct wlr_output_impl *impl) {
 | 
							const struct wlr_output_impl *impl) {
 | 
				
			||||||
 | 
						output->backend = backend;
 | 
				
			||||||
	output->impl = impl;
 | 
						output->impl = impl;
 | 
				
			||||||
	output->modes = list_create();
 | 
						output->modes = list_create();
 | 
				
			||||||
	output->transform = WL_OUTPUT_TRANSFORM_NORMAL;
 | 
						output->transform = WL_OUTPUT_TRANSFORM_NORMAL;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -2,9 +2,9 @@
 | 
				
			||||||
#include <stdlib.h>
 | 
					#include <stdlib.h>
 | 
				
			||||||
#include <wayland-server.h>
 | 
					#include <wayland-server.h>
 | 
				
			||||||
#include <wlr/util/log.h>
 | 
					#include <wlr/util/log.h>
 | 
				
			||||||
#include <wlr/egl.h>
 | 
					 | 
				
			||||||
#include <wlr/render/interface.h>
 | 
					#include <wlr/render/interface.h>
 | 
				
			||||||
#include <wlr/types/wlr_surface.h>
 | 
					#include <wlr/types/wlr_surface.h>
 | 
				
			||||||
 | 
					#include <wlr/render/egl.h>
 | 
				
			||||||
#include <wlr/render/matrix.h>
 | 
					#include <wlr/render/matrix.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static void wlr_surface_state_reset_buffer(struct wlr_surface_state *state) {
 | 
					static void wlr_surface_state_reset_buffer(struct wlr_surface_state *state) {
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue