diff --git a/example/Vulkan/RenderSurfaceAttribute.cpp b/example/Vulkan/RenderSurfaceAttribute.cpp index 446e85dd..933a5051 100644 --- a/example/Vulkan/RenderSurfaceAttribute.cpp +++ b/example/Vulkan/RenderSurfaceAttribute.cpp @@ -1,4 +1,5 @@ #include"RenderSurfaceAttribute.h" +#include VK_NAMESPACE_BEGIN RenderSurfaceAttribute::RenderSurfaceAttribute(VkInstance inst,VkPhysicalDevice pd,VkSurfaceKHR s) @@ -13,6 +14,28 @@ RenderSurfaceAttribute::RenderSurfaceAttribute(VkInstance inst,VkPhysicalDevice vkGetPhysicalDeviceProperties(physical_device,&properties); vkGetPhysicalDeviceMemoryProperties(physical_device,&memory_properties); + { + uint32_t property_count; + + vkEnumerateDeviceLayerProperties(physical_device,&property_count,nullptr); + + layer_properties.SetCount(property_count); + vkEnumerateDeviceLayerProperties(physical_device,&property_count,layer_properties.GetData()); + + debug_out(layer_properties); + } + + { + uint32_t exten_count; + + vkEnumerateDeviceExtensionProperties(physical_device,nullptr,&exten_count,nullptr); + + extension_properties.SetCount(exten_count); + vkEnumerateDeviceExtensionProperties(physical_device,nullptr,&exten_count,extension_properties.GetData()); + + debug_out(extension_properties); + } + { if(surface_caps.supportedTransforms&VK_SURFACE_TRANSFORM_IDENTITY_BIT_KHR) { diff --git a/example/Vulkan/RenderSurfaceAttribute.h b/example/Vulkan/RenderSurfaceAttribute.h index d8736165..2cf38a43 100644 --- a/example/Vulkan/RenderSurfaceAttribute.h +++ b/example/Vulkan/RenderSurfaceAttribute.h @@ -23,6 +23,8 @@ struct RenderSurfaceAttribute VkPhysicalDeviceFeatures features; VkPhysicalDeviceProperties properties; VkPhysicalDeviceMemoryProperties memory_properties; + List layer_properties; + List extension_properties; List surface_formts; VkFormat format; diff --git a/example/Vulkan/VK.h b/example/Vulkan/VK.h index f977f02f..be3f3836 100644 --- a/example/Vulkan/VK.h +++ b/example/Vulkan/VK.h @@ -3,10 +3,40 @@ #include #include +#include #define VK_NAMESPACE_BEGIN namespace hgl{namespace graph{namespace vulkan{ #define VK_NAMESPACE_END }}} using CharPointerList=hgl::List; +inline void debug_out(const hgl::List &layer_properties) +{ + const int property_count=layer_properties.GetCount(); + + if(property_count<=0)return; + + const VkLayerProperties *lp=layer_properties.GetData(); + + for(int i=0;ilayerName<<" desc: "<description< &extension_properties) +{ + const int extension_count=extension_properties.GetCount(); + + if(extension_count<=0)return; + + VkExtensionProperties *ep=extension_properties.GetData(); + for(int i=0;iextensionName<<" ver: "<specVersion< layer_properties; + List extension_properties; VkDebugUtilsMessengerEXT debug_messenger; VkDebugReportCallbackEXT debug_report_callback;