[Mesa-dev] [PATCH] anv/pipeline: use BITFIELD64_BIT() to check enable vertex inputs

Lionel Landwerlin lionel.g.landwerlin at intel.com
Thu Jul 13 15:58:43 UTC 2017


Can we depend on src/mesa/main/mtypes.h?

Regardless, this fixes an actual issue :

Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin at intel.com>

Thanks!

On 13/07/17 15:48, Juan A. Suarez Romero 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 <jasuarez at igalia.com>
> Cc: mesa-stable at 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))
>            pipeline->vb_used |= 1 << desc->binding;
>      }
>   




More information about the mesa-dev mailing list