Commit fd55b61e authored by Bastian Beranek's avatar Bastian Beranek Committed by Ben Skeggs
Browse files

drm/nouveau/dispnv50: Restore pushing of all data.



Commit f844eb48 introduced a regression for
NV50, which lead to visual artifacts, tearing and eventual crashes.

In the changes of f844eb48 only the first line
was correctly translated to the new NVIDIA header macros:

-		PUSH_NVSQ(push, NV827C, 0x0110, 0,
-					0x0114, 0);
+		PUSH_MTHD(push, NV827C, SET_PROCESSING,
+			  NVDEF(NV827C, SET_PROCESSING, USE_GAIN_OFS, DISABLE));

The lower part ("0x0114, 0") was probably omitted by accident.

This patch restores the push of the missing data and fixes the regression.

Signed-off-by: default avatarBastian Beranek <bastian.beischer@rwth-aachen.de>
Fixes: f844eb48 ("drm/nouveau/kms/nv50-: use NVIDIA's headers for wndw image_set()")
Link: https://gitlab.freedesktop.org/drm/nouveau/-/issues/14


Signed-off-by: default avatarBen Skeggs <bskeggs@redhat.com>
parent d5022970
Loading
Loading
Loading
Loading
+5 −1
Original line number Diff line number Diff line
@@ -88,7 +88,11 @@ base507c_image_set(struct nv50_wndw *wndw, struct nv50_wndw_atom *asyw)
			  NVVAL(NV507C, SET_CONVERSION, OFS, 0x64));
	} else {
		PUSH_MTHD(push, NV507C, SET_PROCESSING,
			  NVDEF(NV507C, SET_PROCESSING, USE_GAIN_OFS, DISABLE));
			  NVDEF(NV507C, SET_PROCESSING, USE_GAIN_OFS, DISABLE),

					SET_CONVERSION,
			  NVVAL(NV507C, SET_CONVERSION, GAIN, 0) |
			  NVVAL(NV507C, SET_CONVERSION, OFS, 0));
	}

	PUSH_MTHD(push, NV507C, SURFACE_SET_OFFSET(0, 0), asyw->image.offset[0] >> 8);
+5 −1
Original line number Diff line number Diff line
@@ -49,7 +49,11 @@ base827c_image_set(struct nv50_wndw *wndw, struct nv50_wndw_atom *asyw)
			  NVVAL(NV827C, SET_CONVERSION, OFS, 0x64));
	} else {
		PUSH_MTHD(push, NV827C, SET_PROCESSING,
			  NVDEF(NV827C, SET_PROCESSING, USE_GAIN_OFS, DISABLE));
			  NVDEF(NV827C, SET_PROCESSING, USE_GAIN_OFS, DISABLE),

					SET_CONVERSION,
			  NVVAL(NV827C, SET_CONVERSION, GAIN, 0) |
			  NVVAL(NV827C, SET_CONVERSION, OFS, 0));
	}

	PUSH_MTHD(push, NV827C, SURFACE_SET_OFFSET(0, 0), asyw->image.offset[0] >> 8,