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
|
OptionalDeviceExtensions
Declaration
public static OptionalVulkanDeviceExtensions OptionalDeviceExtensions
Field Value
OptionalVulkanDeviceExtensions
|
PhysicalDeviceFeatures
The physical device enabled features.
Declaration
public VkPhysicalDeviceFeatures PhysicalDeviceFeatures
Field Value
VkPhysicalDeviceFeatures
|
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
|
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>
|
StagingManager
The staging buffers manager.
Declaration
public StagingManagerVulkan StagingManager
Field Value
StagingManagerVulkan
|
TimestampQueryPools
Declaration
public Array<BufferedQueryPoolVulkan* > TimestampQueryPools
Field Value
Array<BufferedQueryPoolVulkan >
|
TransferQueue
UniformBufferUploader
The uniform buffers uploader.
Declaration
public UniformBufferUploaderVulkan* UniformBufferUploader = nullptr
Field Value
UniformBufferUploaderVulkan
|
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(Array<BufferedQueryPoolVulkan* >& pools, VkQueryType queryType)
Declaration
public BufferedQueryPoolVulkan* FindAvailableQueryPool(Array<BufferedQueryPoolVulkan* >& pools, VkQueryType queryType)
Parameters
Array<BufferedQueryPoolVulkan >
pools
|
VkQueryType
queryType
|
Returns
BufferedQueryPoolVulkan
|
FindAvailableTimestampQueryPool()
Declaration
public BufferedQueryPoolVulkan* FindAvailableTimestampQueryPool()
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()
Saves the pipeline cache.
Declaration
public bool SavePipelineCache()
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