On Thu, Jul 13, 2017 at 7:48 AM, Juan A. Suarez Romero
<jasua...@igalia.com> wrote:
> When initializing the ANV pipeline, one of the tasks is checking which
> vertex inputs are enabled. This is done by checking if the enabled bits
> in inputs_read.
>
> But the mask to use is computed doing `(1 << (VERT_ATTRIB_GENERIC0 +
> desc->location))`. The problem here is that if location is 15 or
> greater, the sum is 32 or greater. But C is handling 1 as a 32-bit
> integer, which means the displaced bit is out of range and thus the full
> value is 0.
>
> Rather, use BITFIELD64_BIT() to compute the mask.
>
> This fixes:
> dEQP-VK.pipeline.vertex_input.max_attributes.16_attributes.binding_one_to_one.interleaved
>
> Signed-off-by: Juan A. Suarez Romero <jasua...@igalia.com>
> Cc: mesa-sta...@lists.freedesktop.org
> ---
>  src/intel/vulkan/anv_pipeline.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/src/intel/vulkan/anv_pipeline.c b/src/intel/vulkan/anv_pipeline.c
> index 5494a6e..edbe2e7 100644
> --- a/src/intel/vulkan/anv_pipeline.c
> +++ b/src/intel/vulkan/anv_pipeline.c
> @@ -1330,7 +1330,7 @@ anv_pipeline_init(struct anv_pipeline *pipeline,
>        const VkVertexInputAttributeDescription *desc =
>           &vi_info->pVertexAttributeDescriptions[i];
>
> -      if (inputs_read & (1 << (VERT_ATTRIB_GENERIC0 + desc->location)))
> +      if (inputs_read & BITFIELD64_BIT(VERT_ATTRIB_GENERIC0 + 
> desc->location))

The BITFIELD64_BIT macro exists just for MSVC support (See commit
5fc5820cbc0faf57a48154466b4792294841a690)

Since this code will never be compiled with MSVC, it's safe to use
1ull. I'm not really sure how mtypes.h is being indirectly included.

Reviewed-by: Matt Turner <matts...@gmail.com>
_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to