ChanServ changed the topic of #lima to: Development channel for open source lima driver for ARM Mali4** GPUs - Kernel has landed in mainline, userspace driver is part of mesa - Logs at https://people.freedesktop.org/~cbrill/dri-log/index.php?channel=lima and https://freenode.irclog.whitequark.org/lima - Contact ARM for binary driver support!
yuq825 has joined #lima
warpme_ has quit [Quit: Connection closed for inactivity]
<anarsoul|2> cwabbott: so I did some experiments and looks like scheduler is OK with series of st_var with ld_uni as predecessor but it's not OK with st_var(ld_reg)
<anarsoul|2> series of st_var(ld_reg)
_whitelogger has joined #lima
_whitelogger has joined #lima
buzzmarshall has quit [Remote host closed the connection]
_whitelogger has joined #lima
Barada has joined #lima
Barada has quit [Quit: Barada]
Barada has joined #lima
_whitelogger has joined #lima
monstr has joined #lima
dddddd has quit [Ping timeout: 258 seconds]
Barada1 has joined #lima
warpme_ has joined #lima
Barada has quit [Ping timeout: 255 seconds]
Barada1 is now known as Barada
marex-cloud has joined #lima
yann has quit [Ping timeout: 255 seconds]
<cwabbott> anarsoul|2: yeah, that's one of the problem cases
<cwabbott> what happens is kinda complicated, but I'll try to explain... what happens is that there are a lot of ld_reg waiting to be scheduled, some of which have been spilled
<cwabbott> now, when we create the st_reg node when spilling, we have to add false dependencies on any ld_reg in the original shader so that their live ranges don't overlap
<cwabbott> so, what happens is that we successfully schedule a spill st_reg, but the ld_reg child isn't fully ready because it's blocked on another spill node due to the false dependency
<cwabbott> and, the scheduler currently doesn't have any way to keep track of *which* st_reg needs to be scheduled for progress to be made, so it kinda flails around scheduling other ones until the ld_reg is spilled again
<cwabbott> now, as to why the ld_reg are spilled at all, it's again because of the fake dependencies... ld_reg can't always be scheduled right away which leads to other kinds of infinite loops unless they can be spilled
<cwabbott> I haven't seen the trace but that issue is probably what you're running into
<cwabbott> actually, I don't remember if the change to make ld_reg nodes spillable made it to master, so you might be running into the original "can't spill ld_reg nodes" problem
yann has joined #lima
dddddd has joined #lima
Barada1 has joined #lima
Barada has quit [Ping timeout: 265 seconds]
Barada1 is now known as Barada
Barada has quit [Quit: Barada]
Barada has joined #lima
yuq825 has quit [Quit: Leaving.]
Barada has quit [Quit: Barada]
buzzmarshall has joined #lima
monstr has quit [Remote host closed the connection]
<anarsoul|2> cwabbott: there's no ld_reg spilling in master yet
yann has quit [Ping timeout: 255 seconds]
chewitt has joined #lima
<anarsoul|2> cwabbott: I haven't checked yet, but I think we also need to make regalloc smarter. We can load only 2 vec4 registers per instruction, but if I understand correctly regalloc considers each component as a float reg
<anarsoul|2> so if float regs aren't grouped properly we end up with only 2 float regs accessible in worst case.
marcodiego has joined #lima
Elpaulo has quit [Remote host closed the connection]
Elpaulo has joined #lima
anarsoul|2 is now known as anarsoul
yann has joined #lima