Mesa (master): anv/pipeline: use unsigned long long constant to check enable vertex inputs

Juan Antonio Suárez Romero jasuarez at kemper.freedesktop.org
Fri Jul 14 10:27:34 UTC 2017


Module: Mesa
Branch: master
Commit: 28d0c38d85d94cab23667049f03ea072b8e7907c
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=28d0c38d85d94cab23667049f03ea072b8e7907c

Author: Juan A. Suarez Romero <jasuarez at igalia.com>
Date:   Thu Jul 13 14:33:57 2017 +0000

anv/pipeline: use unsigned long long constant to check enable vertex inputs

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.

Thus, use 1ull, which is an unsigned long long value.

This fixes:
dEQP-VK.pipeline.vertex_input.max_attributes.16_attributes.binding_one_to_one.interleaved

v2: use 1ull instead of BITFIELD64_BIT() (Matt Turner)

Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin at intel.com>
Reviewed-by: Matt Turner <mattst88 at gmail.com>
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 5494a6ee75..edbe2e7a7a 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-commit mailing list