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

Classes

class  DeferredDeletionQueue
 
struct  ExtensionFeatures
 
struct  ExtensionProperties
 
struct  InstanceFlags
 

Public Types

enum class  DebugMode { Disabled , Utils , Report }
 

Public Member Functions

virtual xiiGALCommandQueueGetCommandQueue (xiiBitflags< xiiGALCommandQueueFlags > queueFlags) 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>
XII_FORCE_INLINE void SetVulkanObjectDebugName (ObjectHandle &vkObject, const char *szDebugName, xiiVulkanAllocation allocation={}) const
 
template<typename T, typename = std::enable_if_t<std::is_class_v<T> && HasObjectType<T>::value>>
XII_FORCE_INLINE void SafeReleaseDeviceObject (T &&vkObject, xiiVulkanAllocation &&allocation=nullptr, vk::DeviceMemory &&vkExternalMemory=nullptr)
 
template<typename T>
XII_ALWAYS_INLINE void ReclaimLater (T &&vkObject)
 
XII_ALWAYS_INLINE xiiAllocatorBaseGetAllocator () const
 
XII_ALWAYS_INLINE xiiVulkanMemoryAllocatorGetVulkanMemoryAllocator () 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 const xiiGALDeviceVulkan::InstanceFlagsGetVulkanInstanceFlags () 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 void LockCommandQueueAndRun (xiiBitflags< xiiGALCommandQueueFlags > queueFlags, xiiDelegate< void(const vk::Queue &)> action)
 
XII_ALWAYS_INLINE const xiiGALQueueInformationVulkanGetCommandQueueInformation (xiiBitflags< xiiGALCommandQueueFlags > queueFlags) const
 
XII_ALWAYS_INLINE xiiMutexGetCommandQueueMutex (xiiBitflags< xiiGALCommandQueueFlags > queueFlags) const
 
XII_ALWAYS_INLINE xiiGALCommandBufferPoolVulkanGetCommandBufferPool (xiiBitflags< xiiGALCommandQueueFlags > queueFlags) const
 
XII_ALWAYS_INLINE xiiGALQueryPoolVulkanGetCommandQueueQueryPool (xiiBitflags< xiiGALCommandQueueFlags > queueFlags) const
 
XII_ALWAYS_INLINE vk::PipelineStageFlags GetSupportedStagesFlags (xiiBitflags< xiiGALCommandQueueFlags > queueFlags) const
 
XII_ALWAYS_INLINE vk::AccessFlags GetSupportedAccessFlags (xiiBitflags< xiiGALCommandQueueFlags > queueFlags) const
 
XII_ALWAYS_INLINE xiiGALDeviceVulkan::DebugMode GetDebugMode () const
 
XII_ALWAYS_INLINE xiiGALFencePoolVulkanGetVulkanFencePool () const
 
XII_ALWAYS_INLINE xiiGALSemaphorePoolVulkanGetVulkanSemaphorePool () const
 
XII_ALWAYS_INLINE DeferredDeletionQueueGetDeferredDeletionQueue () const
 
template<typename T, typename>
XII_ALWAYS_INLINE void SafeReleaseDeviceObject (T &&vkObject, xiiVulkanAllocation &&allocation, vk::DeviceMemory &&vkExternalMemory)
 
- 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.
 
const xiiGALDeviceLimitsGetLimits () const
 This retrieves the device limits. See xiiGALDeviceLimits.
 
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< xiiGALCommandListCreateCommandList (const xiiGALCommandListCreationDescription &description)
 This creates a command list 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, xiiBitflags< xiiGALExternalMemoryKind > externalMemoryKind=xiiGALExternalMemoryKind::None)
 This creates a new buffer object.
 
xiiSharedPtr< xiiGALTextureCreateTexture (const xiiGALTextureCreationDescription &description, const xiiGALTextureData *pInitialData=nullptr, xiiBitflags< xiiGALExternalMemoryKind > externalMemoryKind=xiiGALExternalMemoryKind::None)
 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.
 

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 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)
 
- Protected Attributes inherited from xiiGALDevice
xiiGALDeviceCreationDescription m_Description
 
xiiProxyAllocator m_Allocator
 
xiiLocalAllocatorWrapper m_AllocatorWrapper
 
xiiMutex m_Mutex
 
xiiGALGraphicsDeviceAdapterDescription m_AdapterDescription
 

Member Function Documentation

◆ GetCommandQueue()

xiiGALCommandQueue * xiiGALDeviceVulkan::GetCommandQueue ( xiiBitflags< xiiGALCommandQueueFlags > queueFlags) 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: