EQMG / Acid

A high speed C++17 Vulkan game engine
https://equilibrium.games
MIT License
1.72k stars 153 forks source link

Vulkan commandbuffer compliance issue on Mesa::RADV/ANV/AMDVLK #95

Open SpookySkeletons opened 4 years ago

SpookySkeletons commented 4 years ago

Turned on VK_LAYER_LUNARG_standard_validation and got this in terminal on Linux machines:

Calling vkBeginCommandBuffer() on active VkCommandBuffer 0x559a114172d0[] before it has completed. You must check command buffer fence before this call. The Vulkan spec states: commandBuffer must not be in the recording or pending state. (https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VUID-vkBeginCommandBuffer-commandBuffer-00049)

Interesting to note that RADV does it much more frequently than AMDVLK. Is everything being fenced properly?

Hardware:

SpookySkeletons commented 4 years ago

Looks like this is the result of 'running' variable in the CommandBuffer.cpp always being 0 allowing vkBeginCommandBuffer() to run no matter if the buffer shouldn't be available!

Log::Out("Command buffer!", running,"\n"); In CommandBuffer::Begin()

Always drops 'Command buffer!0' no matter what When Begin() is called.

Bricklou commented 3 years ago

Hi, is there some updates ? I'm currently having the same issue, and I am trying to figure how to fix it (unsuccessfully).