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