[Nouveau] [PATCH v3] drm/gpu/nouveau/dispnv50: Restore pushing of all data.
Karol Herbst
kherbst at redhat.com
Wed Jan 27 08:56:29 UTC 2021
Reviewed-by: Karol Herbst <kherbst at redhat.com>
On Thu, Jan 21, 2021 at 3:28 PM Bastian Beranek
<bastian.beischer at rwth-aachen.de> wrote:
>
> Commit f844eb485eb056ad3b67e49f95cbc6c685a73db4 introduced a regression for
> NV50, which lead to visual artifacts, tearing and eventual crashes.
>
> In the changes of f844eb485eb056ad3b67e49f95cbc6c685a73db4 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: Bastian Beranek <bastian.beischer at rwth-aachen.de>
> Fixes: f844eb485eb056ad3b67e49f95cbc6c685a73db4
> Link: https://gitlab.freedesktop.org/drm/nouveau/-/issues/14
> ---
> drivers/gpu/drm/nouveau/dispnv50/base507c.c | 6 +++++-
> drivers/gpu/drm/nouveau/dispnv50/base827c.c | 6 +++++-
> 2 files changed, 10 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/gpu/drm/nouveau/dispnv50/base507c.c b/drivers/gpu/drm/nouveau/dispnv50/base507c.c
> index 302d4e6fc52f..788db043a342 100644
> --- a/drivers/gpu/drm/nouveau/dispnv50/base507c.c
> +++ b/drivers/gpu/drm/nouveau/dispnv50/base507c.c
> @@ -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);
> diff --git a/drivers/gpu/drm/nouveau/dispnv50/base827c.c b/drivers/gpu/drm/nouveau/dispnv50/base827c.c
> index 18d34096f125..093d4ba6910e 100644
> --- a/drivers/gpu/drm/nouveau/dispnv50/base827c.c
> +++ b/drivers/gpu/drm/nouveau/dispnv50/base827c.c
> @@ -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,
> --
> 2.30.0
>
More information about the Nouveau
mailing list