2#include <vk_mem_alloc.h>
7 class VulkanApplication;
8 class VulkanDeviceQueue;
64 vk::raii::DescriptorSetLayout
mLayout{
nullptr };
189 void Present(PresentDesc
const& desc)
const override;
General Purpose Allocator (GPA) interface.
Definition Allocator.hpp:24
std::span with relaxed constructors for pointer-aliasing types and common containers.
Definition Container.hpp:59
Class representing a window for the platform.
Definition Application.hpp:15
Definition Resource.hpp:30
Definition Command.hpp:13
Definition Descriptor.hpp:43
Definition Device.hpp:131
Definition PipelineState.hpp:7
Definition Swapchain.hpp:19
Definition Resource.hpp:146
Definition Application.hpp:24
const VulkanDevice & mDevice
Definition Device.hpp:63
void DebugSetObjectName(const char *name) override
Definition Device.cpp:633
vk::raii::DescriptorSetLayout mLayout
Definition Device.hpp:64
auto const & GetVkLayout() const
Definition Device.hpp:67
void DebugSetObjectName(const char *name) override
Definition Device.cpp:418
vk::raii::Fence mFence
Definition Device.hpp:55
const VulkanDevice & mDevice
Definition Device.hpp:54
auto const & GetVkFence() const
Definition Device.hpp:58
Definition Device.hpp:174
vk::raii::Queue mQueue
Definition Device.hpp:177
VulkanDeviceQueue(const VulkanDevice &device, uint32_t queue_index)
Definition Device.hpp:179
uint32_t GetQueueIndex() const override
Definition Device.hpp:190
void WaitIdle() const override
Definition Device.cpp:505
vk::raii::Queue GetVkQueue() const
Definition Device.hpp:184
const uint32_t mQueueIndex
Definition Device.hpp:176
uint32_t GetVkQueueIndex() const
Definition Device.hpp:185
void DebugSetObjectName(const char *name) override
Definition Device.cpp:611
const VulkanDevice & mDevice
Definition Device.hpp:175
void Submit(Span< const SubmitDesc >, RHIDeviceFence *completionFence) const override
Definition Device.cpp:506
const VulkanDevice & GetVulkanDevice() const
Definition Device.hpp:183
const VulkanDevice & mDevice
Definition Device.hpp:72
void DebugSetObjectName(const char *name) override
Definition Device.cpp:699
auto const & GetVkSampler() const
Definition Device.hpp:76
vk::raii::Sampler mSampler
Definition Device.hpp:73
auto const & GetVkSemaphore() const
Definition Device.hpp:49
const VulkanDevice & mDevice
Definition Device.hpp:45
void DebugSetObjectName(const char *name) override
Definition Device.cpp:403
vk::raii::Semaphore mSemaphore
Definition Device.hpp:46
RHIDeviceFence * GetFence(Handle handle) const override
Definition Device.cpp:440
RHIObjectPool mStorage
Definition Device.hpp:94
RHIDeviceDescriptorSetLayout * GetDescriptorSetLayout(Handle handle) const override
Definition Device.cpp:680
RHIDeviceDescriptorPool * GetDescriptorPool(Handle handle) const override
Definition Device.cpp:692
void DestroySemaphore(Handle handle) override
Definition Device.cpp:434
RHIDeviceScopedObjectHandle< RHIShaderModule > CreateShaderModule(RHIShaderModule::ShaderModuleDesc const &desc) override
Definition Device.cpp:373
Native::NativeWindow * window
Definition Device.hpp:97
RHIDeviceScopedObjectHandle< RHIDeviceSemaphore > CreateSemaphore(bool is_timeline) override
Definition Device.cpp:426
RHIDeviceScopedObjectHandle< RHITexture > CreateTexture(RHITextureDesc const &desc) override
Definition Device.cpp:626
void ResetFences(Span< const RHIDeviceObjectHandle< RHIDeviceFence > > fences) override
Definition Device.cpp:443
vk::AllocationCallbacks const & GetVkAllocatorCallbacks() const
Definition Device.cpp:26
const VulkanApplication & mApp
Definition Device.hpp:81
void WaitForFences(Span< const RHIDeviceObjectHandle< RHIDeviceFence > > fences, bool wait_all, size_t timeout) override
Definition Device.cpp:453
RHIDeviceScopedObjectHandle< RHIDeviceFence > CreateFence(bool signaled) override
Definition Device.cpp:436
RHIDeviceScopedObjectHandle< RHIPipelineState > CreatePipelineState(RHIPipelineState::PipelineStateDesc const &desc) override
Definition Device.cpp:361
void DestroyFence(Handle handle) override
Definition Device.cpp:441
void DestroyPipelineState(Handle handle) override
Definition Device.cpp:369
void DestroyImage(Handle handle) override
Definition Device.cpp:631
Vector< RHISwapchainPresentMode > mSwapchainPresentModes
Definition Device.hpp:89
RHIBuffer * GetBuffer(Handle handle) const override
Definition Device.cpp:623
void DestroyShaderModule(Handle handle) override
Definition Device.cpp:381
RHIDeviceScopedObjectHandle< RHICommandPool > CreateCommandPool(RHICommandPool::PoolDesc desc) override
Definition Device.cpp:384
vk::raii::PhysicalDevice mPhysicalDevice
Definition Device.hpp:84
void DestroyBuffer(Handle handle) override
Definition Device.cpp:624
Vector< RHIResourceFormat > mSwapchainFormats
Definition Device.hpp:88
void DestroySampler(Handle handle) override
Definition Device.cpp:769
VmaAllocator mVkAllocator
Definition Device.hpp:91
Span< RHISwapchainPresentMode const > GetSwapchainSupportedPresentModes() const override
Definition Device.cpp:348
RHIDeviceQueue * GetDeviceQueue(RHIDeviceQueueType type) const override
Definition Device.cpp:328
void DestroyDescriptorPool(Handle handle) override
Definition Device.cpp:696
void DestroySwapchain(Handle handle) override
Definition Device.cpp:357
RHIPipelineState * GetPipelineState(Handle handle) const override
Definition Device.cpp:365
~VulkanDevice() override
Definition Device.cpp:316
auto const & GetVkQueues() const
Definition Device.hpp:166
RHIDeviceScopedObjectHandle< RHIDeviceSampler > CreateSampler(RHIDeviceSampler::SamplerDesc const &desc) override
Definition Device.cpp:761
auto const & GetVkAllocator() const
Definition Device.hpp:170
RHIDeviceScopedObjectHandle< RHISwapchain > CreateSwapchain(RHISwapchain::SwapchainDesc const &desc) override
Definition Device.cpp:352
void DebugLogAllocatorInfo() const
https://github.com/GPUOpen-LibrariesAndSDKs/VulkanMemoryAllocator/blob/master/src/VulkanSample....
Definition Device.cpp:227
RHICommandPool * GetCommandPool(Handle handle) const override
Definition Device.cpp:388
RHIDeviceScopedObjectHandle< RHIBuffer > CreateBuffer(RHIBufferDesc const &desc) override
Definition Device.cpp:619
auto const & GetVkPhysicalDevice() const
Definition Device.hpp:169
vk::raii::Device mDevice
Definition Device.hpp:85
Allocator * GetAllocator() const
Definition Device.cpp:25
RHIShaderModule * GetShaderModule(Handle handle) const override
Definition Device.cpp:377
RHIDeviceSemaphore * GetSemaphore(Handle handle) const override
Definition Device.cpp:430
void DebugSetObjectName(const char *name) override
Definition Device.cpp:497
void DestroyDescriptorSetLayout(Handle handle) override
Definition Device.cpp:684
auto const & GetVkSurface() const
Definition Device.hpp:168
UniquePtr< VulkanDeviceQueues > mQueues
Definition Device.hpp:96
void WaitIdle() const override
Definition Device.cpp:325
vk::PhysicalDeviceProperties mProperties
Definition Device.hpp:83
vk::raii::SurfaceKHR mSurface
Definition Device.hpp:86
RHISwapchain * GetSwapchain(Handle handle) const override
Definition Device.cpp:356
Span< RHIResourceFormat const > GetSwapchainSupportedFormats() const override
Definition Device.cpp:347
RHIDeviceScopedObjectHandle< RHIDeviceDescriptorSetLayout > CreateDescriptorSetLayout(RHIDeviceDescriptorSetLayoutDesc const &desc) override
Definition Device.cpp:676
void SignalTimelineSemaphores(Span< const Pair< RHIDeviceObjectHandle< RHIDeviceSemaphore >, size_t > > semaphores) override
Definition Device.cpp:466
RHIDeviceScopedObjectHandle< RHIDeviceDescriptorPool > CreateDescriptorPool(RHIDeviceDescriptorPool::PoolDesc const &desc) override
Definition Device.cpp:688
void WaitForTimelineSemaphores(Span< const Pair< RHIDeviceObjectHandle< RHIDeviceSemaphore >, size_t > > semaphores, size_t timeout) override
Definition Device.cpp:476
RHITexture * GetImage(Handle handle) const override
Definition Device.cpp:630
void DestroyCommandPool(Handle handle) override
Definition Device.cpp:392
auto const & GetVkDevice() const
Definition Device.hpp:167
RHIDeviceSampler * GetSampler(Handle handle) const override
Definition Device.cpp:765
void DebugLogDeviceInfo() const
Definition Device.cpp:205
std::pair< First, Second > Pair
Alias for std::pair
Definition Container.hpp:30
std::unique_ptr< T, StlDeleter< T > > UniquePtr
std::unique_ptr with custom deleter that uses a Foundation::Core::Allocator to deallocate memory.
Definition Allocator.hpp:161
Low-level Rendering Hardware Interface (RHI) abstractions.
Definition Application.hpp:5
uint64_t Handle
Definition Details.hpp:9
static constexpr Handle kInvalidHandle
Definition Details.hpp:10
RHIDeviceQueueType
Definition Common.hpp:69
constexpr uint32_t kInvalidQueueIndex
Definition Device.hpp:9
Definition Resource.hpp:21
Definition Command.hpp:17
Definition Descriptor.hpp:47
Definition PipelineState.hpp:11
Definition Swapchain.hpp:23
Definition Resource.hpp:79
VulkanDeviceQueue * Get(Handle handle) const
Definition Device.cpp:327
VulkanDeviceQueues(Allocator *allocator)
Definition Device.hpp:14
Handle compute
Definition Device.hpp:13
bool IsDedicatedTransfer() const
Definition Device.hpp:36
Handle graphics
Definition Device.hpp:13
Handle present
Definition Device.hpp:13
bool IsValid() const
Definition Device.hpp:25
RHIObjectPool< VulkanDeviceQueue > storage
Definition Device.hpp:12
bool CanPresent() const
Definition Device.hpp:30
bool IsDedicatedCompute() const
Definition Device.hpp:33
VulkanDeviceQueue * Get(RHIDeviceQueueType type) const
Definition Device.hpp:16
Handle transfer
Definition Device.hpp:13
bool IsDedicatedPresent() const
Definition Device.hpp:39