[Mesa-dev] [PATCH] virgl: add shader offset alignment to to v2 caps struct

Ilia Mirkin imirkin at alum.mit.edu
Fri Apr 13 01:08:47 UTC 2018


On Thu, Apr 12, 2018 at 8:33 PM, Gurchetan Singh
<gurchetansingh at chromium.org> wrote:
> From: "gurchetansingh at chromium.org" <gurchetansingh at chromium.org>
>
> This is the SSBO analogue to fe0647. User supplied data must
> be a multiple of GL_SHADER_STORAGE_BUFFER_OFFSET_ALIGNMENT.
>
> This fixes 44 GLES31 tests on airlied@'s GLES31 sketch branches with
> Nvidia hardware, but this patch standalone can applied to master. The
> alignment restriction on Nvidia is 32, hence the default value.
>
> Example tests:
>    dEQP-GLES31.functional.ssbo.layout.random.all_shared_buffer.0
>    dEQP-GLES31.functional.ssbo.layout.multi_basic_types.single_buffer.std430
> ---
>  src/gallium/drivers/virgl/virgl_hw.h     | 1 +
>  src/gallium/drivers/virgl/virgl_screen.c | 1 +
>  src/gallium/drivers/virgl/virgl_winsys.h | 1 +
>  3 files changed, 3 insertions(+)
>
> diff --git a/src/gallium/drivers/virgl/virgl_hw.h b/src/gallium/drivers/virgl/virgl_hw.h
> index 93849c03ddd..624be3b271d 100644
> --- a/src/gallium/drivers/virgl/virgl_hw.h
> +++ b/src/gallium/drivers/virgl/virgl_hw.h
> @@ -286,6 +286,7 @@ struct virgl_caps_v2 {
>          int32_t max_texture_gather_offset;
>          uint32_t texture_buffer_offset_alignment;
>          uint32_t uniform_buffer_offset_alignment;
> +        uint32_t shader_buffer_offset_alignment;
>  };
>
>  union virgl_caps {
> diff --git a/src/gallium/drivers/virgl/virgl_screen.c b/src/gallium/drivers/virgl/virgl_screen.c
> index 02613f18663..886ea196bdd 100644
> --- a/src/gallium/drivers/virgl/virgl_screen.c
> +++ b/src/gallium/drivers/virgl/virgl_screen.c
> @@ -228,6 +228,7 @@ virgl_get_param(struct pipe_screen *screen, enum pipe_cap param)
>     case PIPE_CAP_TGSI_FS_POSITION_IS_SYSVAL:
>     case PIPE_CAP_TGSI_FS_FACE_IS_INTEGER_SYSVAL:
>     case PIPE_CAP_SHADER_BUFFER_OFFSET_ALIGNMENT:
> +      return vscreen->caps.caps.v2.shader_buffer_offset_alignment;

You probably meant to move this out of the fallback logic...

>     case PIPE_CAP_INVALIDATE_BUFFER:
>     case PIPE_CAP_GENERATE_MIPMAP:
>     case PIPE_CAP_SURFACE_REINTERPRET_BLOCKS:
> diff --git a/src/gallium/drivers/virgl/virgl_winsys.h b/src/gallium/drivers/virgl/virgl_winsys.h
> index 99e98ad9c9c..c36b957abad 100644
> --- a/src/gallium/drivers/virgl/virgl_winsys.h
> +++ b/src/gallium/drivers/virgl/virgl_winsys.h
> @@ -134,5 +134,6 @@ static inline void virgl_ws_fill_new_caps_defaults(struct virgl_drm_caps *caps)
>     caps->caps.v2.max_texture_gather_offset = 7;
>     caps->caps.v2.texture_buffer_offset_alignment = 32;
>     caps->caps.v2.uniform_buffer_offset_alignment = 256;
> +   caps->caps.v2.shader_buffer_offset_alignment = 32;
>  }
>  #endif
> --
> 2.13.5
>
> _______________________________________________
> 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