diff --git a/inc/hgl/graph/VKCommandBuffer.h b/inc/hgl/graph/VKCommandBuffer.h index 416584f5..37589d61 100644 --- a/inc/hgl/graph/VKCommandBuffer.h +++ b/inc/hgl/graph/VKCommandBuffer.h @@ -179,6 +179,8 @@ public: //draw void NextSubpass(){vkCmdNextSubpass(cmd_buf,VK_SUBPASS_CONTENTS_INLINE);} void EndRenderPass(){vkCmdEndRenderPass(cmd_buf);} + +public: //dynamic state };//class RenderCmdBuffer:public GPUCmdBuffer class TextureCmdBuffer:public GPUCmdBuffer diff --git a/inc/hgl/graph/VKPhysicalDevice.h b/inc/hgl/graph/VKPhysicalDevice.h index 702c0caf..c2629c50 100644 --- a/inc/hgl/graph/VKPhysicalDevice.h +++ b/inc/hgl/graph/VKPhysicalDevice.h @@ -23,6 +23,10 @@ class GPUPhysicalDevice List extension_properties; List queue_family_properties; +private: + + bool dynamic_state=false; + public: GPUPhysicalDevice(VkInstance,VkPhysicalDevice); @@ -146,18 +150,20 @@ public: const VkBool32 SupportYcbcrConversion ()const{return features11.samplerYcbcrConversion;} const VkBool32 SupportClampMirrorToEdge ()const{return features12.samplerMirrorClampToEdge;} - const void GetPointSize(float &granularity,float &min_size,float &max_size) + const void GetPointSize(float &granularity,float &min_size,float &max_size) const { granularity =properties.limits.pointSizeGranularity; min_size =properties.limits.pointSizeRange[0]; max_size =properties.limits.pointSizeRange[1]; } - const void GetLineWidth(float &granularity,float &min_width,float &max_width) + const void GetLineWidth(float &granularity,float &min_width,float &max_width) const { granularity =properties.limits.lineWidthGranularity; min_width =properties.limits.lineWidthRange[0]; max_width =properties.limits.lineWidthRange[1]; } + + const bool SupportDynamicState() const {return dynamic_state;} };//class GPUPhysicalDevice VK_NAMESPACE_END diff --git a/src/SceneGraph/Vulkan/VKDeviceCreater.cpp b/src/SceneGraph/Vulkan/VKDeviceCreater.cpp index 0ba56964..a78308ba 100644 --- a/src/SceneGraph/Vulkan/VKDeviceCreater.cpp +++ b/src/SceneGraph/Vulkan/VKDeviceCreater.cpp @@ -30,6 +30,7 @@ namespace #ifdef _DEBUG VK_EXT_DEBUG_MARKER_EXTENSION_NAME, #endif//_DEBUG + VK_EXT_EXTENDED_DYNAMIC_STATE_EXTENSION_NAME, // VK_KHR_PUSH_DESCRIPTOR_EXTENSION_NAME, // VK_EXT_HDR_METADATA_EXTENSION_NAME, // VK_EXT_FULL_SCREEN_EXCLUSIVE_EXTENSION_NAME, diff --git a/src/SceneGraph/Vulkan/VKPhysicalDevice.cpp b/src/SceneGraph/Vulkan/VKPhysicalDevice.cpp index f2fda25b..7360f90e 100644 --- a/src/SceneGraph/Vulkan/VKPhysicalDevice.cpp +++ b/src/SceneGraph/Vulkan/VKPhysicalDevice.cpp @@ -153,6 +153,8 @@ GPUPhysicalDevice::GPUPhysicalDevice(VkInstance inst,VkPhysicalDevice pd) debug_queue_family_properties_out(debug_front.c_str(),queue_family_properties); } + + dynamic_state=CheckExtensionSupport(VK_EXT_EXTENDED_DYNAMIC_STATE_EXTENSION_NAME); } const bool GPUPhysicalDevice::GetLayerVersion(const AnsiString &name,uint32_t &spec,uint32_t &impl)const