<zmike>
anholt: this shared mem vectorization is excruciating :/
<anholt>
who's causing the scalarizing?
<zmike>
the scalarizing is intentional to handle bitsize conversions
<zmike>
and because of how the spirv is emitted
<zmike>
the problem is that shared mem ops come through as lowered io already, which means it's just byte offsets
<zmike>
which translates naturally to an array type
<zmike>
converting it back to a vector (which is what nir_opt_combine_stores requires) is going to end up being gross
<zmike>
I wonder if I can do something stupider here...
<zmike>
probably not :/
<anholt>
so, seems like one option would be non-lowered shared mem, and then you get to pass the variable decls through?
<zmike>
that's possible, but my experience trying to hack non-lowered io through gallium has been traumatic to say the least
<anholt>
maybe it'll be easier to just get nir_opt_load_store_vectorize on shared into the underlying drivers.
<zmike>
I'd think it would be massively easier if that's an option
<daniels>
anholt: yeah, the others prob have the trauma less paged out than me, but what zmike said rings painfully true from d3d12
<anholt>
one would hope that shared would be easy since it has basically no api exposure
<anholt>
but you also don't see me jumping on it.
<daniels>
there’s no architectural reason it shouldn’t work, just assumptions and bugs in literally every single pass that usually gets called after lower_io, which is more than a couple
<daniels>
(tbf at that point we had no CI and couldn’t yet work publicly, so swimming against the tide was even more contraindicated than usual)
<zmike>
yeah I got moderately deep into it at one point and then had to talk myself off a very high ledge and promise to never try again
<daniels>
Ab
<daniels>
maybe next XDC we should have an open ‘beartraps I lost several ankles too’ forum and encode the results in doc somewhere
<zmike>
#leadership
<zmike>
hooking up shared stores to nir_opt_load_store_vectorize might be a jekstrand or pendingchaos opportunity since they've both worked on the pass more than most