Not an enormous fan of what you had to do in atomic_set_planes, but
OTOH I don't see a much better way to do it either.

Reviewed-by: Ilia Mirkin <imir...@alum.mit.edu>

On Tue, Mar 17, 2020 at 8:11 AM Rohit Visavalia
<rohit.visava...@xilinx.com> wrote:
>
> Current implementation shows error as "failed to set gamma: Function
> no implemented" if platform specific drm has no gamma property implemented
>
> Signed-off-by: Rohit Visavalia <rohit.visava...@xilinx.com>
> ---
>  tests/modetest/modetest.c | 21 ++++++++++++++++-----
>  1 file changed, 16 insertions(+), 5 deletions(-)
>
> diff --git a/tests/modetest/modetest.c b/tests/modetest/modetest.c
> index b907ab3..23ee73d 100644
> --- a/tests/modetest/modetest.c
> +++ b/tests/modetest/modetest.c
> @@ -1328,14 +1328,24 @@ static int set_plane(struct device *dev, struct 
> plane_arg *p)
>  static void atomic_set_planes(struct device *dev, struct plane_arg *p,
>                               unsigned int count, bool update)
>  {
> -       unsigned int i, pattern = primary_fill;
> +       unsigned int i, j, pattern = primary_fill;
> +       struct crtc *crtc = NULL;
>
>         /* set up planes */
>         for (i = 0; i < count; i++) {
> -               if (i > 0)
> +               if (i > 0) {
>                         pattern = secondary_fill;
> -               else
> -                       set_gamma(dev, p[i].crtc_id, p[i].fourcc);
> +               } else {
> +                       for (j = 0; j < dev->resources->res->count_crtcs; 
> j++) {
> +                               if (p[i].crtc_id ==
> +                                   dev->resources->res->crtcs[j]) {
> +                                       crtc = &dev->resources->crtcs[j];
> +                                       break;
> +                               }
> +                       }
> +                       if (crtc->crtc->gamma_size)
> +                               set_gamma(dev, p[i].crtc_id, p[i].fourcc);
> +               }
>
>                 if (atomic_set_plane(dev, &p[i], pattern, update))
>                         return;
> @@ -1522,7 +1532,8 @@ static void set_mode(struct device *dev, struct 
> pipe_arg *pipes, unsigned int co
>                         return;
>                 }
>
> -               set_gamma(dev, pipe->crtc->crtc->crtc_id, pipe->fourcc);
> +               if (pipe->crtc->crtc->gamma_size)
> +                       set_gamma(dev, pipe->crtc->crtc->crtc_id, 
> pipe->fourcc);
>         }
>  }
>
> --
> 2.7.4
>
> This email and any attachments are intended for the sole use of the named 
> recipient(s) and contain(s) confidential information that may be proprietary, 
> privileged or copyrighted under applicable law. If you are not the intended 
> recipient, do not read, copy, or forward this email message or any 
> attachments. Delete this email message and any attachments immediately.
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

Reply via email to