alyssa changed the topic of #panfrost to: Panfrost - FLOSS Mali Midgard & Bifrost - https://gitlab.freedesktop.org/panfrost - Logs https://freenode.irclog.whitequark.org/panfrost - <daniels> avoiding X is a huge feature
megi has quit [Ping timeout: 245 seconds]
vstehle has quit [Ping timeout: 244 seconds]
tgall_foo has joined #panfrost
tgall_foo has quit [Client Quit]
tgall_foo has joined #panfrost
davidlt has joined #panfrost
davidlt has quit [Remote host closed the connection]
vstehle has joined #panfrost
marcodiego has quit [Quit: Leaving]
NeuroScr_ has quit [Quit: NeuroScr_]
jernej has joined #panfrost
somy has joined #panfrost
megi has joined #panfrost
pH5 has joined #panfrost
vstehle has quit [Remote host closed the connection]
TheCycoTWO has quit [*.net *.split]
_whitelogger has joined #panfrost
raster has joined #panfrost
adjtm_ has quit [Ping timeout: 245 seconds]
chewitt has quit [Quit: Adios!]
_whitelogger has joined #panfrost
adjtm_ has joined #panfrost
Kwiboo has quit [Quit: .]
Kwiboo has joined #panfrost
narmstrong has quit [Remote host closed the connection]
narmstrong has joined #panfrost
<bbrezillon> robher, alyssa: tomeu suggested that I start looking at the SAME_VA feature (CPU/GPU address space sharing), is this something you already looked at?
<bbrezillon> also, do you have examples of use cases for that? (I see it's useful for OpenCL SVM stuff but was wondering if there was any other potential users)
Elpaulo1 has joined #panfrost
Elpaulo has quit [Ping timeout: 245 seconds]
Elpaulo1 is now known as Elpaulo
<tomeu> bbrezillon: not sure if SAME_VA is related, but what we need for vulkan is that userspace is able to allocate virtual addresses
<tomeu> regarding what is needed from the kernel, I guess you can look at how v3d and fdo do it
<pH5> bbrezillon: not sure if this helps at all, but lynxeye_ implemented this for etnaviv recently: https://patchwork.freedesktop.org/series/64970/
<bbrezillon> tomeu: hm, I'm not sure yet, but IIUC mali_kbase is more restrictive => the GPU and CPU VA are the same
<bbrezillon> pH5: thanks for the link
<tomeu> yeah, I think that Arm's OpenCL supports SVM on some GPUs
<bbrezillon> this being said, it doesn't seem to be a HW restriction
afaerber has quit [Quit: Leaving]
<robher> bbrezillon: there's been some discussion about it on the list between Steven and me.
<robher> bbrezillon: the h/w restriction is how to support it on GPUs with less VA size than the CPU.
<robher> Neither fdo nor v3d support this.
<tomeu> robher: don't support SAME_VA on armhf?
<robher> tomeu: armhf is an easy case. It's 64-bit userspace with a 32-bit GPU VA that's the problem. T720 IIRC is one.
<tomeu> ah, of course
<bbrezillon> robher: I guess there's no way to restrict the mmap() address space
<robher> Implementation wise, I tend to think we should copy kbase and set the GPU VA when a BO is mmapped. If we set the GPU VA up front, we should use the kernel's address range as that won't overlap with userspace addresses.
<robher> bbrezillon: I don't know. That was something to investigate. I would think you can in mmap calls.
<bbrezillon> robher: ok, the other question is, is there a strong reason to keep this GPU_VA = CPU_VA limitation in our uAPI ?
<bbrezillon> I mean, userspace can pass the CPU VA if it needs those VA to match, and we can reject the operation if the passed VA is outside the supported VA range
<bbrezillon> that still leaves the problem of restricting the CPU VA address space when mmap() is called on BO that's expected to have matching GPU and CPU VA
* bbrezillon needs to look at the fdo and v3d implems
chewitt has joined #panfrost
<robher> bbrezillon: those don't have an implementation...
<bbrezillon> robher: I wonder what tomeu was referring to when he suggested to look at how fdo and v3d do it
<bbrezillon> ?
<bbrezillon> and indeed, I see nothing like that in v3d
<tomeu> I thought they did
<robher> must have been assuming they do already...
<bbrezillon> so it looks like the only driver that's (soon) implementing something close to what we want is etnaviv
<tomeu> I remember seeing some code in mesa related to this
<tomeu> maybe only iris?
<robher> bbrezillon: lima does I think.
<robher> and amd
<robher> both of those just have an ioctl to set the GPU VA and do all the address space management in userspace (i.e. implement drm_mm there).
megi has quit [Quit: WeeChat 2.5]
<bbrezillon> robher: I see
<bbrezillon> robher: actually, I can't find the lima ioctl doing that in drm-misc-next
<bbrezillon> there's DRM_IOCTL_LIMA_GEM_INFO which returns the GPU VA
<bbrezillon> but nothing to set it AFAICT
<robher> bbrezillon: must have gotten removed in review. I remember discussing that...
warpme_ has joined #panfrost
warpme_ has quit [Quit: warpme_]
warpme_ has joined #panfrost
<alyssa> Okay what actually am I missing
* alyssa has been trying to debug MRT for an hour now
<alyssa> cyrozap: Nice :)
warpme_ has quit [Quit: warpme_]
<alyssa> robher: Wait a minute. There's such a thing as a 32-bit GPU VA?
<alyssa> That.... changes things....
<robher> alyssa: I believe the address size is still 64-bits, but only 31 or 32 address bits are present.
<alyssa> Ook.
<tomeu> hehe
<alyssa> tomeu: What was the result of your OpenCL experiment? :P
<tomeu> alyssa: my main finding is that it will be all great when ML people agree to stop reinventing build systems and distros
<alyssa> :p
<tomeu> I was able to run a simple sanity check test from plaidml on clover after I hacked up support for lowering shared variables with explicit io
<alyssa> Ah?
<alyssa> tomeu: (Was this with the SSBO branch?)
<EmilKarlson> Master Lizard people?
<alyssa> EmilKarlson: sssss
<tomeu> I wanted to try to do some inference next, but realized that half of the python files are out of sync with the other half, because of finding #1
<tomeu> alyssa: ah no, this is on tegra with novueau
<alyssa> Oh :-(
<tomeu> so I'm now waiting for pip to rebuild all the python modules that debian had already installed...
<tomeu> alyssa: should I try with panfrost? should be quite easy
<alyssa> tomeu: Probably won't work
<alyssa> But once I land SSBOs, might be fun
<alyssa> dEQP-GLES31 compute shader tests are starting to pass on that branch
<alyssa> tomeu: Oh this is interesting
<alyssa> I accidentally stumbled upon a mode where the hw does wallpapering itself.
<alyssa> Which is dramatically faster than us doing it
<alyssa> Except it's slightly broken
<tomeu> hehe
<alyssa> tomeu: Chicken bit?
<alyssa> tomeu: Thing is, it's just -so- close to being functional
<alyssa> Makes me wonder if it could work
warpme_ has joined #panfrost
<alyssa> What I don't know is where it's loading from --- the framebuffer itself (in memory) or off the tilebuffer
<alyssa> But I think memory
<alyssa> Just... buggy around the borders..
<tomeu> like always :)
<alyssa> tomeu: Yeah.... any idea?
* alyssa wondering if you saw the same bug when bringing up the u-blitter path
<tomeu> no, didn't see such a problem there
<alyssa> Hm
<tomeu> hrm
<tomeu> is the final result correct when the blob enables it?
<alyssa> tomeu: Symptom in weston is little black lines in places where the tile is being reloaded
<alyssa> The blob doesn't enable it.
<alyssa> (The blob does the wallpaper method like us.)
<tomeu> ah, thought you managed to find a case in which it did
<alyssa> Which makes me think it's a chicken bit for something they thought they could get working in hw and they couldn't.
<tomeu> right
<tomeu> a proper chicken bit :)
sravn has quit [Read error: Connection reset by peer]
pH5 has quit [Quit: bye]
sravn has joined #panfrost
warpme_ has quit [Quit: warpme_]
pH5 has joined #panfrost
megi has joined #panfrost
adjtm_ has quit [Ping timeout: 246 seconds]
raster has quit [Remote host closed the connection]
<shadeslayer> mmhhh ... got a panfrost crash https://paste.ubuntu.com/p/tyhnxP6jMz/
<alyssa> Memory corruption....
<alyssa> try valgrind
stikonas has joined #panfrost
<shadeslayer> *twiddles thumbs waiting for plasma to finish*
warpme_ has joined #panfrost
warpme_ has quit [Quit: warpme_]
warpme_ has joined #panfrost
<shadeslayer> still waiting for it to crash
<shadeslayer> or show something on the screen
<alyssa> ......?
<shadeslayer> alyssa: nothing :S
<shadeslayer> let me start it again
<shadeslayer> aaaanndd no crash now
warpme_ has quit [Read error: Connection timed out]
<shadeslayer> alyssa: idk what happened, but no longer crashes
<shadeslayer> ooh, it just crashed plasmashell: ../src/gallium/auxiliary/util/u_inlines.h:87: pipe_reference_described: Assertion `count != -1' failed.
<shadeslayer> alyssa: https://paste.ubuntu.com/p/4yP8kZpZsK/ different crash I suppose
<alyssa> shadeslayer: Could you figure out which BO is being unreferenced?
<alyssa> That way we can figure out where we messed up the refcnt.
<alyssa> reference count
<shadeslayer> alyssa: I think I'd have to rebuild without optimization to get that
<alyssa> shadeslayer: Hm, maybe try sprinkling in some prints to bo_reference/unreference and create_resource?
<alyssa> Try to match the addresses of the BO with what they do, etc
<shadeslayer> I'm re compiling without optimization :)
afaerber has joined #panfrost
<shadeslayer> oh lovely, now I get asserts for safe_iterator ../src/panfrost/midgard/midgard_schedule.c:578:schedule_block: Assertion `ins == __next && "use _safe iterator"' failed.
pH5 has quit [Ping timeout: 268 seconds]
pH5 has joined #panfrost
afaerber_ has joined #panfrost
afaerber has quit [Ping timeout: 264 seconds]
<shadeslayer> alyssa:
<shadeslayer> (gdb) print *bo
<shadeslayer> $4 = {link = {prev = 0xffff9c63f100, next = 0xaaaad42b7690}, reference = {count = -1}, cpu = 0x0, gpu = 287248384, size = 33280, gem_handle = 106, flags = 4}
JuJu has quit [Ping timeout: 245 seconds]
<shadeslayer> I'll take a look tomorrow, night!
JaceAlvejetti has quit [Ping timeout: 250 seconds]
JaceAlvejetti_ has joined #panfrost
NeuroScr has joined #panfrost
davidlt has joined #panfrost
adjtm_ has joined #panfrost
davidlt has quit [Ping timeout: 258 seconds]
raster has joined #panfrost
stikonas has quit [Read error: Connection reset by peer]
stikonas has joined #panfrost
afaerber_ has quit [Ping timeout: 264 seconds]
afaerber_ has joined #panfrost
raster has quit [Remote host closed the connection]
stikonas has quit [Remote host closed the connection]