diff options
author | Roland Scheidegger <[email protected]> | 2013-08-12 21:18:58 +0200 |
---|---|---|
committer | Roland Scheidegger <[email protected]> | 2013-08-12 23:33:00 +0200 |
commit | cd2f26090a3857703bc85bd58ac5922800b06bc0 (patch) | |
tree | a140aa56f7dd23bc48c7d0100392e04a24dcb45a /src/mapi/mapi.c | |
parent | dfa7b725638bf4b1396516dca732a3720b3625a9 (diff) |
gallivm: fix exec_mask interaction with geometry shader after end of main
Because we must maintain an exec_mask even if there's currently nothing
on the mask stack, we can still have an exec_mask at the end of the program.
Effectively, this mask should be set back to default when returning from main.
Without relying on END/RET opcode (I think it's valid to have neither) it is
actually difficult to do this, as there doesn't seem any reasonable place to
do it, so instead let's just say the exec_mask is invalid outside main (which
it really is effectively).
The problem is that geometry shader called end_primitive outside the shader
(in the epilogue), and as a result used a bogus mask, leading to bugs if we
had to set the (somewhat misnamed) ret_in_main bit anywhere. So just avoid
the mask combining function when called from outside the shader.
Reviewed-by: Zack Rusin <[email protected]>
Diffstat (limited to 'src/mapi/mapi.c')
0 files changed, 0 insertions, 0 deletions