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