[Xf86-video-armsoc] [PATCH 1/1] Added HWCURSOR_API_NONE to the platform specific hwcursor api.

Daniel Kurtz djkurtz at chromium.org
Thu Feb 20 11:07:51 PST 2014


On Fri, Feb 21, 2014 at 1:54 AM,  <armsoc-bugs at arm.com> wrote:
> From: Dave Barnish <dave.barnish at arm.com>
>

Hi Dave,

So, below please find some review comments for this patch... but it
looks like it already made it into the repository.
I think we need to work on the process a bit so patches are sent to
the list first, and only later committed.
At least, that is what I'm used to for other open source projects.

> New option allows a software-only cursor to be specified
>
> Change-Id: Ice4bd122ab6b24146d50dcd497a9a70831fc1274
> ---
>  src/drmmode_display.c |   16 +++++++++++-----
>  src/drmmode_driver.h  |   18 ++++++++++++------
>  2 files changed, 23 insertions(+), 11 deletions(-)
>
> diff --git a/src/drmmode_display.c b/src/drmmode_display.c
> index f7b0dc6..b9e59f1 100644
> --- a/src/drmmode_display.c
> +++ b/src/drmmode_display.c
> @@ -424,7 +424,7 @@ drmmode_hide_cursor(xf86CrtcPtr crtc)
>  /*
>   * The argument "update_image" controls whether the cursor image needs
>   * to be updated by the HW or not. This is ignored by HWCURSOR_API_PLANE
> - * which doesn't allow changing the cursor possition without updating
> + * which doesn't allow changing the cursor position without updating
>   * the image too.
>   */
>  static void
> @@ -512,7 +512,7 @@ drmmode_set_cursor_position(xf86CrtcPtr crtc, int x, int y)
>         cursor->y = y;
>
>         /*
> -        * Show the cursor at a different possition without updating the image
> +        * Show the cursor at a different position without updating the image
>          * when possible (HWCURSOR_API_PLANE doesn't have a way to update
>          * cursor position without updating the image too).
>          */
> @@ -769,10 +769,16 @@ Bool drmmode_cursor_init(ScreenPtr pScreen)
>
>         INFO_MSG("HW cursor init()");
>
> -       if (pARMSOC->drmmode_interface->cursor_api == HWCURSOR_API_PLANE)
> +       switch (pARMSOC->drmmode_interface->cursor_api) {
> +       case HWCURSOR_API_PLANE:
>                 return drmmode_cursor_init_plane(pScreen);
> -       else /* HWCURSOR_API_STANDARD */
> +       case HWCURSOR_API_STANDARD:
>                 return drmmode_cursor_init_standard(pScreen);
> +       case HWCURSOR_API_NONE:
> +               return FALSE;
> +       default:
> +               assert(0);

Print error message, set pARMSOC->drmmode_interface->cursor_api =
HWCURSOR_API_NONE, and return FALSE to fall back to SW cursor.

> +       }
>  }
>
>  void drmmode_cursor_fini(ScreenPtr pScreen)
> @@ -1573,7 +1579,7 @@ Bool drmmode_pre_init(ScrnInfoPtr pScrn, int fd, int cpp)
>
>         TRACE_ENTER();
>
> -       drmmode = calloc(1, sizeof *drmmode);
> +       drmmode = calloc(1, sizeof(*drmmode));

This was correct as it was.

>         if (!drmmode)
>                 return FALSE;
>
> diff --git a/src/drmmode_driver.h b/src/drmmode_driver.h
> index 0e802b9..a46042c 100644
> --- a/src/drmmode_driver.h
> +++ b/src/drmmode_driver.h
> @@ -34,6 +34,7 @@
>  enum hwcursor_api {
>         HWCURSOR_API_PLANE = 0,
>         HWCURSOR_API_STANDARD = 1,
> +       HWCURSOR_API_NONE = 2

Any reason this enum needs explicit values?

>  };
>
>  struct drmmode_interface {
> @@ -53,16 +54,21 @@ struct drmmode_interface {
>          */
>         int cursor_padding;
>
> -       /* This specifies whether the DRM implements HW cursor support
> -        * using planes or the standard HW cursor API using drmModeSetCursor()
> -        * and drmModeMoveCursor().
> +       /* Specifies the hardware cursor api used by the DRM :
> +        *   HWCURSOR_API_PLANE    - Use planes.
> +        *   HWCURSOR_API_STANDARD - Use the standard API : drmModeSetCursor() & drmModeMoveCursor().
> +        *   HWCURSOR_API_NONE     - No hardware cursor - use a software cursor.
>          */
>         enum hwcursor_api cursor_api;
>
> -       /* (Optional) Initialize the given plane for use as a hardware cursor.
> +       /* (Optional) Initialize the hardware cursor plane.
>          *
> -        * This function should do any initialization necessary, for example
> -        * setting the z-order on the plane to appear above all other layers.
> +        * When cursor_api is HWCURSOR_API_PLANE, this function should do any
> +        * plane initialization necessary, for example setting the z-order on the
> +        * plane to appear above all other layers. If this function fails the driver
> +        * falls back to using a software cursor.
> +        *
> +        * If cursor_api is not HWCURSOR_API_PLANE this function should be omitted.
>          *
>          * @param drm_fd   The DRM device file
>          * @param plane_id The plane to initialize
> --
> 1.7.9.5
>
> _______________________________________________
> Xf86-video-armsoc mailing list
> Xf86-video-armsoc at lists.freedesktop.org
> http://lists.x.org/mailman/listinfo/xf86-video-armsoc


More information about the Xf86-video-armsoc mailing list