Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit d7117e0d authored by Ben Skeggs's avatar Ben Skeggs
Browse files

drm/nv50: enable page flipping



Signed-off-by: default avatarBen Skeggs <bskeggs@redhat.com>
parent 1d3fac0c
Loading
Loading
Loading
Loading
+10 −1
Original line number Diff line number Diff line
@@ -297,6 +297,14 @@ nouveau_crtc_page_flip(struct drm_crtc *crtc, struct drm_framebuffer *fb,
	mutex_lock(&chan->mutex);

	/* Emit a page flip */
	if (dev_priv->card_type >= NV_50) {
		ret = nv50_display_flip_next(crtc, fb, chan);
		if (ret) {
			nouveau_channel_put(&chan);
			goto fail_unreserve;
		}
	}

	ret = nouveau_page_flip_emit(chan, old_bo, new_bo, s, &fence);
	nouveau_channel_put(&chan);
	if (ret)
@@ -347,6 +355,7 @@ nouveau_finish_page_flip(struct nouveau_channel *chan,
	}

	list_del(&s->head);
	if (ps)
		*ps = *s;
	kfree(s);

+1 −1
Original line number Diff line number Diff line
@@ -1118,7 +1118,7 @@ int nouveau_ioctl_getparam(struct drm_device *dev, void *data,
		getparam->value = 1;
		break;
	case NOUVEAU_GETPARAM_HAS_PAGEFLIP:
		getparam->value = (dev_priv->card_type < NV_50);
		getparam->value = (dev_priv->card_type < NV_C0) ? 1 : 0;
		break;
	case NOUVEAU_GETPARAM_GRAPH_UNITS:
		/* NV40 and NV50 versions are quite different, but register
+1 −6
Original line number Diff line number Diff line
@@ -409,12 +409,7 @@ static int
nv50_graph_nvsw_mthd_page_flip(struct nouveau_channel *chan,
			       u32 class, u32 mthd, u32 data)
{
	struct nouveau_page_flip_state s;

	if (!nouveau_finish_page_flip(chan, &s)) {
		/* XXX - Do something here */
	}

	nouveau_finish_page_flip(chan, NULL);
	return 0;
}