diff --git a/api/latest/class_ogre_1_1_vulkan_render_system-members.html b/api/latest/class_ogre_1_1_vulkan_render_system-members.html index 558ddcfc3ae..3e0f0e3df44 100644 --- a/api/latest/class_ogre_1_1_vulkan_render_system-members.html +++ b/api/latest/class_ogre_1_1_vulkan_render_system-members.html @@ -226,104 +226,105 @@ executeRenderPassDescriptorDelayedActions() overrideOgre::VulkanRenderSystemvirtual executeResourceTransition(const ResourceTransitionArray &rstCollection) overrideOgre::VulkanRenderSystemvirtual fireSharedEvent(const String &name, const NameValuePairList *params=0)Ogre::RenderSystemstatic - flushCommands() overrideOgre::VulkanRenderSystemvirtual - flushDescriptorState(VkPipelineBindPoint pipeline_bind_point, const VulkanConstBufferPacked &constBuffer, const size_t bindOffset, const size_t bytesToWrite, const unordered_map< unsigned, VulkanConstantDefinitionBindingParam >::type &shaderBindings)Ogre::VulkanRenderSystem - flushPendingNonCoherentFlushes(const SubmissionType::SubmissionType submissionType)Ogre::VulkanRenderSystem - flushUAVs()Ogre::VulkanRenderSystem - getBarrierSolver()Ogre::RenderSysteminline - getBoundUav(size_t slot) constOgre::RenderSystem - getCapabilities() constOgre::RenderSysteminline - getColourVertexElementType() const overrideOgre::VulkanRenderSystemvirtual - getConfigOptions() overrideOgre::VulkanRenderSystemvirtual - getCurrentPassDescriptor()Ogre::RenderSysteminline - getCurrentRenderViewports()Ogre::RenderSysteminline - getCustomAttribute(const String &name, void *pData)Ogre::RenderSystemvirtual - getDebugShaders() constOgre::RenderSysteminline - getDepthBufferFor(TextureGpu *colourTexture, uint16 poolId, bool preferDepthTexture, PixelFormatGpu depthBufferFormat)Ogre::RenderSystemvirtual - getDisplayMonitorCount() const overrideOgre::VulkanRenderSysteminlinevirtual - getDriverVersion() constOgre::RenderSysteminlinevirtual - getErrorDescription(long errorNumber) const overrideOgre::VulkanRenderSystemvirtual - getFriendlyName() const overrideOgre::VulkanRenderSystemvirtual - getGlobalInstanceVertexBuffer() constOgre::RenderSystem - getGlobalInstanceVertexBufferVertexDeclaration() constOgre::RenderSystem - getGlobalNumberOfInstances() constOgre::RenderSystem - getHorizontalTexelOffset() overrideOgre::VulkanRenderSystemvirtual - getInvertedClipSpaceY() constOgre::RenderSysteminline - getInvertVertexWinding() constOgre::RenderSystemvirtual - getMaxBoundViewports()Ogre::RenderSysteminline - getMaximumDepthInputValue() overrideOgre::VulkanRenderSystemvirtual - getMetrics() constOgre::RenderSystem - getMinimumDepthInputValue() overrideOgre::VulkanRenderSystemvirtual - getMutableCapabilities()Ogre::RenderSysteminline - getName() const overrideOgre::VulkanRenderSystemvirtual - getNativeShadingLanguageVersion() constOgre::RenderSysteminline - getNumPriorityConfigOptions() const overrideOgre::VulkanRenderSystemvirtual - getPixelFormatToShaderType() const overrideOgre::VulkanRenderSystemvirtual - getPriorityConfigOption(size_t idx) const overrideOgre::VulkanRenderSystemvirtual - getRenderDocApi()Ogre::RenderSysteminline - getRenderSystemEvents() constOgre::RenderSysteminlinevirtual - getRSDepthRange() constOgre::RenderSysteminlinevirtual - getStencilBufferParams() constOgre::RenderSysteminline - getTextureGpuManager() constOgre::RenderSysteminline - getVaoManager() constOgre::RenderSysteminline - getVerticalTexelOffset() overrideOgre::VulkanRenderSystemvirtual - getVkInstance() constOgre::VulkanRenderSysteminline - getVulkanDevice() constOgre::VulkanRenderSysteminline - getWBufferEnabled() constOgre::RenderSystem - hasAnisotropicMipMapFilter() const overrideOgre::VulkanRenderSysteminlinevirtual - initConfigOptions()Ogre::VulkanRenderSystem - initGPUProfiling() overrideOgre::VulkanRenderSystemvirtual - initialiseFromRenderSystemCapabilities(RenderSystemCapabilities *caps, Window *primary) overrideOgre::VulkanRenderSystemvirtual - initializeExternalVkInstance(VulkanExternalInstance *externalInstance)Ogre::VulkanRenderSystem - initializeVkInstance()Ogre::VulkanRenderSystem - isGpuProgramBound(GpuProgramType gptype)Ogre::RenderSystemvirtual - isReverseDepth() constOgre::RenderSysteminline - isSameLayout(ResourceLayout::Layout a, ResourceLayout::Layout b, const TextureGpu *texture, bool bIsDebugCheck) const overrideOgre::VulkanRenderSystemvirtual - isStaticBufferLockable() constOgre::RenderSysteminlinevirtual - loadRenderDocApi()Ogre::RenderSystem - markProfileEvent(const String &event) overrideOgre::VulkanRenderSystemvirtual - notifyRenderTextureNonResident(VulkanTextureGpu *texture)Ogre::VulkanRenderSystem - notifySwapchainCreated(VulkanWindow *window)Ogre::VulkanRenderSystem - notifySwapchainDestroyed(VulkanWindow *window)Ogre::VulkanRenderSystem - postExtraThreadsStarted() overrideOgre::VulkanRenderSystemvirtual - preExtraThreadsStarted() overrideOgre::VulkanRenderSystemvirtual - queueBindUAVs(const DescriptorSetUav *descSetUav)Ogre::RenderSystem - refreshConfig()Ogre::VulkanRenderSystem - registerThread() overrideOgre::VulkanRenderSystemvirtual - reinitialise() overrideOgre::VulkanRenderSystemvirtual - removeListener(Listener *l)Ogre::RenderSystemvirtual - removeSharedListener(Listener *listener)Ogre::RenderSystemstatic - RenderSystem()Ogre::RenderSystem - resetAllBindings()Ogre::VulkanRenderSystem - resetClipPlanes()Ogre::RenderSystemvirtual - reverseCompareFunction(CompareFunction depthFunc)Ogre::RenderSystemstatic - setClipPlanes(const PlaneList &clipPlanes)Ogre::RenderSystemvirtual - setClipPlanesImpl(const PlaneList &clipPlanes) overrideOgre::VulkanRenderSystemvirtual - setConfigOption(const String &name, const String &value) overrideOgre::VulkanRenderSystemvirtual - setCurrentPassIterationCount(const size_t count)Ogre::RenderSysteminlinevirtual - setDebugShaders(bool bDebugShaders)Ogre::RenderSystem - setDeriveDepthBias(bool derive, float baseValue=0.0f, float multiplier=0.0f, float slopeScale=0.0f)Ogre::RenderSysteminlinevirtual - setDrawBuffer(ColourBufferType colourBuffer)Ogre::RenderSysteminlinevirtual - setGlobalInstanceVertexBuffer(const v1::HardwareVertexBufferSharedPtr &val)Ogre::RenderSystem - setGlobalInstanceVertexBufferVertexDeclaration(v1::VertexDeclaration *val)Ogre::RenderSystem - setGlobalNumberOfInstances(const size_t val)Ogre::RenderSystem - setInvertVertexWinding(bool invert)Ogre::RenderSystem - setMetricsRecordingEnabled(bool bEnable)Ogre::RenderSystem - setStencilBufferParams(uint32 refValue, const StencilParams &stencilParams) overrideOgre::VulkanRenderSystemvirtual - setUavStartingSlot(uint32 startingSlot)Ogre::RenderSystem - setWBufferEnabled(bool enabled)Ogre::RenderSystem - sharedVkInitialization()Ogre::VulkanRenderSystem - shutdown() overrideOgre::VulkanRenderSystemvirtual - startGpuDebuggerFrameCapture(Window *window)Ogre::RenderSystemvirtual - unregisterThread() overrideOgre::VulkanRenderSystemvirtual - updateCompositorManager(CompositorManager2 *compositorManager)Ogre::RenderSystemvirtual - useCustomRenderSystemCapabilities(RenderSystemCapabilities *capabilities)Ogre::RenderSystemvirtual - validateConfigOptions() overrideOgre::VulkanRenderSystemvirtual - validateDevice(bool forceDeviceElection=false)Ogre::RenderSysteminlinevirtual - validateSampleDescription(const SampleDescription &sampleDesc, PixelFormatGpu format) overrideOgre::VulkanRenderSystemvirtual - VulkanRenderSystem(const NameValuePairList *options)Ogre::VulkanRenderSystem - ~RenderSystem()Ogre::RenderSystemvirtual - ~VulkanRenderSystem() overrideOgre::VulkanRenderSystem + flushBoundGpuProgramParameters(const SubmissionType::SubmissionType submissionType)Ogre::VulkanRenderSystem + flushCommands() overrideOgre::VulkanRenderSystemvirtual + flushDescriptorState(VkPipelineBindPoint pipeline_bind_point, const VulkanConstBufferPacked &constBuffer, const size_t bindOffset, const size_t bytesToWrite, const unordered_map< unsigned, VulkanConstantDefinitionBindingParam >::type &shaderBindings)Ogre::VulkanRenderSystem + flushPendingNonCoherentFlushes(const SubmissionType::SubmissionType submissionType)Ogre::VulkanRenderSystem + flushUAVs()Ogre::VulkanRenderSystem + getBarrierSolver()Ogre::RenderSysteminline + getBoundUav(size_t slot) constOgre::RenderSystem + getCapabilities() constOgre::RenderSysteminline + getColourVertexElementType() const overrideOgre::VulkanRenderSystemvirtual + getConfigOptions() overrideOgre::VulkanRenderSystemvirtual + getCurrentPassDescriptor()Ogre::RenderSysteminline + getCurrentRenderViewports()Ogre::RenderSysteminline + getCustomAttribute(const String &name, void *pData)Ogre::RenderSystemvirtual + getDebugShaders() constOgre::RenderSysteminline + getDepthBufferFor(TextureGpu *colourTexture, uint16 poolId, bool preferDepthTexture, PixelFormatGpu depthBufferFormat)Ogre::RenderSystemvirtual + getDisplayMonitorCount() const overrideOgre::VulkanRenderSysteminlinevirtual + getDriverVersion() constOgre::RenderSysteminlinevirtual + getErrorDescription(long errorNumber) const overrideOgre::VulkanRenderSystemvirtual + getFriendlyName() const overrideOgre::VulkanRenderSystemvirtual + getGlobalInstanceVertexBuffer() constOgre::RenderSystem + getGlobalInstanceVertexBufferVertexDeclaration() constOgre::RenderSystem + getGlobalNumberOfInstances() constOgre::RenderSystem + getHorizontalTexelOffset() overrideOgre::VulkanRenderSystemvirtual + getInvertedClipSpaceY() constOgre::RenderSysteminline + getInvertVertexWinding() constOgre::RenderSystemvirtual + getMaxBoundViewports()Ogre::RenderSysteminline + getMaximumDepthInputValue() overrideOgre::VulkanRenderSystemvirtual + getMetrics() constOgre::RenderSystem + getMinimumDepthInputValue() overrideOgre::VulkanRenderSystemvirtual + getMutableCapabilities()Ogre::RenderSysteminline + getName() const overrideOgre::VulkanRenderSystemvirtual + getNativeShadingLanguageVersion() constOgre::RenderSysteminline + getNumPriorityConfigOptions() const overrideOgre::VulkanRenderSystemvirtual + getPixelFormatToShaderType() const overrideOgre::VulkanRenderSystemvirtual + getPriorityConfigOption(size_t idx) const overrideOgre::VulkanRenderSystemvirtual + getRenderDocApi()Ogre::RenderSysteminline + getRenderSystemEvents() constOgre::RenderSysteminlinevirtual + getRSDepthRange() constOgre::RenderSysteminlinevirtual + getStencilBufferParams() constOgre::RenderSysteminline + getTextureGpuManager() constOgre::RenderSysteminline + getVaoManager() constOgre::RenderSysteminline + getVerticalTexelOffset() overrideOgre::VulkanRenderSystemvirtual + getVkInstance() constOgre::VulkanRenderSysteminline + getVulkanDevice() constOgre::VulkanRenderSysteminline + getWBufferEnabled() constOgre::RenderSystem + hasAnisotropicMipMapFilter() const overrideOgre::VulkanRenderSysteminlinevirtual + initConfigOptions()Ogre::VulkanRenderSystem + initGPUProfiling() overrideOgre::VulkanRenderSystemvirtual + initialiseFromRenderSystemCapabilities(RenderSystemCapabilities *caps, Window *primary) overrideOgre::VulkanRenderSystemvirtual + initializeExternalVkInstance(VulkanExternalInstance *externalInstance)Ogre::VulkanRenderSystem + initializeVkInstance()Ogre::VulkanRenderSystem + isGpuProgramBound(GpuProgramType gptype)Ogre::RenderSystemvirtual + isReverseDepth() constOgre::RenderSysteminline + isSameLayout(ResourceLayout::Layout a, ResourceLayout::Layout b, const TextureGpu *texture, bool bIsDebugCheck) const overrideOgre::VulkanRenderSystemvirtual + isStaticBufferLockable() constOgre::RenderSysteminlinevirtual + loadRenderDocApi()Ogre::RenderSystem + markProfileEvent(const String &event) overrideOgre::VulkanRenderSystemvirtual + notifyRenderTextureNonResident(VulkanTextureGpu *texture)Ogre::VulkanRenderSystem + notifySwapchainCreated(VulkanWindow *window)Ogre::VulkanRenderSystem + notifySwapchainDestroyed(VulkanWindow *window)Ogre::VulkanRenderSystem + postExtraThreadsStarted() overrideOgre::VulkanRenderSystemvirtual + preExtraThreadsStarted() overrideOgre::VulkanRenderSystemvirtual + queueBindUAVs(const DescriptorSetUav *descSetUav)Ogre::RenderSystem + refreshConfig()Ogre::VulkanRenderSystem + registerThread() overrideOgre::VulkanRenderSystemvirtual + reinitialise() overrideOgre::VulkanRenderSystemvirtual + removeListener(Listener *l)Ogre::RenderSystemvirtual + removeSharedListener(Listener *listener)Ogre::RenderSystemstatic + RenderSystem()Ogre::RenderSystem + resetAllBindings()Ogre::VulkanRenderSystem + resetClipPlanes()Ogre::RenderSystemvirtual + reverseCompareFunction(CompareFunction depthFunc)Ogre::RenderSystemstatic + setClipPlanes(const PlaneList &clipPlanes)Ogre::RenderSystemvirtual + setClipPlanesImpl(const PlaneList &clipPlanes) overrideOgre::VulkanRenderSystemvirtual + setConfigOption(const String &name, const String &value) overrideOgre::VulkanRenderSystemvirtual + setCurrentPassIterationCount(const size_t count)Ogre::RenderSysteminlinevirtual + setDebugShaders(bool bDebugShaders)Ogre::RenderSystem + setDeriveDepthBias(bool derive, float baseValue=0.0f, float multiplier=0.0f, float slopeScale=0.0f)Ogre::RenderSysteminlinevirtual + setDrawBuffer(ColourBufferType colourBuffer)Ogre::RenderSysteminlinevirtual + setGlobalInstanceVertexBuffer(const v1::HardwareVertexBufferSharedPtr &val)Ogre::RenderSystem + setGlobalInstanceVertexBufferVertexDeclaration(v1::VertexDeclaration *val)Ogre::RenderSystem + setGlobalNumberOfInstances(const size_t val)Ogre::RenderSystem + setInvertVertexWinding(bool invert)Ogre::RenderSystem + setMetricsRecordingEnabled(bool bEnable)Ogre::RenderSystem + setStencilBufferParams(uint32 refValue, const StencilParams &stencilParams) overrideOgre::VulkanRenderSystemvirtual + setUavStartingSlot(uint32 startingSlot)Ogre::RenderSystem + setWBufferEnabled(bool enabled)Ogre::RenderSystem + sharedVkInitialization()Ogre::VulkanRenderSystem + shutdown() overrideOgre::VulkanRenderSystemvirtual + startGpuDebuggerFrameCapture(Window *window)Ogre::RenderSystemvirtual + unregisterThread() overrideOgre::VulkanRenderSystemvirtual + updateCompositorManager(CompositorManager2 *compositorManager)Ogre::RenderSystemvirtual + useCustomRenderSystemCapabilities(RenderSystemCapabilities *capabilities)Ogre::RenderSystemvirtual + validateConfigOptions() overrideOgre::VulkanRenderSystemvirtual + validateDevice(bool forceDeviceElection=false)Ogre::RenderSysteminlinevirtual + validateSampleDescription(const SampleDescription &sampleDesc, PixelFormatGpu format) overrideOgre::VulkanRenderSystemvirtual + VulkanRenderSystem(const NameValuePairList *options)Ogre::VulkanRenderSystem + ~RenderSystem()Ogre::RenderSystemvirtual + ~VulkanRenderSystem() overrideOgre::VulkanRenderSystem diff --git a/api/latest/class_ogre_1_1_vulkan_render_system.html b/api/latest/class_ogre_1_1_vulkan_render_system.html index 9a1735e5d6d..45c3cc46cb8 100644 --- a/api/latest/class_ogre_1_1_vulkan_render_system.html +++ b/api/latest/class_ogre_1_1_vulkan_render_system.html @@ -330,6 +330,9 @@   void executeResourceTransition (const ResourceTransitionArray &rstCollection) override   +void flushBoundGpuProgramParameters (const SubmissionType::SubmissionType submissionType) + Low Level Materials use a params buffer to pass all uniforms. More...
+  void flushCommands () override   void flushDescriptorState (VkPipelineBindPoint pipeline_bind_point, const VulkanConstBufferPacked &constBuffer, const size_t bindOffset, const size_t bytesToWrite, const unordered_map< unsigned, VulkanConstantDefinitionBindingParam >::type &shaderBindings) @@ -3877,6 +3880,39 @@

Ogre::RenderSystem.

+ + + +

◆ flushBoundGpuProgramParameters()

+ +
+
+ + + + + + + + +
void Ogre::VulkanRenderSystem::flushBoundGpuProgramParameters (const SubmissionType::SubmissionType submissionType)
+
+ +

Low Level Materials use a params buffer to pass all uniforms.

+

We emulate this using a large const buffer to which we write to and bind the regions we need. This is done in bindGpuProgramParameters().

+

When it runs out of space, we create another one (see mAutoParamsBuffer).

+

However:

    +
  • In all cases we must flush buffers before command submission or else the cmds we're about to execute may not see the const buffer data up to date. We don't flush in bindGpuProgramParameters() because we could end up with lots of 4-byte flushes which is seriously inefficient. Flushing the whole thing once at the end is better.
  • +
  • We musn't grow indefinitely. On submissionType >= NewFrameIdx, we are certain we can set mAutoParamsBufferIdx = 0 and start over.
    Remarks
    bindGpuProgramParameters() tries to use BT_DYNAMIC_PERSISTENT_COHERENT which doesn't need flushing (thus we'd only care about submissionType >= NewFrameIdx to reuse memory).
    +However VaoManager cannot guarantee BT_DYNAMIC_PERSISTENT_COHERENT will actually be coherent thus we must call unmap( UO_KEEP_PERSISTENT ) anyway.
    Parameters
    + + +
    submissionTypeSee SubmissionType::SubmissionType.
    +
    +
    +
  • +
+
diff --git a/api/latest/class_ogre_1_1_vulkan_render_system.js b/api/latest/class_ogre_1_1_vulkan_render_system.js index 7f5e456335a..8f25551ba72 100644 --- a/api/latest/class_ogre_1_1_vulkan_render_system.js +++ b/api/latest/class_ogre_1_1_vulkan_render_system.js @@ -93,6 +93,7 @@ var class_ogre_1_1_vulkan_render_system = [ "executeRenderPassDescriptorDelayedActions", "class_ogre_1_1_vulkan_render_system.html#a4116bee16a25b8af6185fda7408545c5", null ], [ "executeRenderPassDescriptorDelayedActions", "class_ogre_1_1_vulkan_render_system.html#ae99410504b2df17b864d00e6a60a0bcc", null ], [ "executeResourceTransition", "class_ogre_1_1_vulkan_render_system.html#a9a3f93b5d52d42509d57f6809d0f7966", null ], + [ "flushBoundGpuProgramParameters", "class_ogre_1_1_vulkan_render_system.html#a46d0dbe8bb52718c3093f7e71c3f1ec2", null ], [ "flushCommands", "class_ogre_1_1_vulkan_render_system.html#adeeab393ced10ecde6fd91b6f0e58f76", null ], [ "flushDescriptorState", "class_ogre_1_1_vulkan_render_system.html#ab98067e9e31da8681c6f14f6502e0f8f", null ], [ "flushPendingNonCoherentFlushes", "class_ogre_1_1_vulkan_render_system.html#abe27debb608870cf8f00efed74254beb", null ], diff --git a/api/latest/functions_f.html b/api/latest/functions_f.html index 34b26b6cfff..21909797aef 100644 --- a/api/latest/functions_f.html +++ b/api/latest/functions_f.html @@ -493,7 +493,7 @@

- f -