From c03e7746367194b859125624b059c1725eb7ae30 Mon Sep 17 00:00:00 2001 From: Heghedus Razvan Date: Thu, 19 Oct 2017 16:48:00 +0300 Subject: Replace list_t with wl_list in wlr_drm_backend Signed-off-by: Heghedus Razvan --- include/backend/drm/drm.h | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) (limited to 'include/backend/drm/drm.h') diff --git a/include/backend/drm/drm.h b/include/backend/drm/drm.h index 6106a85a..0f19c01e 100644 --- a/include/backend/drm/drm.h +++ b/include/backend/drm/drm.h @@ -8,12 +8,12 @@ #include #include #include +#include #include #include #include #include -#include #include "iface.h" #include "properties.h" @@ -93,7 +93,7 @@ struct wlr_drm_backend { struct wl_listener session_signal; struct wl_listener drm_invalidated; - list_t *outputs; + struct wl_list outputs; struct wlr_drm_renderer renderer; struct wlr_session *session; @@ -130,6 +130,7 @@ struct wlr_drm_connector { bool pageflip_pending; struct wl_event_source *retry_pageflip; + struct wl_list link; }; bool wlr_drm_check_features(struct wlr_drm_backend *drm); -- cgit v1.2.3 From 9b984253e2b878128d2042836a8c86228700b1ee Mon Sep 17 00:00:00 2001 From: Scott Anderson Date: Sat, 21 Oct 2017 14:48:58 +1300 Subject: Move egl.h to render/egl.h --- backend/drm/backend.c | 2 +- backend/drm/renderer.c | 2 +- backend/wayland/backend.c | 2 +- backend/x11/backend.c | 2 +- include/backend/drm/drm.h | 2 +- include/backend/wayland.h | 2 +- include/backend/x11.h | 2 +- include/render/gles2.h | 2 +- include/wlr/backend.h | 2 +- include/wlr/backend/interface.h | 2 +- include/wlr/egl.h | 66 ----------------------------------------- include/wlr/render/egl.h | 66 +++++++++++++++++++++++++++++++++++++++++ render/egl.c | 2 +- render/gles2/renderer.c | 2 +- render/gles2/texture.c | 2 +- types/wlr_surface.c | 2 +- 16 files changed, 80 insertions(+), 80 deletions(-) delete mode 100644 include/wlr/egl.h create mode 100644 include/wlr/render/egl.h (limited to 'include/backend/drm/drm.h') diff --git a/backend/drm/backend.c b/backend/drm/backend.c index d7e2e616..ab66adf5 100644 --- a/backend/drm/backend.c +++ b/backend/drm/backend.c @@ -11,7 +11,7 @@ #include #include #include -#include +#include #include "backend/drm/drm.h" static bool wlr_drm_backend_start(struct wlr_backend *backend) { diff --git a/backend/drm/renderer.c b/backend/drm/renderer.c index 0d338490..d53acaa8 100644 --- a/backend/drm/renderer.c +++ b/backend/drm/renderer.c @@ -8,8 +8,8 @@ #include #include -#include #include +#include #include #include #include diff --git a/backend/wayland/backend.c b/backend/wayland/backend.c index e57f3583..5018eeb0 100644 --- a/backend/wayland/backend.c +++ b/backend/wayland/backend.c @@ -4,7 +4,7 @@ #include #include #include -#include +#include #include #include #include diff --git a/backend/x11/backend.c b/backend/x11/backend.c index 11dd8568..4ecca325 100644 --- a/backend/x11/backend.c +++ b/backend/x11/backend.c @@ -15,7 +15,7 @@ #endif #include #include -#include +#include #include #include #include diff --git a/include/backend/drm/drm.h b/include/backend/drm/drm.h index 6106a85a..7a0e43ea 100644 --- a/include/backend/drm/drm.h +++ b/include/backend/drm/drm.h @@ -12,7 +12,7 @@ #include #include #include -#include +#include #include #include "iface.h" diff --git a/include/backend/wayland.h b/include/backend/wayland.h index 508a7f52..88aeabca 100644 --- a/include/backend/wayland.h +++ b/include/backend/wayland.h @@ -5,7 +5,7 @@ #include #include #include -#include +#include #include #include #include diff --git a/include/backend/x11.h b/include/backend/x11.h index b4284b63..f5ec56bc 100644 --- a/include/backend/x11.h +++ b/include/backend/x11.h @@ -5,7 +5,7 @@ #include #include #include -#include +#include #include #include diff --git a/include/render/gles2.h b/include/render/gles2.h index 688a51dd..0b7032cc 100644 --- a/include/render/gles2.h +++ b/include/render/gles2.h @@ -8,9 +8,9 @@ #include #include #include -#include #include #include +#include #include #include diff --git a/include/wlr/backend.h b/include/wlr/backend.h index 6c11152f..78d01edf 100644 --- a/include/wlr/backend.h +++ b/include/wlr/backend.h @@ -3,7 +3,7 @@ #include #include -#include +#include struct wlr_backend_impl; diff --git a/include/wlr/backend/interface.h b/include/wlr/backend/interface.h index ea41400a..3f0aaadb 100644 --- a/include/wlr/backend/interface.h +++ b/include/wlr/backend/interface.h @@ -3,7 +3,7 @@ #include #include -#include +#include struct wlr_backend_impl { bool (*start)(struct wlr_backend *backend); diff --git a/include/wlr/egl.h b/include/wlr/egl.h deleted file mode 100644 index 9ab4d9ce..00000000 --- a/include/wlr/egl.h +++ /dev/null @@ -1,66 +0,0 @@ -#ifndef WLR_EGL_H -#define WLR_EGL_H - -#include -#include -#include - -struct wlr_egl { - EGLDisplay display; - EGLConfig config; - EGLContext context; - - const char *egl_exts; - const char *gl_exts; - - struct wl_display *wl_display; -}; - -// TODO: Allocate and return a wlr_egl -/** - * Initializes an egl context for the given platform and remote display. - * Will attempt to load all possibly required api functions. - */ -bool wlr_egl_init(struct wlr_egl *egl, EGLenum platform, EGLint visual_id, void *display); - -/** - * Frees all related egl resources, makes the context not-current and - * unbinds a bound wayland display. - */ -void wlr_egl_free(struct wlr_egl *egl); - -/** - * Binds the given display to the egl instance. - * This will allow clients to create egl surfaces from wayland ones and render to it. - */ -bool wlr_egl_bind_display(struct wlr_egl *egl, struct wl_display *local_display); - -/** - * Refer to the eglQueryWaylandBufferWL extension function. - */ -bool wlr_egl_query_buffer(struct wlr_egl *egl, struct wl_resource *buf, - EGLint attrib, EGLint *value); - -/** - * Returns a surface for the given native window - * The window must match the remote display the wlr_egl was created with. - */ -EGLSurface wlr_egl_create_surface(struct wlr_egl *egl, void *window); - -/** - * Creates an egl image from the given client buffer and attributes. - */ -EGLImageKHR wlr_egl_create_image(struct wlr_egl *egl, - EGLenum target, EGLClientBuffer buffer, const EGLint *attribs); - -/** - * Destroys an egl image created with the given wlr_egl. - */ -bool wlr_egl_destroy_image(struct wlr_egl *egl, EGLImageKHR image); - -/** - * Returns a string for the last error ocurred with egl. - */ -const char *egl_error(void); - -#endif diff --git a/include/wlr/render/egl.h b/include/wlr/render/egl.h new file mode 100644 index 00000000..9ab4d9ce --- /dev/null +++ b/include/wlr/render/egl.h @@ -0,0 +1,66 @@ +#ifndef WLR_EGL_H +#define WLR_EGL_H + +#include +#include +#include + +struct wlr_egl { + EGLDisplay display; + EGLConfig config; + EGLContext context; + + const char *egl_exts; + const char *gl_exts; + + struct wl_display *wl_display; +}; + +// TODO: Allocate and return a wlr_egl +/** + * Initializes an egl context for the given platform and remote display. + * Will attempt to load all possibly required api functions. + */ +bool wlr_egl_init(struct wlr_egl *egl, EGLenum platform, EGLint visual_id, void *display); + +/** + * Frees all related egl resources, makes the context not-current and + * unbinds a bound wayland display. + */ +void wlr_egl_free(struct wlr_egl *egl); + +/** + * Binds the given display to the egl instance. + * This will allow clients to create egl surfaces from wayland ones and render to it. + */ +bool wlr_egl_bind_display(struct wlr_egl *egl, struct wl_display *local_display); + +/** + * Refer to the eglQueryWaylandBufferWL extension function. + */ +bool wlr_egl_query_buffer(struct wlr_egl *egl, struct wl_resource *buf, + EGLint attrib, EGLint *value); + +/** + * Returns a surface for the given native window + * The window must match the remote display the wlr_egl was created with. + */ +EGLSurface wlr_egl_create_surface(struct wlr_egl *egl, void *window); + +/** + * Creates an egl image from the given client buffer and attributes. + */ +EGLImageKHR wlr_egl_create_image(struct wlr_egl *egl, + EGLenum target, EGLClientBuffer buffer, const EGLint *attribs); + +/** + * Destroys an egl image created with the given wlr_egl. + */ +bool wlr_egl_destroy_image(struct wlr_egl *egl, EGLImageKHR image); + +/** + * Returns a string for the last error ocurred with egl. + */ +const char *egl_error(void); + +#endif diff --git a/render/egl.c b/render/egl.c index 9815b923..08612125 100644 --- a/render/egl.c +++ b/render/egl.c @@ -3,7 +3,7 @@ #include #include #include -#include +#include #include "render/glapi.h" // Extension documentation diff --git a/render/gles2/renderer.c b/render/gles2/renderer.c index 94c50b9a..cf4a0aab 100644 --- a/render/gles2/renderer.c +++ b/render/gles2/renderer.c @@ -5,9 +5,9 @@ #include #include #include -#include #include #include +#include #include #include #include diff --git a/render/gles2/texture.c b/render/gles2/texture.c index 5e934aa4..ff71cb08 100644 --- a/render/gles2/texture.c +++ b/render/gles2/texture.c @@ -5,8 +5,8 @@ #include #include #include -#include #include +#include #include #include #include diff --git a/types/wlr_surface.c b/types/wlr_surface.c index 9e38d701..68c21468 100644 --- a/types/wlr_surface.c +++ b/types/wlr_surface.c @@ -2,9 +2,9 @@ #include #include #include -#include #include #include +#include #include static void wlr_surface_state_reset_buffer(struct wlr_surface_state *state) { -- cgit v1.2.3 From 4ea84c5765b138153aa313f23288935192b75c42 Mon Sep 17 00:00:00 2001 From: Scott Anderson Date: Sat, 21 Oct 2017 17:35:37 +1300 Subject: Remove unnecesary wlr_renderers --- backend/drm/drm.c | 12 ++---------- include/backend/drm/drm.h | 1 - 2 files changed, 2 insertions(+), 11 deletions(-) (limited to 'include/backend/drm/drm.h') diff --git a/backend/drm/drm.c b/backend/drm/drm.c index ff4dc7f6..0e898d3f 100644 --- a/backend/drm/drm.c +++ b/backend/drm/drm.c @@ -177,9 +177,6 @@ void wlr_drm_resources_free(struct wlr_drm_backend *drm) { if (plane->wlr_tex) { wlr_texture_destroy(plane->wlr_tex); } - if (plane->wlr_rend) { - wlr_renderer_destroy(plane->wlr_rend); - } } free(drm->crtcs); @@ -525,12 +522,7 @@ static bool wlr_drm_connector_set_cursor(struct wlr_output *output, // TODO the image needs to be rotated depending on the output rotation - plane->wlr_rend = wlr_gles2_renderer_create(&drm->backend); - if (!plane->wlr_rend) { - return false; - } - - plane->wlr_tex = wlr_render_texture_create(plane->wlr_rend); + plane->wlr_tex = wlr_render_texture_create(plane->surf.renderer->wlr_rend); if (!plane->wlr_tex) { return false; } @@ -595,7 +587,7 @@ static bool wlr_drm_connector_set_cursor(struct wlr_output *output, float matrix[16]; 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(); glPixelStorei(GL_UNPACK_ROW_LENGTH_EXT, bo_stride); diff --git a/include/backend/drm/drm.h b/include/backend/drm/drm.h index 7a0e43ea..2ef3cf92 100644 --- a/include/backend/drm/drm.h +++ b/include/backend/drm/drm.h @@ -30,7 +30,6 @@ struct wlr_drm_plane { // Only used by cursor float matrix[16]; - struct wlr_renderer *wlr_rend; struct wlr_texture *wlr_tex; struct gbm_bo *cursor_bo; -- cgit v1.2.3 From bdeffad7e5cacd2d1e27ddc0d44b3d9e2c19587d Mon Sep 17 00:00:00 2001 From: Scott Anderson Date: Sat, 21 Oct 2017 17:44:49 +1300 Subject: Remove drm field from wlr_drm_connector --- backend/drm/drm.c | 20 ++++++++++---------- include/backend/drm/drm.h | 1 - 2 files changed, 10 insertions(+), 11 deletions(-) (limited to 'include/backend/drm/drm.h') diff --git a/backend/drm/drm.c b/backend/drm/drm.c index b3057166..04d7ea77 100644 --- a/backend/drm/drm.c +++ b/backend/drm/drm.c @@ -190,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) { 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_plane *plane = crtc->primary; @@ -213,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, uint16_t size, uint16_t *r, uint16_t *g, uint16_t *b) { 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) { @@ -227,7 +228,7 @@ void wlr_drm_connector_start_renderer(struct wlr_drm_connector *conn) { 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_plane *plane = crtc->primary; @@ -250,7 +251,7 @@ static void wlr_drm_connector_enable(struct wlr_output *output, bool enable) { 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); if (enable) { @@ -403,7 +404,7 @@ error_conn: static bool wlr_drm_connector_set_mode(struct wlr_output *output, struct wlr_output_mode *mode) { 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, mode->width, mode->height, mode->refresh); @@ -469,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, int32_t hotspot_x, int32_t hotspot_y, bool update_pixels) { 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_crtc *crtc = conn->crtc; @@ -604,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, int x, int y) { 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; wlr_output_effective_resolution(output, &width, &height); @@ -714,7 +715,6 @@ void wlr_drm_scan_connectors(struct wlr_drm_backend *drm) { wlr_conn); - wlr_conn->drm = drm; wlr_conn->state = WLR_DRM_CONN_DISCONNECTED; wlr_conn->id = drm_conn->connector_id; @@ -820,7 +820,7 @@ void wlr_drm_scan_connectors(struct wlr_drm_backend *drm) { static void page_flip_handler(int fd, unsigned seq, unsigned tv_sec, unsigned tv_usec, void *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; if (conn->state != WLR_DRM_CONN_CONNECTED) { @@ -891,7 +891,7 @@ void wlr_drm_connector_cleanup(struct wlr_drm_connector *conn) { return; } - struct wlr_drm_backend *drm = conn->drm; + struct wlr_drm_backend *drm = (struct wlr_drm_backend *)conn->output.backend; switch (conn->state) { case WLR_DRM_CONN_CONNECTED: diff --git a/include/backend/drm/drm.h b/include/backend/drm/drm.h index 2ef3cf92..b0f5838e 100644 --- a/include/backend/drm/drm.h +++ b/include/backend/drm/drm.h @@ -112,7 +112,6 @@ struct wlr_drm_mode { struct wlr_drm_connector { struct wlr_output output; - struct wlr_drm_backend *drm; enum wlr_drm_connector_state state; uint32_t id; -- cgit v1.2.3