intel/compiler: properly size attribute wa_flags array for Vulkan
authorIago Toral Quiroga <itoral@igalia.com>
Fri, 21 Jul 2017 08:26:31 +0000 (10:26 +0200)
committerIago Toral Quiroga <itoral@igalia.com>
Fri, 11 Aug 2017 08:41:44 +0000 (10:41 +0200)
commit81615ad444ba970d144eeffbe60a7f70adc30b5b
treea30b57712acdc65817ce9e8a2e825021c9d952cb
parent9d41ec21826b1c19da69a183b3c0ce535bfd7b10
intel/compiler: properly size attribute wa_flags array for Vulkan

Mesa will map user defined vertex input attributes to slots
starting at VERT_ATTRIB_GENERIC0 which gives us room for only 16
slots (up to GL_VERT_ATTRIB_MAX). This sufficient for GL, where
we expose exactly 16 vertex attributes for user defined inputs, but
in Vulkan we can expose up to 28 (which are also mapped from
VERT_ATTRIB_GENERIC0 onwards) so we need to account for this when
we scope the size of the array of attribute workaround flags
that is used during the brw_vertex_workarounds NIR pass. This
prevents out-of-bounds accesses in that array for NIR shaders
that use more than 16 vertex input attributes.

Fixes:
dEQP-VK.pipeline.vertex_input.max_attributes.*

Acked-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
src/intel/compiler/brw_compiler.h