ChanServ changed the topic of #asahi-gpu to: Asahi Linux GPU development (no user support, NO binary reversing) | Keep things on topic | GitHub: https://alx.sh/g | Wiki: https://alx.sh/w | Logs: https://alx.sh/l/asahi-gpu
nsklaus has quit [Quit: My Mac has gone to sleep. ZZZzzz…]
nsklaus has joined #asahi-gpu
nsklaus has quit [Ping timeout: 480 seconds]
Urriellu has quit [Ping timeout: 480 seconds]
rosefromthedead has quit [Remote host closed the connection]
user982492 has joined #asahi-gpu
Urriellu has joined #asahi-gpu
flibitijibibo has quit [Ping timeout: 480 seconds]
stipa is now known as Guest9190
stipa has joined #asahi-gpu
bluetail308 has joined #asahi-gpu
Guest9190 has quit [Ping timeout: 480 seconds]
bluetail30 has quit [Ping timeout: 480 seconds]
bluetail30 has joined #asahi-gpu
bluetail308 has quit [Ping timeout: 480 seconds]
seeeath has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
seeeath has joined #asahi-gpu
<i509vcb> Pixel Data Master (PDM) is the hardware which dispatches fragment shaders? (I'd think fragment since that sounds most similar to pixel)
Urriellu has quit [Ping timeout: 480 seconds]
stipa is now known as Guest9199
stipa has joined #asahi-gpu
Guest9199 has quit [Read error: Connection reset by peer]
<lina> From what alyssa told me, AGX/PowerVR does not support *fragment* shaders, it only supports pixel shaders, that's why it's called PDM ^^
<i509vcb> What specifically makes a pixel shader a pixel shader? A lot of sources I found seem to conflate fragment and pixel shaders
<i509vcb> Searching through the logs I did find this:
<i509vcb> > The three pipelines the kernel sees they TA, 3D, and CP, and they map to VDM, PDM, CDM
cylm has joined #asahi-gpu
Urriellu has joined #asahi-gpu
<i509vcb> If I had to guess the PPP (Primitive Processing Pipeline) does primitive assembly?
user982492 has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
bisko has quit [Quit: My Mac has gone to sleep. ZZZzzz…]
x56_ has quit [Ping timeout: 480 seconds]
seeeath_ has joined #asahi-gpu
skippypaws_ has joined #asahi-gpu
ella-0_ has joined #asahi-gpu
d4ve_ has joined #asahi-gpu
coder_kalyan_ has joined #asahi-gpu
amada95_ has joined #asahi-gpu
handlerug_ has joined #asahi-gpu
alethkit_ has joined #asahi-gpu
balrog_ has joined #asahi-gpu
urriellu_ has joined #asahi-gpu
Graypup__ has joined #asahi-gpu
Method has joined #asahi-gpu
alyssa_ has joined #asahi-gpu
Urriellu has quit [resistance.oftc.net larich.oftc.net]
alyssa has quit [resistance.oftc.net larich.oftc.net]
seeeath has quit [resistance.oftc.net larich.oftc.net]
Z750 has quit [resistance.oftc.net larich.oftc.net]
amada95 has quit [resistance.oftc.net larich.oftc.net]
d4ve has quit [resistance.oftc.net larich.oftc.net]
handlerug has quit [resistance.oftc.net larich.oftc.net]
coder_kalyan has quit [resistance.oftc.net larich.oftc.net]
balrog has quit [resistance.oftc.net larich.oftc.net]
alethkit has quit [resistance.oftc.net larich.oftc.net]
ella-0 has quit [resistance.oftc.net larich.oftc.net]
skippypaws has quit [resistance.oftc.net larich.oftc.net]
Graypup_ has quit [resistance.oftc.net larich.oftc.net]
skippypaws_ is now known as skippypaws
Method_ has quit [resistance.oftc.net larich.oftc.net]
JTL has quit [resistance.oftc.net larich.oftc.net]
JTL has joined #asahi-gpu
d4ve_ is now known as d4ve
amada95_ is now known as amada95
Z750 has joined #asahi-gpu
coder_kalyan_ is now known as coder_kalyan
handlerug_ is now known as handlerug
alethkit_ is now known as alethkit
Graypup_ has joined #asahi-gpu
balrog has joined #asahi-gpu
Urriellu has joined #asahi-gpu
Method_ has joined #asahi-gpu
ella-0 has joined #asahi-gpu
balrog has quit [Max SendQ exceeded]
Method_ has quit [Ping timeout: 480 seconds]
Urriellu has quit [Ping timeout: 480 seconds]
Graypup_ has quit [Ping timeout: 480 seconds]
ella-0 has quit [Ping timeout: 480 seconds]
karolherbst_ has joined #asahi-gpu
karolherbst has quit [Ping timeout: 480 seconds]
cylm has quit [Read error: Connection reset by peer]
i509vcb has quit [Quit: Connection closed for inactivity]
bluetail30 has quit []
bluetail has joined #asahi-gpu
urriellu_ has quit [Ping timeout: 480 seconds]
nyilas has joined #asahi-gpu
bisko has joined #asahi-gpu
mkurz has quit [Quit: Konversation terminated!]
nsklaus has joined #asahi-gpu
mkurz has joined #asahi-gpu
yuka has quit [Remote host closed the connection]
yuka has joined #asahi-gpu
flibitijibibo has joined #asahi-gpu
rpirea has joined #asahi-gpu
nsklaus has quit [Quit: Textual IRC Client: www.textualapp.com]
<alyssa_> lina: Thank you for your review!!
mini_ has quit [Quit: ZNC closing...]
mini_ has joined #asahi-gpu
rosefromthedead has joined #asahi-gpu
tabby_ has joined #asahi-gpu
<lina> alyssa_: ^^
rpirea has quit [Quit: rpirea]
rpirea has joined #asahi-gpu
karolherbst has joined #asahi-gpu
karolherbst_ has quit [Ping timeout: 480 seconds]
kujeger has joined #asahi-gpu
bisko has quit [Quit: My Mac has gone to sleep. ZZZzzz…]
balrog_ has quit []
balrog has joined #asahi-gpu
seeeath_ has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
seeeath has joined #asahi-gpu
bisko has joined #asahi-gpu
nsklaus has joined #asahi-gpu
rpirea has quit [Quit: rpirea]
rpirea has joined #asahi-gpu
thunfisch has quit [Quit: frrrp!]
tabby_ has quit [Ping timeout: 480 seconds]
mini0n has joined #asahi-gpu
bisko has quit [Quit: My Mac has gone to sleep. ZZZzzz…]
mini0n has quit []
possiblemeatball has joined #asahi-gpu
alyssa_ has quit []
rpirea has quit [Quit: rpirea]
alyssa has joined #asahi-gpu
rpirea has joined #asahi-gpu
tabby_ has joined #asahi-gpu
flibitijibibo has quit [Quit: Leaving]
rosefromthedead has quit [Ping timeout: 480 seconds]
nsklaus has quit [Quit: My Mac has gone to sleep. ZZZzzz…]
nsklaus has joined #asahi-gpu
seeeath has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
seeeath has joined #asahi-gpu
i509vcb has joined #asahi-gpu
urriellu_ has joined #asahi-gpu
bisko has joined #asahi-gpu
tabby_ has quit [Ping timeout: 480 seconds]
possiblemeatball has quit [Quit: Quit]
javier_varez_ has joined #asahi-gpu
possiblemeatball has joined #asahi-gpu
possiblemeatball has quit [Ping timeout: 480 seconds]
javier_varez_ has quit [Quit: Connection closed for inactivity]
nyilas has quit [Remote host closed the connection]
<i509vcb> alyssa: I assume you saw my questions from last night? (too stingy to pay for always online for the bouncer)
<alyssa> i509vcb: yeah, sorry
<alyssa> actually not sorry i need to get out of my canadian habit of saying sorry when i'm not sorry
<alyssa> been occupied
<i509vcb> ok no rush
picroc has joined #asahi-gpu
zzywysm has quit [Quit: Textual IRC Client: www.textualapp.com]
zzywysm has joined #asahi-gpu
rpirea has quit [Quit: rpirea]
rpirea has joined #asahi-gpu
<alyssa> lina: I forgot we had these docs, worth a read https://docs.mesa3d.org/gallium/buffermapping.html?highlight=buffer
<alyssa> err
<alyssa> for buffer map purposes we're a non-blitting driver
rpirea has quit [Quit: rpirea]
rpirea has joined #asahi-gpu
amarioguy has joined #asahi-gpu
<alyssa> i509vcb: ok your questions
<alyssa> 03:42 <i509vcb> Pixel Data Master (PDM) is the hardware which dispatches fragment shaders? (I'd think fragment since that sounds most similar to pixel)
<alyssa> yes
<alyssa> we assume
<alyssa> powervr term
<alyssa> 04:13 <i509vcb> What specifically makes a pixel shader a pixel shader? A lot of sources I found seem to conflate fragment and pixel shaders
<alyssa> It's a pixel shader if you use Direct3D and a fragment shader if you don't ;-)
<alyssa> For AGX, I'm using slightly different definitions
<alyssa> in APIs, you can have multiple samples per pixel (multisampling)
<alyssa> and then you can either evaluate the fragment shader once per pixel (outputting the same colour to all samples) or once per sample (different colours per sample)
<alyssa> that is, the fragment is either a pixel or a sample depending on whether (per-)sample shading is used
<alyssa> (What controls whether the fragment shader is invokved for every sample? Depends on the API, lots of different reasons it might happen. Kind of an ugly point in GL/Vulkan.)
<alyssa> Anyway, all other GPUs that I know of implement this in hardware
<alyssa> You compile a fragment shader and then there's a bit in the command stream that controls whether the hw invokes it once per pixel or once per sample
<alyssa> AGX does *not* work this way
<alyssa> Instead, it *always* runs a pixel shader!
<alyssa> How can that possibly implement sample shading, you ask? (And Metal does support sample shading)
<alyssa> Well, the "store colour" instruction also takes a mask of samples that it should apply to
<alyssa> If you pass all-1's then it'll act like a pixel shader
<alyssa> but if you pass just a single bit set, then it'll write out just that one sample
<alyssa> (the load colour, discard, emit depth/stencil instructions are similar)
<alyssa> So, an API level fragment shader needs to get transformed into a AGX pixel shader
<alyssa> If sample shading is NOT used, this is easy -- just set all the masks to "all samples" and it'll work regardless of the sample count
<alyssa> If sample shading IS used, the compiler (or driver) has to build a pixel shader that loops over all the samples and executes the fragment shader once per sample
<alyssa> Something like:
<alyssa> for (int sample_id = 0; sample_id < num_samples; ++sample_id) {
<alyssa> API_fragment_shader(sample_id);
<alyssa> }
<alyssa> Why would they possibly do this?
<alyssa> This lets us run shaders partially per sample and partially per pixel
<alyssa> If there are calculations that don't depend on the sample ID, only the pixel, then they can happen just once and get shared for all the samples
<alyssa> and that doesn't require any special hardware, that happens automatically with standard compiler optimizations (either global code motion or loop unrolling with constant subexpression elimination)
<alyssa> So this isn't just AGX being quirky, it's AGX being awesome :^)
rpirea has quit [Quit: rpirea]
nsklaus has quit [Quit: My Mac has gone to sleep. ZZZzzz…]
rpirea has joined #asahi-gpu
rpirea has quit [Quit: rpirea]
rpirea has joined #asahi-gpu
cylm has joined #asahi-gpu