<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
<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?