eliasdaler / edbr

Elias Daler's Bikeshed Renderer (Vulkan renderer/game engine)
423 stars 20 forks source link

Runtime error VK_ERROR_OUT_OF_DEVICE_MEMORY #4

Open MuStaFen opened 16 hours ago

MuStaFen commented 16 hours ago

1st: Thanks for allowing us to use your well structured project!

I managed to build the project using windows 10 with msys2/mingw64 (g++ version 14.2.0) but did change it slightly in order to use SLD3 due to some redefinition issues.

But while your precompiled demo is running well on my machine i'm getting VK_ERROR_OUT_OF_DEVICE_MEMORY from GfxDevice::createImageRaw vmaCreateImage(allocator, &imgInfo, &allocInfo, &image.image, &image.allocation, nullptr));

This is happening at the 18th call of GfxDevice::createImageRaw (in this case called from PointLightShadowMapPipeline::init at shadowMaps[8] while MAX_POINT_LIGHTS == 16).

I would be really grateful for any hints helping me to solve this problem, since i've chosen your project as starting point for learning vulkan.

kind regards Steffen

eliasdaler commented 13 hours ago

Hello. What's your GPU? How much VRAM do you have?

You can try reducing point light shadow map size to something like 256 or 512 here and also reduce shadow map size here for directional shadows.

MuStaFen commented 2 hours ago

Amazing experience to run a self compiled 3D-game for the first time!!!

Settting PointLightShadowMapPipeline::shadowMapTextureSize{256.f} and CSMPipeline::shadowMapTextureSize{512.f} makes mtpgame run for me. (I'm running a GeForce GTX 1650 with 3935 MB VRAM.)

Thank you for your quick and helpful response!

Minor remaining issues are:

Validation Error: [ VUID-vkCmdBindPipeline-pipeline-06195 ] Object 0: handle = 0x6caffc00000000e3, name = mesh pipeline, type = VK_OBJECT_TYPE_PIPELINE; | MessageID = 0x6c16bfb4 | vkCmdBindPipeline(): Binding pipeline with VkPipelineRenderingCreateInfo::colorAttachmentCount 1, but previously bound pipeline VkPipelineRenderingCreateInfo::colorAttachmentCount was 0. The Vulkan spec states: If pipeline is a graphics pipeline, this command has been called inside a render pass instance started with vkCmdBeginRendering, and commands using the previously bound graphics pipeline have been recorded within the render pass instance, then the value of VkPipelineRenderingCreateInfo::colorAttachmentCount specified by this pipeline must match that set in the previous pipeline (https://vulkan.lunarg.com/doc/view/1.3.216.0/windows/1.3-extensions/vkspec.html#VUID-vkCmdBindPipeline-pipeline-06195)

and

Validation Error: [ VUID-vkCmdBindPipeline-pipeline-06195 ] Object 0: handle = 0x7fe62800000000ef, name = postFX pipeline, type = VK_OBJECT_TYPE_PIPELINE; | MessageID = 0x6c16bfb4 | vkCmdBindPipeline(): Binding pipeline with VkPipelineRenderingCreateInfo::colorAttachmentCount 1, but previously bound pipeline VkPipelineRenderingCreateInfo::colorAttachmentCount was 0. The Vulkan spec states: If pipeline is a graphics pipeline, this command has been called inside a render pass instance started with vkCmdBeginRendering, and commands using the previously bound graphics pipeline have been recorded within the render pass instance, then the value of VkPipelineRenderingCreateInfo::colorAttachmentCount specified by this pipeline must match that set in the previous pipeline (https://vulkan.lunarg.com/doc/view/1.3.216.0/windows/1.3-extensions/vkspec.html#VUID-vkCmdBindPipeline-pipeline-06195) frame drop, time: 0.1697