01:50alyssa: `(x + (x << 1)) << 3`
01:50alyssa: this sure is an interesting way of multiplying by 24 :p
02:19alyssa: gfxstrand: Apparently AGX's bindless samplers are basically a heap with only 2048 entries (in general)
02:19alyssa: this seems sketchy. but https://www.gfxstrand.net/faith/blog/2022/08/descriptors-are-hard/ says that NVIDIA and Intel both do heap samplers so maybe it's not the end of the world
02:20alyssa: Textures Images Samplers Border Colors Typed buffers UBOs SSBOs
02:20alyssa: B/F B/F H/F B/F D D
02:21alyssa: ^ my current understanding of agx
02:27alyssa: maxSamplerAllocationCount=2048 I guess
02:28alyssa: according to https://vulkan.gpuinfo.org/displaydevicelimit.php?name=maxSamplerAllocationCount&platform=all , 4000 is the popular value
02:29alyssa: the lower limits are moltenvk
02:31alyssa: if we omit support for customBorderColor we could bump to 8192 potentially
02:32alyssa: 2048 is the DX12 limit so I'm not too worried tbh
02:35alyssa: also unclear if we can do bindless writeable images, ugh
02:37alyssa: at least, Metal doesn't support it, and I'm not convinced the hardware does either. ugh
02:38alyssa: that one could be a real pickle.
02:38alyssa: We can read from images bindlessly, but I'm not convinced we can write.
02:38alyssa: obviously could lower to massive pile of address calculation + global store but that's not going to perform well
02:49alyssa: no, I think there should be bindless image write support in here
02:50alyssa: if we can figure out the encoding anyway
02:52jenatali: alyssa: We're actively bumping to 4000 because that's the min-required value for the Vulkan spec
02:52jenatali: If you look at the limits tables at the end of the spec
02:53alyssa: jenatali: uff
02:53jenatali: Custom border colors only need 32 though
02:54jenatali: IIRC
02:55alyssa:eyes
02:55alyssa: 4000 indeed, okay.
02:56jenatali: Yep
02:56alyssa: how do people navigate the VK spec by the way?
02:56alyssa: neither the full pdf nor the hyperlinked web stuff seems to do it for me idk
02:57jenatali: The chunked html for me
02:57jenatali: The full spec is torture on a browser
02:58alyssa: like, https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_EXT_custom_border_color.html ?
02:58alyssa: oh https://registry.khronos.org/vulkan/specs/1.3-extensions/html/index.html ok
02:58jenatali: Yeah that
02:59alyssa: search feature doesn't seem to do full text there
02:59jenatali: Nope
02:59alyssa: vulkan is too big confirmed
02:59jenatali: Yep
03:00alyssa: okay, so tentativelt we need to support 4000 regular samplers + 32 custom
03:00alyssa: ~33kb worth of samplers, that fits
03:01alyssa: (assuming I really do have the full 65k to work with)
03:09zmike: I use pdf
03:09alyssa: what reader?
03:09zmike: evince
03:09alyssa:will give a try
11:31DavidHeidelberg[m]: enunes: Hey! Does xwayland gets detected correctly for you on CI?
11:37DavidHeidelberg[m]: (for VK apps)
12:45enunes: DavidHeidelberg[m]: Xwayland seems to work for me, although I don't use it for VK, and the only caveat I know is currently if you start both Xorg and weston/Xwayland, CI will use Xorg
14:28DavidHeidelberg[m]: enunes: I tried locally on weston, it seems to be some ANGLE quirk
16:02dj-death: is there a NIR pass in charge of gather identical constants?
16:03dj-death: I've introduced a new intrinsic and I see that 2 of them are not getting "merged" into one, and I'm guessing it's because one of the source is a constant and that points to 2 different identical values
16:04alyssa: dj-death: Shouldn't nir_opt_cse take care of that?
16:05dj-death: alyssa: thanks a lot, that's probably what I'm missing
16:05alyssa: make sure your intrinsics are [CAN_REORDER, CAN_ELIMINATE]
16:05alyssa: otherwise it's not valid to reorder and eliminate them => CSE can't touch them
16:06dj-death: yep, I have those
16:06dj-death: nope that's not doing it
16:06dj-death: I think it's because the 2 things are in different branches
16:07dj-death: one in the first if() { .. } block
16:07alyssa: yes, CSE doesn't handle that
16:07dj-death: the other in the else
16:07alyssa: you need global code motion for that (i.e. nir_opt_gcm) but it's... probleematic
16:07alyssa: I think Kayden was working on this area, they'll know more than I do :)
16:09dj-death: thanks
17:05alyssa: I don't see how draw_vbo is supposed to work with indirect draws + user index buffers
17:07alyssa: oh that's just impossible, got it
19:54gfxstrand: alyssa: Same as NVIDIA
20:02alyssa: \o/
20:55Kayden: dj-death: global value numbering in opt_gcm could take care of that. right now it's pretty limited but it could easily be extended
20:56Kayden: (as in, we just said, don't be too aggro and only do this limited set of things. just include the new thing in that whitelist)
21:09alyssa: Kayden: what was the issue with full GVN, blowing up register pressure?
21:16Kayden: I believe so, yeah.
21:16Kayden: I recently extended it to handle the case of if () { ... value ... } else { ... value ... } because value is live in both blocks anyway