[Mesa-dev] [PATCH 2/4] st/dri: consolidate image extension logic
Emil Velikov
emil.l.velikov at gmail.com
Wed Jun 28 15:12:41 UTC 2017
On 9 June 2017 at 01:27, gurchetansingh at chromium.org
<gurchetansingh at chromium.org> wrote:
> From: Gurchetan Singh <gurchetansingh at 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
More information about the mesa-dev
mailing list