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

MutexGetQueueSubmitMutex () const
 
 VulkanDevice (VulkanApplication const &app, vk::raii::PhysicalDevice physicalDevice, SDL_Window *window=nullptr)
 
 ~VulkanDevice () override
 
RHIDeviceCapabilities GetCapabilities () const override
 
RHIPipelineStateCacheKey GetPipelineCacheKey () const override
 
RHIDeviceQueueGetDeviceQueue (RHIDeviceQueueType type) const override
 
Span< RHISurfaceFormat constGetSwapchainSupportedFormats () const override
 
Span< RHISwapchainPresentMode constGetSwapchainSupportedPresentModes () const 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 (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 constGetVkQueues () const
 
auto constGetVkDevice () const
 
auto constGetVkSurface () const
 
auto constGetVkPhysicalDevice () const
 
auto constGetVkPhysicalDeviceProperties () const
 
auto constGetVkAllocator () const
 
vk::AllocationCallbacks constGetVkAllocationCallbacks () const
 
VkAllocationCallbacks constGetVkAllocationCallbacksNative () 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
 
SDL_WindowmWindow
 
vk::raii::PhysicalDevice mPhysicalDevice {nullptr}
 
vk::raii::Device mDevice {nullptr}
 
vk::raii::SurfaceKHR mSurface {nullptr}
 
Vector< RHISurfaceFormatmSwapchainFormats
 
Vector< RHISwapchainPresentModemSwapchainPresentModes
 
VmaAllocator mVkAllocator {nullptr}
 
RHIObjectPool mStorage
 
UniquePtr< VulkanDeviceQueuesmQueues {nullptr}
 
Mutex mQueueSubmitMutex
 
vk::PhysicalDeviceProperties mPhysicalDeviceProperties {}
 
RHIPipelineStateCacheKey mPipelineCacheKey {}
 
RHIDeviceCapabilities mDeviceCaps {}
 

Additional Inherited Members

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

Constructor & Destructor Documentation

◆ VulkanDevice()

VulkanDevice::VulkanDevice ( VulkanApplication const app,
vk::raii::PhysicalDevice  physicalDevice,
SDL_Window window = nullptr 
)

◆ ~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

◆ 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

◆ 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

◆ 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

◆ 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

◆ GetSwapchain()

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

◆ GetSwapchainSupportedFormats()

Span< RHISurfaceFormat const > VulkanDevice::GetSwapchainSupportedFormats ( ) const
overridevirtual

◆ GetSwapchainSupportedPresentModes()

Span< RHISwapchainPresentMode const > VulkanDevice::GetSwapchainSupportedPresentModes ( ) 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

◆ GetVkSurface()

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

◆ QueryAllocationStats()

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

◆ QueryBudget()

void VulkanDevice::QueryBudget ( 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

◆ 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

◆ mSurface

vk::raii::SurfaceKHR Foundation::RHI::VulkanDevice::mSurface {nullptr}
private

◆ mSwapchainFormats

Vector<RHISurfaceFormat> Foundation::RHI::VulkanDevice::mSwapchainFormats
private

◆ mSwapchainPresentModes

Vector<RHISwapchainPresentMode> Foundation::RHI::VulkanDevice::mSwapchainPresentModes
private

◆ mVkAllocator

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

◆ mWindow

SDL_Window* Foundation::RHI::VulkanDevice::mWindow
private

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