diff options
author | Nicolai Hähnle <[email protected]> | 2016-07-25 18:05:46 +0200 |
---|---|---|
committer | Nicolai Hähnle <[email protected]> | 2016-07-28 10:46:02 +0100 |
commit | 185b0c15abfba8b011f5b009e9f1890305e40ff6 (patch) | |
tree | b74e8aad5c2bd6d21c15afc6519235303b559cc2 | |
parent | 041b330a3204d894fe95b5bae6a740936a7ebc0f (diff) |
st_glsl_to_tgsi: only skip over slots of an input array that are present
When an application declares varying arrays but does not actually do any
indirect indexing, some array indices may end up unused in the consuming
shader, so the number of input slots that correspond to the array ends
up less than the array_size.
Cc: [email protected]
Reviewed-by: Marek Olšák <[email protected]>
-rw-r--r-- | src/mesa/state_tracker/st_glsl_to_tgsi.cpp | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/src/mesa/state_tracker/st_glsl_to_tgsi.cpp b/src/mesa/state_tracker/st_glsl_to_tgsi.cpp index 7564119ac11..38e2c4a5d60 100644 --- a/src/mesa/state_tracker/st_glsl_to_tgsi.cpp +++ b/src/mesa/state_tracker/st_glsl_to_tgsi.cpp @@ -6058,7 +6058,11 @@ st_translate_program( inputSemanticName[i], inputSemanticIndex[i], interpMode[i], 0, interpLocation[i], array_id, array_size); - i += array_size - 1; + + GLuint base_attr = inputSlotToAttr[i]; + while (i + 1 < numInputs && + inputSlotToAttr[i + 1] < base_attr + array_size) + ++i; } else { t->inputs[i] = ureg_DECL_fs_input_cyl_centroid(ureg, |