mirror of
https://github.com/hyprwm/wlroots-hyprland.git
synced 2024-11-22 12:55:58 +01:00
backend/drm: remove wlr_drm_crtc.legacy_crtc
We only need it for one thing: gamma size. Moreover, some bits in the drmModeCrtc will become out-of-date, for instance the current mode, so let's avoid caching the whole struct and only keep what we know won't change.
This commit is contained in:
parent
8b18352318
commit
8b8921d57b
2 changed files with 11 additions and 5 deletions
|
@ -267,7 +267,15 @@ bool init_drm_resources(struct wlr_drm_backend *drm) {
|
||||||
for (size_t i = 0; i < drm->num_crtcs; ++i) {
|
for (size_t i = 0; i < drm->num_crtcs; ++i) {
|
||||||
struct wlr_drm_crtc *crtc = &drm->crtcs[i];
|
struct wlr_drm_crtc *crtc = &drm->crtcs[i];
|
||||||
crtc->id = res->crtcs[i];
|
crtc->id = res->crtcs[i];
|
||||||
crtc->legacy_crtc = drmModeGetCrtc(drm->fd, crtc->id);
|
|
||||||
|
drmModeCrtc *drm_crtc = drmModeGetCrtc(drm->fd, crtc->id);
|
||||||
|
if (drm_crtc == NULL) {
|
||||||
|
wlr_log_errno(WLR_ERROR, "drmModeGetCrtc failed");
|
||||||
|
goto error_res;
|
||||||
|
}
|
||||||
|
crtc->legacy_gamma_size = drm_crtc->gamma_size;
|
||||||
|
drmModeFreeCrtc(drm_crtc);
|
||||||
|
|
||||||
get_drm_crtc_props(drm->fd, crtc->id, &crtc->props);
|
get_drm_crtc_props(drm->fd, crtc->id, &crtc->props);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -294,8 +302,6 @@ void finish_drm_resources(struct wlr_drm_backend *drm) {
|
||||||
for (size_t i = 0; i < drm->num_crtcs; ++i) {
|
for (size_t i = 0; i < drm->num_crtcs; ++i) {
|
||||||
struct wlr_drm_crtc *crtc = &drm->crtcs[i];
|
struct wlr_drm_crtc *crtc = &drm->crtcs[i];
|
||||||
|
|
||||||
drmModeFreeCrtc(crtc->legacy_crtc);
|
|
||||||
|
|
||||||
if (crtc->mode_id) {
|
if (crtc->mode_id) {
|
||||||
drmModeDestroyPropertyBlob(drm->fd, crtc->mode_id);
|
drmModeDestroyPropertyBlob(drm->fd, crtc->mode_id);
|
||||||
}
|
}
|
||||||
|
@ -669,7 +675,7 @@ static bool drm_connector_commit(struct wlr_output *output,
|
||||||
size_t drm_crtc_get_gamma_lut_size(struct wlr_drm_backend *drm,
|
size_t drm_crtc_get_gamma_lut_size(struct wlr_drm_backend *drm,
|
||||||
struct wlr_drm_crtc *crtc) {
|
struct wlr_drm_crtc *crtc) {
|
||||||
if (crtc->props.gamma_lut_size == 0 || drm->iface == &legacy_iface) {
|
if (crtc->props.gamma_lut_size == 0 || drm->iface == &legacy_iface) {
|
||||||
return (size_t)crtc->legacy_crtc->gamma_size;
|
return (size_t)crtc->legacy_gamma_size;
|
||||||
}
|
}
|
||||||
|
|
||||||
uint64_t gamma_lut_size;
|
uint64_t gamma_lut_size;
|
||||||
|
|
|
@ -41,7 +41,7 @@ struct wlr_drm_crtc {
|
||||||
uint32_t gamma_lut;
|
uint32_t gamma_lut;
|
||||||
|
|
||||||
// Legacy only
|
// Legacy only
|
||||||
drmModeCrtc *legacy_crtc;
|
int legacy_gamma_size;
|
||||||
|
|
||||||
struct wlr_drm_plane *primary;
|
struct wlr_drm_plane *primary;
|
||||||
struct wlr_drm_plane *cursor;
|
struct wlr_drm_plane *cursor;
|
||||||
|
|
Loading…
Reference in a new issue