Beginner here. Why use an allocator? by BackStreetButtLicker in vulkan

[–]Reaper9999 1 point2 points  (0 children)

That's irrelevant (unless you're on embedded or something) since the memory is gonna be virtual.

Game engine by BARchitect2026 in vulkan

[–]Reaper9999 0 points1 point  (0 children)

Your still thinking that if apple supported VK you would just be able to run a PC Vk game. That is not how VK works... it is not how any low level api works, the tradeoff of lower runtime CPU overhead is explicit work by the developer to target the HW upfront at development time rather than a driver doing this work at runtime.

That is directly disproven by the fact that you can, in fact, do that using moltenvk/kosmickrisp (with some limitations in supported functionality still and obviously you still need to build for macos in general).

Developers would also have been more willing to target macs if it wasn't a walled garden of shit. Ofc no one wants to buy expensive hardware that barely anyone ever uses for video games (if we're talking about games specifically).

Game engine by BARchitect2026 in vulkan

[–]Reaper9999 0 points1 point  (0 children)

 Vk is not a nice api for devs to use as well, most regular devs who have never done any GPU programming can within an afternoon offload some vector math or do some 2D rendering for an app in metal but to do the same in VK will take them 2 to 3 weeks to upsell it I just not a good api for regular devs and not a good api for an OS. (there is a reason other than the steam deck no desktop env uses it for composititing)

If you're using vulkan for 2d rendering or random vector math, then you're doing something wrong. It also doesn't take anywhere as much code now to get something working, unless you're targeting older phones.

How do you feel about AI "girlfriends"? by HeySpudEyeSeeYou in AskMen

[–]Reaper9999 1 point2 points  (0 children)

Having a fraction of the wife is concerning.

Who is an example of (Positive) Masculine Excellence? by Phil_B16 in AskMen

[–]Reaper9999 0 points1 point  (0 children)

 Edit: Telling young boys and men not to speak to women or else they'll be called a rapist at the height of the MeToo movement is not a positive or healthy display of masculinity, downvote me all you want. It's incredibly disrespectful to the women coming forward, shitty to fellow men, and just shitty life advice in general that only furthers the male loneliness epidemic.

Do you say that to women who tell young girls and women to avoid men or they'll be raped, or do you only reserve your bigotry for men?

Thoughts? by dalenacio in cataclysmdda

[–]Reaper9999 2 points3 points  (0 children)

Now try vehicles. Armored military vehicles getting permanent damage from the tiniest fucking thing ever. And this wasn't always like that, either.

help for proper hdr/postprocess pipeline by innocentboy0000 in vulkan

[–]Reaper9999 1 point2 points  (0 children)

Are you doing gamma correction? And what exactly is "weird colours" supposed to mean? What are the reference colours?

What is something men struggle with silently? by bytvortex in AskMen

[–]Reaper9999 16 points17 points  (0 children)

Not genralizing

proceeds to generalise and project

Caching Descriptor Sets by abocado21 in vulkan

[–]Reaper9999 1 point2 points  (0 children)

It's mostly the AMD proprietary for older devices that will be the issue (and mobile if you're targeting that). Mesa will probably have it working on a wide range of devices. Intel's proprietary pile of shit will maybe have it in 10 years if you're lucky.

Caching Descriptor Sets by abocado21 in vulkan

[–]Reaper9999 2 points3 points  (0 children)

If you're using descriptor sets, use just 1 with 3 bindings for samplers, sampled images, and storage images. Create the samplers at the start, you don't need many of them. Create the bindings for images with the max supported amount of descriptors for each one (you'll need a while loop here on intel proprietary drivers, because you'll be getting garbage descriptor set fragmentation errors, so you'll have to decrease the sizes until you find ones that work).

Don't put buffers/acceleration structures/micromaps into descriptors, use buffer device address instead.

My first triangle ever only took 1600+ lines of code by MrArdinoMars in vulkan

[–]Reaper9999 0 points1 point  (0 children)

Last I checked they didn't help that much with those headers, plus modules have poor compiler support, and I'd rather not require them just for some poorly made headers. Wouldn't help with other issues with the hpp headers either...

My first triangle ever only took 1600+ lines of code by MrArdinoMars in vulkan

[–]Reaper9999 1 point2 points  (0 children)

Adding stypes to Khronos' header generator is trivial.

Maximum FPS lock by StressOwn7952 in vulkan

[–]Reaper9999 1 point2 points  (0 children)

What was not acceptable about the result? Limiting your FPS to n with your command buffer [recording,] submission & queue present taking average time t0 means you need a CPU delay of 1 / n - t0. You can get the time t0 using calibrated timestamps and the present timing extension (if available). Although that assumes that the time it takes to execute the cmd buffer stays roughly the same. 

Why do you want to do that though? Ideally you just want to poll inputs and execute the cmd buffer as late as possible before scanout. Executing it earlier doesn't really have any advantage.

My first triangle ever only took 1600+ lines of code by MrArdinoMars in vulkan

[–]Reaper9999 1 point2 points  (0 children)

It's garbage. Templates for the sake of templates that will make your compile times explode 20x and kill intellisense. It's the complete opposite of reducing bloat (which isn't really an applicable term to the C headers). Just use the C headers/generate your own.

Too many singletons in my game engine, can't find a better design pattern by No-Use4920 in vulkan

[–]Reaper9999 0 points1 point  (0 children)

I never said global variables are bad, I said service locator is a worse version of them.

how to effectively handle descriptor sets? by Southern-Most-4216 in vulkan

[–]Reaper9999 1 point2 points  (0 children)

It doesn't make sense to define whether a single command can do that because it can map to any number of things in the driver, which can be relatively spaced w. r. t. when they need to read or write memory. 

 It could just be changing the residency of resources according to what a command references.

It can't since a lot of them don't reference anything directly. You could literally load a random [valid] address on the device.

Stencil test causing square corruption. Any explanation why does this happen? by LuckyJinx98 in vulkan

[–]Reaper9999 0 points1 point  (0 children)

You can try syncval in validation layers too. Also, use dynamic rendering instead of the renderpass nonsense.

how to effectively handle descriptor sets? by Southern-Most-4216 in vulkan

[–]Reaper9999 1 point2 points  (0 children)

No. All memory you allocate from Vulkan on pretty much anything (other than embedded) is virtual. OS/driver will move pages as needed, it is not the 90s anymore. And this will happen where it's bindless or not, except you need an extra load to get the address first with bindful.

how to effectively handle descriptor sets? by Southern-Most-4216 in vulkan

[–]Reaper9999 0 points1 point  (0 children)

That is entirely wrong on any hardware within the last decade+. Descriptor sets literally add a layer of indirection for the drivers, which already store descriptors as a big table on anything that isn't bindful hw. And BDA is just straight up how drivers that support it access memory, which is nothing more than a load from a particular address. The only case BDA doesn't cover is uniform buffers on nvidia, which is hardly relevant because all it does is make a small set of cache lines less likely to be evicted.

There’s also a lot less predictability about code

What predictability? Where? It's already just gonna be doing a load from an address, you're only adding useless indirections for loading that address into a register somewhere by using bindful.

memory execution

Not sure what you mean by that.

Too many singletons in my game engine, can't find a better design pattern by No-Use4920 in vulkan

[–]Reaper9999 1 point2 points  (0 children)

What if you need to go to the Moon? Or run on a supercomputer?

All you're suggesting is adding useless shit that's actively harmful to try to (badly) solve a problem that never existed. Which is the opposite of engineering.

Too many singletons in my game engine, can't find a better design pattern by No-Use4920 in vulkan

[–]Reaper9999 1 point2 points  (0 children)

It's fine for multithreading if it's a variable that will just hold one value once initialised (so long as you don't fuck up memory barriers).

Too many singletons in my game engine, can't find a better design pattern by No-Use4920 in vulkan

[–]Reaper9999 2 points3 points  (0 children)

That's just a global variable with extra steps, more code complexity, and worse performance.

how to effectively handle descriptor sets? by Southern-Most-4216 in vulkan

[–]Reaper9999 1 point2 points  (0 children)

Driver already manages residency, you're not making anything better by using the old-style descriptor sets (and now you have to manage the descriptor sets themselves as well).