ChanServ changed the topic of #panfrost to: Panfrost - FLOSS Mali Midgard + Bifrost + Valhall - Logs https://oftc.irclog.whitequark.org/panfrost
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
chewitt has joined #panfrost
<bbrezillon> alyssa: didn't notice shaderResourceResidency /o\
<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]
ahmubashshir has joined #panfrost