<zmike>
also though if you look in the middle of the page on the right side it shows the MR
<jekstrand>
zmike: 90% sure it's a zink bug
<jekstrand>
zmike: What's happening is that somewhere along the line, zink has some stuff on an SSBO using ssbo_atomic_* intrinscs and other stuff using derefs. This isn't going to work.
<zmike>
jekstrand: rephrase?
<jekstrand>
It's the same SSBO. The one used for atomics by nir_lower_atomics_to_ssbo. But there's both load/store_deref acting on it and ssbo_atomic_inc acting on it.
<jekstrand>
It's like someone ran lower_io but only for atomics
<zmike>
ah, this is hitting one of my TODOs
<zmike>
so you're saying the optimization pass doesn't handle this
<jekstrand>
No
<jekstrand>
We could make it detect ANY SSBO intrinsic and just throw up it's hands.
<jekstrand>
But right now it assumes that any given buffer will only be touched through "direct" intrinsics or only touched through derefs.
<jekstrand>
Which is a reasonable assumption for all non-Zink drivers.
<jekstrand>
zmike: What TODO is this?
<zmike>
/* TODO: these should all be rewritten to use deref intrinsics */
<zmike>
in zink_compiler.c
<jekstrand>
hehe. Yeah, that'll do it. :)
<zmike>
grimace
* jekstrand
adds another tick on his side of the chart
<jekstrand>
:P
<zmike>
whoa whoa whoa hold on
<zmike>
I don't think this one's clearly in your favor
<zmike>
at best you've got a tie
<jekstrand>
How do you figure?
<zmike>
I don't see a reason why the optimization pass shouldn't be able to handle this
<zmike>
sure, ideally I'll get around to fixing the TODO on my side, but the pass should handle all possible cases
<jekstrand>
It handles all reasonable cases from the assumption that you start with high-level stuff and lower.
<jekstrand>
You're going backwards from low-level to high-level and doing it incompletely. I think it's perfectly reasonable that no one thought to account for that.