10:49fdobridge_: <!DodoNVK (she) 🇱🇹> I just discovered that using NAK for vertex shaders causes severe freezing issues (in GTA games at least)
10:50fdobridge_: <!DodoNVK (she) 🇱🇹> Also in the same games I discovered that fragment shaders are the main performance bottleneck for codegen
14:02montjoie: hello, I have a GT1030 and according to feture matrix power management is TODO, does this means my card will run the same than with nvidia-drivers but always at maximum lock ?
14:21fdobridge_: <!DodoNVK (she) 🇱🇹> montjole: Your GPU will run at very low speeds
15:37montjoie: fdobridge_: so going to nouveau will lead to degraded performance ?
15:41f_: montjoie: yes
15:43montjoie: this is sad, does there is something that can be done ?
15:43f_: You can help if you wish.
15:43montjoie: I fear the answer is "reverse engeener of the firmware"
15:43f_: I guess it's not necessarily that.
15:43montjoie: or there is some part more easy
15:44f_: https://nouveau.freedesktop.org/TestersWanted.html ?
15:44f_: https://nouveau.freedesktop.org/HardwareDonations.html ?
15:44montjoie: I can test at least
15:44montjoie: but what to test ?
15:45montjoie: just booting with nouveau as a start ?
18:16fdobridge_: <gfxstrand> What kind of freezing? A stutter or `VK_ERROR_DEVICE_LOST`?
18:16fdobridge_: <gfxstrand> I'm just gonna leave this here... https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/26615
18:16fdobridge_: <gfxstrand> I'm just gonna leave this here... https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/26615 🏎️ (edited)
18:16fdobridge_: <!DodoNVK (she) 🇱🇹> A long stutter (DEVICE_LOST is a crash)
18:17fdobridge_: <!DodoNVK (she) 🇱🇹> If I don't use NAK for vertex shaders they're less severe (RADV is even better of course)
18:18fdobridge_: <gfxstrand> Yeah, we have zero caching right now. Still odd that codegen is faster. I wonder why.
18:22fdobridge_: <!DodoNVK (she) 🇱🇹> I still have a hacked up version of the pipeline caching MR applied
18:23fdobridge_: <karolherbst🐧🦀> @gfxstrand in regards to that UBO MR, what's nvidia doing? Something similar? only bindless UBOs?
18:23fdobridge_: <karolherbst🐧🦀> only ldg.constant?
18:28fdobridge_: <gfxstrand> They're promoting
18:28fdobridge_: <gfxstrand> IDK if they're doing the fancy macro but they're definitely promoting
18:28fdobridge_: <gfxstrand> They're also promoting textures. I need to figure out how that works.
18:29fdobridge_: <karolherbst🐧🦀> ohh.. textures are trivial since kepler
18:29fdobridge_: <karolherbst🐧🦀> you just set the index into the sampler/texture desc buffer
18:29fdobridge_: <gfxstrand> Yeah, it's just a table of bindless indices isn't it?
18:30fdobridge_: <karolherbst🐧🦀> the indicies point into the tsc/tic buffer _if_ you set the indexing mode to independent
18:30fdobridge_: <karolherbst🐧🦀> like there is a `QMD` option for that
18:31fdobridge_: <karolherbst🐧🦀> not sure how the other mode works
18:31fdobridge_: <gfxstrand> Yeah, I need to poke at all that after a bit.
18:31fdobridge_: <gfxstrand> If it weren't faster NVIDIA wouldn't be doing it.
18:31fdobridge_: <karolherbst🐧🦀> it's like the bindless handle just constant
18:31fdobridge_: <gfxstrand> Yeah. The hardware probably mega-caches them, though.
18:31fdobridge_: <karolherbst🐧🦀> yeah...
18:32fdobridge_: <karolherbst🐧🦀> or rather..
18:32fdobridge_: <karolherbst🐧🦀> fetches them quicker
18:32fdobridge_: <karolherbst🐧🦀> if you have the constant index in the encoding you don't have to wait until you read the register
18:32fdobridge_: <karolherbst🐧🦀> there are also indirect forms
18:33fdobridge_: <karolherbst🐧🦀> I think they call it "mixed bindless"
18:33fdobridge_: <karolherbst🐧🦀> ehh partial bindless
18:34fdobridge_: <karolherbst🐧🦀> like.. you can have the texture constant and the sampler be indirect
18:34fdobridge_: <karolherbst🐧🦀> there is also a uniform bindless form if using uniform registers
18:35fdobridge_: <karolherbst🐧🦀> but that one is kinda weird...
18:37fdobridge_: <karolherbst🐧🦀> ehh wait.. there is a second buffer for all those handles...
18:37fdobridge_: <karolherbst🐧🦀> right... one which maps from tex instruction to the actual indicies.. I forgot about that one 🙂
18:43fdobridge_: <gfxstrand> Yeah, right now NAK doesn't know about anything but bindless. 😅
18:46fdobridge_: <gfxstrand> It shouldn't be too hard to hook up the other modes, though. It's just a bit more code in nak_nir_lower_tex.
18:46fdobridge_: <gfxstrand> And maybe a few more bits packed into my flags struct.
18:47fdobridge_: <!DodoNVK (she) 🇱🇹> I just compiled an updated kernel (hopefully it won't explode)
19:02fdobridge_: <!DodoNVK (she) 🇱🇹> And I'm back (hopefully vkd3d tests will be a little more stable now)
19:02fdobridge_: <gfxstrand> \o/
19:03fdobridge_: <marysaka> ... now I want to do some testing tonight on some games :vibrate:
19:03fdobridge_: <marysaka> totally wasn't considering playing a Hat In Time DLCs tonight
19:05fdobridge_: <gfxstrand> Go for it!
19:05fdobridge_: <gfxstrand> I'd love some before/after FPS numbers on some things.
19:05fdobridge_: <gfxstrand> I imagine it'll be... substantive.
19:06fdobridge_: <gfxstrand> IDK how much faster but it should easily show up in FPS numbers
19:06fdobridge_: <gfxstrand> I'll figure out robustness2 on Monday
19:06fdobridge_: <gfxstrand> IDK what nvidia is doing there
19:06fdobridge_: <karolherbst🐧🦀> what's the issue with robustness2 btw?
19:06fdobridge_: <gfxstrand> We need tight bounds checking
19:07fdobridge_: <karolherbst🐧🦀> in what sense?
19:07fdobridge_: <gfxstrand> 16B granularity
19:07fdobridge_: <karolherbst🐧🦀> I meant.. how should the bound checking behave
19:07fdobridge_: <gfxstrand> anything OOB returns 0
19:07fdobridge_: <karolherbst🐧🦀> on ubos?
19:07fdobridge_: <gfxstrand> yup
19:07fdobridge_: <karolherbst🐧🦀> they already do
19:07fdobridge_: <gfxstrand> size has alignment requirements
19:08fdobridge_: <gfxstrand> or at least I thought it did
19:08fdobridge_: <gfxstrand> but maybe it was my base pointers that weren't aligned. 🤔
19:08fdobridge_: <karolherbst🐧🦀> do you use LDC anywhere?
19:08fdobridge_: <gfxstrand> For indirect, yes
19:08fdobridge_: <!DodoNVK (she) 🇱🇹> Anyway retesting vkd3d(-proton) tests soon
19:08fdobridge_: <karolherbst🐧🦀> okay...
19:08fdobridge_: <karolherbst🐧🦀> that actually impacts OOB behavior then
19:09fdobridge_: <karolherbst🐧🦀> mhh.. default `LDC` should return 0 on OOB as well (and doesn't move into the next cb)
19:09fdobridge_: <karolherbst🐧🦀> what does fail with robustness2? or how does it fail?
19:10fdobridge_: <karolherbst🐧🦀> (default mode as in `.IA`)
19:15fdobridge_: <!DodoNVK (she) 🇱🇹> I only get vkd3d library segfaults now (probably because of some missing Vulkan functions)
19:15fdobridge_: <!DodoNVK (she) 🇱🇹> And my system has survived
19:17fdobridge_: <!DodoNVK (she) 🇱🇹> The amount of failures is definitely high :triangle_nvk:
19:17fdobridge_: <!DodoNVK (she) 🇱🇹> https://cdn.discordapp.com/attachments/1034184951790305330/1183125293414744084/message.txt?ex=6587324b&is=6574bd4b&hm=0780d096e7bac9e30c150b628dcfffea965b05e385bcc0fb935bf216ea0cb50e&
19:26fdobridge_: <!DodoNVK (she) 🇱🇹> vkd3d-proton needs a HOST_CACHED and DEVICE_LOCAL memory heap (is it easy to support?)
19:40fdobridge_: <!DodoNVK (she) 🇱🇹> Actually this is wrong (let me debug this further)
19:46fdobridge_: <!DodoNVK (she) 🇱🇹> Actually it needs both HOST_VISIBLE and HOST_CACHED properties 🤔
20:08fdobridge_: <gfxstrand> We might just not be advertising GART memory properly.
20:08fdobridge_: <!DodoNVK (she) 🇱🇹> After adding one extra memory property the tests are better now
20:09fdobridge_: <!DodoNVK (she) 🇱🇹> 📈
20:09fdobridge_: <!DodoNVK (she) 🇱🇹> https://cdn.discordapp.com/attachments/1034184951790305330/1183138462916956230/message.txt?ex=65873e8f&is=6574c98f&hm=8fd652883f8c426aac57d0cc0495fc1df7cd31d4ef002b7de4bd5858098778a9&
20:10fdobridge_: <gfxstrand> Feel free to make that an MR. If nothing else it'll give me an excuse to think about that.
20:12fdobridge_: <!DodoNVK (she) 🇱🇹> I'm not sure how to debug the rest of these issues though (RenderDoc captures are going to be difficult here) :ferris:
20:18fdobridge_: <gfxstrand> Those sampler feedback fails are interesting. I would expect that to work. Maybe we have LODs wrong or something? 🤷🏻♀️
20:19fdobridge_: <!DodoNVK (she) 🇱🇹> This is not native Vulkan though (it's Direct3D 12 running through the vkd3d-proton layer)
20:23fdobridge_: <karolherbst🐧🦀> ohh.. one advantage of const buffers over (cached) ldg.constant is, that you won't need barriers in the scoreboard (as they have in inherent cost)
20:23fdobridge_: <karolherbst🐧🦀> what's the status in nak with all the scoreboarding anyway?
20:24fdobridge_: <karolherbst🐧🦀> but mhh.. not sure if I'm disappointed about the 10% or not...
20:26fdobridge_: <gfxstrand> Should be scoreboarding okay
20:26fdobridge_: <gfxstrand> What's 10%?
20:26fdobridge_: <karolherbst🐧🦀> well.. the ubo change is more relevant on hardware without ldg.constant anyway
20:26fdobridge_: <karolherbst🐧🦀> your ubo MR
20:27fdobridge_: <gfxstrand> Oh, for sure. It's going to take Maxwell from shit up fine (mostly)
20:27fdobridge_: <gfxstrand> Oh, for sure. It's going to take Maxwell from shit to fine (mostly) (edited)
20:27fdobridge_: <karolherbst🐧🦀> however, others done way more code for way smaller perf improvements :ferrisUpsideDown:
20:27fdobridge_: <gfxstrand> Yeah, 10% is nothing to spit at.
20:28fdobridge_: <gfxstrand> Does anyone know where we are vs. the blob?
20:28fdobridge_: <gfxstrand> I've literally never cared to try
20:28fdobridge_: <karolherbst🐧🦀> also smaller shaders and all that
20:28fdobridge_: <karolherbst🐧🦀> phoronix did recently, no?
20:28fdobridge_: <!DodoNVK (she) 🇱🇹> ~~Except Maxwell v2~~
20:29fdobridge_: <karolherbst🐧🦀> kepler 780 ti would be a cool think to try
20:29fdobridge_: <karolherbst🐧🦀> aparently not...
20:29fdobridge_: <gfxstrand> Well, yeah. There's no helping Pascal and Maxwell 2
20:29fdobridge_: <karolherbst🐧🦀> which I even have one.. well.. not the 780 ti, but a titan 😄
20:30fdobridge_: <karolherbst🐧🦀> yeah... I think I'll give that ubo MR a try on that one
20:31fdobridge_: <gfxstrand> @karolherbst How's Volta? Did you get a chance to play with it?
20:31fdobridge_: <karolherbst🐧🦀> sooo.. a lot of things to do for tomorrow 😄
20:31fdobridge_: <esdrastarsis> theres no perf boost here :blobcatnotlikethis:
20:32fdobridge_: <karolherbst🐧🦀> wanted to try tomorrow
20:32fdobridge_: <gfxstrand> Okay, cool
20:32fdobridge_: <gfxstrand> No rush
20:33fdobridge_: <gfxstrand> I just keep writing if statements and not knowing which side is Volta I should cut on. It really is a cursed GPU.
20:39fdobridge_: <gfxstrand> What were you testing with?
20:40f_: hm what is this bridged to?
20:41fdobridge_: <!DodoNVK (she) 🇱🇹> Discord
20:41f_: oh ok. Thought it was a bridge to Matrix for some reason.
20:43fdobridge_: <gfxstrand> There are also matrix bridges but they're typically single user. We don't have a channel bridge.
20:44fdobridge_: <esdrastarsis> No Man's Sky and Strange Brigade
20:44fdobridge_: <gfxstrand> Yeah, it's going to depend on the app. If they're using lots of textures or SSBOs or something, it may not be much faster.
20:45fdobridge_: <gfxstrand> Hrm... Wasn't DXVK using SSBOs for structure buffers for a while? Does anyone know if it's still doing that?
20:46fdobridge_: <gfxstrand> We really want those to be UBOs or at least .constant.
21:00fdobridge_: <gfxstrand> The thing that scares me the most about trying to get good perf is when we start fighting things like state change overhead. There's the obvious "don't more than necessary" but there's a lot more subtle things like "what does rebinding a UBO cost?" that I don't fully understand.
21:01fdobridge_: <gfxstrand> Right now I'm assuming MME is free and that state changes are close to free unless they're obvious WFI cases.
21:03fdobridge_: <gfxstrand> @karolherbst @airlied I'm about to buy a laptop with an Ada card in it. Are those good and stable now as long as you have GSP?
21:07fdobridge_: <!DodoNVK (she) 🇱🇹> We need the `shader*Int64Atomics` stuff for those tests ⚛️
21:08fdobridge_: <gfxstrand> Those have been hooked up since a while. Well, buffer. I haven't hooked up shared yet.
21:08fdobridge_: <gfxstrand> Because 64-bit shared atomics are dumb
21:10fdobridge_: <gfxstrand> Well, my "a while" I mean like a week. 😅
21:11fdobridge_: <!DodoNVK (she) 🇱🇹> minStorageBufferOffsetAlignment needs to be 16 too
21:13fdobridge_: <gfxstrand> Yeah, I need to look into that. IDK how that's going to interact with CBufs.
21:15fdobridge_: <!DodoNVK (she) 🇱🇹> Both AMD and Intel have 4 (as well as Panfrost and Turnip)
21:16fdobridge_: <gfxstrand> Oh, storage? Yeah, that I can bring down easily. Make an MR and I'll merge it.
21:16fdobridge_: <!DodoNVK (she) 🇱🇹> v3dv is not meeting the requirement though with 32 (Dozen is OKish at 16)
21:17fdobridge_: <gfxstrand> We want 16 so we can pull vec4s but I think it's at like 64 right now
21:17fdobridge_: <!DodoNVK (she) 🇱🇹> Which it is (I checked the NVK code)
21:19fdobridge_: <airlied> Should be fine, though you will probably find a cursed one, also not sure we fully getting laptop panels to light up properly yet, dual GPU laptops seem fine
21:20fdobridge_: <gfxstrand> It's dual GPU with Intel
21:21fdobridge_: <!DodoNVK (she) 🇱🇹> This is some weird NVK building behavior 🦬
21:21fdobridge_: <!DodoNVK (she) 🇱🇹> https://cdn.discordapp.com/attachments/1034184951790305330/1183156472624992286/message.txt?ex=65874f55&is=6574da55&hm=454fedd6cb914cee25d05a4911155e28ba46439790b8db6e07fad38d110555c9&
21:21fdobridge_: <gfxstrand> Which might be a little broken but that's a good excuse to fix it all.
21:31fdobridge_: <airlied> I've been using a dual GPU Ada for last few weeks, seems stable as ampere
21:33fdobridge_: <!DodoNVK (she) 🇱🇹> I crashed my system with NVK_MIN_SSBO_ALIGMENT set to 16 :cursedgears:
21:35fdobridge_: <!DodoNVK (she) 🇱🇹> At first I had a MMU fault but then I got this: `watchdog: Watchdog detected hard LOCKUP on cpu 0` (I couldn't see this message until I rebooted my laptop)
21:39fdobridge_: <!DodoNVK (she) 🇱🇹> The proprietary driver has minStorageBufferOffsetAlignment set to 16 (so there must be some bug with NVK/NAK)
21:42fdobridge_: <karolherbst🐧🦀> @gfxstrand anyway, any further thoughts on that spir-v for that movs within a deref chain thing?
21:44fdobridge_: <karolherbst🐧🦀> mhhhh cursed idea
21:46fdobridge_: <karolherbst🐧🦀> always depends on the hardware, but the initial Ada enablement I did on a Intel+Nvidia laptop
21:46fdobridge_: <karolherbst🐧🦀> *was
21:48fdobridge_: <gfxstrand> Well, we'll find out in about a week. 😅
21:48fdobridge_: <gfxstrand> Thanks for the SPIR-V. I'll look Monday.
21:48fdobridge_: <gfxstrand> @karolherbst Do you know when the cbuf alignment rules changed and what they are?
21:48fdobridge_: <gfxstrand> 64B seems to work on Turing.
21:56fdobridge_: <karolherbst🐧🦀> goooood question. I don't know for Volta, for Turing+ it's 16 bytes, btw Volta has banks 0-17 available, turing seems to have have cb banks 0-17 + 24-31, ampere seems to have 0-17 and maybe also 24-31 (unknown condition)
21:57fdobridge_: <karolherbst🐧🦀> apparently if the `SPA` version is 7.3 there is 24-31 available for Volta...
21:58fdobridge_: <karolherbst🐧🦀> there is this `SET_SPA_VERSION` command in 3D and compute, wondering if it also returns the spa version used.. and if volta can be forced to use 7.3?
22:04fdobridge_: <!DodoNVK (she) 🇱🇹> How about Pascal?
22:04fdobridge_: <gfxstrand> `minUniformBufferOffsetAlignment = 256` on Titan V. 🤡
22:04fdobridge_: <karolherbst🐧🦀> I guess the change was with turing then 🙂
22:05fdobridge_: <triang3l> I hope there are no fun things like no dynamic descriptor indexing for slots 14 and 15 on TeraScale 😝
22:05fdobridge_: <karolherbst🐧🦀> is it actually important though?
22:06fdobridge_: <karolherbst🐧🦀> but anyway.. should be 16b then 🙂 no idea what nvidia reports
22:07fdobridge_: <triang3l> And in some cases 0 probably, in some cases NaN, for out-of-bounds reads (although dynamic data addressing with the constant cache on TeraScale only works with the D3D9-ish scalar loop counter, so that's not really an interesting case)
22:07fdobridge_: <gfxstrand> It changes what limit we can advertise.
22:07fdobridge_: <gfxstrand> And getting this one right is kinda important...
22:08fdobridge_: <triang3l> It's 64 on proprietary Turing drivers if I recall correctly, but maybe I recall incorrectly
22:09fdobridge_: <gfxstrand> Yeah, I'm looking at gpuinfo.org
22:10fdobridge_: <gfxstrand> It's the easiest way to figure this stuff out.
22:25fdobridge_: <karolherbst🐧🦀> oh sure, I was just wondering how important it is to report a smaller number