[Mesa-dev] [PATCH 01/10] gallium/winsys/drm: add offset to struct winsys_handle

Marek Olšák maraeo at gmail.com
Wed Mar 9 15:37:48 UTC 2016


For patches 1-4:

Reviewed-by: Marek Olšák <marek.olsak at amd.com>

Marek

On Tue, Mar 8, 2016 at 1:21 PM, Christian König <deathsimple at vodafone.de> wrote:
> From: Christian König <christian.koenig at amd.com>
>
> We are going to need this for EGL_EXT_image_dma_buf_import.
>
> Signed-off-by: Christian König <christian.koenig at amd.com>
> ---
>  src/gallium/include/state_tracker/drm_driver.h    | 5 +++++
>  src/gallium/state_trackers/dri/dri2.c             | 2 ++
>  src/gallium/winsys/amdgpu/drm/amdgpu_bo.c         | 1 +
>  src/gallium/winsys/radeon/drm/radeon_drm_bo.c     | 1 +
>  src/gallium/winsys/svga/drm/vmw_screen_dri.c      | 1 +
>  src/gallium/winsys/sw/kms-dri/kms_dri_sw_winsys.c | 3 +++
>  6 files changed, 13 insertions(+)
>
> diff --git a/src/gallium/include/state_tracker/drm_driver.h b/src/gallium/include/state_tracker/drm_driver.h
> index 959a762..d81da89 100644
> --- a/src/gallium/include/state_tracker/drm_driver.h
> +++ b/src/gallium/include/state_tracker/drm_driver.h
> @@ -35,6 +35,11 @@ struct winsys_handle
>      * Output for texture_get_handle.
>      */
>     unsigned stride;
> +   /**
> +    * Input to texture_from_handle.
> +    * Output for texture_get_handle.
> +    */
> +   unsigned offset;
>  };
>
>
> diff --git a/src/gallium/state_trackers/dri/dri2.c b/src/gallium/state_trackers/dri/dri2.c
> index a11a6cb..4349775 100644
> --- a/src/gallium/state_trackers/dri/dri2.c
> +++ b/src/gallium/state_trackers/dri/dri2.c
> @@ -533,6 +533,7 @@ dri2_allocate_textures(struct dri_context *ctx,
>           templ.bind = bind;
>           whandle.handle = buf->name;
>           whandle.stride = buf->pitch;
> +         whandle.offset = 0;
>           if (screen->can_share_buffer)
>              whandle.type = DRM_API_HANDLE_TYPE_SHARED;
>           else
> @@ -754,6 +755,7 @@ dri2_create_image_from_winsys(__DRIscreen *_screen,
>     templ.array_size = 1;
>
>     whandle->stride = pitch * util_format_get_blocksize(pf);
> +   whandle->offset = 0;
>
>     img->texture = screen->base.screen->resource_from_handle(screen->base.screen,
>           &templ, whandle);
> diff --git a/src/gallium/winsys/amdgpu/drm/amdgpu_bo.c b/src/gallium/winsys/amdgpu/drm/amdgpu_bo.c
> index 59a801b..41996f3 100644
> --- a/src/gallium/winsys/amdgpu/drm/amdgpu_bo.c
> +++ b/src/gallium/winsys/amdgpu/drm/amdgpu_bo.c
> @@ -650,6 +650,7 @@ static boolean amdgpu_bo_get_handle(struct pb_buffer *buffer,
>        return FALSE;
>
>     whandle->stride = stride;
> +   whandle->offset = 0;
>     bo->is_shared = true;
>     return TRUE;
>  }
> diff --git a/src/gallium/winsys/radeon/drm/radeon_drm_bo.c b/src/gallium/winsys/radeon/drm/radeon_drm_bo.c
> index 7e9ed0c..3df0a35 100644
> --- a/src/gallium/winsys/radeon/drm/radeon_drm_bo.c
> +++ b/src/gallium/winsys/radeon/drm/radeon_drm_bo.c
> @@ -1049,6 +1049,7 @@ static boolean radeon_winsys_bo_get_handle(struct pb_buffer *buffer,
>      }
>
>      whandle->stride = stride;
> +    whandle->offset = 0;
>      return TRUE;
>  }
>
> diff --git a/src/gallium/winsys/svga/drm/vmw_screen_dri.c b/src/gallium/winsys/svga/drm/vmw_screen_dri.c
> index 01bb0e2..baa22a9 100644
> --- a/src/gallium/winsys/svga/drm/vmw_screen_dri.c
> +++ b/src/gallium/winsys/svga/drm/vmw_screen_dri.c
> @@ -357,6 +357,7 @@ vmw_drm_surface_get_handle(struct svga_winsys_screen *sws,
>      vsrf = vmw_svga_winsys_surface(surface);
>      whandle->handle = vsrf->sid;
>      whandle->stride = stride;
> +    whandle->offset = 0;
>
>      switch (whandle->type) {
>      case DRM_API_HANDLE_TYPE_SHARED:
> diff --git a/src/gallium/winsys/sw/kms-dri/kms_dri_sw_winsys.c b/src/gallium/winsys/sw/kms-dri/kms_dri_sw_winsys.c
> index 1e85971..9aaee88 100644
> --- a/src/gallium/winsys/sw/kms-dri/kms_dri_sw_winsys.c
> +++ b/src/gallium/winsys/sw/kms-dri/kms_dri_sw_winsys.c
> @@ -309,17 +309,20 @@ kms_sw_displaytarget_get_handle(struct sw_winsys *winsys,
>     case DRM_API_HANDLE_TYPE_KMS:
>        whandle->handle = kms_sw_dt->handle;
>        whandle->stride = kms_sw_dt->stride;
> +      whandle->offset = 0;
>        return TRUE;
>     case DRM_API_HANDLE_TYPE_FD:
>        if (!drmPrimeHandleToFD(kms_sw->fd, kms_sw_dt->handle,
>                               DRM_CLOEXEC, (int*)&whandle->handle)) {
>           whandle->stride = kms_sw_dt->stride;
> +         whandle->offset = 0;
>           return TRUE;
>        }
>        /* fallthrough */
>     default:
>        whandle->handle = 0;
>        whandle->stride = 0;
> +      whandle->offset = 0;
>        return FALSE;
>     }
>  }
> --
> 2.5.0
>
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/mesa-dev


More information about the mesa-dev mailing list