On 9 June 2017 at 01:27, gurchetansi...@chromium.org
<gurchetansi...@chromium.org> wrote:
> From: Gurchetan Singh <gurchetansi...@chromium.org>
>
> We can stop exposing functions needed to initialize the image
> extension by creating a helper function.
> ---
>  src/gallium/state_trackers/dri/dri2.c           | 33 
> ++-----------------------
>  src/gallium/state_trackers/dri/dri_extensions.c | 33 
> +++++++++++++++++++++++--
>  src/gallium/state_trackers/dri/dri_extensions.h | 17 ++-----------
>  3 files changed, 35 insertions(+), 48 deletions(-)
>
> diff --git a/src/gallium/state_trackers/dri/dri2.c 
> b/src/gallium/state_trackers/dri/dri2.c
> index b68d93bdaa..45b20eb1e4 100644
> --- a/src/gallium/state_trackers/dri/dri2.c
> +++ b/src/gallium/state_trackers/dri/dri2.c
> @@ -644,21 +644,6 @@ dri2_update_tex_buffer(struct dri_drawable *drawable,
>     /* no-op */
>  }
>
> -static __DRIimage *
> -dri2_lookup_egl_image(struct dri_screen *screen, void *handle)
> -{
> -   const __DRIimageLookupExtension *loader = screen->sPriv->dri2.image;
> -   __DRIimage *img;
> -
> -   if (!loader->lookupEGLImage)
> -      return NULL;
> -
> -   img = loader->lookupEGLImage(screen->sPriv,
> -                               handle, screen->sPriv->loaderPrivate);
> -
> -   return img;
> -}
> -
>  static const __DRIrobustnessExtension dri2Robustness = {
>     .base = { __DRI2_ROBUSTNESS, 1 }
>  };
> @@ -1057,13 +1042,7 @@ dri2_init_screen(__DRIscreen * sPriv)
>     }
>
>     if (dmabuf_ret && dmabuf_ret->val.val_bool) {
> -      uint64_t cap;
> -
> -      if (drmGetCap(sPriv->fd, DRM_CAP_PRIME, &cap) == 0 &&
> -          (cap & DRM_PRIME_CAP_IMPORT)) {
> -         dri2ImageExtension.createImageFromFds = dri2_from_fds;
> -         dri2ImageExtension.createImageFromDmaBufs = dri2_from_dma_bufs;
> -      }
> +      dri2_init_image_extension(screen);
>     }
>
>     if (pscreen->get_param(pscreen, PIPE_CAP_DEVICE_RESET_STATUS_QUERY)) {
> @@ -1080,7 +1059,6 @@ dri2_init_screen(__DRIscreen * sPriv)
>     screen->can_share_buffer = true;
>     screen->auto_fake_front = dri_with_format(sPriv);
>     screen->broken_invalidate = !sPriv->dri2.useInvalidate;
> -   screen->lookup_egl_image = dri2_lookup_egl_image;
>
>     return configs;
>
> @@ -1110,7 +1088,6 @@ dri_kms_init_screen(__DRIscreen * sPriv)
>     const __DRIconfig **configs;
>     struct dri_screen *screen;
>     struct pipe_screen *pscreen = NULL;
> -   uint64_t cap;
>     int fd;
>
>     screen = CALLOC_STRUCT(dri_screen);
> @@ -1131,12 +1108,6 @@ dri_kms_init_screen(__DRIscreen * sPriv)
>     if (!pscreen)
>         goto release_pipe;
>
> -   if (drmGetCap(sPriv->fd, DRM_CAP_PRIME, &cap) == 0 &&
> -          (cap & DRM_PRIME_CAP_IMPORT)) {
> -      dri2ImageExtension.createImageFromFds = dri2_from_fds;
> -      dri2ImageExtension.createImageFromDmaBufs = dri2_from_dma_bufs;
> -   }
> -
>     sPriv->extensions = dri_screen_extensions;
>
>     configs = dri_init_screen_helper(screen, pscreen, "swrast");
> @@ -1146,7 +1117,7 @@ dri_kms_init_screen(__DRIscreen * sPriv)
>     screen->can_share_buffer = false;
>     screen->auto_fake_front = dri_with_format(sPriv);
>     screen->broken_invalidate = !sPriv->dri2.useInvalidate;
> -   screen->lookup_egl_image = dri2_lookup_egl_image;
> +   dri2_init_image_extension(screen);
>
Having a helper like this and overall deduplicating
dri2_init_screen+dri_kms_init_screen is a worthy goal.
That should stay in dri2.c though.

No libdrm specifics [be that headers/libraries] or even the plain
ioctl are allowed in drisw.c aka swrast_dri.so.

Thanks
Emil
_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to