I feel like Vulkan developers really should have just provided an option like the std::shared_ptr that already exist in C++ in order to handle memory management as an option to avoid these problems.
I'm still a beginner with vulkan, but managing all the memory by yourself sounds like a lot of work. Do you really need some kind of alloc and dealloc with explicit memory indices for the GPU memory?
Check out: "Easy to integrate Vulkan memory allocation library" called "Vulkan Memory Allocator", see github.com/GPUOpen-LibrariesAndSDKs/VulkanMemoryAllocator (mentioned at 7:57)
While Memory Management is additional work and can be quite involved to get right... the benefits are more than worth the effort. Now as a "Beginner", what I'd recommend is something like: github.com/GPUOpen-LibrariesAndSDKs/VulkanMemoryAllocator This should streamline and help to get something that just "Works" without focusing too much on the Memory Management aspect. When you want to later expand, you can then either replace / expand / edit … to be support your Engine, what you need, etc. NVIDIA likely also have ones as well... but the approaches are fairly Hardware Agnostic, so it's up to you. I'm sure as time goes on, we'll actually see more Memory Management API come from 3rd Parties that will allow for some measure of Template / Automation … but what's good about these being API Libraries (which in the case of AMD are Open Source), over OpenGL where it's entirely automated by the Drivers; is *YOU* as the Developer have options on how / when you want to engage in Low-Level Vs. High-Level. Like Compute Shaders (which were quite slowly adopted since their introduction in 2009), it isn't necessarily about "Out-of-the-Box" Performance... but rather the *potential* per scenario optimisation that becomes possible with experience, engine, approach, etc. that you have completely control over. You, in essence have the choice of how deep down that rabbit hole you're willing to go for Performance, Optimisation, etc.
I feel like Vulkan developers really should have just provided an option like the std::shared_ptr that already exist in C++ in order to handle memory management as an option to avoid these problems.
advice on this high level is rare and pure gold.
One of the best Vulkan talks I've seen so far.
Dzięki mordo, dobry temat
Thanks targeted videos. I just started porting to Vulkan yesterday!
This talk is full of valuable information, thank you!
Great talk and insights!
Excellent presentation.
really interesting talk
Podziwiam za wiedzę
...
I really hope it will be the Crysis 4 :D
Best regards Adam!
I'm still waiting for it
very useful talk to anyone writing a modern graphics engine. I feel bad for the guy - he's probably been bullied a lot for being too smart or shy.
I feel like Vulkan developers really should have just provided an option like the std::shared_ptr that already exist in C++ in order to handle memory management as an option to avoid these problems.
I'm still a beginner with vulkan, but managing all the memory by yourself sounds like a lot of work. Do you really need some kind of alloc and dealloc with explicit memory indices for the GPU memory?
Check out: "Easy to integrate Vulkan memory allocation library" called "Vulkan Memory Allocator", see github.com/GPUOpen-LibrariesAndSDKs/VulkanMemoryAllocator (mentioned at 7:57)
While Memory Management is additional work and can be quite involved to get right... the benefits are more than worth the effort.
Now as a "Beginner", what I'd recommend is something like: github.com/GPUOpen-LibrariesAndSDKs/VulkanMemoryAllocator
This should streamline and help to get something that just "Works" without focusing too much on the Memory Management aspect.
When you want to later expand, you can then either replace / expand / edit … to be support your Engine, what you need, etc.
NVIDIA likely also have ones as well... but the approaches are fairly Hardware Agnostic, so it's up to you.
I'm sure as time goes on, we'll actually see more Memory Management API come from 3rd Parties that will allow for some measure of Template / Automation … but what's good about these being API Libraries (which in the case of AMD are Open Source), over OpenGL where it's entirely automated by the Drivers; is *YOU* as the Developer have options on how / when you want to engage in Low-Level Vs. High-Level.
Like Compute Shaders (which were quite slowly adopted since their introduction in 2009), it isn't necessarily about "Out-of-the-Box" Performance... but rather the *potential* per scenario optimisation that becomes possible with experience, engine, approach, etc. that you have completely control over.
You, in essence have the choice of how deep down that rabbit hole you're willing to go for Performance, Optimisation, etc.
I feel like Vulkan developers really should have just provided an option like the std::shared_ptr that already exist in C++ in order to handle memory management as an option to avoid these problems.
Here in 2020
Will it work for blender?