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
rhyskidd has joined #panfrost
rhyskidd has quit [Ping timeout: 246 seconds]
<alyssa> For as silly as this patch set has been, at least there are only 4 register modes :p
rhyskidd has joined #panfrost
rhyskidd has quit [Ping timeout: 246 seconds]
<alyssa> HdkR: So, I'm totally rethinking how we want to handle half-regs
<alyssa> I think it might actually be better to have 8-channel masks
<alyssa> hr0.xyz = hr0.xyz
<alyssa> Er
<alyssa> hr0.xyz => hr0.xyz
<alyssa> hr1.xyz => hr0.rgb
<alyssa> hr2.xyz => hr1.xyz
<alyssa> hr3.xyz => hr1.rgb
<alyssa> Benefits:
<alyssa> - It's immediately obvious what you're subdividing. "hr27" is actually just the upper part of r13
<alyssa> - It's how masks actually work in the hardware. We have 8-bits for masks. Theoretically, the hardware can do 16-bit vec8 compute.
<alyssa> And at some point, maybe even get rid of the r's
<alyssa> (Like, make r the prefix for 32-bit. h for 16-bit. q for 8-bit. d for 64-bit.)
<robclark> fwiw, since half-reg aliasing of full reg wasn't introduced until a6xx on adreno side, I just added something so disasm w/ --verbose arg prints regs like hr1.x (r0.y) so I can more easily see what the half-reg aliases..
<alyssa> Point is, r3 = h3 = q3 = d3, so there's no wackiness there
<robclark> (ofc rN.c notation is kinda silly since in my case a vec4 can live in r1.w-r2.z)
rhyskidd has joined #panfrost
<alyssa> robclark: Sadly half-reg is embedded deep into Midgard, so getting it right notationally is worth it if I ever want to support beyond 32-bit
<robclark> my point is just add it as a --verbose disasm arg to show both the half reg location and the conflicing full reg location
<alyssa> robclark: Seems a little clunky... If half-regs were a novel feature, then sure, but when they're _everywhere_, I want it to be clean
<robclark> meh.. do what is useful in the end..
<robclark> in my case it was kinda bolted on after the fact, but it has proved useful
<alyssa> Mm
rhyskidd has quit [Ping timeout: 250 seconds]
rhyskidd has joined #panfrost
<alyssa> There, 13 patches (across two series) sent to the list. Alyssa out.
* alyssa unplugs brain from vat
<HdkR> harvesting the mindshare
<anarsoul> alyssa: why not gitlab MR?
rhyskidd has quit [Ping timeout: 258 seconds]
rhyskidd has joined #panfrost
MoeIcenowy has quit [Quit: ZNC 1.6.5+deb1+deb9u1 - http://znc.in]
MoeIcenowy has joined #panfrost
BenG83 has quit [Ping timeout: 258 seconds]
<tomeu> bbrezillon: regarding panfrost_device_fini, I think that was on purpose at some iteration, but it's a bug now
<tomeu> AFAICS :)
<tomeu> bbrezillon: what do you think?
<bbrezillon> tomeu: I also think it's a bug (I fixed it in my tree when working on the perfcnt stuff), but wanted to make sure I didn't miss something important
<tomeu> at some point during development, most fini functions were empty because code was moved from the init functions to power_on ones
cwabbott_ has joined #panfrost
cwabbott has quit [Ping timeout: 250 seconds]
cwabbott_ is now known as cwabbott
<tomeu> alyssa: the instruction that is causing problems during live analysis due to dest == -1 is m_store_vary_32
<tomeu> intrinsic store_output (r0, ssa_0) (0, 15, 0) /* base=0 */ /* wrmask=xyzw */ /* component=0 *//* gl_Position */
<tomeu> st_vary_32 -1, r0, -1
stikonas has joined #panfrost
stikonas has quit [Remote host closed the connection]
raster has joined #panfrost
_whitelogger has joined #panfrost
rhyskidd has quit [Ping timeout: 246 seconds]
rhyskidd has joined #panfrost
rhyskidd has quit [Ping timeout: 250 seconds]
rhyskidd has joined #panfrost
marcodiego has joined #panfrost
<alyssa> anarsoul: Gitlab is too slow
<alyssa> tomeu: Aaaaaaa, gotcha, that makes sense
<alyssa> Yeah, the way we're representing stores in the IR is a huge hack right now.
<alyssa> (dest == -1) is probably right, because it _doesn't_ contribute to liveness of anything, though.
<alyssa> The r0 is wrong -- it should be an r26 (or r27 vs r1) and the fixup should happen at emit time, I think.
afaerber has joined #panfrost
rhyskidd has quit [Ping timeout: 258 seconds]
stikonas has joined #panfrost
herbmillerjr has quit [Ping timeout: 246 seconds]
raster has quit [Remote host closed the connection]
yann has joined #panfrost
adjtm has quit [Ping timeout: 258 seconds]
adjtm has joined #panfrost
stikonas_ has joined #panfrost
stikonas has quit [Ping timeout: 250 seconds]
stikonas_ has quit [Ping timeout: 250 seconds]
stikonas has joined #panfrost
MoeIcenowy has quit [Quit: ZNC 1.6.5+deb1+deb9u1 - http://znc.in]
MoeIcenowy has joined #panfrost
BenG83 has joined #panfrost
<alyssa> Reading is wonderful :)
<anarsoul> reading what?
<alyssa> Books!
<alyssa> ((31*B) << 25) | ((63*G) << 14) | ((31*R) << 5)
<alyssa> To encode an RGB565 color
<alyssa> Anyone recognize that encoding
<alyssa> The multiplies are as you would expect [31 = (2^5 - 1) ; 63 = (2^6 - 1)], but the shifts are a lot larger than they need to be
<alyssa> If you shift everything >> 5:
<alyssa> ((31*B) << 20) | ((63*G) << 9) | (31*R)
<alyssa> We still see jumps of 9- and 11-bits, rather than the expected 5- and 6-bits. 2*n-1
<alyssa> What up?
<alyssa> HdkR: ^^ You know random GPU trivia, any thoughts? =p
<HdkR> What is this encoding for? A texture format or something?
<alyssa> HdkR: Clear color
<HdkR> Programming of a register's clear colour on API side?
<alyssa> That's a 32-bit word. For RGBA8888, it's just exactly as you expect. For RGB565 it's all weird and not the expected weird (it still fills all 32-bit, just half are zeroes interspersed)
<alyssa> HdkR: Yeah, how glClearColor gets sent in the cmdstream
<HdkR> Looks like it is just decoded the RGB565 values in to RGB?
<HdkR> er, RGB888
<alyssa> HdkR: How say?
<alyssa> *so
<anarsoul> alyssa: (31*b) << 25 doesn't make a lot of sense, it overflows 32-bit value with b = 31
<anarsoul> what's the value for white color?
<alyssa> anarsoul: It doesn't overflow?
<alyssa> r,g,b are 0.0-1.0 range
<anarsoul> oh, OK
<HdkR> Oh, I didn't realize those were floats :P
<HdkR> I was assuming integer encoding
<alyssa> Sorry, sloopy
<HdkR> How does it determine format of this register? Is that encoded elsewhere?