Class GPUDeviceVulkan
Implementation of Graphics Device for Vulkan backend.
Inherited Members
Assembly: FlaxEngine.dll
File: Engine/GraphicsDevice/Vulkan/GPUDeviceVulkan.h
Syntax
public class GPUDeviceVulkan : public GPUDevice
Constructors
~GPUDeviceVulkan()
GPUDeviceVulkan(ShaderProfile shaderProfile, GPUAdapterVulkan* adapter)
Initializes a new instance of the GPUDeviceVulkan class.
Declaration
public GPUDeviceVulkan(ShaderProfile shaderProfile, GPUAdapterVulkan* adapter)
Parameters
|
ShaderProfile
shaderProfile
The shader profile. |
|
GPUAdapterVulkan
adapter
The GPU device adapter. |
Fields
Adapter
The Vulkan adapter.
Declaration
public GPUAdapterVulkan* Adapter = nullptr
Field Value
|
GPUAdapterVulkan
|
Allocator
The Vulkan memory allocator.
Declaration
public VmaAllocator Allocator = VK_NULL_HANDLE
Field Value
|
VmaAllocator
|
ComputeQueue
DeferredDeletionQueue
The Vulkan resources deferred deletion queue.
Declaration
public DeferredDeletionQueueVulkan DeferredDeletionQueue
Field Value
|
DeferredDeletionQueueVulkan
|
DescriptorPoolsManager
The descriptor pools manager.
Declaration
public DescriptorPoolsManagerVulkan* DescriptorPoolsManager = nullptr
Field Value
|
DescriptorPoolsManagerVulkan
|
Device
The Vulkan device.
Declaration
public VkDevice Device = VK_NULL_HANDLE
Field Value
|
VkDevice
|
FenceManager
The Vulkan fence manager.
Declaration
public FenceManagerVulkan FenceManager
Field Value
|
FenceManagerVulkan
|
GraphicsQueue
HelperResources
The helper device resources manager.
Declaration
public HelperResourcesVulkan HelperResources
Field Value
|
HelperResourcesVulkan
|
Instance
The Vulkan instance.
Declaration
public static VkInstance Instance
Field Value
|
VkInstance
|
InstanceExtensions
The Vulkan instance extensions.
Declaration
public static Array<char* > InstanceExtensions
Field Value
|
Array<char >
|
InstanceLayers
The Vulkan instance layers.
Declaration
public static Array<char* > InstanceLayers
Field Value
|
Array<char >
|
MainContext
The main Vulkan commands context.
Declaration
public GPUContextVulkan* MainContext = nullptr
Field Value
|
GPUContextVulkan
|
OcclusionQueryPools
Declaration
public Array<BufferedQueryPoolVulkan* > OcclusionQueryPools
Field Value
|
Array<BufferedQueryPoolVulkan >
|
OptionalDeviceExtensions
Declaration
public static OptionalVulkanDeviceExtensions OptionalDeviceExtensions
Field Value
|
OptionalVulkanDeviceExtensions
|
PhysicalDeviceFeatures
The physical device enabled features.
Declaration
public VkPhysicalDeviceFeatures PhysicalDeviceFeatures
Field Value
|
VkPhysicalDeviceFeatures
|
PhysicalDeviceFeatures12
Declaration
public VkPhysicalDeviceVulkan12Features PhysicalDeviceFeatures12
Field Value
|
VkPhysicalDeviceVulkan12Features
|
PhysicalDeviceLimits
The physical device limits.
Declaration
public VkPhysicalDeviceLimits PhysicalDeviceLimits
Field Value
|
VkPhysicalDeviceLimits
|
PipelineCache
The pipeline cache.
Declaration
public VkPipelineCache PipelineCache = VK_NULL_HANDLE
Field Value
|
VkPipelineCache
|
PipelineCacheSaveData
Declaration
public Array<byte> PipelineCacheSaveData
Field Value
|
Array<byte>
|
PipelineCacheSaveTime
Declaration
public double PipelineCacheSaveTime = 0.0f
Field Value
|
double
|
PipelineCacheUsage
Declaration
public uint32 PipelineCacheUsage = 0
Field Value
|
uint32
|
PresentQueue
QueriesToReset
Declaration
public Array<QueryPoolVulkan* > QueriesToReset
Field Value
|
Array<QueryPoolVulkan >
|
QueueFamilyProps
The Vulkan device queues family properties.
Declaration
public Array<VkQueueFamilyProperties> QueueFamilyProps
Field Value
|
Array<VkQueueFamilyProperties>
|
TimestampQueryPools
Declaration
public Array<BufferedQueryPoolVulkan* > TimestampQueryPools
Field Value
|
Array<BufferedQueryPoolVulkan >
|
TransferQueue
UniformBufferUploader
The uniform buffers uploader.
Declaration
public UniformBufferUploaderVulkan* UniformBufferUploader = nullptr
Field Value
|
UniformBufferUploaderVulkan
|
UploadBuffer
Data uploading utility via pages.
Declaration
public UploadBufferVulkan UploadBuffer
Field Value
|
UploadBufferVulkan
|
Methods
Create()
CreateBuffer(const StringView& name)
Creates the buffer.
Declaration
public virtual GPUBuffer* CreateBuffer(const StringView& name) override
Parameters
|
StringView
name
The resource name. |
Returns
|
GPUBuffer
The buffer. |
Overrides
CreateConstantBuffer(uint32 size, const StringView& name)
Creates the constant buffer.
Declaration
public virtual GPUConstantBuffer* CreateConstantBuffer(uint32 size, const StringView& name) override
Parameters
|
uint32
size
The buffer size (in bytes). |
|
StringView
name
The resource name. |
Returns
|
GPUConstantBuffer
The constant buffer. |
Overrides
CreatePipelineState()
Creates the GPU pipeline state object.
Declaration
public virtual GPUPipelineState* CreatePipelineState() override
Returns
|
GPUPipelineState
The pipeline state. |
Overrides
CreateSampler()
Creates the texture sampler.
Declaration
public virtual GPUSampler* CreateSampler() override
Returns
|
GPUSampler
The sampler. |
Overrides
CreateShader(const StringView& name)
Creates the shader.
Declaration
public virtual GPUShader* CreateShader(const StringView& name) override
Parameters
|
StringView
name
The resource name. |
Returns
|
GPUShader
The shader. |
Overrides
CreateSwapChain(Window* window)
Creates the native window swap chain.
Declaration
public virtual GPUSwapChain* CreateSwapChain(Window* window) override
Parameters
|
Window
window
The output window. |
Returns
|
GPUSwapChain
The native window swap chain. |
Overrides
CreateTexture(const StringView& name)
Creates the texture.
Declaration
public virtual GPUTexture* CreateTexture(const StringView& name) override
Parameters
|
StringView
name
The resource name. |
Returns
|
GPUTexture
The texture. |
Overrides
CreateTimerQuery()
Creates the timer query object.
Declaration
public virtual GPUTimerQuery* CreateTimerQuery() override
Returns
|
GPUTimerQuery
The timer query. |
Overrides
CreateVertexLayout(const VertexElements& elements, bool explicitOffsets)
Declaration
public GPUVertexLayout* CreateVertexLayout(const VertexElements& elements, bool explicitOffsets) override
Parameters
|
VertexElements
elements
|
|
bool
explicitOffsets
|
Returns
|
GPUVertexLayout
|
Dispose()
Clean all allocated data by device
Declaration
public virtual void Dispose() override
Overrides
DrawBegin()
Called during Draw method before any frame rendering initialization. Cannot be used to submit commands to GPU.
Declaration
public virtual void DrawBegin() override
Overrides
FindAvailableQueryPool(VkQueryType queryType)
Declaration
public BufferedQueryPoolVulkan* FindAvailableQueryPool(VkQueryType queryType)
Parameters
|
VkQueryType
queryType
|
Returns
|
BufferedQueryPoolVulkan
|
GetAdapter()
Gets the adapter device.
Declaration
public virtual GPUAdapter* GetAdapter() const override
Returns
|
GPUAdapter
|
Overrides
GetClosestSupportedPixelFormat(PixelFormat format, GPUTextureFlags flags, bool optimalTiling)
Finds the closest pixel format that a specific Vulkan device supports.
Declaration
public PixelFormat GetClosestSupportedPixelFormat(PixelFormat format, GPUTextureFlags flags, bool optimalTiling)
Parameters
|
PixelFormat
format
The input format. |
|
GPUTextureFlags
flags
The texture usage flags. |
|
bool
optimalTiling
If set to |
Returns
|
PixelFormat
The output format. |
GetMainContext()
Gets the main GPU context.
Declaration
public virtual GPUContext* GetMainContext() override
Returns
|
GPUContext
|
Overrides
GetNativePtr()
Gets the native pointer to the underlying graphics device. It's a low-level platform-specific handle.
Declaration
public virtual void* GetNativePtr() const override
Returns
|
void
|
Overrides
GetOrCreateFramebuffer(FramebufferVulkan::Key& key, VkExtent2D& extent, uint32 layers)
Declaration
public FramebufferVulkan* GetOrCreateFramebuffer(FramebufferVulkan::Key& key, VkExtent2D& extent, uint32 layers)
Parameters
|
FramebufferVulkan::Key
key
|
|
VkExtent2D
extent
|
|
uint32
layers
|
Returns
|
FramebufferVulkan
|
GetOrCreateLayout(DescriptorSetLayoutInfoVulkan& key)
Declaration
public PipelineLayoutVulkan* GetOrCreateLayout(DescriptorSetLayoutInfoVulkan& key)
Parameters
|
DescriptorSetLayoutInfoVulkan
key
|
Returns
|
PipelineLayoutVulkan
|
GetOrCreateRenderPass(RenderTargetLayoutVulkan& layout)
Declaration
public RenderPassVulkan* GetOrCreateRenderPass(RenderTargetLayoutVulkan& layout)
Parameters
|
RenderTargetLayoutVulkan
layout
|
Returns
|
RenderPassVulkan
|
Init()
Init device resources
Declaration
public virtual bool Init() override
Returns
|
bool
True if cannot init, otherwise false. |
Overrides
OnImageViewDestroy(VkImageView imageView)
Declaration
public void OnImageViewDestroy(VkImageView imageView)
Parameters
|
VkImageView
imageView
|
SavePipelineCache(bool async=false, bool cached=false)
Saves the pipeline cache.
Declaration
public bool SavePipelineCache(bool async=false, bool cached=false)
Parameters
|
bool
async
Enables async writing to file to reduce stuttering of main thread. |
|
bool
cached
Uses cached results from the last call to vkGetPipelineCacheData, used to just save cached data when running in async. |
Returns
|
bool
|
SetupPresentQueue(VkSurfaceKHR surface)
Setups the present queue to be ready for the given window surface.
Declaration
public void SetupPresentQueue(VkSurfaceKHR surface)
Parameters
|
VkSurfaceKHR
surface
The surface. |
WaitForGPU()
Wait for GPU end doing submitted work
Declaration
public virtual void WaitForGPU() override