01:40 airlied[d]: skeggsb9778[d]: while porting this " if (repc) {
01:40 airlied[d]: mqe = (void *)((u8 *)gsp->shm.msgq.ptr + 0x1000 + 0 * 0x1000);
01:40 airlied[d]: memcpy(msg + len, mqe, repc);
01:40 airlied[d]: rptr += DIV_ROUND_UP(repc, GSP_PAGE_SIZE);
01:40 airlied[d]: }" seems suspect in r535_gsp_msgq_wait the 0 in the mqe assignment calculations seems wrong
01:41 skeggsb9778[d]: airlied[d]: yeah, i think Zhi has some fixes for the msgq code pending
01:42 skeggsb9778[d]: i'll have a look at them again soon and see if they're related
13:45 asdqueerfromeu[d]: I just noticed there are some people mass-making game videos for NVK (so maybe those could be used to fill up the spreadsheet?) :triangle_nvk:
20:16 gfxstrand[d]: Ugh... VK_EXT_descriptor_buffer sucks more than I thought it did. 🤦🏻‍♀️
20:18 karolherbst[d]: what's the biggest pain point?
20:18 gfxstrand[d]: All of it?
20:19 karolherbst[d]: mhhh
20:35 esdrastarsis[d][d]: How vkd3d-proton is working on NVK without descriptor_buffer?
20:36 gfxstrand[d]: Even worse hacks?
20:45 gfxstrand[d]: Crazy problems that need to be solved:
20:45 gfxstrand[d]: 1. VkBufferView descriptors without VkBufferView objects. (I think I've got a plan at the cost of about 1% of my descriptor table)
20:45 gfxstrand[d]: 2. Descriptor table capture/replay. I need to be able to say "please give me descriptor 15302" and have that work, but only if that descriptor is actually free
20:45 gfxstrand[d]: 3. Embedded samplers need a total rework. I either need some crazy side-band table for them or I need to bake them into shaders somehow. TBD what it all looks like.
20:45 gfxstrand[d]: 4. Very careful plumbing to ensure I only turn on the nonsense when necessary.
20:45 gfxstrand[d]: And maybe more?
20:50 karolherbst[d]: in regards to 3. does that mean samplers which you only know at GPU runtime what they are?
20:51 karolherbst[d]: but mhh.. I wouldn't be surprised if nvidia does weird macro magic for most of those things
20:51 karolherbst[d]: you could probably whack the tsc in the command buffer or something
20:56 dadschoorse[d]: 3 means samplers that are defined in the shader, and not provided elsewhere, kinda
20:57 dadschoorse[d]: gfxstrand[d]: it doesn't suck if you are red
20:57 dadschoorse[d]: but yeah, not sure why descriptor buffers became a thing if they cause so much pain for other vendors
20:58 karolherbst[d]: dadschoorse[d]: mhhh.. but that's not really an issue, right?
20:58 karolherbst[d]: just means the sampler is part of the compiled shader
21:09 gfxstrand[d]: And exactly how do you think that works on NVIDIA? 😛
21:10 gfxstrand[d]: There's literally two HW vendors where you can actually compile a sampler straight into the shader: AMD and broadcom.
21:10 gfxstrand[d]: Maybe Qualcomm? Not sure. IDK what r600 does or if they've changed it since they forked the hardware.
21:10 karolherbst[d]: I mean, part of the compiled shader as with CL, and then the runtime just binds a sampler
21:10 gfxstrand[d]: "just binds a sampler" 🤣
21:11 karolherbst[d]: 😛
21:11 karolherbst[d]: I mean..
21:11 karolherbst[d]: you can access different CBs via tex ops now
21:11 karolherbst[d]: so you could have a special CB for those kind of samplers.. probably somehow
21:11 gfxstrand[d]: The problem isn't binding. It's allocating
21:12 gfxstrand[d]: This stuff all gets very subtle and intertwined with EDB in play
21:12 asdqueerfromeu[d]: gfxstrand[d]: So even the OG Raspberry Pi could do it?
21:12 gfxstrand[d]: Especially when you start thinking about shader binaries and caching.
21:12 gfxstrand[d]: asdqueerfromeu[d]: Yes! Broadcom passes all of the descriptor data through the shader using these register queues.
21:13 gfxstrand[d]: It's optimized for plumbing uniforms into the sampler but there's no reason why you couldn't plumb some immediate data through, too.
21:13 karolherbst[d]: broadcom is wild.. I should really make use of those things also for CL, because atm it's all a bit sucky
21:14 gfxstrand[d]: I think I've got a plan for 2 and 3 now. I just need to stop talking and start typing
21:34 dadschoorse[d]: gfxstrand[d]: r600 is d3d11 in hw. small fixed function sampler/texture table
21:36 dadschoorse[d]: per stage ofc, like d3d11