Files
test2/source/blender/gpu/vulkan/vk_memory_pool.hh
Jeroen Bakker 0c75361516 Vulkan: Add Memory Pool for External Pixel Buffers
Adds a separate memory pool for creating external pixel buffers.
Previous the memory type of images was used, but could not be
compatible.

Pull Request: https://projects.blender.org/blender/blender/pulls/146078
2025-09-11 16:19:23 +02:00

50 lines
1.1 KiB
C++

/* SPDX-FileCopyrightText: 2025 Blender Authors
*
* SPDX-License-Identifier: GPL-2.0-or-later */
/** \file
* \ingroup gpu
*/
#pragma once
#include "vk_common.hh"
namespace blender::gpu {
class VKDevice;
constexpr VkExternalMemoryHandleTypeFlags vk_external_memory_handle_type()
{
#ifdef _WIN32
return VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT;
#else
return VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT;
#endif
}
/**
* VMA related data for a memory pool.
*/
struct VKMemoryPool {
/* NOTE: This attribute needs to be kept alive as it will be read by VMA when allocating inside
* the pool. */
VkExportMemoryAllocateInfoKHR info = {VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_KHR};
VmaPool pool = VK_NULL_HANDLE;
void deinit(VKDevice &device);
};
struct VKMemoryPools {
VKMemoryPool external_memory_image = {};
VKMemoryPool external_memory_pixel_buffer = {};
void init(VKDevice &device);
void deinit(VKDevice &device);
private:
void init_external_memory_image(VKDevice &device);
void init_external_memory_pixel_buffer(VKDevice &device);
};
} // namespace blender::gpu