mirror of
https://github.com/hyprwm/wlroots-hyprland.git
synced 2024-11-25 22:25:58 +01:00
backend/drm: drop get_renderer implementation
We can now just rely on the common code for this.
This commit is contained in:
parent
9b99570869
commit
c74dc45bb6
3 changed files with 18 additions and 15 deletions
|
@ -45,8 +45,10 @@ void wlr_backend_init(struct wlr_backend *backend,
|
||||||
void wlr_backend_finish(struct wlr_backend *backend) {
|
void wlr_backend_finish(struct wlr_backend *backend) {
|
||||||
wlr_signal_emit_safe(&backend->events.destroy, backend);
|
wlr_signal_emit_safe(&backend->events.destroy, backend);
|
||||||
wlr_allocator_destroy(backend->allocator);
|
wlr_allocator_destroy(backend->allocator);
|
||||||
|
if (backend->has_own_renderer) {
|
||||||
wlr_renderer_destroy(backend->renderer);
|
wlr_renderer_destroy(backend->renderer);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
bool wlr_backend_start(struct wlr_backend *backend) {
|
bool wlr_backend_start(struct wlr_backend *backend) {
|
||||||
if (backend->impl->start) {
|
if (backend->impl->start) {
|
||||||
|
@ -77,6 +79,7 @@ static bool backend_create_renderer(struct wlr_backend *backend) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
backend->has_own_renderer = true;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -11,6 +11,7 @@
|
||||||
#include <wlr/interfaces/wlr_output.h>
|
#include <wlr/interfaces/wlr_output.h>
|
||||||
#include <wlr/util/log.h>
|
#include <wlr/util/log.h>
|
||||||
#include <xf86drm.h>
|
#include <xf86drm.h>
|
||||||
|
#include "backend/backend.h"
|
||||||
#include "backend/drm/drm.h"
|
#include "backend/drm/drm.h"
|
||||||
#include "util/signal.h"
|
#include "util/signal.h"
|
||||||
|
|
||||||
|
@ -61,17 +62,6 @@ static void backend_destroy(struct wlr_backend *backend) {
|
||||||
free(drm);
|
free(drm);
|
||||||
}
|
}
|
||||||
|
|
||||||
static struct wlr_renderer *backend_get_renderer(
|
|
||||||
struct wlr_backend *backend) {
|
|
||||||
struct wlr_drm_backend *drm = get_drm_backend_from_backend(backend);
|
|
||||||
|
|
||||||
if (drm->parent) {
|
|
||||||
return drm->parent->renderer.wlr_rend;
|
|
||||||
} else {
|
|
||||||
return drm->renderer.wlr_rend;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
static clockid_t backend_get_presentation_clock(struct wlr_backend *backend) {
|
static clockid_t backend_get_presentation_clock(struct wlr_backend *backend) {
|
||||||
struct wlr_drm_backend *drm = get_drm_backend_from_backend(backend);
|
struct wlr_drm_backend *drm = get_drm_backend_from_backend(backend);
|
||||||
return drm->clock;
|
return drm->clock;
|
||||||
|
@ -87,17 +77,16 @@ static int backend_get_drm_fd(struct wlr_backend *backend) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static uint32_t backend_get_buffer_caps(struct wlr_backend *backend) {
|
static uint32_t drm_backend_get_buffer_caps(struct wlr_backend *backend) {
|
||||||
return WLR_BUFFER_CAP_DMABUF;
|
return WLR_BUFFER_CAP_DMABUF;
|
||||||
}
|
}
|
||||||
|
|
||||||
static const struct wlr_backend_impl backend_impl = {
|
static const struct wlr_backend_impl backend_impl = {
|
||||||
.start = backend_start,
|
.start = backend_start,
|
||||||
.destroy = backend_destroy,
|
.destroy = backend_destroy,
|
||||||
.get_renderer = backend_get_renderer,
|
|
||||||
.get_presentation_clock = backend_get_presentation_clock,
|
.get_presentation_clock = backend_get_presentation_clock,
|
||||||
.get_drm_fd = backend_get_drm_fd,
|
.get_drm_fd = backend_get_drm_fd,
|
||||||
.get_buffer_caps = backend_get_buffer_caps,
|
.get_buffer_caps = drm_backend_get_buffer_caps,
|
||||||
};
|
};
|
||||||
|
|
||||||
bool wlr_backend_is_drm(struct wlr_backend *b) {
|
bool wlr_backend_is_drm(struct wlr_backend *b) {
|
||||||
|
@ -236,6 +225,10 @@ struct wlr_backend *wlr_drm_backend_create(struct wl_display *display,
|
||||||
}
|
}
|
||||||
|
|
||||||
if (drm->parent) {
|
if (drm->parent) {
|
||||||
|
// Ensure we use the same renderer as the parent backend
|
||||||
|
drm->backend.renderer = wlr_backend_get_renderer(&drm->parent->backend);
|
||||||
|
assert(drm->backend.renderer != NULL);
|
||||||
|
|
||||||
// We'll perform a multi-GPU copy for all submitted buffers, we need
|
// We'll perform a multi-GPU copy for all submitted buffers, we need
|
||||||
// to be able to texture from them
|
// to be able to texture from them
|
||||||
struct wlr_renderer *renderer = drm->renderer.wlr_rend;
|
struct wlr_renderer *renderer = drm->renderer.wlr_rend;
|
||||||
|
@ -258,6 +251,12 @@ struct wlr_backend *wlr_drm_backend_create(struct wl_display *display,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
struct wlr_renderer *renderer = wlr_backend_get_renderer(&drm->backend);
|
||||||
|
struct wlr_allocator *allocator = backend_get_allocator(&drm->backend);
|
||||||
|
if (renderer == NULL || allocator == NULL) {
|
||||||
|
goto error_event;
|
||||||
|
}
|
||||||
|
|
||||||
drm->session_destroy.notify = handle_session_destroy;
|
drm->session_destroy.notify = handle_session_destroy;
|
||||||
wl_signal_add(&session->events.destroy, &drm->session_destroy);
|
wl_signal_add(&session->events.destroy, &drm->session_destroy);
|
||||||
|
|
||||||
|
|
|
@ -28,6 +28,7 @@ struct wlr_backend {
|
||||||
|
|
||||||
// Private state
|
// Private state
|
||||||
|
|
||||||
|
bool has_own_renderer;
|
||||||
struct wlr_renderer *renderer;
|
struct wlr_renderer *renderer;
|
||||||
struct wlr_allocator *allocator;
|
struct wlr_allocator *allocator;
|
||||||
};
|
};
|
||||||
|
|
Loading…
Reference in a new issue