[Mesa-dev] [PATCH v2] egl: return corresponding offset of EGLImage instead of 0.

Weng, Chuanbo chuanbo.weng at intel.com
Tue Aug 30 17:39:24 UTC 2016


Hi Emil,
	Thanks for your review!
	Please see my comments  and questions below.

-----Original Message-----
From: mesa-dev [mailto:mesa-dev-bounces at lists.freedesktop.org] On Behalf Of Emil Velikov
Sent: Tuesday, August 30, 2016 6:29 PM
To: Weng, Chuanbo <chuanbo.weng at intel.com>
Cc: ML mesa-dev <mesa-dev at lists.freedesktop.org>
Subject: Re: [Mesa-dev] [PATCH v2] egl: return corresponding offset of EGLImage instead of 0.

On 25 August 2016 at 18:50, Chuanbo Weng <chuanbo.weng at intel.com> wrote:
> The offset should not always be 0. For example, if EGLImage is created 
> from a 2D texture with EGL_GL_TEXTURE_LEVEL=1, then the offset should 
> be the actual start of miplevel 1 in drm bo.
>
> v2: version bump on the EGL image interface and add gallium pieces.
>
> Signed-off-by: Chuanbo Weng <chuanbo.weng at intel.com>
> ---
>  include/GL/internal/dri_interface.h      | 4 +++-
>  src/egl/drivers/dri2/egl_dri2.c          | 3 ++-
>  src/gallium/state_trackers/dri/dri2.c    | 8 +++++++-
>  src/gbm/backends/dri/gbm_dri.c           | 5 +++--
>  src/mesa/drivers/dri/i965/intel_screen.c | 9 +++++++--
I'm likely the only one here, but I'd suggest splitting things up:
- introduce flag - include/
- wire up loaders, one at a time - src/{egl,gbm}
- implement in driver, one at a time - src/{mesa,gallium}
[****Chuanbo****] I'm not sure whether I understand correctly. Do you mean that I should split this patch into
three patches as you suggested?


> --- a/src/egl/drivers/dri2/egl_dri2.c
> +++ b/src/egl/drivers/dri2/egl_dri2.c
> @@ -2257,7 +2257,8 @@ dri2_export_dma_buf_image_mesa(_EGLDriver *drv, _EGLDisplay *disp, _EGLImage *im
>                                   __DRI_IMAGE_ATTRIB_STRIDE, strides);
>
>     if (offsets)
> -      offsets[0] = 0;
> +      dri2_dpy->image->queryImage(dri2_img->dri_image,
> +                                 __DRI_IMAGE_ATTRIB_OFFSET, offsets);
>
Grr... nope. Only overwrite the offsets[0] value if queryImage() succeeds.

>     return EGL_TRUE;
>  }
> diff --git a/src/gallium/state_trackers/dri/dri2.c 
> b/src/gallium/state_trackers/dri/dri2.c
> index 9803b0e..a7f20da 100644
> --- a/src/gallium/state_trackers/dri/dri2.c
> +++ b/src/gallium/state_trackers/dri/dri2.c
> @@ -1004,6 +1004,12 @@ dri2_query_image(__DRIimage *image, int attrib, int *value)
>     case __DRI_IMAGE_ATTRIB_NUM_PLANES:
>        *value = 1;
>        return GL_TRUE;
> +   case __DRI_IMAGE_ATTRIB_OFFSET:
> +      /*TODO: We just set the offset to 0 here. It can be set
> +       * to corresponding value if someone has the requirement.
> +       */
> +      *value = 0;
> +      return GL_TRUE;
Either implement this properly or let the driver return false.

> @@ -1313,7 +1319,7 @@ dri2_get_capabilities(__DRIscreen *_screen)
>
>  /* The extension is modified during runtime if DRI_PRIME is detected 
> */  static __DRIimageExtension dri2ImageExtension = {
> -    .base = { __DRI_IMAGE, 12 },
> +    .base = { __DRI_IMAGE, 13 },
>
As above - either implement and bump or leave as-is. The former would be preferable, but not required.


> -   if (!dri->image || dri->image->base.version < 12) {
> +   if (!dri->image || dri->image->base.version < 12 || 
> + !dri->image->mapImage) {
Hmm we want these NULL checks split out and ported to older loader(s).
Otherwise we will get NULL deref when using older loader + newer dri module(s).
[****Chuanbo****] So we just need to leave it as original?


> --- a/src/mesa/drivers/dri/i965/intel_screen.c
> +++ b/src/mesa/drivers/dri/i965/intel_screen.c

> +    .mapImage                           = NULL,
> +    .unmapImage                         = NULL,
Consider looking into/implementing the map/unmap interfaces. IIRC there was an implementation (slightly* different one) a while back [1].
You really want this if you're thinking for Android and/or CrOS ARC + a better gralloc [2].
[****Chuanbo****] Is it required to implement map/unmap interfaces? Since I'm not interested in Android and/or CrOS ARC + a better gralloc.
And I find that blitImage and getCapabilities are not implemented when bump verison. So I don’t think it's required to implement map/unmap
interface. 

Thanks
Emil

[1] https://lists.freedesktop.org/archives/mesa-dev/2014-April/057163.html
[2]
https://github.com/robherring/gbm_gralloc
https://lists.freedesktop.org/archives/mesa-dev/2016-May/115581.html
_______________________________________________
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