Merge pull request #1286 from emersion/drm-no-crtc
backend/drm: better handle GPUs without CRTCs
This commit is contained in:
commit
fb5572db5a
|
@ -156,6 +156,11 @@ bool init_drm_resources(struct wlr_drm_backend *drm) {
|
|||
wlr_log(WLR_INFO, "Found %d DRM CRTCs", res->count_crtcs);
|
||||
|
||||
drm->num_crtcs = res->count_crtcs;
|
||||
if (drm->num_crtcs == 0) {
|
||||
drmModeFreeResources(res);
|
||||
return true;
|
||||
}
|
||||
|
||||
drm->crtcs = calloc(drm->num_crtcs, sizeof(drm->crtcs[0]));
|
||||
if (!drm->crtcs) {
|
||||
wlr_log_errno(WLR_ERROR, "Allocation failed");
|
||||
|
@ -433,9 +438,9 @@ static void realloc_planes(struct wlr_drm_backend *drm, const uint32_t *crtc_in,
|
|||
continue;
|
||||
}
|
||||
|
||||
uint32_t possible[drm->num_type_planes[type]];
|
||||
uint32_t crtc[drm->num_crtcs];
|
||||
uint32_t crtc_res[drm->num_crtcs];
|
||||
uint32_t possible[drm->num_type_planes[type] + 1];
|
||||
uint32_t crtc[drm->num_crtcs + 1];
|
||||
uint32_t crtc_res[drm->num_crtcs + 1];
|
||||
|
||||
for (size_t i = 0; i < drm->num_type_planes[type]; ++i) {
|
||||
possible[i] = drm->type_planes[type][i].possible_crtcs;
|
||||
|
@ -1160,7 +1165,7 @@ void scan_drm_connectors(struct wlr_drm_backend *drm) {
|
|||
}
|
||||
}
|
||||
|
||||
bool changed_outputs[wl_list_length(&drm->outputs)];
|
||||
bool changed_outputs[wl_list_length(&drm->outputs) + 1];
|
||||
memset(changed_outputs, false, sizeof(changed_outputs));
|
||||
for (size_t i = 0; i < new_outputs_len; ++i) {
|
||||
struct wlr_drm_connector *conn = new_outputs[i];
|
||||
|
|
Loading…
Reference in New Issue