support Vulkan 1.4 caps
This commit is contained in:
parent
ab36f67412
commit
79b0b2ef76
@ -14,11 +14,13 @@ class GPUPhysicalDevice
|
||||
VkPhysicalDeviceVulkan11Features features11;
|
||||
VkPhysicalDeviceVulkan12Features features12;
|
||||
VkPhysicalDeviceVulkan13Features features13;
|
||||
VkPhysicalDeviceVulkan14Features features14;
|
||||
|
||||
VkPhysicalDeviceProperties properties;
|
||||
VkPhysicalDeviceVulkan11Properties properties11;
|
||||
VkPhysicalDeviceVulkan12Properties properties12;
|
||||
VkPhysicalDeviceVulkan13Properties properties13;
|
||||
VkPhysicalDeviceVulkan14Properties properties14;
|
||||
|
||||
VkPhysicalDeviceMemoryProperties memory_properties;
|
||||
List<VkLayerProperties> layer_properties;
|
||||
@ -36,6 +38,7 @@ public:
|
||||
const VkPhysicalDeviceVulkan11Features &GetFeatures11 ()const{return features11;}
|
||||
const VkPhysicalDeviceVulkan12Features &GetFeatures12 ()const{return features12;}
|
||||
const VkPhysicalDeviceVulkan13Features &GetFeatures13 ()const{return features13;}
|
||||
const VkPhysicalDeviceVulkan14Features &GetFeatures14 ()const{return features14;}
|
||||
|
||||
const VkPhysicalDeviceProperties & GetProperties ()const{return properties;}
|
||||
const VkPhysicalDeviceMemoryProperties &GetMemoryProperties ()const{return memory_properties;}
|
||||
@ -66,7 +69,11 @@ public:
|
||||
const uint32_t GetSSBORange ()const{return properties.limits.maxStorageBufferRange;}
|
||||
const VkDeviceSize GetSSBOAlign ()const{return properties.limits.minStorageBufferOffsetAlignment;}
|
||||
|
||||
const uint32_t GetConstantSize ()const{return properties.limits.maxPushConstantsSize;}
|
||||
const uint32_t GetConstantSize ()const{return properties.limits.maxPushConstantsSize;}
|
||||
|
||||
const VkDeviceSize GetMaxBufferSize()const{return properties13.maxBufferSize;}
|
||||
|
||||
const uint32_t GetMaxPushDescriptors()const{return properties14.maxPushDescriptors;}
|
||||
|
||||
public:
|
||||
|
||||
@ -182,6 +189,9 @@ public:
|
||||
const VkBool32 SupportYcbcrConversion ()const{return features11.samplerYcbcrConversion;}
|
||||
const VkBool32 SupportClampMirrorToEdge ()const{return features12.samplerMirrorClampToEdge;}
|
||||
|
||||
const VkBool32 SupportSmoothLines ()const{return features14.smoothLines;}
|
||||
const VkBool32 SupportStippledSmoothLines ()const{return features14.stippledSmoothLines;}
|
||||
|
||||
const void GetPointSize(float &granularity,float &min_size,float &max_size) const
|
||||
{
|
||||
granularity =properties.limits.pointSizeGranularity;
|
||||
|
@ -169,6 +169,35 @@ namespace
|
||||
#undef OUTPUT_PHYSICAL_DEVICE_FEATURE
|
||||
}
|
||||
|
||||
void DebugOut(const VkPhysicalDeviceVulkan14Features &features)
|
||||
{
|
||||
std::cout<<"Vulkan 1.4 features"<<std::endl;
|
||||
|
||||
#define OUTPUT_PHYSICAL_DEVICE_FEATURE(name) std::cout<<std::setw(60)<<std::right<<#name<<": "<<(features.name?"true":"false")<<std::endl;
|
||||
OUTPUT_PHYSICAL_DEVICE_FEATURE(globalPriorityQuery)
|
||||
OUTPUT_PHYSICAL_DEVICE_FEATURE(shaderSubgroupRotate)
|
||||
OUTPUT_PHYSICAL_DEVICE_FEATURE(shaderSubgroupRotateClustered)
|
||||
OUTPUT_PHYSICAL_DEVICE_FEATURE(shaderFloatControls2)
|
||||
OUTPUT_PHYSICAL_DEVICE_FEATURE(shaderExpectAssume)
|
||||
OUTPUT_PHYSICAL_DEVICE_FEATURE(rectangularLines)
|
||||
OUTPUT_PHYSICAL_DEVICE_FEATURE(bresenhamLines)
|
||||
OUTPUT_PHYSICAL_DEVICE_FEATURE(smoothLines)
|
||||
OUTPUT_PHYSICAL_DEVICE_FEATURE(stippledRectangularLines)
|
||||
OUTPUT_PHYSICAL_DEVICE_FEATURE(stippledBresenhamLines)
|
||||
OUTPUT_PHYSICAL_DEVICE_FEATURE(stippledSmoothLines)
|
||||
OUTPUT_PHYSICAL_DEVICE_FEATURE(vertexAttributeInstanceRateDivisor)
|
||||
OUTPUT_PHYSICAL_DEVICE_FEATURE(vertexAttributeInstanceRateZeroDivisor)
|
||||
OUTPUT_PHYSICAL_DEVICE_FEATURE(indexTypeUint8)
|
||||
OUTPUT_PHYSICAL_DEVICE_FEATURE(dynamicRenderingLocalRead)
|
||||
OUTPUT_PHYSICAL_DEVICE_FEATURE(maintenance5)
|
||||
OUTPUT_PHYSICAL_DEVICE_FEATURE(maintenance6)
|
||||
OUTPUT_PHYSICAL_DEVICE_FEATURE(pipelineProtectedAccess)
|
||||
OUTPUT_PHYSICAL_DEVICE_FEATURE(pipelineRobustness)
|
||||
OUTPUT_PHYSICAL_DEVICE_FEATURE(hostImageCopy)
|
||||
OUTPUT_PHYSICAL_DEVICE_FEATURE(pushDescriptor)
|
||||
#undef OUTPUT_PHYSICAL_DEVICE_FEATURE
|
||||
}
|
||||
|
||||
void DebugOutVersion(uint32_t version)
|
||||
{
|
||||
std::cout<<VK_VERSION_MAJOR(version)<<"."<<VK_VERSION_MINOR(version)<<"."<<VK_VERSION_PATCH(version)<<std::endl;
|
||||
@ -377,5 +406,6 @@ void OutputPhysicalDeviceCaps(const GPUPhysicalDevice *pd)
|
||||
DebugOut(pd->GetFeatures11());
|
||||
DebugOut(pd->GetFeatures12());
|
||||
DebugOut(pd->GetFeatures13());
|
||||
DebugOut(pd->GetFeatures14());
|
||||
}
|
||||
VK_NAMESPACE_END
|
||||
|
@ -20,7 +20,7 @@ VulkanInstance *CreateInstance(const AnsiString &app_name,VKDebugOut *out,Create
|
||||
app_info.applicationVersion = 1;
|
||||
app_info.pEngineName = "CMGameEngine/ULRE";
|
||||
app_info.engineVersion = 1;
|
||||
app_info.apiVersion = VK_API_VERSION_1_3;
|
||||
app_info.apiVersion = VK_API_VERSION_1_4;
|
||||
|
||||
ext_list.Add(VK_KHR_SURFACE_EXTENSION_NAME);
|
||||
ext_list.Add(HGL_VK_SURFACE_EXTENSION_NAME); //此宏在VKSurfaceExtensionName.h中定义
|
||||
|
@ -64,6 +64,7 @@ GPUPhysicalDevice::GPUPhysicalDevice(VkInstance inst,VkPhysicalDevice pd)
|
||||
hgl_zero(features11);
|
||||
hgl_zero(features12);
|
||||
hgl_zero(features13);
|
||||
hgl_zero(features14);
|
||||
|
||||
auto func=(PFN_vkGetPhysicalDeviceFeatures2KHR)vkGetInstanceProcAddr(inst,"vkGetPhysicalDeviceFeatures2KHR");
|
||||
|
||||
@ -81,7 +82,10 @@ GPUPhysicalDevice::GPUPhysicalDevice(VkInstance inst,VkPhysicalDevice pd)
|
||||
features12.pNext=&features13;
|
||||
|
||||
features13.sType=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_3_FEATURES;
|
||||
features13.pNext=nullptr;
|
||||
features13.pNext=&features14;
|
||||
|
||||
features14.sType=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_4_FEATURES;
|
||||
features14.pNext=nullptr;
|
||||
|
||||
func(physical_device,&features2);
|
||||
|
||||
@ -97,6 +101,7 @@ GPUPhysicalDevice::GPUPhysicalDevice(VkInstance inst,VkPhysicalDevice pd)
|
||||
hgl_zero(properties11);
|
||||
hgl_zero(properties12);
|
||||
hgl_zero(properties13);
|
||||
hgl_zero(properties14);
|
||||
|
||||
auto func=(PFN_vkGetPhysicalDeviceProperties2KHR)vkGetInstanceProcAddr(inst,"vkGetPhysicalDeviceProperties2KHR");
|
||||
|
||||
@ -114,7 +119,10 @@ GPUPhysicalDevice::GPUPhysicalDevice(VkInstance inst,VkPhysicalDevice pd)
|
||||
properties12.pNext=&properties13;
|
||||
|
||||
properties13.sType=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_3_PROPERTIES;
|
||||
properties13.pNext=nullptr;
|
||||
properties13.pNext=&properties14;
|
||||
|
||||
properties14.sType=VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_4_PROPERTIES;
|
||||
properties14.pNext=nullptr;
|
||||
|
||||
func(physical_device,&properties2);
|
||||
|
||||
@ -163,7 +171,11 @@ GPUPhysicalDevice::GPUPhysicalDevice(VkInstance inst,VkPhysicalDevice pd)
|
||||
debug_queue_family_properties_out(debug_front.c_str(),queue_family_properties);
|
||||
}
|
||||
|
||||
support_u8_index=CheckExtensionSupport(VK_EXT_INDEX_TYPE_UINT8_EXTENSION_NAME);
|
||||
if(features14.indexTypeUint8)
|
||||
support_u8_index=true;
|
||||
else
|
||||
support_u8_index=CheckExtensionSupport(VK_EXT_INDEX_TYPE_UINT8_EXTENSION_NAME);
|
||||
|
||||
dynamic_state=CheckExtensionSupport(VK_EXT_EXTENDED_DYNAMIC_STATE_EXTENSION_NAME);
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user