[Mesa-dev] [PATCH v3 08/22] egl/tizen: add support of dri2_loader (v2)

Rob Herring robh at kernel.org
Wed Oct 4 14:28:37 UTC 2017


On Wed, Oct 4, 2017 at 1:50 AM, Gwan-gyeong Mun <elongbug at gmail.com> wrote:
> It adds support of dri2_loader to egl dri2 tizen backend.
>   - referenced a basic buffer flow and management implementation from android.
>
> And it implements a query buffer age extesion for tizen and turn on
> swap_buffers_with_damage extension.
>   - it add color buffer related member variables to dri_egl_surface for a
>     management of color buffers.
>
> v2: Fixes from Emil's review:
>    a) Remove a temporary variable and return directly on get_format_bpp()
>    b) Remove unneeded compiler pragma
>    c) Follow coding style
>    d) Rename get_pitch() to get_stride() for using of consistent naming
>    e) Remove mis-referencing from android implementation on treatment of buffer
>       age.
>       reference: https://lists.freedesktop.org/archives/mesa-dev/2017-June/158409.html
>    f) Use dri2_egl_surface_free_outdated_buffers_and_update_size() helper
>    g) Use dri2_egl_surface_record_buffers_and_update_back_buffer() helper
>    h) Use add dri2_egl_surface_update_buffer_age() helper
>    i) Use env_var_as_boolean for hw_accel variable on dri2_initialize_tizen()
>    j) Remove getting of the device name and opening of the device node on dri2_initialize_tizen()
>       And add duplicating of tbm_bufmgr_fd. As tbm_bufmgr_fd is managed by tbm_bufmgr,
>       if mesa use this fd then we should duplicate it.
>    k) Add comments why we can not drop the dri2 codepath on dri2_initialize_tizen()
>       As some kernels ported for tizen don't support render node feature yet,
>       currently we cannot drop the dri2 codepath.
>
> Signed-off-by: Mun Gwan-gyeong <elongbug at gmail.com>
> ---
>  src/egl/drivers/dri2/egl_dri2.h       |   9 ++
>  src/egl/drivers/dri2/platform_tizen.c | 257 ++++++++++++++++++++++++++++++++--
>  2 files changed, 252 insertions(+), 14 deletions(-)
>
> diff --git a/src/egl/drivers/dri2/egl_dri2.h b/src/egl/drivers/dri2/egl_dri2.h
> index 6f9d936ca5..7d047bf5dd 100644
> --- a/src/egl/drivers/dri2/egl_dri2.h
> +++ b/src/egl/drivers/dri2/egl_dri2.h
> @@ -340,6 +340,15 @@ struct dri2_egl_surface
>     tpl_surface_t         *tpl_surface;
>     tbm_surface_h          tbm_surface;
>     tbm_format             tbm_format;
> +
> +   /* Used to record all the tbm_surface created by tpl_surface and their ages.
> +    * Usually Tizen uses at most triple buffers in tpl_surface (tbm_surface_queue)
> +    * so hardcode the number of color_buffers to 3.
> +    */
> +   struct {
> +      tbm_surface_h       buffer;
> +      int                 age;
> +   } color_buffers[3], *back;

dri2_egl_surface is quite the mess of ifdefery.

So now we have 3 instances of color_buffer and *back. This struct
really needs some refactoring to separate out the common and platform
specific bits. I'm not saying it has to be done as part of this series
though.

Rob


More information about the mesa-dev mailing list