This project is to migrate shader resources (texture (completed), etc. (future works)) between host and device (GPU) for extended memory space by taking advantage of Vulkan's memory management ability.
Although the project is completed (only for texture migration), the source code has not been completely refactored and commented (In Progress). If you are interested in the methodology, please have a look at ResourceManager.cpp
and start at ResourceManager::createImage
.
At startup of the demo program, as investigated, the device usage seems to exceed the expected limit. That is because the program constructs textures first, and then buffers. The method ResourceManager::createBuffer
has not been implemented completely yet, which makes the buffers non-migratable right now. But the migration works properly after changing device memory pseudolimit.
- Vulkan SDK (for sure)
- AMD's Vulkan Memory Allocator (that default pool is like .. Oh My God)
- GLM
- GLFW
- Assimp
If there ain't no Sascha Willems's sample and Alexander Overvoorde's tutorial, I would have got no life till now for sure. LOL