alyssa changed the topic of #panfrost to: Panfrost - FLOSS Mali Midgard & Bifrost - Logs https://freenode.irclog.whitequark.org/panfrost - <daniels> avoiding X is a huge feature
vstehle has quit [Ping timeout: 265 seconds]
stikonas has quit [Remote host closed the connection]
paulk-leonov has quit [Ping timeout: 252 seconds]
paulk-leonov has joined #panfrost
paulk-leonov has quit [Ping timeout: 240 seconds]
paulk-leonov has joined #panfrost
atler has quit [Killed (tepper.freenode.net (Nickname regained by services))]
atler has joined #panfrost
kaspter has quit [Ping timeout: 240 seconds]
kaspter has joined #panfrost
rcf1 has joined #panfrost
rcf1 has quit [Client Quit]
vstehle has joined #panfrost
kaspter has quit [Ping timeout: 240 seconds]
kaspter has joined #panfrost
kaspter has quit [Ping timeout: 240 seconds]
kaspter has joined #panfrost
nlhowell has joined #panfrost
urjaman has quit [Ping timeout: 268 seconds]
urjaman has joined #panfrost
chewitt has quit [Quit: Zzz..]
urjaman has quit [Ping timeout: 240 seconds]
wwilly has joined #panfrost
zkrx has quit [Ping timeout: 240 seconds]
guillaume_g has joined #panfrost
zkrx has joined #panfrost
wwilly has quit [Ping timeout: 268 seconds]
urjaman has joined #panfrost
alpernebbi has joined #panfrost
<cyrozap> Hey, this is a little off-topic, but it involves bit-hacks so I figured graphics people might be able to help me. I'm reverse-engineering a thing, and I'm trying to understand the purpose of a function. This function takes a single 6-bit input value, returns a 6-bit output value, and when its inputs and outputs are plotted as unsigned integers, it looks like this: https://i.imgur.com/pV2AhCg.png
<cyrozap> So, my question is, does anyone recognize this? And if so, does this algorithm have a name? And what is it usally used for?
<cyrozap> The algorithm is implemented by masking the lower 6 bits of the input, reversing the order of those 6 bits (keeping everything in the lower 6 bits of the byte), adding 1, and then doing the bit reverse again.
kaspter has quit [Ping timeout: 240 seconds]
<cyrozap> And then the final value is stored in a hardware register, the purpose of which is currently unknown to me.
kaspter has joined #panfrost
* urjaman is thinking, but got nothing
<HdkR> Almost looks like some Nvidia shader bit twiddling
<cyrozap> To describe it by parts, it's: f(x) = { (x + 32) for x in [0,32); (x - 16) for x in [32,48); (x - 40) for x in [48,56); (x - 52) for x in [56,60); (x - 58) for x in [60,62); 1 if x is 62; 0 if x is 63 }
<cyrozap> For some more context, the hardware register the output value is getting written into may be part of some sort of data-moving hardware (though that's just a hunch at this point).
<cyrozap> So maybe this is some kind of block-size thing?
urjaman has quit [Quit: WeeChat 3.1]
urjaman has joined #panfrost
<cyrozap> The scatter plot vaguely reminds me of a wavelet transform, though I'm pretty sure that's not what this is since it wouldn't make sense for the hardware to have any compression capabilities (its firmware is stored uncompressed on flash, and it's just a USB host controller).
<cyrozap> Though that's probably because the differences between the starting points of each linear range is a geometric progression (with r = 1/2), and a geometric series can be illustrated like this: https://en.wikipedia.org/wiki/File:GeometricSquares.svg
raster has joined #panfrost
chrisf has quit [Quit: ZNC - https://znc.in]
chrisf has joined #panfrost
stikonas has joined #panfrost
catfella_ has quit [Quit: Leaving]
catfella has joined #panfrost
catfella has quit [Ping timeout: 240 seconds]
catfella has joined #panfrost
<macc24> cyrozap: it sort-of kinda maybe looks familiar for mw
ente has quit [Ping timeout: 240 seconds]
davidlt has joined #panfrost
nlhowell has quit [Ping timeout: 265 seconds]
camus has joined #panfrost
kaspter has quit [Ping timeout: 240 seconds]
camus is now known as kaspter
<alyssa> eyeballs
<HdkR> They're weird right? How they see things, ever watching.
<alyssa> cyrozap: It might be easier to think of "reverse, add 1, reverse" as instead "add 32, but carry in the wrong direction"
<alyssa> It has one very interesting proprtiety
<alyssa> Can't phrase it precisely but a bit being set in the output means the input is strictly less than something
<alyssa> so you can count leading zeroes and estimate log2(x)
<alyssa> although you could do that anyway...
<alyssa> sorry, estimate 6-log2(x0
<alyssa> Also, cruially, this map is bijective.
<alyssa> (invert in the obvious way.. reverse, subtract 1, reverse)
<alyssa> so tbh it really doesn't matter
<alyssa> You can calculate it, you can invert it, both are trivial for you... postpone the *why* until you have info on neighboring fields...
nlhowell has joined #panfrost
<adjtm_> cyrozap, it reminds me posits with 0 exponent bits
<adjtm_> the number of consecutive 1s at the beginning codifies a range, so you have more precision at the range it matters most for your application and the precision decreases where your are far from it
<adjtm_> the output could be a linear representation of it
<adjtm_> for example for comparing the numbers with an integer ALU
<adjtm_> I meant posits without sign and 0 exponent bits
<adjtm_> what alyssa said about using the codification in your favor for estimating functions make sense
<adjtm_> there are some of that kind, like the famous 1/sqrt(x) of quake (that can be generalize to any fractional exponential, positive or negative(
<adjtm_> with posit(8,0) there is a fast algorithm for estimating the sigmoid function
karolherbst has quit [Ping timeout: 265 seconds]
ente has joined #panfrost
nlhowell has quit [Ping timeout: 260 seconds]
karolherbst has joined #panfrost
nlhowell has joined #panfrost
camus has joined #panfrost
kaspter has quit [Ping timeout: 268 seconds]
camus is now known as kaspter
ente has quit [Ping timeout: 240 seconds]
thecycoone1 has quit [Quit: Bridge terminating on SIGTERM]
kaspter has quit [Ping timeout: 240 seconds]
thecycoone has joined #panfrost
kaspter has joined #panfrost
nlhowell has quit [Quit: WeeChat 3.1]
nlhowell has joined #panfrost
pendingchaos has quit [Ping timeout: 265 seconds]
nlhowell has quit [Ping timeout: 240 seconds]
pendingchaos has joined #panfrost
guillaume_g has quit [Quit: Konversation terminated!]
nlhowell has joined #panfrost
rcf has quit [Quit: WeeChat 3.2-dev]
kaspter has quit [Ping timeout: 240 seconds]
kaspter has joined #panfrost
rcf has joined #panfrost
rcf has quit [Client Quit]
rcf has joined #panfrost
rcf has quit [Client Quit]
warpme_ has joined #panfrost
rcf has joined #panfrost
rcf has quit [Quit: WeeChat 3.0.1]
rcf has joined #panfrost
nlhowell has quit [Remote host closed the connection]
nlhowell has joined #panfrost
nlhowell has quit [Remote host closed the connection]
nlhowell has joined #panfrost
<alyssa> ok.. why is this test still failing..
nlhowell has quit [Ping timeout: 246 seconds]
leper` has quit [Ping timeout: 260 seconds]
leper` has joined #panfrost
camus has joined #panfrost
kaspter has quit [Remote host closed the connection]
camus is now known as kaspter
davidlt has quit [Ping timeout: 260 seconds]
<alyssa> bbrezillon: I think we still need to wire in indirect compute dispatch.
<alyssa> You up for that?
raster has quit [Quit: Gettin' stinky!]
anarsoul|c has quit [Quit: Connection closed for inactivity]
<alyssa> bbrezillon: es2_info: ../src/gallium/drivers/panfrost/pan_resource.c:120: panfrost_resource_from_handle: Assertion `!drm_is_afbc(whandle->modifier) || !panfrost_afbc_format_needs_fixup(dev, rsc->internal_format)' failed.
<alyssa> Uh oh ...
alpernebbi has quit [Quit: alpernebbi]
thecycoone has quit [Quit: Bridge terminating on SIGTERM]
thecycoone has joined #panfrost
endrift has quit [Ping timeout: 260 seconds]
endrift has joined #panfrost
warpme_ has quit [Quit: Connection closed for inactivity]