[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