glsl/linker: Mark no locations as invalid instead of marking all locations
authorIan Romanick <ian.d.romanick@intel.com>
Sat, 6 Jan 2018 02:40:21 +0000 (18:40 -0800)
committerIan Romanick <ian.d.romanick@intel.com>
Wed, 10 Jan 2018 15:21:11 +0000 (07:21 -0800)
If max_index were ever 32, the linker would have marked all 32
locations as invalid instead of marking none of them as invalid.  It's
a good thing the maximum value actually set by any driver for
MaxAttribs is 16.

Found by inspection while investigating CID 1369628.

Signed-off-by: Ian Romanick <ian.d.romanick@intel.com>
Reviewed-by: Alejandro PiƱeiro <apinheiro@igalia.com>
src/compiler/glsl/linker.cpp

index 6f9680aae78c6e52da5f1165a57d2c808e0e0ed8..d1f10eeecd86ba59deacc060608678988b560b1c 100644 (file)
@@ -2583,7 +2583,7 @@ assign_attribute_or_color_locations(void *mem_ctx,
    /* Mark invalid locations as being used.
     */
    unsigned used_locations = (max_index >= 32)
-      ? ~0 : ~((1 << max_index) - 1);
+      ? 0 : ~((1 << max_index) - 1);
    unsigned double_storage_locations = 0;
 
    assert((target_index == MESA_SHADER_VERTEX)