Revert "Vulkan: Remove resource pools"

This reverts commit ce0406b97b.
Reports on blender-coders mentioned that it could fail on startup.
This commit is contained in:
Jeroen Bakker
2025-09-01 12:38:57 +02:00
parent 62f5965dee
commit f80083491a
7 changed files with 68 additions and 12 deletions

View File

@@ -603,7 +603,7 @@ GHOST_ContextVK::GHOST_ContextVK(const GHOST_ContextParams &context_params,
hdr_info_(hdr_info),
surface_(VK_NULL_HANDLE),
swapchain_(VK_NULL_HANDLE),
frame_data_(2),
frame_data_(GHOST_FRAMES_IN_FLIGHT),
render_frame_(0),
use_hdr_swapchain_(false)
{
@@ -1160,10 +1160,7 @@ GHOST_TSuccess GHOST_ContextVK::recreateSwapchain(bool use_hdr_swapchain)
/* Some platforms require a minimum amount of render frames that is larger than we expect. When
* that happens we should increase the number of frames in flight. We could also consider
* splitting the frame in flight and image specific data. */
if (actual_image_count > frame_data_.size()) {
CLOG_TRACE(&LOG, "Vulkan: Increasing frame data to %u frames", actual_image_count);
frame_data_.resize(actual_image_count);
}
assert(actual_image_count <= GHOST_FRAMES_IN_FLIGHT);
swapchain_images_.resize(actual_image_count);
std::vector<VkImage> swapchain_images(actual_image_count);
vkGetSwapchainImagesKHR(device, swapchain_, &actual_image_count, swapchain_images.data());

View File

@@ -91,6 +91,15 @@ struct GHOST_Frame {
void destroy(VkDevice vk_device);
};
/**
* The number of frames that GHOST manages.
*
* This must be kept in sync with any frame-aligned resources in the
* Vulkan backend. Notably, VKThreadData::resource_pools_count must
* match this value.
*/
constexpr static uint32_t GHOST_FRAMES_IN_FLIGHT = 5;
class GHOST_ContextVK : public GHOST_Context {
friend class GHOST_XrGraphicsBindingVulkan;
friend class GHOST_XrGraphicsBindingVulkanD3D;