Go to the documentation of this file.
64 template <
typename VulkanObjectType, VulkanHandleTypeId>
67 #define DEFINE_VULKAN_OBJECT_WRAPPER(Type) VulkanObjectWrapper<Vk##Type, VulkanHandleTypeId::Type>
86 #undef DEFINE_VULKAN_OBJECT_WRAPPER
94 const VkDeviceCreateInfo& DeviceCI,
96 const VkAllocationCallbacks* vkAllocator);
109 return shared_from_this();
114 return shared_from_this();
117 VkQueue
GetQueue(uint32_t queueFamilyIndex, uint32_t queueIndex);
151 VkCommandBuffer
AllocateVkCommandBuffer(
const VkCommandBufferAllocateInfo& AllocInfo,
const char* DebugName =
"")
const;
152 VkDescriptorSet
AllocateVkDescriptorSet(
const VkDescriptorSetAllocateInfo& AllocInfo,
const char* DebugName =
"")
const;
180 VkResult
BindBufferMemory(VkBuffer buffer, VkDeviceMemory memory, VkDeviceSize memoryOffset)
const;
181 VkResult
BindImageMemory (VkImage image, VkDeviceMemory memory, VkDeviceSize memoryOffset)
const;
184 VkResult
MapMemory(VkDeviceMemory memory, VkDeviceSize offset, VkDeviceSize size, VkMemoryMapFlags flags,
void** ppData)
const;
193 const VkFence* pFences,
195 uint64_t timeout)
const;
198 const VkWriteDescriptorSet* pDescriptorWrites,
199 uint32_t descriptorCopyCount,
200 const VkCopyDescriptorSet* pDescriptorCopies)
const;
203 VkCommandPoolResetFlags flags = 0)
const;
206 VkDescriptorPoolResetFlags flags = 0)
const;
214 VkQueryResultFlags flags)
const
216 return vkGetQueryPoolResults(m_VkDevice, queryPool, firstQuery, queryCount,
217 dataSize, pData, stride, flags);
220 void GetAccelerationStructureBuildSizes(
const VkAccelerationStructureBuildGeometryInfoKHR& BuildInfo,
const uint32_t* pMaxPrimitiveCounts, VkAccelerationStructureBuildSizesInfoKHR& SizeInfo)
const;
231 const VkDeviceCreateInfo& DeviceCI,
233 const VkAllocationCallbacks* vkAllocator);
235 template <
typename VkObjectType,
237 typename VkCreateObjectFuncType,
238 typename VkObjectCreateInfoType>
240 const VkObjectCreateInfoType& CreateInfo,
241 const char* DebugName,
242 const char* ObjectType)
const;
244 VkDevice m_VkDevice = VK_NULL_HANDLE;
245 const VkAllocationCallbacks*
const m_VkAllocator;
246 VkPipelineStageFlags m_EnabledShaderStages = 0;
247 const VkPhysicalDeviceFeatures m_EnabledFeatures;
FenceWrapper CreateFence(const VkFenceCreateInfo &FenceCI, const char *DebugName="") const
Definition: VulkanLogicalDevice.cpp:161
void UpdateDescriptorSets(uint32_t descriptorWriteCount, const VkWriteDescriptorSet *pDescriptorWrites, uint32_t descriptorCopyCount, const VkCopyDescriptorSet *pDescriptorCopies) const
Definition: VulkanLogicalDevice.cpp:562
VkDeviceAddress GetAccelerationStructureDeviceAddress(VkAccelerationStructureKHR AS) const
Definition: VulkanLogicalDevice.cpp:497
void ReleaseVulkanObject(CommandPoolWrapper &&CmdPool) const
Definition: VulkanLogicalDevice.cpp:347
const VkPhysicalDeviceFeatures & GetEnabledFeatures() const
Definition: VulkanLogicalDevice.hpp:226
DEFINE_VULKAN_OBJECT_WRAPPER(BufferView) BufferViewWrapper
Definition: VulkanLogicalDevice.hpp:70
DEFINE_VULKAN_OBJECT_WRAPPER(ShaderModule) ShaderModuleWrapper
Definition: VulkanLogicalDevice.hpp:77
VkResult GetRayTracingShaderGroupHandles(VkPipeline pipeline, uint32_t firstGroup, uint32_t groupCount, size_t dataSize, void *pData) const
Definition: VulkanLogicalDevice.cpp:586
SamplerWrapper CreateSampler(const VkSamplerCreateInfo &SamplerCI, const char *DebugName="") const
Definition: VulkanLogicalDevice.cpp:155
Definition: VulkanLogicalDevice.hpp:88
VkResult FlushMappedMemoryRanges(uint32_t memoryRangeCount, const VkMappedMemoryRange *pMemoryRanges) const
Definition: VulkanLogicalDevice.cpp:537
@ AccelerationStructureKHR
DEFINE_VULKAN_OBJECT_WRAPPER(ImageView) ImageViewWrapper
Definition: VulkanLogicalDevice.hpp:72
DEFINE_VULKAN_OBJECT_WRAPPER(Fence) FenceWrapper
Definition: VulkanLogicalDevice.hpp:74
VkResult BindBufferMemory(VkBuffer buffer, VkDeviceMemory memory, VkDeviceSize memoryOffset) const
Definition: VulkanLogicalDevice.cpp:487
ImageViewWrapper CreateImageView(const VkImageViewCreateInfo &ImageViewCI, const char *DebugName="") const
Definition: VulkanLogicalDevice.cpp:148
DEFINE_VULKAN_OBJECT_WRAPPER(DeviceMemory) DeviceMemoryWrapper
Definition: VulkanLogicalDevice.hpp:73
DEFINE_VULKAN_OBJECT_WRAPPER(Image) ImageWrapper
Definition: VulkanLogicalDevice.hpp:71
void FreeDescriptorSet(VkDescriptorPool Pool, VkDescriptorSet Set) const
Definition: VulkanLogicalDevice.cpp:459
VulkanHandleTypeId
Definition: VulkanLogicalDevice.hpp:38
Definition: VulkanLogicalDevice.hpp:65
void EnableRayTracingKHRviaNV()
DEFINE_VULKAN_OBJECT_WRAPPER(Semaphore) SemaphoreWrapper
Definition: VulkanLogicalDevice.hpp:83
DescriptorPoolWrapper CreateDescriptorPool(const VkDescriptorPoolCreateInfo &DescrPoolCI, const char *DebugName="") const
Definition: VulkanLogicalDevice.cpp:273
PipelineWrapper CreateGraphicsPipeline(const VkGraphicsPipelineCreateInfo &PipelineCI, VkPipelineCache cache, const char *DebugName="") const
Definition: VulkanLogicalDevice.cpp:212
PipelineWrapper CreateRayTracingPipeline(const VkRayTracingPipelineCreateInfoKHR &PipelineCI, VkPipelineCache cache, const char *DebugName="") const
Definition: VulkanLogicalDevice.cpp:232
DEFINE_VULKAN_OBJECT_WRAPPER(DescriptorPool) DescriptorPoolWrapper
Definition: VulkanLogicalDevice.hpp:81
AccelStructWrapper CreateAccelStruct(const VkAccelerationStructureCreateInfoKHR &CI, const char *DebugName="") const
Definition: VulkanLogicalDevice.cpp:297
const ExtensionFeatures & GetEnabledExtFeatures() const
Definition: VulkanLogicalDevice.hpp:227
VkPipelineStageFlags GetEnabledShaderStages() const
Definition: VulkanLogicalDevice.hpp:224
ImageWrapper CreateImage(const VkImageCreateInfo &ImageCI, const char *DebugName="") const
Definition: VulkanLogicalDevice.cpp:141
std::shared_ptr< VulkanLogicalDevice > GetSharedPtr()
Definition: VulkanLogicalDevice.hpp:107
DEFINE_VULKAN_OBJECT_WRAPPER(Buffer) BufferWrapper
Definition: VulkanLogicalDevice.hpp:69
SemaphoreWrapper CreateSemaphore(const VkSemaphoreCreateInfo &SemaphoreCI, const char *DebugName="") const
Definition: VulkanLogicalDevice.cpp:285
VkResult MapMemory(VkDeviceMemory memory, VkDeviceSize offset, VkDeviceSize size, VkMemoryMapFlags flags, void **ppData) const
Definition: VulkanLogicalDevice.cpp:522
FramebufferWrapper CreateFramebuffer(const VkFramebufferCreateInfo &FramebufferCI, const char *DebugName="") const
Definition: VulkanLogicalDevice.cpp:267
VkResult GetQueryPoolResults(VkQueryPool queryPool, uint32_t firstQuery, uint32_t queryCount, size_t dataSize, void *pData, VkDeviceSize stride, VkQueryResultFlags flags) const
Definition: VulkanLogicalDevice.hpp:208
VkDevice GetVkDevice() const
Definition: VulkanLogicalDevice.hpp:119
VkResult ResetCommandPool(VkCommandPool vkCmdPool, VkCommandPoolResetFlags flags=0) const
Definition: VulkanLogicalDevice.cpp:570
void GetAccelerationStructureBuildSizes(const VkAccelerationStructureBuildGeometryInfoKHR &BuildInfo, const uint32_t *pMaxPrimitiveCounts, VkAccelerationStructureBuildSizesInfoKHR &SizeInfo) const
Definition: VulkanLogicalDevice.cpp:512
ShaderModuleWrapper CreateShaderModule(const VkShaderModuleCreateInfo &ShaderModuleCI, const char *DebugName="") const
Definition: VulkanLogicalDevice.cpp:255
BufferViewWrapper CreateBufferView(const VkBufferViewCreateInfo &BuffViewCI, const char *DebugName="") const
Definition: VulkanLogicalDevice.cpp:134
DEFINE_VULKAN_OBJECT_WRAPPER(AccelerationStructureKHR) AccelStructWrapper
Definition: VulkanLogicalDevice.hpp:85
DeviceMemoryWrapper AllocateDeviceMemory(const VkMemoryAllocateInfo &AllocInfo, const char *DebugName="") const
Definition: VulkanLogicalDevice.cpp:173
BufferWrapper CreateBuffer(const VkBufferCreateInfo &BufferCI, const char *DebugName="") const
Definition: VulkanLogicalDevice.cpp:127
VulkanPhysicalDevice::ExtensionFeatures ExtensionFeatures
Definition: VulkanLogicalDevice.hpp:91
VkMemoryRequirements GetImageMemoryRequirements(VkImage vkImage) const
Definition: VulkanLogicalDevice.cpp:480
VkQueue GetQueue(uint32_t queueFamilyIndex, uint32_t queueIndex)
Definition: VulkanLogicalDevice.cpp:79
DEFINE_VULKAN_OBJECT_WRAPPER(Sampler) SamplerWrapper
Definition: VulkanLogicalDevice.hpp:79
DEFINE_VULKAN_OBJECT_WRAPPER(PipelineLayout) PipelineLayoutWrapper
Definition: VulkanLogicalDevice.hpp:78
VkResult GetFenceStatus(VkFence fence) const
Definition: VulkanLogicalDevice.cpp:542
DEFINE_VULKAN_OBJECT_WRAPPER(QueryPool) QueryPoolWrapper
Definition: VulkanLogicalDevice.hpp:84
VkResult ResetFence(VkFence fence) const
Definition: VulkanLogicalDevice.cpp:547
DEFINE_VULKAN_OBJECT_WRAPPER(Framebuffer) FramebufferWrapper
Definition: VulkanLogicalDevice.hpp:80
VkCommandBuffer AllocateVkCommandBuffer(const VkCommandBufferAllocateInfo &AllocInfo, const char *DebugName="") const
Definition: VulkanLogicalDevice.cpp:308
~VulkanLogicalDevice()
Definition: VulkanLogicalDevice.cpp:46
VkDescriptorSet AllocateVkDescriptorSet(const VkDescriptorSetAllocateInfo &AllocInfo, const char *DebugName="") const
Definition: VulkanLogicalDevice.cpp:327
VkResult WaitForFences(uint32_t fenceCount, const VkFence *pFences, VkBool32 waitAll, uint64_t timeout) const
Definition: VulkanLogicalDevice.cpp:554
void UnmapMemory(VkDeviceMemory memory) const
Definition: VulkanLogicalDevice.cpp:527
RenderPassWrapper CreateRenderPass(const VkRenderPassCreateInfo &RenderPassCI, const char *DebugName="") const
Definition: VulkanLogicalDevice.cpp:167
DEFINE_VULKAN_OBJECT_WRAPPER(RenderPass) RenderPassWrapper
Definition: VulkanLogicalDevice.hpp:75
Definition: VulkanPhysicalDevice.hpp:37
Definition: VulkanPhysicalDevice.hpp:40
QueryPoolWrapper CreateQueryPool(const VkQueryPoolCreateInfo &QueryPoolCI, const char *DebugName="") const
Definition: VulkanLogicalDevice.cpp:291
VkMemoryRequirements GetBufferMemoryRequirements(VkBuffer vkBuffer) const
Definition: VulkanLogicalDevice.cpp:473
Definition: VulkanCommandBuffer.hpp:33
VulkanLogicalDevice(const VulkanLogicalDevice &)=delete
std::shared_ptr< const VulkanLogicalDevice > GetSharedPtr() const
Definition: VulkanLogicalDevice.hpp:112
VkResult InvalidateMappedMemoryRanges(uint32_t memoryRangeCount, const VkMappedMemoryRange *pMemoryRanges) const
Definition: VulkanLogicalDevice.cpp:532
DEFINE_VULKAN_OBJECT_WRAPPER(CommandPool) CommandPoolWrapper
Definition: VulkanLogicalDevice.hpp:68
void WaitIdle() const
Definition: VulkanLogicalDevice.cpp:90
VulkanLogicalDevice & operator=(const VulkanLogicalDevice &)=delete
static std::shared_ptr< VulkanLogicalDevice > Create(const VulkanPhysicalDevice &PhysicalDevice, const VkDeviceCreateInfo &DeviceCI, const ExtensionFeatures &EnabledExtFeatures, const VkAllocationCallbacks *vkAllocator)
Definition: VulkanLogicalDevice.cpp:37
DEFINE_VULKAN_OBJECT_WRAPPER(Pipeline) PipelineWrapper
Definition: VulkanLogicalDevice.hpp:76
void FreeCommandBuffer(VkCommandPool Pool, VkCommandBuffer CmdBuffer) const
Definition: VulkanLogicalDevice.cpp:466
VkResult ResetDescriptorPool(VkDescriptorPool descriptorPool, VkDescriptorPoolResetFlags flags=0) const
Definition: VulkanLogicalDevice.cpp:578
DescriptorSetLayoutWrapper CreateDescriptorSetLayout(const VkDescriptorSetLayoutCreateInfo &LayoutCI, const char *DebugName="") const
Definition: VulkanLogicalDevice.cpp:279
CommandPoolWrapper CreateCommandPool(const VkCommandPoolCreateInfo &CmdPoolCI, const char *DebugName="") const
Definition: VulkanLogicalDevice.cpp:120
PipelineWrapper CreateComputePipeline(const VkComputePipelineCreateInfo &PipelineCI, VkPipelineCache cache, const char *DebugName="") const
Definition: VulkanLogicalDevice.cpp:192
DEFINE_VULKAN_OBJECT_WRAPPER(DescriptorSetLayout) DescriptorSetLayoutWrapper
Definition: VulkanLogicalDevice.hpp:82
#define DEFINE_VULKAN_OBJECT_WRAPPER(Type)
Definition: VulkanLogicalDevice.hpp:67
VkResult BindImageMemory(VkImage image, VkDeviceMemory memory, VkDeviceSize memoryOffset) const
Definition: VulkanLogicalDevice.cpp:492
PipelineLayoutWrapper CreatePipelineLayout(const VkPipelineLayoutCreateInfo &LayoutCI, const char *DebugName="") const
Definition: VulkanLogicalDevice.cpp:261