Although staging commands can be a good idea from performance pov, it
also means that we are increasing the size of the command buffer,
until the queue submission is set (in most drivers).
For example, when computing the Interactions, staged command buffers
can be easily greater that 15k. This could be a problem with
low-memory devices, like rpi4.
This patch adds a new variable to configure the maximum size of staged
commands. When that limit is reached a Flush is done (similar to the
existing limit on the UploadBufferSize).
It is not used at all (VkPipelineRasterizationStateCreateInfo at
RenderProgs_VK.cpp sets it to false), so not asking for it would make
possible to support more drivers (for example, v3dv for the rpi4
doesn't support it).
This is already the case for the OpenGL renderer. This feature is not
supported by all the Vulkan drivers. For example Mesa ANV with
Coffe-lake (that is relatively recent) or Mesa v3dv (Broadcom) used on
the rpi4.
* Renamed vkwindow to sdlWindow in struct vulkanContext_t to matche the rest of the struct naming conventions.
Image_VK.cpp:
* disabled printing "Vulkan Image alloc " to the terminal, flooding it
with data
RenderBackend_VK.cpp:
* Re-enabled r_vkEnableValidationLayers enabling/disabling Vulkan
validation checking, I had it hard-coded to true for testing reasons.
* static void DestroySwapChain():
* I don't know if the changes I introduced here are helping or not,
or even doing anything, so this part can be ignored or changed back.
* GL_StartFrame() and GL_BlockingSwapBuffers():
* VkResult for these two functions, vkAcquireNextImageKHR and
vkQueuePresentKHR, don't need to return VK_SUCCESS for the
application to be valid, so handle them differently here. There may
be others like this, but I don't know.
qvk.h:
* Since VK_USE_PLATFORM_* is defined in the CMakeLists.txt file, for
now anyways, use them to wrap the correct platform headers instead of
defining them here.
sdl_vkimp.cpp:
* Some debug printing changes, from GL to Vulkan, since this is for
the Vulkan API.
a temp fix for the surfaces having a width and height of 0 since
renderSystem->getHeight()/getWidth() access
glConfig.nativeResolutionHeight/Width directly.