diff options
Diffstat (limited to 'backend/drm')
-rw-r--r-- | backend/drm/atomic.c | 2 | ||||
-rw-r--r-- | backend/drm/backend.c | 36 | ||||
-rw-r--r-- | backend/drm/drm.c | 114 | ||||
-rw-r--r-- | backend/drm/properties.c | 12 | ||||
-rw-r--r-- | backend/drm/renderer.c | 44 |
5 files changed, 103 insertions, 105 deletions
diff --git a/backend/drm/atomic.c b/backend/drm/atomic.c index 29b5ccb1..acc56e65 100644 --- a/backend/drm/atomic.c +++ b/backend/drm/atomic.c @@ -237,7 +237,7 @@ static uint32_t atomic_crtc_get_gamma_size(struct wlr_drm_backend *drm, return legacy_iface.crtc_get_gamma_size(drm, crtc); } - if (!wlr_drm_get_prop(drm->fd, crtc->id, crtc->props.gamma_lut_size, + if (!get_drm_prop(drm->fd, crtc->id, crtc->props.gamma_lut_size, &gamma_lut_size)) { wlr_log(L_ERROR, "Unable to get gamma lut size"); return 0; diff --git a/backend/drm/backend.c b/backend/drm/backend.c index 66cb89d3..c14b99e3 100644 --- a/backend/drm/backend.c +++ b/backend/drm/backend.c @@ -15,20 +15,20 @@ #include "backend/drm/drm.h" #include "util/signal.h" -static bool wlr_drm_backend_start(struct wlr_backend *backend) { +static bool backend_start(struct wlr_backend *backend) { struct wlr_drm_backend *drm = (struct wlr_drm_backend *)backend; - wlr_drm_scan_connectors(drm); + scan_drm_connectors(drm); return true; } -static void wlr_drm_backend_destroy(struct wlr_backend *backend) { +static void backend_destroy(struct wlr_backend *backend) { if (!backend) { return; } struct wlr_drm_backend *drm = (struct wlr_drm_backend *)backend; - wlr_drm_restore_outputs(drm); + restore_drm_outputs(drm); struct wlr_drm_connector *conn, *next; wl_list_for_each_safe(conn, next, &drm->outputs, link) { @@ -41,23 +41,23 @@ static void wlr_drm_backend_destroy(struct wlr_backend *backend) { wl_list_remove(&drm->session_signal.link); wl_list_remove(&drm->drm_invalidated.link); - wlr_drm_resources_free(drm); - wlr_drm_renderer_finish(&drm->renderer); + finish_drm_resources(drm); + finish_drm_renderer(&drm->renderer); wlr_session_close_file(drm->session, drm->fd); wl_event_source_remove(drm->drm_event); free(drm); } -static struct wlr_renderer *wlr_drm_backend_get_renderer( +static struct wlr_renderer *backend_get_renderer( struct wlr_backend *backend) { struct wlr_drm_backend *drm = (struct wlr_drm_backend *)backend; return drm->renderer.wlr_rend; } static struct wlr_backend_impl backend_impl = { - .start = wlr_drm_backend_start, - .destroy = wlr_drm_backend_destroy, - .get_renderer = wlr_drm_backend_get_renderer, + .start = backend_start, + .destroy = backend_destroy, + .get_renderer = backend_get_renderer, }; bool wlr_backend_is_drm(struct wlr_backend *b) { @@ -71,14 +71,14 @@ static void session_signal(struct wl_listener *listener, void *data) { if (session->active) { wlr_log(L_INFO, "DRM fd resumed"); - wlr_drm_scan_connectors(drm); + scan_drm_connectors(drm); struct wlr_drm_connector *conn; wl_list_for_each(conn, &drm->outputs, link){ if (conn->output.enabled) { wlr_output_set_mode(&conn->output, conn->output.current_mode); } else { - wlr_drm_connector_enable(&conn->output, false); + enable_drm_connector(&conn->output, false); } if (!conn->crtc) { @@ -104,13 +104,13 @@ static void drm_invalidated(struct wl_listener *listener, void *data) { wlr_log(L_DEBUG, "%s invalidated", name); free(name); - wlr_drm_scan_connectors(drm); + scan_drm_connectors(drm); } static void handle_display_destroy(struct wl_listener *listener, void *data) { struct wlr_drm_backend *drm = wl_container_of(listener, drm, display_destroy); - wlr_drm_backend_destroy(&drm->backend); + backend_destroy(&drm->backend); } struct wlr_backend *wlr_drm_backend_create(struct wl_display *display, @@ -144,7 +144,7 @@ struct wlr_backend *wlr_drm_backend_create(struct wl_display *display, struct wl_event_loop *event_loop = wl_display_get_event_loop(display); drm->drm_event = wl_event_loop_add_fd(event_loop, drm->fd, - WL_EVENT_READABLE, wlr_drm_event, NULL); + WL_EVENT_READABLE, handle_drm_event, NULL); if (!drm->drm_event) { wlr_log(L_ERROR, "Failed to create DRM event source"); goto error_fd; @@ -153,15 +153,15 @@ struct wlr_backend *wlr_drm_backend_create(struct wl_display *display, drm->session_signal.notify = session_signal; wl_signal_add(&session->session_signal, &drm->session_signal); - if (!wlr_drm_check_features(drm)) { + if (!check_drm_features(drm)) { goto error_event; } - if (!wlr_drm_resources_init(drm)) { + if (!init_drm_resources(drm)) { goto error_event; } - if (!wlr_drm_renderer_init(drm, &drm->renderer)) { + if (!init_drm_renderer(drm, &drm->renderer)) { wlr_log(L_ERROR, "Failed to initialize renderer"); goto error_event; } diff --git a/backend/drm/drm.c b/backend/drm/drm.c index fcc435e6..dc512151 100644 --- a/backend/drm/drm.c +++ b/backend/drm/drm.c @@ -26,7 +26,7 @@ #include "backend/drm/util.h" #include "util/signal.h" -bool wlr_drm_check_features(struct wlr_drm_backend *drm) { +bool check_drm_features(struct wlr_drm_backend *drm) { if (drmSetClientCap(drm->fd, DRM_CLIENT_CAP_UNIVERSAL_PLANES, 1)) { wlr_log(L_ERROR, "DRM universal planes unsupported"); return false; @@ -87,8 +87,8 @@ static bool init_planes(struct wlr_drm_backend *drm) { p->possible_crtcs = plane->possible_crtcs; uint64_t type; - if (!wlr_drm_get_plane_props(drm->fd, p->id, &p->props) || - !wlr_drm_get_prop(drm->fd, p->id, p->props.type, &type)) { + if (!get_drm_plane_props(drm->fd, p->id, &p->props) || + !get_drm_prop(drm->fd, p->id, p->props.type, &type)) { drmModeFreePlane(plane); goto error_planes; } @@ -122,7 +122,7 @@ error_res: return false; } -bool wlr_drm_resources_init(struct wlr_drm_backend *drm) { +bool init_drm_resources(struct wlr_drm_backend *drm) { drmModeRes *res = drmModeGetResources(drm->fd); if (!res) { wlr_log_errno(L_ERROR, "Failed to get DRM resources"); @@ -142,7 +142,7 @@ bool wlr_drm_resources_init(struct wlr_drm_backend *drm) { struct wlr_drm_crtc *crtc = &drm->crtcs[i]; crtc->id = res->crtcs[i]; crtc->legacy_crtc = drmModeGetCrtc(drm->fd, crtc->id); - wlr_drm_get_crtc_props(drm->fd, crtc->id, &crtc->props); + get_drm_crtc_props(drm->fd, crtc->id, &crtc->props); } if (!init_planes(drm)) { @@ -160,7 +160,7 @@ error_res: return false; } -void wlr_drm_resources_free(struct wlr_drm_backend *drm) { +void finish_drm_resources(struct wlr_drm_backend *drm) { if (!drm) { return; } @@ -187,13 +187,13 @@ void wlr_drm_resources_free(struct wlr_drm_backend *drm) { free(drm->planes); } -static bool wlr_drm_connector_make_current(struct wlr_output *output, +static bool drm_connector_make_current(struct wlr_output *output, int *buffer_age) { struct wlr_drm_connector *conn = (struct wlr_drm_connector *)output; - return wlr_drm_surface_make_current(&conn->crtc->primary->surf, buffer_age); + return make_drm_surface_current(&conn->crtc->primary->surf, buffer_age); } -static bool wlr_drm_connector_swap_buffers(struct wlr_output *output, +static bool drm_connector_swap_buffers(struct wlr_output *output, pixman_region32_t *damage) { struct wlr_drm_connector *conn = (struct wlr_drm_connector *)output; struct wlr_drm_backend *drm = (struct wlr_drm_backend *)output->backend; @@ -207,9 +207,9 @@ static bool wlr_drm_connector_swap_buffers(struct wlr_output *output, } struct wlr_drm_plane *plane = crtc->primary; - struct gbm_bo *bo = wlr_drm_surface_swap_buffers(&plane->surf, damage); + struct gbm_bo *bo = swap_drm_surface_buffers(&plane->surf, damage); if (drm->parent) { - bo = wlr_drm_surface_mgpu_copy(&plane->mgpu_surf, bo); + bo = copy_drm_surface_mgpu(&plane->mgpu_surf, bo); } uint32_t fb_id = get_fb_for_bo(bo); @@ -227,7 +227,7 @@ static bool wlr_drm_connector_swap_buffers(struct wlr_output *output, return true; } -static void wlr_drm_connector_set_gamma(struct wlr_output *output, +static void drm_connector_set_gamma(struct wlr_output *output, uint32_t size, uint16_t *r, uint16_t *g, uint16_t *b) { struct wlr_drm_connector *conn = (struct wlr_drm_connector *)output; struct wlr_drm_backend *drm = (struct wlr_drm_backend *)output->backend; @@ -242,7 +242,7 @@ static void wlr_drm_connector_set_gamma(struct wlr_output *output, } -static uint32_t wlr_drm_connector_get_gamma_size(struct wlr_output *output) { +static uint32_t drm_connector_get_gamma_size(struct wlr_output *output) { struct wlr_drm_connector *conn = (struct wlr_drm_connector *)output; struct wlr_drm_backend *drm = (struct wlr_drm_backend *)output->backend; @@ -253,7 +253,7 @@ static uint32_t wlr_drm_connector_get_gamma_size(struct wlr_output *output) { return 0; } -void wlr_drm_connector_start_renderer(struct wlr_drm_connector *conn) { +static void drm_connector_start_renderer(struct wlr_drm_connector *conn) { if (conn->state != WLR_DRM_CONN_CONNECTED) { return; } @@ -265,7 +265,7 @@ void wlr_drm_connector_start_renderer(struct wlr_drm_connector *conn) { } struct wlr_drm_plane *plane = crtc->primary; - struct gbm_bo *bo = wlr_drm_surface_get_front( + struct gbm_bo *bo = get_drm_surface_front( drm->parent ? &plane->mgpu_surf : &plane->surf); uint32_t fb_id = get_fb_for_bo(bo); @@ -279,7 +279,7 @@ void wlr_drm_connector_start_renderer(struct wlr_drm_connector *conn) { } } -void wlr_drm_connector_enable(struct wlr_output *output, bool enable) { +void enable_drm_connector(struct wlr_output *output, bool enable) { struct wlr_drm_connector *conn = (struct wlr_drm_connector *)output; if (conn->state != WLR_DRM_CONN_CONNECTED) { return; @@ -292,7 +292,7 @@ void wlr_drm_connector_enable(struct wlr_output *output, bool enable) { } if (enable) { - wlr_drm_connector_start_renderer(conn); + drm_connector_start_renderer(conn); } wlr_output_update_enabled(&conn->output, enable); @@ -340,9 +340,9 @@ static void realloc_planes(struct wlr_drm_backend *drm, const uint32_t *crtc_in, if (*old != new) { changed_outputs[crtc_res[i]] = true; if (*old) { - wlr_drm_surface_finish(&(*old)->surf); + finish_drm_surface(&(*old)->surf); } - wlr_drm_surface_finish(&new->surf); + finish_drm_surface(&new->surf); *old = new; } } @@ -461,7 +461,9 @@ error_conn: return 0; } -static bool wlr_drm_connector_set_mode(struct wlr_output *output, +static void drm_connector_cleanup(struct wlr_drm_connector *conn); + +static bool 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 = (struct wlr_drm_backend *)output->backend; @@ -513,28 +515,28 @@ static bool wlr_drm_connector_set_mode(struct wlr_output *output, continue; } - if (!wlr_drm_plane_surfaces_init(crtc->primary, drm, + if (!init_drm_plane_surfaces(crtc->primary, drm, mode->width, mode->height, GBM_FORMAT_XRGB8888)) { wlr_log(L_ERROR, "Failed to initialize renderer for plane"); goto error_conn; } - wlr_drm_connector_start_renderer(conn); + drm_connector_start_renderer(conn); } return true; error_conn: - wlr_drm_connector_cleanup(conn); + drm_connector_cleanup(conn); return false; } -static void wlr_drm_connector_transform(struct wlr_output *output, +static void drm_connector_transform(struct wlr_output *output, enum wl_output_transform transform) { output->transform = transform; } -static bool wlr_drm_connector_set_cursor(struct wlr_output *output, +static bool 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; @@ -570,7 +572,7 @@ static bool wlr_drm_connector_set_cursor(struct wlr_output *output, return false; } - if (!wlr_drm_surface_init(&plane->surf, renderer, w, h, + if (!init_drm_surface(&plane->surf, renderer, w, h, GBM_FORMAT_ARGB8888, 0)) { wlr_log(L_ERROR, "Cannot allocate cursor resources"); return false; @@ -629,7 +631,7 @@ static bool wlr_drm_connector_set_cursor(struct wlr_output *output, return false; } - wlr_drm_surface_make_current(&plane->surf, NULL); + make_drm_surface_current(&plane->surf, NULL); struct wlr_renderer *rend = plane->surf.renderer->wlr_rend; @@ -648,7 +650,7 @@ static bool wlr_drm_connector_set_cursor(struct wlr_output *output, wlr_renderer_read_pixels(rend, WL_SHM_FORMAT_ARGB8888, bo_stride, plane->surf.width, plane->surf.height, 0, 0, 0, 0, bo_data); - wlr_drm_surface_swap_buffers(&plane->surf, NULL); + swap_drm_surface_buffers(&plane->surf, NULL); wlr_texture_destroy(texture); gbm_bo_unmap(plane->cursor_bo, bo_data); @@ -666,7 +668,7 @@ static bool wlr_drm_connector_set_cursor(struct wlr_output *output, return ok; } -static bool wlr_drm_connector_move_cursor(struct wlr_output *output, +static bool 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 = (struct wlr_drm_backend *)output->backend; @@ -703,25 +705,25 @@ static bool wlr_drm_connector_move_cursor(struct wlr_output *output, return ok; } -static void wlr_drm_connector_destroy(struct wlr_output *output) { +static void drm_connector_destroy(struct wlr_output *output) { struct wlr_drm_connector *conn = (struct wlr_drm_connector *)output; - wlr_drm_connector_cleanup(conn); + drm_connector_cleanup(conn); wl_event_source_remove(conn->retry_pageflip); wl_list_remove(&conn->link); free(conn); } -static struct wlr_output_impl output_impl = { - .enable = wlr_drm_connector_enable, - .set_mode = wlr_drm_connector_set_mode, - .transform = wlr_drm_connector_transform, - .set_cursor = wlr_drm_connector_set_cursor, - .move_cursor = wlr_drm_connector_move_cursor, - .destroy = wlr_drm_connector_destroy, - .make_current = wlr_drm_connector_make_current, - .swap_buffers = wlr_drm_connector_swap_buffers, - .set_gamma = wlr_drm_connector_set_gamma, - .get_gamma_size = wlr_drm_connector_get_gamma_size, +static const struct wlr_output_impl output_impl = { + .enable = enable_drm_connector, + .set_mode = drm_connector_set_mode, + .transform = drm_connector_transform, + .set_cursor = drm_connector_set_cursor, + .move_cursor = drm_connector_move_cursor, + .destroy = drm_connector_destroy, + .make_current = drm_connector_make_current, + .swap_buffers = drm_connector_swap_buffers, + .set_gamma = drm_connector_set_gamma, + .get_gamma_size = drm_connector_get_gamma_size, }; bool wlr_output_is_drm(struct wlr_output *output) { @@ -731,7 +733,7 @@ bool wlr_output_is_drm(struct wlr_output *output) { static int retry_pageflip(void *data) { struct wlr_drm_connector *conn = data; wlr_log(L_INFO, "%s: Retrying pageflip", conn->output.name); - wlr_drm_connector_start_renderer(conn); + drm_connector_start_renderer(conn); return 0; } @@ -744,7 +746,7 @@ static const int32_t subpixel_map[] = { [DRM_MODE_SUBPIXEL_NONE] = WL_OUTPUT_SUBPIXEL_NONE, }; -void wlr_drm_scan_connectors(struct wlr_drm_backend *drm) { +void scan_drm_connectors(struct wlr_drm_backend *drm) { wlr_log(L_INFO, "Scanning DRM connectors"); drmModeRes *res = drmModeGetResources(drm->fd); @@ -834,10 +836,10 @@ void wlr_drm_scan_connectors(struct wlr_drm_backend *drm) { wlr_conn->output.phys_width, wlr_conn->output.phys_height); wlr_conn->output.subpixel = subpixel_map[drm_conn->subpixel]; - wlr_drm_get_connector_props(drm->fd, wlr_conn->id, &wlr_conn->props); + get_drm_connector_props(drm->fd, wlr_conn->id, &wlr_conn->props); size_t edid_len = 0; - uint8_t *edid = wlr_drm_get_prop_blob(drm->fd, + uint8_t *edid = get_drm_prop_blob(drm->fd, wlr_conn->id, wlr_conn->props.edid, &edid_len); parse_edid(&wlr_conn->output, edid_len, edid); free(edid); @@ -874,7 +876,7 @@ void wlr_drm_scan_connectors(struct wlr_drm_backend *drm) { wlr_log(L_INFO, "'%s' disconnected", wlr_conn->output.name); wlr_output_update_enabled(&wlr_conn->output, false); - wlr_drm_connector_cleanup(wlr_conn); + drm_connector_cleanup(wlr_conn); } drmModeFreeEncoder(curr_enc); @@ -892,7 +894,7 @@ void wlr_drm_scan_connectors(struct wlr_drm_backend *drm) { } wlr_log(L_INFO, "'%s' disappeared", conn->output.name); - wlr_drm_connector_cleanup(conn); + drm_connector_cleanup(conn); drmModeFreeCrtc(conn->old_crtc); wl_event_source_remove(conn->retry_pageflip); @@ -911,9 +913,9 @@ static void page_flip_handler(int fd, unsigned seq, return; } - wlr_drm_surface_post(&conn->crtc->primary->surf); + post_drm_surface(&conn->crtc->primary->surf); if (drm->parent) { - wlr_drm_surface_post(&conn->crtc->primary->mgpu_surf); + post_drm_surface(&conn->crtc->primary->mgpu_surf); } if (drm->session->active) { @@ -921,7 +923,7 @@ static void page_flip_handler(int fd, unsigned seq, } } -int wlr_drm_event(int fd, uint32_t mask, void *data) { +int handle_drm_event(int fd, uint32_t mask, void *data) { drmEventContext event = { .version = DRM_EVENT_CONTEXT_VERSION, .page_flip_handler = page_flip_handler, @@ -931,7 +933,7 @@ int wlr_drm_event(int fd, uint32_t mask, void *data) { return 1; } -void wlr_drm_restore_outputs(struct wlr_drm_backend *drm) { +void restore_drm_outputs(struct wlr_drm_backend *drm) { uint64_t to_close = (1 << wl_list_length(&drm->outputs)) - 1; struct wlr_drm_connector *conn; @@ -944,7 +946,7 @@ void wlr_drm_restore_outputs(struct wlr_drm_backend *drm) { time_t timeout = time(NULL) + 5; while (to_close && time(NULL) < timeout) { - wlr_drm_event(drm->fd, 0, NULL); + handle_drm_event(drm->fd, 0, NULL); size_t i = 0; struct wlr_drm_connector *conn; wl_list_for_each(conn, &drm->outputs, link) { @@ -971,7 +973,7 @@ void wlr_drm_restore_outputs(struct wlr_drm_backend *drm) { } } -void wlr_drm_connector_cleanup(struct wlr_drm_connector *conn) { +static void drm_connector_cleanup(struct wlr_drm_connector *conn) { if (!conn) { return; } @@ -985,8 +987,8 @@ void wlr_drm_connector_cleanup(struct wlr_drm_connector *conn) { continue; } - wlr_drm_surface_finish(&crtc->planes[i]->surf); - wlr_drm_surface_finish(&crtc->planes[i]->mgpu_surf); + finish_drm_surface(&crtc->planes[i]->surf); + finish_drm_surface(&crtc->planes[i]->mgpu_surf); if (crtc->planes[i]->id == 0) { free(crtc->planes[i]); crtc->planes[i] = NULL; diff --git a/backend/drm/properties.c b/backend/drm/properties.c index 3d35beb5..c16d4b3a 100644 --- a/backend/drm/properties.c +++ b/backend/drm/properties.c @@ -87,22 +87,22 @@ static bool scan_properties(int fd, uint32_t id, uint32_t type, uint32_t *result return true; } -bool wlr_drm_get_connector_props(int fd, uint32_t id, union wlr_drm_connector_props *out) { +bool get_drm_connector_props(int fd, uint32_t id, union wlr_drm_connector_props *out) { return scan_properties(fd, id, DRM_MODE_OBJECT_CONNECTOR, out->props, connector_info, sizeof(connector_info) / sizeof(connector_info[0])); } -bool wlr_drm_get_crtc_props(int fd, uint32_t id, union wlr_drm_crtc_props *out) { +bool get_drm_crtc_props(int fd, uint32_t id, union wlr_drm_crtc_props *out) { return scan_properties(fd, id, DRM_MODE_OBJECT_CRTC, out->props, crtc_info, sizeof(crtc_info) / sizeof(crtc_info[0])); } -bool wlr_drm_get_plane_props(int fd, uint32_t id, union wlr_drm_plane_props *out) { +bool get_drm_plane_props(int fd, uint32_t id, union wlr_drm_plane_props *out) { return scan_properties(fd, id, DRM_MODE_OBJECT_PLANE, out->props, plane_info, sizeof(plane_info) / sizeof(plane_info[0])); } -bool wlr_drm_get_prop(int fd, uint32_t obj, uint32_t prop, uint64_t *ret) { +bool get_drm_prop(int fd, uint32_t obj, uint32_t prop, uint64_t *ret) { drmModeObjectProperties *props = drmModeObjectGetProperties(fd, obj, DRM_MODE_OBJECT_ANY); if (!props) { return false; @@ -122,9 +122,9 @@ bool wlr_drm_get_prop(int fd, uint32_t obj, uint32_t prop, uint64_t *ret) { return found; } -void *wlr_drm_get_prop_blob(int fd, uint32_t obj, uint32_t prop, size_t *ret_len) { +void *get_drm_prop_blob(int fd, uint32_t obj, uint32_t prop, size_t *ret_len) { uint64_t blob_id; - if (!wlr_drm_get_prop(fd, obj, prop, &blob_id)) { + if (!get_drm_prop(fd, obj, prop, &blob_id)) { return NULL; } diff --git a/backend/drm/renderer.c b/backend/drm/renderer.c index f06de1ee..7e2b5174 100644 --- a/backend/drm/renderer.c +++ b/backend/drm/renderer.c @@ -18,7 +18,7 @@ #define DRM_FORMAT_MOD_LINEAR 0 #endif -bool wlr_drm_renderer_init(struct wlr_drm_backend *drm, +bool init_drm_renderer(struct wlr_drm_backend *drm, struct wlr_drm_renderer *renderer) { renderer->gbm = gbm_create_device(drm->fd); if (!renderer->gbm) { @@ -47,7 +47,7 @@ error_gbm: return false; } -void wlr_drm_renderer_finish(struct wlr_drm_renderer *renderer) { +void finish_drm_renderer(struct wlr_drm_renderer *renderer) { if (!renderer) { return; } @@ -57,7 +57,7 @@ void wlr_drm_renderer_finish(struct wlr_drm_renderer *renderer) { gbm_device_destroy(renderer->gbm); } -bool wlr_drm_surface_init(struct wlr_drm_surface *surf, +bool init_drm_surface(struct wlr_drm_surface *surf, struct wlr_drm_renderer *renderer, uint32_t width, uint32_t height, uint32_t format, uint32_t flags) { if (surf->width == width && surf->height == height) { @@ -79,9 +79,7 @@ bool wlr_drm_surface_init(struct wlr_drm_surface *surf, } gbm_surface_destroy(surf->gbm); } - if (surf->egl) { - eglDestroySurface(surf->renderer->egl.display, surf->egl); - } + wlr_egl_destroy_surface(&surf->renderer->egl, surf->egl); surf->gbm = gbm_surface_create(renderer->gbm, width, height, format, GBM_BO_USE_RENDERING | flags); @@ -105,7 +103,7 @@ error_zero: return false; } -void wlr_drm_surface_finish(struct wlr_drm_surface *surf) { +void finish_drm_surface(struct wlr_drm_surface *surf) { if (!surf || !surf->renderer) { return; } @@ -117,9 +115,7 @@ void wlr_drm_surface_finish(struct wlr_drm_surface *surf) { gbm_surface_release_buffer(surf->gbm, surf->back); } - if (surf->egl) { - eglDestroySurface(surf->renderer->egl.display, surf->egl); - } + wlr_egl_destroy_surface(&surf->renderer->egl, surf->egl); if (surf->gbm) { gbm_surface_destroy(surf->gbm); } @@ -127,12 +123,12 @@ void wlr_drm_surface_finish(struct wlr_drm_surface *surf) { memset(surf, 0, sizeof(*surf)); } -bool wlr_drm_surface_make_current(struct wlr_drm_surface *surf, +bool make_drm_surface_current(struct wlr_drm_surface *surf, int *buffer_damage) { return wlr_egl_make_current(&surf->renderer->egl, surf->egl, buffer_damage); } -struct gbm_bo *wlr_drm_surface_swap_buffers(struct wlr_drm_surface *surf, +struct gbm_bo *swap_drm_surface_buffers(struct wlr_drm_surface *surf, pixman_region32_t *damage) { if (surf->front) { gbm_surface_release_buffer(surf->gbm, surf->front); @@ -145,20 +141,20 @@ struct gbm_bo *wlr_drm_surface_swap_buffers(struct wlr_drm_surface *surf, return surf->back; } -struct gbm_bo *wlr_drm_surface_get_front(struct wlr_drm_surface *surf) { +struct gbm_bo *get_drm_surface_front(struct wlr_drm_surface *surf) { if (surf->front) { return surf->front; } - wlr_drm_surface_make_current(surf, NULL); + make_drm_surface_current(surf, NULL); struct wlr_renderer *renderer = surf->renderer->wlr_rend; wlr_renderer_begin(renderer, surf->width, surf->height); wlr_renderer_clear(renderer, (float[]){ 0.0, 0.0, 0.0, 1.0 }); wlr_renderer_end(renderer); - return wlr_drm_surface_swap_buffers(surf, NULL); + return swap_drm_surface_buffers(surf, NULL); } -void wlr_drm_surface_post(struct wlr_drm_surface *surf) { +void post_drm_surface(struct wlr_drm_surface *surf) { if (surf->front) { gbm_surface_release_buffer(surf->gbm, surf->front); surf->front = NULL; @@ -212,9 +208,9 @@ static struct wlr_texture *get_tex_for_bo(struct wlr_drm_renderer *renderer, return tex->tex; } -struct gbm_bo *wlr_drm_surface_mgpu_copy(struct wlr_drm_surface *dest, +struct gbm_bo *copy_drm_surface_mgpu(struct wlr_drm_surface *dest, struct gbm_bo *src) { - wlr_drm_surface_make_current(dest, NULL); + make_drm_surface_current(dest, NULL); struct wlr_texture *tex = get_tex_for_bo(dest->renderer, src); assert(tex); @@ -228,25 +224,25 @@ struct gbm_bo *wlr_drm_surface_mgpu_copy(struct wlr_drm_surface *dest, wlr_render_texture_with_matrix(renderer, tex, mat, 1.0f); wlr_renderer_end(renderer); - return wlr_drm_surface_swap_buffers(dest, NULL); + return swap_drm_surface_buffers(dest, NULL); } -bool wlr_drm_plane_surfaces_init(struct wlr_drm_plane *plane, +bool init_drm_plane_surfaces(struct wlr_drm_plane *plane, struct wlr_drm_backend *drm, int32_t width, uint32_t height, uint32_t format) { if (!drm->parent) { - return wlr_drm_surface_init(&plane->surf, &drm->renderer, width, height, + return init_drm_surface(&plane->surf, &drm->renderer, width, height, format, GBM_BO_USE_SCANOUT); } - if (!wlr_drm_surface_init(&plane->surf, &drm->parent->renderer, + if (!init_drm_surface(&plane->surf, &drm->parent->renderer, width, height, format, GBM_BO_USE_LINEAR)) { return false; } - if (!wlr_drm_surface_init(&plane->mgpu_surf, &drm->renderer, + if (!init_drm_surface(&plane->mgpu_surf, &drm->renderer, width, height, format, GBM_BO_USE_SCANOUT)) { - wlr_drm_surface_finish(&plane->surf); + finish_drm_surface(&plane->surf); return false; } |