Am Donnerstag, 12. August 2021, 20:32:22 EAT schrieb Henri Verbeet:
Perhaps Windows imposes additional restrictions on GL, but as far as I'm aware the only thing the GL spec requires in this regard is the following:
<snip>
Ya, makes a lot more sense now why we have the x nudge too.
Are we using shader offsets or ARB_clip_control/viewport offsets in the broken case? I wouldn't be entirely surprised if some drivers don't handle fractional viewport offsets entirely correctly. If possible, it may be worth trying to switch to the shader offset implementation to see if it makes any difference. Is there any multi-sampling or sample shading involved?
I haven't made much sense of it yet. I tested both ways of applying the offset, so far I can't tell a difference. That said, on MacOS we disable clip_control because our test that checks for broken fractional viewport offset fails. (I think; I have to re-check why we don't have clip control, but for whatever reason, we don't have clip control on mac). Forcing clip control off on Linux doesn't break the game.
Note that I don't personally remember the Spore bug being about the filling convention; I remember the bug, but if you told me it was about the half-pixel offset instead I'd believe you.
It was both, I think. The way I remember it (and it's 13 years ago, so I might remember wrong): It used to work on Geforce 7 cards (and probably r500), but was broken on Geforce 8 cards. You added the half pixel offset thing to fix it (or added it for offscreen rendering, or something). That fixed it on geforce 8, but broke it on geforce 7. Adding the nudge some time later fixed it on both, or so we thought: https://bugs.winehq.org/show_bug.cgi?id=43708 says it still happens somewhere.