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

 VulkanDevice (VulkanApplication const &app, vk::raii::PhysicalDevice physicalDevice, SDL_Window *window=nullptr)
 
 ~VulkanDevice () override
 
RHIDeviceQueueGetDeviceQueue (RHIDeviceQueueType type) const override
 
Span< RHIResourceFormat 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
 
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
 
String QueryDeviceString () const override
 
AllocatorGetAllocator () const
 
vk::AllocationCallbacks constGetVkAllocatorCallbacks () const
 
auto constGetVkQueues () const
 
auto constGetVkDevice () const
 
auto constGetVkSurface () const
 
auto constGetVkPhysicalDevice () const
 
auto constGetVkAllocator () 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::PhysicalDeviceProperties mProperties
 
vk::raii::PhysicalDevice mPhysicalDevice { nullptr }
 
vk::raii::Device mDevice { nullptr }
 
vk::raii::SurfaceKHR mSurface { nullptr }
 
Vector< RHIResourceFormatmSwapchainFormats
 
Vector< RHISwapchainPresentModemSwapchainPresentModes
 
VmaAllocator mVkAllocator { nullptr }
 
RHIObjectPool mStorage
 
UniquePtr< VulkanDeviceQueuesmQueues { nullptr }
 

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

◆ 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

◆ GetAccelerationStructure()

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

◆ GetAllocator()

Allocator * VulkanDevice::GetAllocator ( ) const

◆ GetBuffer()

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

◆ 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

◆ GetPipelineState()

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

◆ GetQueryPool()

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

◆ 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< RHIResourceFormat const > VulkanDevice::GetSwapchainSupportedFormats ( ) const
overridevirtual

◆ GetSwapchainSupportedPresentModes()

Span< RHISwapchainPresentMode const > VulkanDevice::GetSwapchainSupportedPresentModes ( ) const
overridevirtual

◆ GetTexture()

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

◆ GetVkAllocator()

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

◆ GetVkAllocatorCallbacks()

vk::AllocationCallbacks const & VulkanDevice::GetVkAllocatorCallbacks ( ) const

◆ GetVkDevice()

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

◆ GetVkPhysicalDevice()

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

◆ GetVkQueues()

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

◆ GetVkSurface()

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

◆ QueryBudget()

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

◆ QueryDeviceString()

String VulkanDevice::QueryDeviceString ( ) 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

Member Data Documentation

◆ mApp

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

◆ mDevice

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

◆ mPhysicalDevice

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

◆ mProperties

vk::PhysicalDeviceProperties Foundation::RHI::VulkanDevice::mProperties
private

◆ mQueues

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

◆ mStorage

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

◆ mSurface

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

◆ mSwapchainFormats

Vector<RHIResourceFormat> 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: