summaryrefslogtreecommitdiffstats
path: root/src/mapi/es2api
diff options
context:
space:
mode:
authorKenneth Graunke <[email protected]>2019-03-19 21:40:51 -0700
committerKenneth Graunke <[email protected]>2019-03-21 16:03:58 +0000
commite426c3a6cb020d1b156415e20c6f53a7195f96cd (patch)
tree7371d2992c448b8ce82748f742a7e467ecfec402 /src/mapi/es2api
parent6e781a01b97639057d44ca13c5d4276220745b3d (diff)
nir: Record non-vector/scalar varyings as unmovable when compacting
In some cases, we can end up with varying structs that aren't split to their member variables. nir_compact_varyings attempted to record these as unmovable, so it would leave them be. Unfortunately, it didn't do it right for non-vector/scalar types. It set the mask to: ((1 << (elements * dmul)) - 1) << var->data.location_frac where elements is the number of vector elements. For structures and other non-vector/scalars, elements is 0...so the whole mask became 0. This caused nir_compact_varyings to assign other varyings on top of the structure varying's location (as it appeared to take up no space). To combat this, we just set elements to 4 for non-vector/scalar types, so that the entire slot gets marked as unmovable. Fixes KHR-GL45.tessellation_shader.tessellation_control_to_tessellation_evaluation.gl_in on iris. Reviewed-by: Timothy Arceri <[email protected]>
Diffstat (limited to 'src/mapi/es2api')
0 files changed, 0 insertions, 0 deletions