[Mesa-stable] [Mesa-dev] [PATCH] anv: Fix uniform and storage buffer offset alignment limits.

Francisco Jerez currojerez at riseup.net
Fri Dec 16 21:26:17 UTC 2016


Jason Ekstrand <jason at jlekstrand.net> writes:

> On Dec 15, 2016 3:22 PM, "Francisco Jerez" <currojerez at riseup.net> wrote:
>
> This fixes an apparent regression in a bunch of image store vulkan CTS
> tests from commit ad38ba113491869ab0dffed937f7b3dd50e8a735, which
> started using OWORD block read messages to implement UBO loads.  The
> reason for the failure is that we were giving bogus buffer alignment
> limits to the application (1B), so the CTS would happily come back
> with descriptor sets pointing at not even word-aligned uniform buffer
> addresses.  No idea how these tests could possibly work before while
> we were using the sampler to fetch pull constants.
>
>
> Fun fact: the sampler has very few requirements when it comes to linear
> surfaces (including buffers).  One notable exception is that it doesn't
> seem to care about alignment... at all.  A bit surprising, I know, but I've
> seen other cases where it's totally fine with nonaligned offsets and
> strides (in the case of 2D).
>
> That is for fixing this!
>

Cool feature!  It would probably make sense to keep mesa-stable CC'ed
regardless, because I don't think the dataport messages used to access
storage buffers are so permissive with unaligned addresses.

> Reviewed-by: Jason Ekstrand <jason at jlekstrand.net>
>
>
> Cc: <mesa-stable at lists.freedesktop.org>
> Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=99097
> Reported-by: Mark Janes <mark.a.janes at intel.com>
> ---
>  src/intel/vulkan/anv_device.c | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/src/intel/vulkan/anv_device.c b/src/intel/vulkan/anv_device.c
> index e3d278d..9245e5c 100644
> --- a/src/intel/vulkan/anv_device.c
> +++ b/src/intel/vulkan/anv_device.c
> @@ -582,8 +582,8 @@ void anv_GetPhysicalDeviceProperties(
>        .viewportSubPixelBits                     = 13, /* We take a float?
> */
>        .minMemoryMapAlignment                    = 4096, /* A page */
>        .minTexelBufferOffsetAlignment            = 1,
> -      .minUniformBufferOffsetAlignment          = 1,
> -      .minStorageBufferOffsetAlignment          = 1,
> +      .minUniformBufferOffsetAlignment          = 16,
> +      .minStorageBufferOffsetAlignment          = 4,
>        .minTexelOffset                           = -8,
>        .maxTexelOffset                           = 7,
>        .minTexelGatherOffset                     = -32,
> --
> 2.10.2
>
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/mesa-dev
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 212 bytes
Desc: not available
URL: <https://lists.freedesktop.org/archives/mesa-stable/attachments/20161216/9578f694/attachment-0001.sig>


More information about the mesa-stable mailing list