XII Release 0.1.0
Loading...
Searching...
No Matches
xiiGALDeviceVulkan Class Referencefinal
Inheritance diagram for xiiGALDeviceVulkan:
[legend]

Classes

struct  ExtensionFeatures
 
struct  ExtensionProperties
 
struct  HasObjectType
 
struct  HasObjectType< T, std::void_t< decltype(T::objectType)> >
 

Public Types

enum class  DebugMode { Disabled , Utils , Report }
 

Public Member Functions

virtual xiiGALCommandQueueGetDefaultCommandQueue (xiiBitflags< xiiGALCommandQueueType > queueType) const override final
 Retrieves a pointer to the compute queue if available, null otherwise.
 
virtual void SetDebugNamePlatform (xiiStringView sName) const override final
 
template<typename ObjectHandle, typename = typename std::enable_if<std::is_object<ObjectHandle>::value>::type>
void SetVulkanObjectDebugName (ObjectHandle &vkObject, const char *szDebugName, VmaAllocation vmaAllocation={}) const
 
template<typename T, typename = std::enable_if_t<std::is_class_v<T> && HasObjectType<T>::value>>
void SafeReleaseDeviceObject (T &&vkObject, VmaAllocation &&vmaAllocation=nullptr)
 
template<typename T>
void ReclaimLater (T &&vkObject)
 
void ReclaimCommandBufferLater (xiiGALCommandBufferPoolVulkan *pCommandBufferPool, vk::CommandBuffer &&vkCommandBuffer)
 
XII_ALWAYS_INLINE xiiAllocatorBaseGetAllocator () const
 
XII_ALWAYS_INLINE VmaAllocator GetVulkanMemoryAllocator () const
 
XII_ALWAYS_INLINE vk::Instance GetVulkanInstance () const
 
XII_ALWAYS_INLINE xiiUInt32 GetVulkanVersion () const
 
XII_ALWAYS_INLINE const vk::detail::DispatchLoaderDynamic & GetVulkanDynamicDispatchLoader () const
 
XII_ALWAYS_INLINE xiiArrayPtr< const vk::LayerProperties > GetVulkanInstanceLayers () const
 
XII_ALWAYS_INLINE xiiArrayPtr< const vk::ExtensionProperties > GetVulkanInstanceExtensionProperties () const
 
XII_ALWAYS_INLINE xiiArrayPtr< const char *const > GetVulkanInstanceEnabledExtensions () const
 
XII_ALWAYS_INLINE xiiArrayPtr< const vk::PhysicalDevice > GetVulkanPhysicalDevices () const
 
XII_ALWAYS_INLINE vk::PhysicalDevice GetVulkanPhysicalDevice () const
 
XII_ALWAYS_INLINE const vk::PhysicalDeviceProperties & GetVulkanPhysicalDeviceProperties () const
 
XII_ALWAYS_INLINE const vk::PhysicalDeviceFeatures & GetVulkanPhysicalDeviceFeatures () const
 
XII_ALWAYS_INLINE const vk::PhysicalDeviceMemoryProperties & GetVulkanPhysicalDeviceMemoryProperties () const
 
XII_ALWAYS_INLINE xiiArrayPtr< const vk::QueueFamilyProperties > GetPhysicalDeviceQueueFamilyProperties () const
 
XII_ALWAYS_INLINE xiiArrayPtr< const vk::ExtensionProperties > GetPhysicalDeviceSupportedExtensions () const
 
XII_ALWAYS_INLINE const xiiGALDeviceVulkan::ExtensionFeaturesGetPhysicalDeviceExtensionFeatures () const
 
XII_ALWAYS_INLINE const xiiGALDeviceVulkan::ExtensionPropertiesGetPhysicalDeviceExtensionProperties () const
 
XII_ALWAYS_INLINE vk::Device GetVulkanLogicalDevice () const
 
XII_ALWAYS_INLINE const vk::PhysicalDeviceFeatures & GetVulkanLogicalDeviceFeatures () const
 
XII_ALWAYS_INLINE const xiiGALDeviceVulkan::ExtensionFeaturesGetVulkanLogicalDeviceExtensionFeatures () const
 
XII_ALWAYS_INLINE xiiArrayPtr< const vk::PipelineStageFlags > GetVulkanLogicalDeviceSupportedStagesFlags () const
 
XII_ALWAYS_INLINE vk::PipelineStageFlags GetVulkanLogicalDeviceSupportedStagesFlags (xiiUInt32 uiQueueFamilyIndex) const
 
XII_ALWAYS_INLINE xiiArrayPtr< const vk::AccessFlags > GetVulkanLogicalDeviceSupportedAccessFlags () const
 
XII_ALWAYS_INLINE vk::AccessFlags GetVulkanLogicalDeviceSupportedAccessFlags (xiiUInt32 uiQueueFamilyIndex) const
 
XII_ALWAYS_INLINE const xiiGALQueueInformationVulkanGetGraphicsQueueInformation () const
 
XII_ALWAYS_INLINE const xiiGALQueueInformationVulkanGetComputeQueueInformation () const
 
XII_ALWAYS_INLINE const xiiGALQueueInformationVulkanGetTransferQueueInformation () const
 
XII_ALWAYS_INLINE xiiGALDeviceVulkan::DebugMode GetDebugMode () const
 
XII_ALWAYS_INLINE xiiGALFencePoolVulkanGetVulkanFencePool () const
 
XII_ALWAYS_INLINE xiiGALSemaphorePoolVulkanGetVulkanSemaphorePool () const
 
XII_ALWAYS_INLINE xiiGALDescriptorSetPoolVulkanGetVulkanDescriptorSetPool () const
 
XII_ALWAYS_INLINE xiiGALQueryPoolVulkanGetVulkanGraphicsCommandQueueQueryPool () const
 
XII_ALWAYS_INLINE xiiGALQueryPoolVulkanGetVulkanComputeCommandQueueQueryPool () const
 
XII_ALWAYS_INLINE xiiGALQueryPoolVulkanGetVulkanTransferCommandQueueQueryPool () const
 
XII_ALWAYS_INLINE xiiGALQueryPoolVulkanGetQueryPoolForCommandQueue (xiiGALCommandQueueVulkan *pCommandQueueVulkan) const
 
XII_ALWAYS_INLINE xiiUInt64 GetFrameNumber () const
 
- Public Member Functions inherited from xiiGALDevice
xiiResult Initialize ()
 Initialize device.
 
void BeginFrame ()
 Begins a render frame.
 
void EndFrame ()
 Ends a render frame.
 
void WaitIdle ()
 Waits until all outstanding operations on the GPU are complete and destroys any pending resources and GPU objects.
 
const xiiGALDeviceCreationDescriptionGetDescription () const
 Returns the creation description for this device.
 
const xiiGALGraphicsDeviceAdapterDescriptionGetGraphicsDeviceAdapterProperties () const
 This retrieves the device properties. See xiiGraphicsDeviceAdapterDescription.
 
const xiiGALDeviceFeaturesGetFeatures () const
 This retrieves the device feature states. See xiiGALDeviceFeatures.
 
xiiEnum< xiiGALGraphicsDeviceTypeGetGraphicsDeviceType () const
 This retrieves the device graphics API type. See xiiGALGraphicsDeviceType.
 
xiiMutexGetMutex () const
 This returns critical section lock.
 
xiiSharedPtr< xiiGALSwapChainCreateSwapChain (const xiiGALSwapChainCreationDescription &description)
 This creates a swap chain object.
 
xiiSharedPtr< xiiGALBlendStateCreateBlendState (const xiiGALBlendStateCreationDescription &description)
 This creates a new blend state object.
 
xiiSharedPtr< xiiGALDepthStencilStateCreateDepthStencilState (const xiiGALDepthStencilStateCreationDescription &description)
 This creates a new depth stencil state object.
 
xiiSharedPtr< xiiGALRasterizerStateCreateRasterizerState (const xiiGALRasterizerStateCreationDescription &description)
 This creates a new rasterizer state object.
 
xiiSharedPtr< xiiGALShaderCreateShader (const xiiGALShaderCreationDescription &description)
 This creates a new shader object.
 
xiiSharedPtr< xiiGALBufferCreateBuffer (const xiiGALBufferCreationDescription &description, const xiiGALBufferData *pInitialData=nullptr)
 This creates a new buffer object.
 
xiiSharedPtr< xiiGALTextureCreateTexture (const xiiGALTextureCreationDescription &description, const xiiGALTextureData *pInitialData=nullptr)
 This creates a new texture object.
 
xiiSharedPtr< xiiGALSamplerCreateSampler (const xiiGALSamplerCreationDescription &description)
 This creates a new sampler object.
 
xiiSharedPtr< xiiGALQueryCreateQuery (const xiiGALQueryCreationDescription &description)
 This creates a new query object.
 
xiiSharedPtr< xiiGALFenceCreateFence (const xiiGALFenceCreationDescription &description)
 This creates a new fence object.
 
xiiSharedPtr< xiiGALRenderPassCreateRenderPass (const xiiGALRenderPassCreationDescription &description)
 This creates a new render pass object.
 
xiiSharedPtr< xiiGALFramebufferCreateFramebuffer (const xiiGALFramebufferCreationDescription &description)
 This creates a new frame buffer object.
 
xiiSharedPtr< xiiGALBottomLevelASCreateBottomLevelAS (const xiiGALBottomLevelASCreationDescription &description)
 This creates a new bottom-level acceleration structure object.
 
xiiSharedPtr< xiiGALTopLevelASCreateTopLevelAS (const xiiGALTopLevelASCreationDescription &description)
 This creates a new top-level acceleration structure object.
 
xiiSharedPtr< xiiGALPipelineResourceSignatureCreatePipelineResourceSignature (xiiGALPipelineResourceSignatureCreationDescription &description)
 This creates a new pipeline resource signature object.
 
xiiSharedPtr< xiiGALGraphicsPipelineStateCreateGraphicsPipelineState (const xiiGALGraphicsPipelineStateCreationDescription &description)
 This creates a new graphics pipeline state object.
 
xiiSharedPtr< xiiGALComputePipelineStateCreateComputePipelineState (const xiiGALComputePipelineStateCreationDescription &description)
 This creates a new compute pipeline state object.
 
xiiSharedPtr< xiiGALRayTracingPipelineStateCreateRayTracingPipelineState (const xiiGALRayTracingPipelineStateCreationDescription &description)
 This creates a new ray tracing pipeline state object.
 
xiiSharedPtr< xiiGALTilePipelineStateCreateTilePipelineState (const xiiGALTilePipelineStateCreationDescription &description)
 This creates a new tile pipeline state object.
 
- Public Member Functions inherited from xiiGALObject
XII_ALWAYS_INLINE xiiStringView GetDebugName () const
 Returns the debug name of this resource.
 
void SetDebugName (xiiStringView sDebugName) const
 Sets the debug name for this resource.
 
- Public Member Functions inherited from xiiReflectedClass
virtual const xiiRTTIGetDynamicRTTI () const
 
bool IsInstanceOf (const xiiRTTI *pType) const
 Returns whether the type of this instance is of the given type or derived from it.
 
template<typename T>
XII_ALWAYS_INLINE bool IsInstanceOf () const
 Returns whether the type of this instance is of the given type or derived from it.
 
- Public Member Functions inherited from xiiRefCounted
virtual ~xiiRefCounted ()=default
 Adds a virtual destructor.
 
- Public Member Functions inherited from xiiRefCountingImpl
 xiiRefCountingImpl ()=default
 Constructor.
 
 xiiRefCountingImpl (const xiiRefCountingImpl &rhs)
 
void operator= (const xiiRefCountingImpl &rhs)
 
xiiUInt32 AddRef () const
 Increments the reference counter. Returns the new reference count.
 
xiiUInt32 ReleaseRef () const
 Decrements the reference counter. Returns the new reference count.
 
bool IsReferenced () const
 Returns true if the reference count is greater than 0, false otherwise.
 
xiiUInt32 GetRefCount () const
 Returns the current reference count.
 

Protected Member Functions

virtual xiiResult InitializePlatform () override final
 
virtual xiiResult PostInitializePlatform () override final
 
virtual void BeginFramePlatform () override final
 
virtual void EndFramePlatform () override final
 
virtual xiiInternal::NewInstance< xiiGALSwapChainCreateSwapChainPlatform (const xiiGALSwapChainCreationDescription &description) override final
 
virtual xiiInternal::NewInstance< xiiGALBlendStateCreateBlendStatePlatform (const xiiGALBlendStateCreationDescription &description) override final
 
virtual xiiInternal::NewInstance< xiiGALDepthStencilStateCreateDepthStencilStatePlatform (const xiiGALDepthStencilStateCreationDescription &description) override final
 
virtual xiiInternal::NewInstance< xiiGALRasterizerStateCreateRasterizerStatePlatform (const xiiGALRasterizerStateCreationDescription &description) override final
 
virtual xiiInternal::NewInstance< xiiGALShaderCreateShaderPlatform (const xiiGALShaderCreationDescription &description) override final
 
virtual xiiInternal::NewInstance< xiiGALBufferCreateBufferPlatform (const xiiGALBufferCreationDescription &description, const xiiGALBufferData *pInitialData=nullptr) override final
 
virtual xiiInternal::NewInstance< xiiGALTextureCreateTexturePlatform (const xiiGALTextureCreationDescription &description, const xiiGALTextureData *pInitialData=nullptr) override final
 
virtual xiiInternal::NewInstance< xiiGALSamplerCreateSamplerPlatform (const xiiGALSamplerCreationDescription &description) override final
 
virtual xiiInternal::NewInstance< xiiGALQueryCreateQueryPlatform (const xiiGALQueryCreationDescription &description) override final
 
virtual xiiInternal::NewInstance< xiiGALFenceCreateFencePlatform (const xiiGALFenceCreationDescription &description) override final
 
virtual xiiInternal::NewInstance< xiiGALRenderPassCreateRenderPassPlatform (const xiiGALRenderPassCreationDescription &description) override final
 
virtual xiiInternal::NewInstance< xiiGALFramebufferCreateFramebufferPlatform (const xiiGALFramebufferCreationDescription &description) override final
 
virtual xiiInternal::NewInstance< xiiGALBottomLevelASCreateBottomLevelASPlatform (const xiiGALBottomLevelASCreationDescription &description) override final
 
virtual xiiInternal::NewInstance< xiiGALTopLevelASCreateTopLevelASPlatform (const xiiGALTopLevelASCreationDescription &description) override final
 
virtual xiiInternal::NewInstance< xiiGALPipelineResourceSignatureCreatePipelineResourceSignaturePlatform (const xiiGALPipelineResourceSignatureCreationDescription &description) override final
 
virtual xiiInternal::NewInstance< xiiGALGraphicsPipelineStateCreateGraphicsPipelineStatePlatform (const xiiGALGraphicsPipelineStateCreationDescription &description) override final
 
virtual xiiInternal::NewInstance< xiiGALComputePipelineStateCreateComputePipelineStatePlatform (const xiiGALComputePipelineStateCreationDescription &description) override final
 
virtual xiiInternal::NewInstance< xiiGALRayTracingPipelineStateCreateRayTracingPipelineStatePlatform (const xiiGALRayTracingPipelineStateCreationDescription &description) override final
 
virtual xiiInternal::NewInstance< xiiGALTilePipelineStateCreateTilePipelineStatePlatform (const xiiGALTilePipelineStateCreationDescription &description) override final
 
virtual void WaitIdlePlatform () override final
 
virtual xiiResult FillCapabilitiesPlatform () override final
 
- Protected Member Functions inherited from xiiGALDevice
 xiiGALDevice (xiiAllocatorBase *pAllocator, const xiiGALDeviceCreationDescription &creationDescription)
 
xiiResult PostInitialize ()
 Initialization after device capabilities are known.
 
void VerifyMultithreadedAccess () const
 Asserts that either this device supports multi-threaded resource creation, or that this function is executed on the main thread.
 
void FinalizeTextureInternal (const xiiGALTextureCreationDescription &description, xiiSharedPtr< xiiGALTexture > &pTexture)
 
void FinalizeBufferInternal (const xiiGALBufferCreationDescription &description, xiiSharedPtr< xiiGALBuffer > &pBuffer)
 

Friends

class xiiMemoryUtils
 
xiiInternal::NewInstance< xiiGALDeviceCreateVulkanDevice (xiiAllocatorBase *pAllocator, const xiiGALDeviceCreationDescription &description)
 

Additional Inherited Members

- Static Public Member Functions inherited from xiiGALDevice
static void SetDefaultDevice (xiiSharedPtr< xiiGALDevice > pDefaultDevice)
 Sets a default graphics device.
 
static xiiSharedPtr< xiiGALDeviceGetDefaultDevice ()
 Retrieves the default device. This will be nullptr if none is set.
 
static bool HasDefaultDevice ()
 This returns true if there is a set default device.
 
- Static Public Member Functions inherited from xiiNoBase
static const xiiRTTIGetStaticRTTI ()
 
- Static Public Attributes inherited from xiiGALDevice
static xiiEvent< const xiiGALDeviceEvent &, xiiMutexs_Events
 Registers event handlers.
 
- Protected Attributes inherited from xiiGALDevice
xiiGALDeviceCreationDescription m_Description
 
xiiProxyAllocator m_Allocator
 
xiiLocalAllocatorWrapper m_AllocatorWrapper
 
xiiMutex m_Mutex
 
xiiGALGraphicsDeviceAdapterDescription m_AdapterDescription
 

Member Function Documentation

◆ GetDefaultCommandQueue()

xiiGALCommandQueue * xiiGALDeviceVulkan::GetDefaultCommandQueue ( xiiBitflags< xiiGALCommandQueueType > queueType) const
finaloverridevirtual

Retrieves a pointer to the compute queue if available, null otherwise.

Parameters
queueType- The queue type that has the required feature.
Note
The default graphics queue is guaranteed to exist, for a successful device initialization.

Implements xiiGALDevice.

◆ SetDebugNamePlatform()

void xiiGALDeviceVulkan::SetDebugNamePlatform ( xiiStringView sName) const
finaloverridevirtual

Reimplemented from xiiGALObject.


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