On Tuesday, 2018-03-20 19:02:00 +0100, Christian Gmeiner wrote:
> Fixes rendering issues with mode rgba on etnaviv. I have applied
> the same change for nv12 variants but they are not supported on
> etnaviv.
> 
> Signed-off-by: Christian Gmeiner <christian.gmei...@gmail.com>

LGTM!
Reviewed-by: Eric Engestrom <eric.engest...@imgtec.com>

> ---
>  cube-tex.c | 32 ++++++++++++++++++++++++--------
>  1 file changed, 24 insertions(+), 8 deletions(-)
> 
> diff --git a/cube-tex.c b/cube-tex.c
> index 9e38ae8..dba19ff 100644
> --- a/cube-tex.c
> +++ b/cube-tex.c
> @@ -213,7 +213,7 @@ static const char *fragment_shader_source_2img =
>  
>  static const uint32_t texw = 512, texh = 512;
>  
> -static int get_fd_rgba(uint32_t *pstride)
> +static int get_fd_rgba(uint32_t *pstride, uint64_t *modifier)
>  {
>       struct gbm_bo *bo;
>       void *map_data = NULL;
> @@ -234,6 +234,7 @@ static int get_fd_rgba(uint32_t *pstride)
>       gbm_bo_unmap(bo, map_data);
>  
>       fd = gbm_bo_get_fd(bo);
> +     *modifier = gbm_bo_get_modifier(bo);
>  
>       /* we have the fd now, no longer need the bo: */
>       gbm_bo_destroy(bo);
> @@ -243,7 +244,7 @@ static int get_fd_rgba(uint32_t *pstride)
>       return fd;
>  }
>  
> -static int get_fd_y(uint32_t *pstride)
> +static int get_fd_y(uint32_t *pstride, uint64_t *modifier)
>  {
>       struct gbm_bo *bo;
>       void *map_data = NULL;
> @@ -264,6 +265,7 @@ static int get_fd_y(uint32_t *pstride)
>       gbm_bo_unmap(bo, map_data);
>  
>       fd = gbm_bo_get_fd(bo);
> +     *modifier = gbm_bo_get_modifier(bo);
>  
>       /* we have the fd now, no longer need the bo: */
>       gbm_bo_destroy(bo);
> @@ -273,7 +275,7 @@ static int get_fd_y(uint32_t *pstride)
>       return fd;
>  }
>  
> -static int get_fd_uv(uint32_t *pstride)
> +static int get_fd_uv(uint32_t *pstride, uint64_t *modifier)
>  {
>       struct gbm_bo *bo;
>       void *map_data = NULL;
> @@ -294,6 +296,7 @@ static int get_fd_uv(uint32_t *pstride)
>       gbm_bo_unmap(bo, map_data);
>  
>       fd = gbm_bo_get_fd(bo);
> +     *modifier = gbm_bo_get_modifier(bo);
>  
>       /* we have the fd now, no longer need the bo: */
>       gbm_bo_destroy(bo);
> @@ -306,7 +309,8 @@ static int get_fd_uv(uint32_t *pstride)
>  static int init_tex_rgba(void)
>  {
>       uint32_t stride;
> -     int fd = get_fd_rgba(&stride);
> +     uint64_t modifier;
> +     int fd = get_fd_rgba(&stride, &modifier);
>       const EGLint attr[] = {
>               EGL_WIDTH, texw,
>               EGL_HEIGHT, texh,
> @@ -314,6 +318,8 @@ static int init_tex_rgba(void)
>               EGL_DMA_BUF_PLANE0_FD_EXT, fd,
>               EGL_DMA_BUF_PLANE0_OFFSET_EXT, 0,
>               EGL_DMA_BUF_PLANE0_PITCH_EXT, stride,
> +             EGL_DMA_BUF_PLANE0_MODIFIER_LO_EXT, modifier & 0xFFFFFFFF,
> +             EGL_DMA_BUF_PLANE0_MODIFIER_HI_EXT, modifier >> 32,
>               EGL_NONE
>       };
>       EGLImage img;
> @@ -339,8 +345,9 @@ static int init_tex_rgba(void)
>  static int init_tex_nv12_2img(void)
>  {
>       uint32_t stride_y, stride_uv;
> -     int fd_y = get_fd_y(&stride_y);
> -     int fd_uv = get_fd_uv(&stride_uv);
> +     uint64_t modifier_y, modifier_uv;
> +     int fd_y = get_fd_y(&stride_y, &modifier_y);
> +     int fd_uv = get_fd_uv(&stride_uv, &modifier_uv);
>       const EGLint attr_y[] = {
>               EGL_WIDTH, texw,
>               EGL_HEIGHT, texh,
> @@ -348,6 +355,8 @@ static int init_tex_nv12_2img(void)
>               EGL_DMA_BUF_PLANE0_FD_EXT, fd_y,
>               EGL_DMA_BUF_PLANE0_OFFSET_EXT, 0,
>               EGL_DMA_BUF_PLANE0_PITCH_EXT, stride_y,
> +             EGL_DMA_BUF_PLANE0_MODIFIER_LO_EXT, modifier_y & 0xFFFFFFFF,
> +             EGL_DMA_BUF_PLANE0_MODIFIER_HI_EXT, modifier_y >> 32,
>               EGL_NONE
>       };
>       const EGLint attr_uv[] = {
> @@ -357,6 +366,8 @@ static int init_tex_nv12_2img(void)
>               EGL_DMA_BUF_PLANE0_FD_EXT, fd_uv,
>               EGL_DMA_BUF_PLANE0_OFFSET_EXT, 0,
>               EGL_DMA_BUF_PLANE0_PITCH_EXT, stride_uv,
> +             EGL_DMA_BUF_PLANE0_MODIFIER_LO_EXT, modifier_uv & 0xFFFFFFFF,
> +             EGL_DMA_BUF_PLANE0_MODIFIER_HI_EXT, modifier_uv >> 32,
>               EGL_NONE
>       };
>       EGLImage img_y, img_uv;
> @@ -397,8 +408,9 @@ static int init_tex_nv12_2img(void)
>  static int init_tex_nv12_1img(void)
>  {
>       uint32_t stride_y, stride_uv;
> -     int fd_y = get_fd_y(&stride_y);
> -     int fd_uv = get_fd_uv(&stride_uv);
> +     uint64_t modifier_y, modifier_uv;
> +     int fd_y = get_fd_y(&stride_y, &modifier_y);
> +     int fd_uv = get_fd_uv(&stride_uv, &modifier_uv);
>       const EGLint attr[] = {
>               EGL_WIDTH, texw,
>               EGL_HEIGHT, texh,
> @@ -406,9 +418,13 @@ static int init_tex_nv12_1img(void)
>               EGL_DMA_BUF_PLANE0_FD_EXT, fd_y,
>               EGL_DMA_BUF_PLANE0_OFFSET_EXT, 0,
>               EGL_DMA_BUF_PLANE0_PITCH_EXT, stride_y,
> +             EGL_DMA_BUF_PLANE0_MODIFIER_LO_EXT, modifier_y & 0xFFFFFFFF,
> +             EGL_DMA_BUF_PLANE0_MODIFIER_HI_EXT, modifier_y >> 32,
>               EGL_DMA_BUF_PLANE1_FD_EXT, fd_uv,
>               EGL_DMA_BUF_PLANE1_OFFSET_EXT, 0,
>               EGL_DMA_BUF_PLANE1_PITCH_EXT, stride_uv,
> +             EGL_DMA_BUF_PLANE1_MODIFIER_LO_EXT, modifier_uv & 0xFFFFFFFF,
> +             EGL_DMA_BUF_PLANE1_MODIFIER_HI_EXT, modifier_uv >> 32,
>               EGL_NONE
>       };
>       EGLImage img;
> -- 
> 2.14.3
> 
> _______________________________________________
> mesa-dev mailing list
> mesa-dev@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/mesa-dev
_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to