![]() |
Divide Framework 0.1
A free and open-source 3D Framework under heavy development
|
#include <VKWrapper.h>
Classes | |
struct | DepthFormatInformation |
Public Member Functions | |
VK_API (GFXDevice &context) noexcept | |
VKDevice * | getDevice () |
GFXDevice & | context () noexcept |
const GFXDevice & | context () const noexcept |
![]() | |
virtual | ~RenderAPIWrapper ()=default |
Static Public Member Functions | |
static VKStateTracker & | GetStateTracker () noexcept |
static VkSampler | GetSamplerHandle (SamplerDescriptor sampler, size_t &samplerHashInOut) |
Return the Vulkan sampler object's handle for the given hash value. | |
static void | RegisterCustomAPIDelete (DELEGATE< void, VkDevice > &&cbk, bool isResourceTransient) |
static void | RegisterTransferRequest (const VKTransferQueue::TransferRequest &request) |
static void | FlushBufferTransferRequests (VkCommandBuffer cmdBuffer) |
static void | FlushBufferTransferRequests () |
static void | SubmitTransferRequest (const VKTransferQueue::TransferRequest &request, VkCommandBuffer cmd) |
static void | InsertDebugMessage (VkCommandBuffer cmdBuffer, const char *message, U32 id=U32_MAX) |
static void | PushDebugMessage (VkCommandBuffer cmdBuffer, const char *message, U32 id=U32_MAX) |
static void | PopDebugMessage (VkCommandBuffer cmdBuffer) |
static void | OnShaderReloaded (vkShaderProgram *program) |
Static Public Attributes | |
static constexpr VkPipelineStageFlagBits2 | ALL_SHADER_STAGES |
static bool | s_hasDebugMarkerSupport = false |
static bool | s_hasPushDescriptorSupport = false |
static bool | s_hasDescriptorBufferSupport = false |
static bool | s_hasDynamicBlendStateSupport = false |
static bool | s_hasValidationFeaturesSupport = false |
static DepthFormatInformation | s_depthFormatInformation |
Protected Member Functions | |
VkCommandBuffer | getCurrentCommandBuffer () const noexcept |
void | idle (bool fast) noexcept override |
bool | drawToWindow (DisplayWindow &window) override |
void | onRenderThreadLoopStart () override |
void | onRenderThreadLoopEnd () override |
void | prepareFlushWindow (DisplayWindow &window) override |
void | flushWindow (DisplayWindow &window) override |
bool | frameStarted () override |
bool | frameEnded () override |
ErrorCode | initRenderingAPI (I32 argc, char **argv, Configuration &config) noexcept override |
void | closeRenderingAPI () override |
void | preFlushCommandBuffer (Handle< GFX::CommandBuffer > commandBuffer) override |
void | flushCommand (GFX::CommandBase *cmd) noexcept override |
void | postFlushCommandBuffer (Handle< GFX::CommandBuffer > commandBuffer) noexcept override |
bool | setViewportInternal (const Rect< I32 > &newViewport) noexcept override |
bool | setScissorInternal (const Rect< I32 > &newScissor) noexcept override |
void | onThreadCreated (const std::thread::id &threadID, bool isMainRenderThread) noexcept override |
void | initDescriptorSets () override |
RenderTarget_uptr | newRT (const RenderTargetDescriptor &descriptor) const override |
GenericVertexData_ptr | newGVD (U32 ringBufferLength, const std::string_view name) const override |
ShaderBuffer_uptr | newSB (const ShaderBufferDescriptor &descriptor) const override |
virtual bool | drawToWindow (DisplayWindow &window)=0 |
virtual void | onRenderThreadLoopStart ()=0 |
virtual void | onRenderThreadLoopEnd ()=0 |
virtual void | prepareFlushWindow (DisplayWindow &window)=0 |
virtual void | flushWindow (DisplayWindow &window)=0 |
virtual bool | frameStarted ()=0 |
virtual bool | frameEnded ()=0 |
virtual void | idle (bool fast)=0 |
virtual ErrorCode | initRenderingAPI (I32 argc, char **argv, Configuration &config)=0 |
virtual void | closeRenderingAPI ()=0 |
virtual void | preFlushCommandBuffer (Handle< GFX::CommandBuffer > commandBuffer)=0 |
virtual void | flushCommand (GFX::CommandBase *cmd)=0 |
virtual void | postFlushCommandBuffer (Handle< GFX::CommandBuffer > commandBuffer)=0 |
virtual bool | setViewportInternal (const Rect< I32 > &newViewport)=0 |
virtual bool | setScissorInternal (const Rect< I32 > &newScissor)=0 |
virtual void | onThreadCreated (const std::thread::id &threadID, bool isMainRenderThread)=0 |
virtual bool | bindShaderResources (const DescriptorSetEntries &descriptorSetEntries)=0 |
virtual void | initDescriptorSets ()=0 |
virtual RenderTarget_uptr | newRT (const RenderTargetDescriptor &descriptor) const =0 |
virtual GenericVertexData_ptr | newGVD (U32 ringBufferLength, std::string_view name) const =0 |
virtual ShaderBuffer_uptr | newSB (const ShaderBufferDescriptor &descriptor) const =0 |
Private Types | |
using | SamplerObjectMap = hashMap< size_t, VkSampler, NoHash< size_t > > |
Private Member Functions | |
void | initStatePerWindow (VKPerWindowState &windowState) |
void | destroyStatePerWindow (VKPerWindowState &windowState) |
void | recreateSwapChain (VKPerWindowState &windowState) |
bool | setViewportInternal (const Rect< I32 > &newViewport, VkCommandBuffer cmdBuffer) noexcept |
bool | setScissorInternal (const Rect< I32 > &newScissor, VkCommandBuffer cmdBuffer) noexcept |
void | destroyPipelineCache () |
void | destroyPipeline (CompiledPipeline &pipeline, bool defer) |
void | flushPushConstantsLocks () |
VkDescriptorSetLayout | createLayoutFromBindings (const DescriptorSetUsage usage, const ShaderProgram::BindingsPerSetArray &bindings, DynamicBindings &dynamicBindings) |
ShaderResult | bindPipeline (const Pipeline &pipeline, VkCommandBuffer cmdBuffer) |
void | bindDynamicState (const RenderStateBlock ¤tState, const RTBlendStates &blendStates, VkCommandBuffer cmdBuffer) noexcept |
bool | bindShaderResources (const DescriptorSetEntries &descriptorSetEntries) override |
Static Private Member Functions | |
static bool | Draw (const GenericDrawCommand &cmd, VkCommandBuffer cmdBuffer) |
Private Attributes | |
GFXDevice & | _context |
vkb::Instance | _vkbInstance |
VKDevice_uptr | _device { nullptr } |
VmaAllocator | _allocator {VK_NULL_HANDLE} |
VkPipelineCache | _pipelineCache { VK_NULL_HANDLE } |
VkDescriptorSet | _dummyDescriptorSet {VK_NULL_HANDLE} |
GFX::MemoryBarrierCommand | _uniformsMemCommand {} |
DescriptorLayoutCache_uptr | _descriptorLayoutCache {nullptr} |
hashMap< I64, VKPerWindowState > | _perWindowState |
hashMap< size_t, CompiledPipeline > | _compiledPipelines |
std::array< VkDescriptorSet, to_base(DescriptorSetUsage::COUNT)> | _descriptorSets |
std::array< DynamicBindings, to_base(DescriptorSetUsage::COUNT)> | _descriptorDynamicBindings |
std::array< VkDescriptorSetLayout, to_base(DescriptorSetUsage::COUNT)> | _descriptorSetLayouts |
bool | _uniformsNeedLock { false } |
Static Private Attributes | |
static SharedMutex | s_samplerMapLock |
static SamplerObjectMap | s_samplerMap {} |
static VKStateTracker | s_stateTracker |
static VKDeletionQueue | s_transientDeleteQueue |
static VKDeletionQueue | s_deviceDeleteQueue |
static VKTransferQueue | s_transferQueue |
static eastl::stack< vkShaderProgram * > | s_reloadedShaders |
Definition at line 58 of file VKWrapper.h.
|
private |
Definition at line 159 of file VKWrapper.h.
|
noexcept |
Definition at line 556 of file VKWrapper.cpp.
|
privatenoexcept |
Definition at line 1608 of file VKWrapper.cpp.
|
private |
Definition at line 1774 of file VKWrapper.cpp.
|
overrideprivatevirtual |
Implements Divide::RenderAPIWrapper.
Definition at line 1320 of file VKWrapper.cpp.
|
overrideprotectedvirtual |
Implements Divide::RenderAPIWrapper.
Definition at line 1178 of file VKWrapper.cpp.
|
inlinenoexcept |
Definition at line 73 of file VKWrapper.h.
|
inlinenoexcept |
Definition at line 72 of file VKWrapper.h.
|
private |
Definition at line 2984 of file VKWrapper.cpp.
|
private |
Definition at line 1129 of file VKWrapper.cpp.
|
private |
Definition at line 1168 of file VKWrapper.cpp.
|
private |
Definition at line 752 of file VKWrapper.cpp.
|
staticprivate |
Definition at line 1247 of file VKWrapper.cpp.
|
overrideprotectedvirtual |
Implements Divide::RenderAPIWrapper.
Definition at line 571 of file VKWrapper.cpp.
|
static |
Definition at line 2180 of file VKWrapper.cpp.
|
static |
Definition at line 2193 of file VKWrapper.cpp.
|
overrideprotectedvirtualnoexcept |
Implements Divide::RenderAPIWrapper.
Definition at line 2215 of file VKWrapper.cpp.
|
private |
Definition at line 1985 of file VKWrapper.cpp.
|
overrideprotectedvirtual |
Implements Divide::RenderAPIWrapper.
Definition at line 622 of file VKWrapper.cpp.
|
overrideprotectedvirtual |
Implements Divide::RenderAPIWrapper.
Definition at line 680 of file VKWrapper.cpp.
|
overrideprotectedvirtual |
Implements Divide::RenderAPIWrapper.
Definition at line 660 of file VKWrapper.cpp.
|
protectednoexcept |
Definition at line 561 of file VKWrapper.cpp.
|
inline |
Definition at line 70 of file VKWrapper.h.
|
static |
Return the Vulkan sampler object's handle for the given hash value.
Definition at line 3145 of file VKWrapper.cpp.
|
staticnoexcept |
Definition at line 3088 of file VKWrapper.cpp.
|
overrideprotectedvirtualnoexcept |
Implements Divide::RenderAPIWrapper.
Definition at line 566 of file VKWrapper.cpp.
|
overrideprotectedvirtual |
Implements Divide::RenderAPIWrapper.
Definition at line 3028 of file VKWrapper.cpp.
|
overrideprotectedvirtualnoexcept |
Implements Divide::RenderAPIWrapper.
Definition at line 764 of file VKWrapper.cpp.
|
private |
Definition at line 739 of file VKWrapper.cpp.
|
static |
Definition at line 3093 of file VKWrapper.cpp.
|
overrideprotectedvirtual |
Implements Divide::RenderAPIWrapper.
Definition at line 3203 of file VKWrapper.cpp.
|
overrideprotectedvirtual |
Implements Divide::RenderAPIWrapper.
Definition at line 3198 of file VKWrapper.cpp.
|
overrideprotectedvirtual |
Implements Divide::RenderAPIWrapper.
Definition at line 3208 of file VKWrapper.cpp.
|
overrideprotectedvirtual |
Implements Divide::RenderAPIWrapper.
Definition at line 614 of file VKWrapper.cpp.
|
overrideprotectedvirtual |
Implements Divide::RenderAPIWrapper.
Definition at line 610 of file VKWrapper.cpp.
|
static |
Definition at line 3078 of file VKWrapper.cpp.
|
overrideprotectedvirtualnoexcept |
Implements Divide::RenderAPIWrapper.
Definition at line 3074 of file VKWrapper.cpp.
|
static |
Definition at line 3131 of file VKWrapper.cpp.
|
overrideprotectedvirtualnoexcept |
Implements Divide::RenderAPIWrapper.
Definition at line 2929 of file VKWrapper.cpp.
|
overrideprotectedvirtual |
Implements Divide::RenderAPIWrapper.
Definition at line 2917 of file VKWrapper.cpp.
|
overrideprotectedvirtual |
Implements Divide::RenderAPIWrapper.
Definition at line 618 of file VKWrapper.cpp.
|
static |
Definition at line 3112 of file VKWrapper.cpp.
|
private |
Definition at line 710 of file VKWrapper.cpp.
|
static |
Definition at line 537 of file VKWrapper.cpp.
|
static |
Definition at line 549 of file VKWrapper.cpp.
|
overrideprotectedvirtualnoexcept |
Implements Divide::RenderAPIWrapper.
Definition at line 2968 of file VKWrapper.cpp.
|
privatenoexcept |
Definition at line 2973 of file VKWrapper.cpp.
|
overrideprotectedvirtualnoexcept |
Implements Divide::RenderAPIWrapper.
Definition at line 2939 of file VKWrapper.cpp.
|
privatenoexcept |
Definition at line 2944 of file VKWrapper.cpp.
|
static |
Definition at line 2149 of file VKWrapper.cpp.
|
private |
Definition at line 141 of file VKWrapper.h.
|
private |
Definition at line 149 of file VKWrapper.h.
|
private |
Definition at line 138 of file VKWrapper.h.
|
private |
Definition at line 152 of file VKWrapper.h.
|
private |
Definition at line 146 of file VKWrapper.h.
|
private |
Definition at line 153 of file VKWrapper.h.
|
private |
Definition at line 151 of file VKWrapper.h.
|
private |
Definition at line 140 of file VKWrapper.h.
|
private |
Definition at line 143 of file VKWrapper.h.
|
private |
Definition at line 148 of file VKWrapper.h.
|
private |
Definition at line 142 of file VKWrapper.h.
|
private |
Definition at line 145 of file VKWrapper.h.
|
private |
Definition at line 156 of file VKWrapper.h.
|
private |
Definition at line 139 of file VKWrapper.h.
|
staticconstexpr |
Definition at line 60 of file VKWrapper.h.
|
static |
Definition at line 184 of file VKWrapper.h.
|
staticprivate |
Definition at line 165 of file VKWrapper.h.
|
static |
Definition at line 179 of file VKWrapper.h.
|
static |
Definition at line 181 of file VKWrapper.h.
|
static |
Definition at line 182 of file VKWrapper.h.
|
static |
Definition at line 180 of file VKWrapper.h.
|
static |
Definition at line 183 of file VKWrapper.h.
|
staticprivate |
Definition at line 168 of file VKWrapper.h.
|
staticprivate |
Definition at line 162 of file VKWrapper.h.
|
staticprivate |
Definition at line 161 of file VKWrapper.h.
|
staticprivate |
Definition at line 163 of file VKWrapper.h.
|
staticprivate |
Definition at line 166 of file VKWrapper.h.
|
staticprivate |
Definition at line 164 of file VKWrapper.h.