i965: Always reserve clip distance VUE slots in SSO mode.
This fixes rendering in Dolphin on Vulkan since we enabled clip distances. (Dolphin on GL has a similar bug because the linker fails to eliminate unused clip distance built-in arrays, but it isn't using SSO...so that needs more fixing.) Also fixes a Piglit test: spec/glsl-1.50/execution/geometry.clip-distance-vs-gs-out-sso Signed-off-by: Kenneth Graunke <kenneth@whitecape.org> Tested-by: Emmanuel Gil Peyrot <linkmauve@linkmauve.fr> Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
This commit is contained in:
parent
8cdf73c324
commit
ec1f159ac8
|
@ -68,6 +68,19 @@ brw_compute_vue_map(const struct gen_device_info *devinfo,
|
|||
if (devinfo->gen < 6)
|
||||
separate = false;
|
||||
|
||||
if (separate) {
|
||||
/* In SSO mode, we don't know whether the adjacent stage will
|
||||
* read/write gl_ClipDistance, which has a fixed slot location.
|
||||
* We have to assume the worst and reserve a slot for it, or else
|
||||
* the rest of our varyings will be off by a slot.
|
||||
*
|
||||
* Note that we don't have to worry about COL/BFC, as those built-in
|
||||
* variables only exist in legacy GL, which only supports VS and FS.
|
||||
*/
|
||||
slots_valid |= BITFIELD64_BIT(VARYING_SLOT_CLIP_DIST0);
|
||||
slots_valid |= BITFIELD64_BIT(VARYING_SLOT_CLIP_DIST1);
|
||||
}
|
||||
|
||||
vue_map->slots_valid = slots_valid;
|
||||
vue_map->separate = separate;
|
||||
|
||||
|
|
Loading…
Reference in New Issue