benjaminl has quit [Read error: Connection reset by peer]
benjaminl has joined #panfrost
benjaminl has quit [Read error: Connection reset by peer]
benjaminl has joined #panfrost
pbrobinson has quit [Ping timeout: 480 seconds]
tlwoerner has joined #panfrost
<bbrezillon>
cwabbott: that would still be two dummy pages (one for reads, and one for writes) and a bit a lowering in shaders to read from/write to a different VA
warpme has joined #panfrost
<bbrezillon>
or rather, two image descriptors, one pointing to the read-only section, and the other one to the write-only section, and then we pick the right one from the shader based on the access type. It's a shame we have to duplicate the sparse VA ranges, but I see no other way to do that.
benjaminl has quit [Read error: Connection reset by peer]
benjaminl has joined #panfrost
rasterman has joined #panfrost
urja has quit [Read error: Connection reset by peer]
urja has joined #panfrost
benjaminl has quit [Read error: Connection reset by peer]
benjaminl has joined #panfrost
pH5_ is now known as pH5
alyssa has joined #panfrost
<alyssa>
bbrezillon: indeed you need to duplicate ranges, unless there's some trick with Mali's zero sink (although iirc that was a fixed VA range and not something you can map around)
<alyssa>
worse, you need to duplicate every buffer because with BDA you don't know whether a given buffer VA is sparse or not
pbrobinson has joined #panfrost
<alyssa>
(unless you very carefully partition your VA space, I guess, but that'll slow down non-sparse SSBO stores etc)
<alyssa>
but all of that is fundamentally solvable and hk does something similar
<alyssa>
the really hard problem is shaderResourceResidency
<alyssa>
implementing that for texture sampling without hw support..... yugh
<alyssa>
even if you maintain a sideband data structure telling you which pages are mapped, you have no easy way of associating a texture sampling operation with a set of pages read
<alyssa>
without hw support, either you..
<kusma>
anisotropic filtering will be "fun"
<alyssa>
1. do all the address/wrapping/etc calculations in shader and hope you round exactly the same way as the hardware does, so you can then do a--
<alyssa>
yeah, aniso is """"""fun"""" here
<alyssa>
2. have 2 texture descriptors, one with dummy pages that read 0, the other with dummy pages that read non-zero, and then check if sampling twice gives different results
<alyssa>
this is actually kinda nice...?
<alyssa>
and that first sampling is going to happen anyway so it just costs one extra texturesample and some bcsels
<alyssa>
...but now we need to map every image THREE times in VA space!
<alyssa>
zero page, ones page, dummy page
<alyssa>
because image storse might store zero or one or anything else, so we can't share that with either the 0 or the non-0 mapping
<alyssa>
(in particular, the app might imageStore all zeroes and then your dummy page can't be distinguished from the zero page)
<alyssa>
my real question i suppose is what is prompting emulation of sparse on Mali
<alyssa>
sparse is only really used for dx12 calibre games
<alyssa>
for reference i only just got this stuff working on apple, and perf is still hideous..
<alyssa>
(and we have hw shaderResourceResidency support, thankfully)
<alyssa>
robmur01: drm/asahi also wants this, fwiw
<alyssa>
currently we have drm/gpuvm patches for this but if they're going to ba nak'd i'd rather know now so we can stop rebasing them and just loop in the caller instead
<bbrezillon>
or rather, I didn't understand how bad it would get...
<alyssa>
..yeah..
<alyssa>
yeah, i'm not aware of any prior art for emulating it on any shipping driver
<alyssa>
(although it's obvious how you might go about doing it.)
<bbrezillon>
I must admit my main focus was sparse residency without shaderResourceResidency, and even residencyNonResidentStrict=true was something I was planning to do as a second step
<alyssa>
i mean. easier than emulating geom/tess, lolz.
remexre has quit [Remote host closed the connection]
pbrobinson has quit [Ping timeout: 480 seconds]
warpme has quit []
warpme has joined #panfrost
pbrobinson has joined #panfrost
remexre has joined #panfrost
warpme has quit []
kinkinkijkin has joined #panfrost
kenzie7001031 has joined #panfrost
lcagustini has quit [Remote host closed the connection]
lcagustini has joined #panfrost
paulk has joined #panfrost
paulk-ter has quit [Read error: Connection reset by peer]
rasterman has quit [Quit: Gettin' stinky!]
rasterman has joined #panfrost
tanty has quit [Quit: Ciao!]
tanty has joined #panfrost
lcagustini has quit [Remote host closed the connection]
lcagustini has joined #panfrost
chewitt has quit [Quit: Zzz..]
tanty has quit [Quit: Ciao!]
tanty has joined #panfrost
f_ is now known as funderscore
tanty has quit [Quit: Ciao!]
tanty has joined #panfrost
tanty has quit [Quit: Ciao!]
tanty has joined #panfrost
benjaminl has quit [Read error: Connection reset by peer]
benjaminl has joined #panfrost
<robclark>
why is panvk_vX_event.c stuff all panvk_per_arch? That all looks like pretty generic syncobj code
rasterman has quit [Quit: Gettin' stinky!]
ahmubashshir has quit [Remote host closed the connection]