mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-01-03 18:00:10 +01:00
anv: Insert holes for non-existant XFB varyings
Thanks to optimizations, it's possible for varyings to get deleted but still leave the variable there for nir_gather_xfb_info to find. If we get into this case, insert a hole. Fixes:36ee2fd61c"anv: Implement the basic form of..." Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com> Tested-by: Marge Bot <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3520> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3520> (cherry picked from commit993f866d2e)
This commit is contained in:
parent
4ab4ab0b27
commit
9250fb9f0e
2 changed files with 18 additions and 6 deletions
|
|
@ -211,7 +211,7 @@
|
|||
"description": "anv: Insert holes for non-existant XFB varyings",
|
||||
"nominated": true,
|
||||
"nomination_type": 1,
|
||||
"resolution": 0,
|
||||
"resolution": 1,
|
||||
"master_sha": null,
|
||||
"because_sha": "36ee2fd61c8f943be1d1e2b0354f7a121ffef28f"
|
||||
},
|
||||
|
|
|
|||
|
|
@ -1415,11 +1415,23 @@ emit_3dstate_streamout(struct anv_pipeline *pipeline,
|
|||
next_offset[buffer] = output->offset +
|
||||
__builtin_popcount(component_mask) * 4;
|
||||
|
||||
so_decl[stream][decls[stream]++] = (struct GENX(SO_DECL)) {
|
||||
.OutputBufferSlot = buffer,
|
||||
.RegisterIndex = vue_map->varying_to_slot[varying],
|
||||
.ComponentMask = component_mask,
|
||||
};
|
||||
const int slot = vue_map->varying_to_slot[varying];
|
||||
if (slot < 0) {
|
||||
/* This can happen if the shader never writes to the varying.
|
||||
* Insert a hole instead of actual varying data.
|
||||
*/
|
||||
so_decl[stream][decls[stream]++] = (struct GENX(SO_DECL)) {
|
||||
.HoleFlag = true,
|
||||
.OutputBufferSlot = buffer,
|
||||
.ComponentMask = component_mask,
|
||||
};
|
||||
} else {
|
||||
so_decl[stream][decls[stream]++] = (struct GENX(SO_DECL)) {
|
||||
.OutputBufferSlot = buffer,
|
||||
.RegisterIndex = slot,
|
||||
.ComponentMask = component_mask,
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
int max_decls = 0;
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue