Commit 6f78991f authored by Ben Skeggs's avatar Ben Skeggs
Browse files

drm/nouveau/kms/nv50-: create primary plane before overlay planes



zpos normalisation uses plane id to determine ordering for duplicate zpos
values, and we likely want to keep primary plane on the bottom here.

Signed-off-by: default avatarBen Skeggs <bskeggs@redhat.com>
parent a4ec8489
Loading
Loading
Loading
Loading
+7 −7
Original line number Diff line number Diff line
@@ -480,7 +480,7 @@ nv50_head_create(struct drm_device *dev, int index)
	struct nouveau_drm *drm = nouveau_drm(dev);
	struct nv50_disp *disp = nv50_disp(dev);
	struct nv50_head *head;
	struct nv50_wndw *curs, *wndw;
	struct nv50_wndw *base, *ovly, *curs;
	struct drm_crtc *crtc;
	int ret;

@@ -492,13 +492,13 @@ nv50_head_create(struct drm_device *dev, int index)
	head->base.index = index;

	if (disp->disp->object.oclass < GV100_DISP) {
		ret = nv50_ovly_new(drm, head->base.index, &wndw);
		ret = nv50_base_new(drm, head->base.index, &wndw);
		ret = nv50_base_new(drm, head->base.index, &base);
		ret = nv50_ovly_new(drm, head->base.index, &ovly);
	} else {
		ret = nv50_wndw_new(drm, DRM_PLANE_TYPE_OVERLAY,
				    head->base.index * 2 + 1, &wndw);
		ret = nv50_wndw_new(drm, DRM_PLANE_TYPE_PRIMARY,
				    head->base.index * 2 + 0, &wndw);
				    head->base.index * 2 + 0, &base);
		ret = nv50_wndw_new(drm, DRM_PLANE_TYPE_OVERLAY,
				    head->base.index * 2 + 1, &ovly);
	}
	if (ret == 0)
		ret = nv50_curs_new(drm, head->base.index, &curs);
@@ -508,7 +508,7 @@ nv50_head_create(struct drm_device *dev, int index)
	}

	crtc = &head->base.base;
	drm_crtc_init_with_planes(dev, crtc, &wndw->plane, &curs->plane,
	drm_crtc_init_with_planes(dev, crtc, &base->plane, &curs->plane,
				  &nv50_head_func, "head-%d", head->base.index);
	drm_crtc_helper_add(crtc, &nv50_head_help);
	drm_mode_crtc_set_gamma_size(crtc, 256);