Foundation
Loading...
Searching...
No Matches
Public Member Functions | Private Attributes | List of all members
Foundation::RHI::VulkanDevice Class Reference

#include <Device.hpp>

Inheritance diagram for Foundation::RHI::VulkanDevice:
Foundation::RHI::RHIDevice Foundation::RHI::RHIObject

Public Member Functions

uint32_t GetGraphicsQueueFamilyIndex () const
 
const VulkanApplicationGetApp () const
 
MutexGetQueueSubmitMutex () const
 
 VulkanDevice (VulkanApplication const &app, vk::raii::PhysicalDevice physicalDevice)
 
 ~VulkanDevice () override
 
RHIDeviceCapabilities GetCapabilities () const override
 
RHIPipelineStateCacheKey GetPipelineCacheKey () const override
 
RHIDeviceQueueGetDeviceQueue (RHIDeviceQueueType type) const override
 
RHIDeviceScopedHandle< RHISurfaceCreateSurface (RHISurface::SurfaceDesc const &desc) override
 
RHISurfaceGetSurface (Handle handle) const override
 
void DestroySurface (Handle handle) override
 
RHIDeviceScopedHandle< RHISwapchainCreateSwapchain (RHISwapchain::SwapchainDesc const &desc) override
 
RHISwapchainGetSwapchain (Handle handle) const override
 
void DestroySwapchain (Handle handle) override
 
RHIDeviceScopedHandle< RHIPipelineStateCacheCreatePipelineCache (RHIPipelineStateCache::PipelineStateCacheDesc const &desc) override
 
RHIPipelineStateCacheGetPipelineCache (Handle handle) const override
 
void DestroyPipelineCache (Handle handle) override
 
RHIDeviceScopedHandle< RHIPipelineStateCreatePipelineState (RHIPipelineState::PipelineStateDesc const &desc) override
 
RHIPipelineStateGetPipelineState (Handle handle) const override
 
void DestroyPipelineState (Handle handle) override
 
RHIDeviceScopedHandle< RHIShaderModuleCreateShaderModule (RHIShaderModule::ShaderModuleDesc const &desc) override
 
RHIShaderModuleGetShaderModule (Handle handle) const override
 
void DestroyShaderModule (Handle handle) override
 
RHIDeviceScopedHandle< RHICommandPoolCreateCommandPool (RHICommandPool::PoolDesc desc) override
 
RHICommandPoolGetCommandPool (Handle handle) const override
 
void DestroyCommandPool (Handle handle) override
 
RHIDeviceScopedHandle< RHIDeviceSemaphoreCreateSemaphore (bool is_timeline) override
 
RHIDeviceSemaphoreGetSemaphore (Handle handle) const override
 
void DestroySemaphore (Handle handle) override
 
RHIDeviceScopedHandle< RHIDeviceFenceCreateFence (bool signaled) override
 
RHIDeviceFenceGetFence (Handle handle) const override
 
void DestroyFence (Handle handle) override
 
RHIDeviceScopedHandle< RHIBufferCreateBuffer (RHIBufferDesc const &desc) override
 
RHIBufferGetBuffer (Handle handle) const override
 
void DestroyBuffer (Handle handle) override
 
RHIDeviceScopedHandle< RHITextureCreateTexture (RHITextureDesc const &desc) override
 
RHITextureGetTexture (Handle handle) const override
 
void DestroyTexture (Handle handle) override
 
RHIDeviceScopedHandle< RHIAccelerationStructureCreateAccelerationStructure (RHIAccelerationStructureDesc const &desc) override
 
RHIAccelerationStructureGetAccelerationStructure (Handle handle) const override
 
void DestroyAccelerationStructure (Handle handle) override
 
RHIDeviceScopedHandle< RHIDeviceDescriptorSetLayoutCreateDescriptorSetLayout (RHIDeviceDescriptorSetLayoutDesc const &desc) override
 
RHIDeviceDescriptorSetLayoutGetDescriptorSetLayout (Handle handle) const override
 
void DestroyDescriptorSetLayout (Handle handle) override
 
RHIDeviceScopedHandle< RHIDeviceDescriptorPoolCreateDescriptorPool (RHIDeviceDescriptorPool::PoolDesc const &desc) override
 
RHIDeviceDescriptorPoolGetDescriptorPool (Handle handle) const override
 
void DestroyDescriptorPool (Handle handle) override
 
RHIDeviceScopedHandle< RHIDeviceSamplerCreateSampler (RHIDeviceSampler::SamplerDesc const &desc) override
 
RHIDeviceSamplerGetSampler (Handle handle) const override
 
void DestroySampler (Handle handle) override
 
RHIDeviceScopedHandle< RHIDeviceQueryPoolCreateQueryPool (RHIDeviceQueryPool::QueryPoolDesc const &desc) override
 
RHIDeviceQueryPoolGetQueryPool (Handle handle) const override
 
void DestroyQueryPool (Handle handle) override
 
RHIDeviceScopedHandle< RHIVirtualAllocatorCreateVirtualAllocator (uint64_t size) override
 
RHIVirtualAllocatorGetVirtualAllocator (Handle handle) const override
 
void DestroyVirtualAllocator (Handle handle) override
 
RHIAccelerationStructureSizeInfo GetAccelerationStructureSizeInfo (RHIAccelerationStructureBuildDesc const &desc, Allocator *scratchAllocator=nullptr) const override
 
size_t WriteAccelerationStructureInstanceData (RHIAccelerationStructureGeometryInstance const &data, void *dest) const override
 
void ResetFences (Span< RHIDeviceFence *const > fences) override
 
bool WaitForFences (Span< RHIDeviceFence *const > fences, bool wait_all, size_t timeout) override
 Wait for fences to arrive.
 
void SignalTimelineSemaphores (Span< const Pair< RHIDeviceSemaphore *, size_t > > semaphores) override
 
bool WaitForTimelineSemaphores (Span< const Pair< RHIDeviceSemaphore *, size_t > > semaphores, size_t timeout) override
 Wait for timeline semaphores to reach specified values.
 
void WaitIdle () const override
 
void QueryBudget (RHIDeviceHeapType heapType, size_t &used, size_t &budget) const override
 
void QueryAllocationStats (size_t &blockBytes, size_t &allocationBytes) const override
 
void QueryMemoryStats (RHIDeviceMemoryStats &outStats) const override
 
String QueryDeviceString () const override
 
AllocatorGetAllocator () const
 
auto const & GetVkQueues () const
 
auto const & GetVkDevice () const
 
auto const & GetVkPhysicalDevice () const
 
auto const & GetVkPhysicalDeviceProperties () const
 
auto const & GetVkAllocator () const
 
vk::AllocationCallbacks const * GetVkAllocationCallbacks () const
 
VkAllocationCallbacks const * GetVkAllocationCallbacksNative () const
 
void DebugSetObjectName (const char *name) override
 
- Public Member Functions inherited from Foundation::RHI::RHIDevice
 RHIDevice (RHIApplication const &app)
 
- Public Member Functions inherited from Foundation::RHI::RHIObject
 RHIObject ()=default
 
 RHIObject (RHIObject const &)=delete
 
RHIObjectoperator= (const RHIObject &)=delete
 
 RHIObject (RHIObject &&)=delete
 
RHIObjectoperator= (RHIObject &&)=delete
 
virtual ~RHIObject ()=default
 

Private Attributes

const VulkanApplicationmApp
 
vk::raii::PhysicalDevice mPhysicalDevice {nullptr}
 
vk::raii::Device mDevice {nullptr}
 
VmaAllocator mVkAllocator {nullptr}
 
RHIObjectPool mStorage
 
UniquePtr< VulkanDeviceQueuesmQueues {nullptr}
 
Mutex mQueueSubmitMutex
 
vk::PhysicalDeviceProperties mPhysicalDeviceProperties {}
 
RHIPipelineStateCacheKey mPipelineCacheKey {}
 
RHIDeviceCapabilities mDeviceCaps {}
 
uint32_t mGraphicsQueueFamilyIndex {}
 

Additional Inherited Members

- Public Attributes inherited from Foundation::RHI::RHIDevice
const RHIApplicationmApp
 

Constructor & Destructor Documentation

◆ VulkanDevice()

VulkanDevice::VulkanDevice ( VulkanApplication const &  app,
vk::raii::PhysicalDevice  physicalDevice 
)

◆ ~VulkanDevice()

VulkanDevice::~VulkanDevice ( )
override

Member Function Documentation

◆ CreateAccelerationStructure()

RHIDeviceScopedHandle< RHIAccelerationStructure > VulkanDevice::CreateAccelerationStructure ( RHIAccelerationStructureDesc const &  desc)
overridevirtual

◆ CreateBuffer()

RHIDeviceScopedHandle< RHIBuffer > VulkanDevice::CreateBuffer ( RHIBufferDesc const &  desc)
overridevirtual

◆ CreateCommandPool()

RHIDeviceScopedHandle< RHICommandPool > VulkanDevice::CreateCommandPool ( RHICommandPool::PoolDesc  desc)
overridevirtual

◆ CreateDescriptorPool()

RHIDeviceScopedHandle< RHIDeviceDescriptorPool > VulkanDevice::CreateDescriptorPool ( RHIDeviceDescriptorPool::PoolDesc const &  desc)
overridevirtual

◆ CreateDescriptorSetLayout()

RHIDeviceScopedHandle< RHIDeviceDescriptorSetLayout > VulkanDevice::CreateDescriptorSetLayout ( RHIDeviceDescriptorSetLayoutDesc const &  desc)
overridevirtual

◆ CreateFence()

auto VulkanDevice::CreateFence ( bool  signaled)
overridevirtual

◆ CreatePipelineCache()

RHIDeviceScopedHandle< RHIPipelineStateCache > VulkanDevice::CreatePipelineCache ( RHIPipelineStateCache::PipelineStateCacheDesc const &  desc)
overridevirtual

◆ CreatePipelineState()

RHIDeviceScopedHandle< RHIPipelineState > VulkanDevice::CreatePipelineState ( RHIPipelineState::PipelineStateDesc const &  desc)
overridevirtual

◆ CreateQueryPool()

RHIDeviceScopedHandle< RHIDeviceQueryPool > VulkanDevice::CreateQueryPool ( RHIDeviceQueryPool::QueryPoolDesc const &  desc)
overridevirtual

◆ CreateSampler()

RHIDeviceScopedHandle< RHIDeviceSampler > VulkanDevice::CreateSampler ( RHIDeviceSampler::SamplerDesc const &  desc)
overridevirtual

◆ CreateSemaphore()

RHIDeviceScopedHandle< RHIDeviceSemaphore > VulkanDevice::CreateSemaphore ( bool  is_timeline)
overridevirtual

◆ CreateShaderModule()

RHIDeviceScopedHandle< RHIShaderModule > VulkanDevice::CreateShaderModule ( RHIShaderModule::ShaderModuleDesc const &  desc)
overridevirtual

◆ CreateSurface()

RHIDeviceScopedHandle< RHISurface > VulkanDevice::CreateSurface ( RHISurface::SurfaceDesc const &  desc)
overridevirtual

◆ CreateSwapchain()

RHIDeviceScopedHandle< RHISwapchain > VulkanDevice::CreateSwapchain ( RHISwapchain::SwapchainDesc const &  desc)
overridevirtual

◆ CreateTexture()

RHIDeviceScopedHandle< RHITexture > VulkanDevice::CreateTexture ( RHITextureDesc const &  desc)
overridevirtual

◆ CreateVirtualAllocator()

RHIDeviceScopedHandle< RHIVirtualAllocator > VulkanDevice::CreateVirtualAllocator ( uint64_t  size)
overridevirtual

◆ DebugSetObjectName()

void VulkanDevice::DebugSetObjectName ( const char *  name)
overridevirtual

◆ DestroyAccelerationStructure()

void VulkanDevice::DestroyAccelerationStructure ( Handle  handle)
overridevirtual

◆ DestroyBuffer()

void VulkanDevice::DestroyBuffer ( Handle  handle)
overridevirtual

◆ DestroyCommandPool()

void VulkanDevice::DestroyCommandPool ( Handle  handle)
overridevirtual

◆ DestroyDescriptorPool()

void VulkanDevice::DestroyDescriptorPool ( Handle  handle)
overridevirtual

◆ DestroyDescriptorSetLayout()

void VulkanDevice::DestroyDescriptorSetLayout ( Handle  handle)
overridevirtual

◆ DestroyFence()

void VulkanDevice::DestroyFence ( Handle  handle)
overridevirtual

◆ DestroyPipelineCache()

void VulkanDevice::DestroyPipelineCache ( Handle  handle)
overridevirtual

◆ DestroyPipelineState()

void VulkanDevice::DestroyPipelineState ( Handle  handle)
overridevirtual

◆ DestroyQueryPool()

void VulkanDevice::DestroyQueryPool ( Handle  handle)
overridevirtual

◆ DestroySampler()

void VulkanDevice::DestroySampler ( Handle  handle)
overridevirtual

◆ DestroySemaphore()

void VulkanDevice::DestroySemaphore ( Handle  handle)
overridevirtual

◆ DestroyShaderModule()

void VulkanDevice::DestroyShaderModule ( Handle  handle)
overridevirtual

◆ DestroySurface()

void VulkanDevice::DestroySurface ( Handle  handle)
overridevirtual

◆ DestroySwapchain()

void VulkanDevice::DestroySwapchain ( Handle  handle)
overridevirtual

◆ DestroyTexture()

void VulkanDevice::DestroyTexture ( Handle  handle)
overridevirtual

◆ DestroyVirtualAllocator()

void VulkanDevice::DestroyVirtualAllocator ( Handle  handle)
overridevirtual

◆ GetAccelerationStructure()

RHIAccelerationStructure * VulkanDevice::GetAccelerationStructure ( Handle  handle) const
overridevirtual

◆ GetAccelerationStructureSizeInfo()

RHIAccelerationStructureSizeInfo VulkanDevice::GetAccelerationStructureSizeInfo ( RHIAccelerationStructureBuildDesc const &  desc,
Allocator scratchAllocator = nullptr 
) const
overridevirtual

◆ GetAllocator()

Allocator * VulkanDevice::GetAllocator ( ) const

◆ GetApp()

const VulkanApplication & Foundation::RHI::VulkanDevice::GetApp ( ) const
inline

◆ GetBuffer()

RHIBuffer * VulkanDevice::GetBuffer ( Handle  handle) const
overridevirtual

◆ GetCapabilities()

RHIDeviceCapabilities Foundation::RHI::VulkanDevice::GetCapabilities ( ) const
inlineoverridevirtual

◆ GetCommandPool()

RHICommandPool * VulkanDevice::GetCommandPool ( Handle  handle) const
overridevirtual

◆ GetDescriptorPool()

RHIDeviceDescriptorPool * VulkanDevice::GetDescriptorPool ( Handle  handle) const
overridevirtual

◆ GetDescriptorSetLayout()

RHIDeviceDescriptorSetLayout * VulkanDevice::GetDescriptorSetLayout ( Handle  handle) const
overridevirtual

◆ GetDeviceQueue()

RHIDeviceQueue * VulkanDevice::GetDeviceQueue ( RHIDeviceQueueType  type) const
overridevirtual

◆ GetFence()

RHIDeviceFence * VulkanDevice::GetFence ( Handle  handle) const
overridevirtual

◆ GetGraphicsQueueFamilyIndex()

uint32_t Foundation::RHI::VulkanDevice::GetGraphicsQueueFamilyIndex ( ) const
inline

◆ GetPipelineCache()

RHIPipelineStateCache * VulkanDevice::GetPipelineCache ( Handle  handle) const
overridevirtual

◆ GetPipelineCacheKey()

RHIPipelineStateCacheKey Foundation::RHI::VulkanDevice::GetPipelineCacheKey ( ) const
inlineoverridevirtual

◆ GetPipelineState()

RHIPipelineState * VulkanDevice::GetPipelineState ( Handle  handle) const
overridevirtual

◆ GetQueryPool()

RHIDeviceQueryPool * VulkanDevice::GetQueryPool ( Handle  handle) const
overridevirtual

◆ GetQueueSubmitMutex()

Mutex & Foundation::RHI::VulkanDevice::GetQueueSubmitMutex ( ) const
inline

◆ GetSampler()

RHIDeviceSampler * VulkanDevice::GetSampler ( Handle  handle) const
overridevirtual

◆ GetSemaphore()

RHIDeviceSemaphore * VulkanDevice::GetSemaphore ( Handle  handle) const
overridevirtual

◆ GetShaderModule()

RHIShaderModule * VulkanDevice::GetShaderModule ( Handle  handle) const
overridevirtual

◆ GetSurface()

RHISurface * VulkanDevice::GetSurface ( Handle  handle) const
overridevirtual

◆ GetSwapchain()

RHISwapchain * VulkanDevice::GetSwapchain ( Handle  handle) const
overridevirtual

◆ GetTexture()

RHITexture * VulkanDevice::GetTexture ( Handle  handle) const
overridevirtual

◆ GetVirtualAllocator()

RHIVirtualAllocator * VulkanDevice::GetVirtualAllocator ( Handle  handle) const
overridevirtual

◆ GetVkAllocationCallbacks()

vk::AllocationCallbacks const * VulkanDevice::GetVkAllocationCallbacks ( ) const

◆ GetVkAllocationCallbacksNative()

VkAllocationCallbacks const * VulkanDevice::GetVkAllocationCallbacksNative ( ) const

◆ GetVkAllocator()

auto const & Foundation::RHI::VulkanDevice::GetVkAllocator ( ) const
inline

◆ GetVkDevice()

auto const & Foundation::RHI::VulkanDevice::GetVkDevice ( ) const
inline

◆ GetVkPhysicalDevice()

auto const & Foundation::RHI::VulkanDevice::GetVkPhysicalDevice ( ) const
inline

◆ GetVkPhysicalDeviceProperties()

auto const & Foundation::RHI::VulkanDevice::GetVkPhysicalDeviceProperties ( ) const
inline

◆ GetVkQueues()

auto const & Foundation::RHI::VulkanDevice::GetVkQueues ( ) const
inline

◆ QueryAllocationStats()

void VulkanDevice::QueryAllocationStats ( size_t &  blockBytes,
size_t &  allocationBytes 
) const
overridevirtual

◆ QueryBudget()

void VulkanDevice::QueryBudget ( RHIDeviceHeapType  heapType,
size_t &  used,
size_t &  budget 
) const
overridevirtual

◆ QueryDeviceString()

String VulkanDevice::QueryDeviceString ( ) const
overridevirtual

◆ QueryMemoryStats()

void VulkanDevice::QueryMemoryStats ( RHIDeviceMemoryStats outStats) const
overridevirtual

◆ ResetFences()

void VulkanDevice::ResetFences ( Span< RHIDeviceFence *const >  fences)
overridevirtual

◆ SignalTimelineSemaphores()

void VulkanDevice::SignalTimelineSemaphores ( Span< const Pair< RHIDeviceSemaphore *, size_t > >  semaphores)
overridevirtual

◆ WaitForFences()

bool VulkanDevice::WaitForFences ( Span< RHIDeviceFence *const >  fences,
bool  wait_all,
size_t  timeout 
)
overridevirtual

Wait for fences to arrive.

Parameters
timeoutWait timeout in nanoseconds. Set to 0 for no wait and return immediately, -1 for infinite wait.
Returns
true if fence reached, false if timeout occurred.

Implements Foundation::RHI::RHIDevice.

◆ WaitForTimelineSemaphores()

bool VulkanDevice::WaitForTimelineSemaphores ( Span< const Pair< RHIDeviceSemaphore *, size_t > >  semaphores,
size_t  timeout 
)
overridevirtual

Wait for timeline semaphores to reach specified values.

Parameters
timeoutWait timeout in nanoseconds. Set to 0 for no wait and return immediately.
Returns
true if all semaphores reached the specified values, false if timeout occurred.

Implements Foundation::RHI::RHIDevice.

◆ WaitIdle()

void VulkanDevice::WaitIdle ( ) const
overridevirtual

◆ WriteAccelerationStructureInstanceData()

size_t VulkanDevice::WriteAccelerationStructureInstanceData ( RHIAccelerationStructureGeometryInstance const &  data,
void *  dest 
) const
overridevirtual
Parameters
destIf nullptr, only the size is calculated.
Returns
Stride size of the written instance data.

Implements Foundation::RHI::RHIDevice.

Member Data Documentation

◆ mApp

const VulkanApplication& Foundation::RHI::VulkanDevice::mApp
private

◆ mDevice

vk::raii::Device Foundation::RHI::VulkanDevice::mDevice {nullptr}
private

◆ mDeviceCaps

RHIDeviceCapabilities Foundation::RHI::VulkanDevice::mDeviceCaps {}
private

◆ mGraphicsQueueFamilyIndex

uint32_t Foundation::RHI::VulkanDevice::mGraphicsQueueFamilyIndex {}
private

◆ mPhysicalDevice

vk::raii::PhysicalDevice Foundation::RHI::VulkanDevice::mPhysicalDevice {nullptr}
private

◆ mPhysicalDeviceProperties

vk::PhysicalDeviceProperties Foundation::RHI::VulkanDevice::mPhysicalDeviceProperties {}
private

◆ mPipelineCacheKey

RHIPipelineStateCacheKey Foundation::RHI::VulkanDevice::mPipelineCacheKey {}
private

◆ mQueues

UniquePtr<VulkanDeviceQueues> Foundation::RHI::VulkanDevice::mQueues {nullptr}
private

◆ mQueueSubmitMutex

Mutex Foundation::RHI::VulkanDevice::mQueueSubmitMutex
mutableprivate

◆ mStorage

RHIObjectPool Foundation::RHI::VulkanDevice::mStorage
private

◆ mVkAllocator

VmaAllocator Foundation::RHI::VulkanDevice::mVkAllocator {nullptr}
private

The documentation for this class was generated from the following files: