backend/drm: simplify drm_fb_lock_surface
Make it take a plane instead, and rename to drm_plane_lock_surface.
This commit is contained in:
parent
44a3d6e74d
commit
4af85f4c19
|
@ -486,9 +486,8 @@ static bool drm_connector_commit_buffer(struct wlr_output *output) {
|
||||||
assert(output->pending.committed & WLR_OUTPUT_STATE_BUFFER);
|
assert(output->pending.committed & WLR_OUTPUT_STATE_BUFFER);
|
||||||
switch (output->pending.buffer_type) {
|
switch (output->pending.buffer_type) {
|
||||||
case WLR_OUTPUT_STATE_BUFFER_RENDER:
|
case WLR_OUTPUT_STATE_BUFFER_RENDER:
|
||||||
if (!drm_fb_lock_surface(&plane->pending_fb, drm, &plane->surf,
|
if (!drm_plane_lock_surface(plane, drm)) {
|
||||||
&plane->mgpu_surf)) {
|
wlr_drm_conn_log(conn, WLR_ERROR, "drm_plane_lock_surface failed");
|
||||||
wlr_drm_conn_log(conn, WLR_ERROR, "drm_fb_lock_surface failed");
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
@ -681,8 +680,7 @@ static bool drm_connector_pageflip_renderer(struct wlr_drm_connector *conn) {
|
||||||
if (!drm_surface_render_black_frame(&plane->surf)) {
|
if (!drm_surface_render_black_frame(&plane->surf)) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
if (!drm_fb_lock_surface(&plane->pending_fb, drm, &plane->surf,
|
if (!drm_plane_lock_surface(plane, drm)) {
|
||||||
&plane->mgpu_surf)) {
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -949,8 +947,7 @@ static bool drm_connector_set_cursor(struct wlr_output *output,
|
||||||
wlr_render_texture_with_matrix(rend, texture, matrix, 1.0);
|
wlr_render_texture_with_matrix(rend, texture, matrix, 1.0);
|
||||||
wlr_renderer_end(rend);
|
wlr_renderer_end(rend);
|
||||||
|
|
||||||
if (!drm_fb_lock_surface(&plane->pending_fb, drm, &plane->surf,
|
if (!drm_plane_lock_surface(plane, drm)) {
|
||||||
&plane->mgpu_surf)) {
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -294,17 +294,17 @@ void drm_fb_clear(struct wlr_drm_fb **fb_ptr) {
|
||||||
*fb_ptr = NULL;
|
*fb_ptr = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool drm_fb_lock_surface(struct wlr_drm_fb **fb_ptr, struct wlr_drm_backend *drm,
|
bool drm_plane_lock_surface(struct wlr_drm_plane *plane,
|
||||||
struct wlr_drm_surface *surf, struct wlr_drm_surface *mgpu) {
|
struct wlr_drm_backend *drm) {
|
||||||
assert(surf->back_buffer != NULL);
|
assert(plane->surf.back_buffer != NULL);
|
||||||
|
struct wlr_buffer *buffer = wlr_buffer_lock(plane->surf.back_buffer);
|
||||||
struct wlr_buffer *buffer = wlr_buffer_lock(surf->back_buffer);
|
|
||||||
|
|
||||||
// Unset the current EGL context ASAP, because other operations may require
|
// Unset the current EGL context ASAP, because other operations may require
|
||||||
// making another context current.
|
// making another context current.
|
||||||
drm_surface_unset_current(surf);
|
drm_surface_unset_current(&plane->surf);
|
||||||
|
|
||||||
bool ok = drm_fb_import(fb_ptr, drm, buffer, mgpu, NULL);
|
bool ok = drm_fb_import(&plane->pending_fb, drm, buffer,
|
||||||
|
&plane->mgpu_surf, NULL);
|
||||||
wlr_buffer_unlock(buffer);
|
wlr_buffer_unlock(buffer);
|
||||||
return ok;
|
return ok;
|
||||||
}
|
}
|
||||||
|
|
|
@ -46,8 +46,6 @@ void finish_drm_renderer(struct wlr_drm_renderer *renderer);
|
||||||
bool drm_surface_make_current(struct wlr_drm_surface *surf, int *buffer_age);
|
bool drm_surface_make_current(struct wlr_drm_surface *surf, int *buffer_age);
|
||||||
void drm_surface_unset_current(struct wlr_drm_surface *surf);
|
void drm_surface_unset_current(struct wlr_drm_surface *surf);
|
||||||
|
|
||||||
bool drm_fb_lock_surface(struct wlr_drm_fb **fb, struct wlr_drm_backend *drm,
|
|
||||||
struct wlr_drm_surface *surf, struct wlr_drm_surface *mgpu);
|
|
||||||
bool drm_fb_import(struct wlr_drm_fb **fb, struct wlr_drm_backend *drm,
|
bool drm_fb_import(struct wlr_drm_fb **fb, struct wlr_drm_backend *drm,
|
||||||
struct wlr_buffer *buf, struct wlr_drm_surface *mgpu,
|
struct wlr_buffer *buf, struct wlr_drm_surface *mgpu,
|
||||||
const struct wlr_drm_format_set *formats);
|
const struct wlr_drm_format_set *formats);
|
||||||
|
@ -62,5 +60,7 @@ bool drm_plane_init_surface(struct wlr_drm_plane *plane,
|
||||||
struct wlr_drm_backend *drm, int32_t width, uint32_t height,
|
struct wlr_drm_backend *drm, int32_t width, uint32_t height,
|
||||||
uint32_t format, bool with_modifiers);
|
uint32_t format, bool with_modifiers);
|
||||||
void drm_plane_finish_surface(struct wlr_drm_plane *plane);
|
void drm_plane_finish_surface(struct wlr_drm_plane *plane);
|
||||||
|
bool drm_plane_lock_surface(struct wlr_drm_plane *plane,
|
||||||
|
struct wlr_drm_backend *drm);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
Loading…
Reference in New Issue