Skip to content

Commit 61c4e74

Browse files
vulkaninfo: Dump VkCooperativeMatrixPropertiesKHR and TimeDomain
1 parent 2a288f8 commit 61c4e74

File tree

5 files changed

+150
-2
lines changed

5 files changed

+150
-2
lines changed

scripts/generators/vulkaninfo_generator.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -76,9 +76,9 @@
7676
STRUCTURES_TO_GEN = ['VkExtent3D', 'VkExtent2D', 'VkPhysicalDeviceLimits', 'VkPhysicalDeviceFeatures', 'VkPhysicalDeviceSparseProperties',
7777
'VkSurfaceCapabilitiesKHR', 'VkSurfaceFormatKHR', 'VkLayerProperties', 'VkPhysicalDeviceToolProperties', 'VkFormatProperties',
7878
'VkSurfacePresentScalingCapabilitiesKHR', 'VkSurfacePresentModeCompatibilityKHR', 'VkPhysicalDeviceHostImageCopyProperties',
79-
'VkVideoProfileInfoKHR', 'VkVideoCapabilitiesKHR', 'VkVideoFormatPropertiesKHR']
79+
'VkVideoProfileInfoKHR', 'VkVideoCapabilitiesKHR', 'VkVideoFormatPropertiesKHR', 'VkCooperativeMatrixPropertiesKHR']
8080
ENUMS_TO_GEN = ['VkResult', 'VkFormat', 'VkPresentModeKHR',
81-
'VkPhysicalDeviceType', 'VkImageTiling']
81+
'VkPhysicalDeviceType', 'VkImageTiling', 'VkTimeDomainKHR']
8282
FLAGS_TO_GEN = ['VkSurfaceTransformFlagsKHR', 'VkCompositeAlphaFlagsKHR', 'VkSurfaceCounterFlagsEXT', 'VkQueueFlags',
8383
'VkDeviceGroupPresentModeFlagsKHR', 'VkFormatFeatureFlags', 'VkFormatFeatureFlags2', 'VkMemoryPropertyFlags', 'VkMemoryHeapFlags']
8484
FLAG_STRINGS_TO_GEN = ['VkQueueFlags']

vulkaninfo/generated/vulkaninfo.hpp

Lines changed: 101 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1060,6 +1060,50 @@ void DumpVkComponentSwizzle(Printer &p, std::string name, VkComponentSwizzle val
10601060
else
10611061
p.PrintKeyString(name, VkComponentSwizzleString(value));
10621062
}
1063+
std::string VkComponentTypeKHRString(VkComponentTypeKHR value) {
1064+
switch (value) {
1065+
case (VK_COMPONENT_TYPE_FLOAT16_KHR):
1066+
return "COMPONENT_TYPE_FLOAT16_KHR";
1067+
case (VK_COMPONENT_TYPE_FLOAT32_KHR):
1068+
return "COMPONENT_TYPE_FLOAT32_KHR";
1069+
case (VK_COMPONENT_TYPE_FLOAT64_KHR):
1070+
return "COMPONENT_TYPE_FLOAT64_KHR";
1071+
case (VK_COMPONENT_TYPE_SINT8_KHR):
1072+
return "COMPONENT_TYPE_SINT8_KHR";
1073+
case (VK_COMPONENT_TYPE_SINT16_KHR):
1074+
return "COMPONENT_TYPE_SINT16_KHR";
1075+
case (VK_COMPONENT_TYPE_SINT32_KHR):
1076+
return "COMPONENT_TYPE_SINT32_KHR";
1077+
case (VK_COMPONENT_TYPE_SINT64_KHR):
1078+
return "COMPONENT_TYPE_SINT64_KHR";
1079+
case (VK_COMPONENT_TYPE_UINT8_KHR):
1080+
return "COMPONENT_TYPE_UINT8_KHR";
1081+
case (VK_COMPONENT_TYPE_UINT16_KHR):
1082+
return "COMPONENT_TYPE_UINT16_KHR";
1083+
case (VK_COMPONENT_TYPE_UINT32_KHR):
1084+
return "COMPONENT_TYPE_UINT32_KHR";
1085+
case (VK_COMPONENT_TYPE_UINT64_KHR):
1086+
return "COMPONENT_TYPE_UINT64_KHR";
1087+
case (VK_COMPONENT_TYPE_BFLOAT16_KHR):
1088+
return "COMPONENT_TYPE_BFLOAT16_KHR";
1089+
case (VK_COMPONENT_TYPE_SINT8_PACKED_NV):
1090+
return "COMPONENT_TYPE_SINT8_PACKED_NV";
1091+
case (VK_COMPONENT_TYPE_UINT8_PACKED_NV):
1092+
return "COMPONENT_TYPE_UINT8_PACKED_NV";
1093+
case (VK_COMPONENT_TYPE_FLOAT8_E4M3_EXT):
1094+
return "COMPONENT_TYPE_FLOAT8_E4M3_EXT";
1095+
case (VK_COMPONENT_TYPE_FLOAT8_E5M2_EXT):
1096+
return "COMPONENT_TYPE_FLOAT8_E5M2_EXT";
1097+
default:
1098+
return std::string("UNKNOWN_VkComponentTypeKHR_value") + std::to_string(value);
1099+
}
1100+
}
1101+
void DumpVkComponentTypeKHR(Printer &p, std::string name, VkComponentTypeKHR value) {
1102+
if (p.Type() == OutputType::json)
1103+
p.PrintKeyString(name, std::string("VK_") + VkComponentTypeKHRString(value));
1104+
else
1105+
p.PrintKeyString(name, VkComponentTypeKHRString(value));
1106+
}
10631107
std::string VkDefaultVertexAttributeValueKHRString(VkDefaultVertexAttributeValueKHR value) {
10641108
switch (value) {
10651109
case (VK_DEFAULT_VERTEX_ATTRIBUTE_VALUE_ZERO_ZERO_ZERO_ZERO_KHR):
@@ -2072,6 +2116,26 @@ void DumpVkResult(Printer &p, std::string name, VkResult value) {
20722116
else
20732117
p.PrintKeyString(name, VkResultString(value));
20742118
}
2119+
std::string VkScopeKHRString(VkScopeKHR value) {
2120+
switch (value) {
2121+
case (VK_SCOPE_DEVICE_KHR):
2122+
return "SCOPE_DEVICE_KHR";
2123+
case (VK_SCOPE_WORKGROUP_KHR):
2124+
return "SCOPE_WORKGROUP_KHR";
2125+
case (VK_SCOPE_SUBGROUP_KHR):
2126+
return "SCOPE_SUBGROUP_KHR";
2127+
case (VK_SCOPE_QUEUE_FAMILY_KHR):
2128+
return "SCOPE_QUEUE_FAMILY_KHR";
2129+
default:
2130+
return std::string("UNKNOWN_VkScopeKHR_value") + std::to_string(value);
2131+
}
2132+
}
2133+
void DumpVkScopeKHR(Printer &p, std::string name, VkScopeKHR value) {
2134+
if (p.Type() == OutputType::json)
2135+
p.PrintKeyString(name, std::string("VK_") + VkScopeKHRString(value));
2136+
else
2137+
p.PrintKeyString(name, VkScopeKHRString(value));
2138+
}
20752139
std::string VkShaderFloatControlsIndependenceString(VkShaderFloatControlsIndependence value) {
20762140
switch (value) {
20772141
case (VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_32_BIT_ONLY):
@@ -2090,6 +2154,30 @@ void DumpVkShaderFloatControlsIndependence(Printer &p, std::string name, VkShade
20902154
else
20912155
p.PrintKeyString(name, VkShaderFloatControlsIndependenceString(value));
20922156
}
2157+
std::string VkTimeDomainKHRString(VkTimeDomainKHR value) {
2158+
switch (value) {
2159+
case (VK_TIME_DOMAIN_DEVICE_KHR):
2160+
return "TIME_DOMAIN_DEVICE_KHR";
2161+
case (VK_TIME_DOMAIN_CLOCK_MONOTONIC_KHR):
2162+
return "TIME_DOMAIN_CLOCK_MONOTONIC_KHR";
2163+
case (VK_TIME_DOMAIN_CLOCK_MONOTONIC_RAW_KHR):
2164+
return "TIME_DOMAIN_CLOCK_MONOTONIC_RAW_KHR";
2165+
case (VK_TIME_DOMAIN_QUERY_PERFORMANCE_COUNTER_KHR):
2166+
return "TIME_DOMAIN_QUERY_PERFORMANCE_COUNTER_KHR";
2167+
case (VK_TIME_DOMAIN_PRESENT_STAGE_LOCAL_EXT):
2168+
return "TIME_DOMAIN_PRESENT_STAGE_LOCAL_EXT";
2169+
case (VK_TIME_DOMAIN_SWAPCHAIN_LOCAL_EXT):
2170+
return "TIME_DOMAIN_SWAPCHAIN_LOCAL_EXT";
2171+
default:
2172+
return std::string("UNKNOWN_VkTimeDomainKHR_value") + std::to_string(value);
2173+
}
2174+
}
2175+
void DumpVkTimeDomainKHR(Printer &p, std::string name, VkTimeDomainKHR value) {
2176+
if (p.Type() == OutputType::json)
2177+
p.PrintKeyString(name, std::string("VK_") + VkTimeDomainKHRString(value));
2178+
else
2179+
p.PrintKeyString(name, VkTimeDomainKHRString(value));
2180+
}
20932181
std::string VkVideoEncodeTuningModeKHRString(VkVideoEncodeTuningModeKHR value) {
20942182
switch (value) {
20952183
case (VK_VIDEO_ENCODE_TUNING_MODE_DEFAULT_KHR):
@@ -4254,6 +4342,19 @@ void DumpVkConformanceVersion(Printer &p, std::string name, const VkConformanceV
42544342
p.PrintKeyValue("subminor", static_cast<uint32_t>(obj.subminor));
42554343
p.PrintKeyValue("patch", static_cast<uint32_t>(obj.patch));
42564344
}
4345+
void DumpVkCooperativeMatrixPropertiesKHR(Printer &p, std::string name, const VkCooperativeMatrixPropertiesKHR &obj) {
4346+
ObjectWrapper object{p, name};
4347+
p.SetMinKeyWidth(22);
4348+
p.PrintKeyValue("MSize", obj.MSize);
4349+
p.PrintKeyValue("NSize", obj.NSize);
4350+
p.PrintKeyValue("KSize", obj.KSize);
4351+
DumpVkComponentTypeKHR(p, "AType", obj.AType);
4352+
DumpVkComponentTypeKHR(p, "BType", obj.BType);
4353+
DumpVkComponentTypeKHR(p, "CType", obj.CType);
4354+
DumpVkComponentTypeKHR(p, "ResultType", obj.ResultType);
4355+
p.PrintKeyBool("saturatingAccumulation", static_cast<bool>(obj.saturatingAccumulation));
4356+
DumpVkScopeKHR(p, "scope", obj.scope);
4357+
}
42574358
void DumpVkDrmFormatModifierProperties2EXT(Printer &p, std::string name, const VkDrmFormatModifierProperties2EXT &obj) {
42584359
ObjectWrapper object{p, name};
42594360
p.SetMinKeyWidth(27);

vulkaninfo/vulkaninfo.cpp

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -591,6 +591,33 @@ void GpuDumpToolingInfo(Printer &p, AppGpu &gpu) {
591591
}
592592
}
593593

594+
void GpuDumpCooperativeMatrix(Printer &p, AppGpu &gpu) {
595+
auto props = GetCooperativeMatrixInfo(gpu);
596+
if (props.size() > 0) {
597+
p.SetSubHeader();
598+
ObjectWrapper obj(p, "vkGetPhysicalDeviceCooperativeMatrixPropertiesKHR");
599+
for (const auto prop : props) {
600+
DumpVkCooperativeMatrixPropertiesKHR(p, "VkCooperativeMatrixPropertiesKHR", prop);
601+
p.AddNewline();
602+
}
603+
}
604+
}
605+
606+
void GpuDumpCalibrateableTimeDomain(Printer &p, AppGpu &gpu) {
607+
auto props = GetTimeDomainInfo(gpu);
608+
if (props.size() > 0) {
609+
p.SetSubHeader();
610+
ObjectWrapper obj_mem_props(p, "vkGetPhysicalDeviceCalibrateableTimeDomainsKHR");
611+
{
612+
for (uint32_t i = 0; i < props.size(); ++i) {
613+
p.SetElementIndex(static_cast<int>(i));
614+
DumpVkTimeDomainKHR(p, "pTimeDomains", props[i]);
615+
p.AddNewline();
616+
}
617+
}
618+
}
619+
}
620+
594621
void GpuDevDump(Printer &p, AppGpu &gpu) {
595622
p.SetHeader();
596623
ObjectWrapper obj_format_props(p, "Format Properties");
@@ -735,6 +762,11 @@ void DumpGpu(Printer &p, AppGpu &gpu, const ShowSettings &show) {
735762
GpuDumpToolingInfo(p, gpu);
736763
}
737764

765+
if (show.all) {
766+
GpuDumpCooperativeMatrix(p, gpu);
767+
GpuDumpCalibrateableTimeDomain(p, gpu);
768+
}
769+
738770
if (p.Type() != OutputType::text || show.formats) {
739771
GpuDevDump(p, gpu);
740772
}

vulkaninfo/vulkaninfo.h

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1886,6 +1886,17 @@ std::vector<VkPhysicalDeviceToolPropertiesEXT> GetToolingInfo(AppGpu &gpu) {
18861886
vkGetPhysicalDeviceToolPropertiesEXT, gpu.phys_device);
18871887
}
18881888

1889+
std::vector<VkCooperativeMatrixPropertiesKHR> GetCooperativeMatrixInfo(AppGpu &gpu) {
1890+
if (vkGetPhysicalDeviceCooperativeMatrixPropertiesKHR == nullptr) return {};
1891+
return GetVector<VkCooperativeMatrixPropertiesKHR>("vkGetPhysicalDeviceCooperativeMatrixPropertiesKHR",
1892+
vkGetPhysicalDeviceCooperativeMatrixPropertiesKHR, gpu.phys_device);
1893+
}
1894+
std::vector<VkTimeDomainKHR> GetTimeDomainInfo(AppGpu &gpu) {
1895+
if (vkGetPhysicalDeviceCalibrateableTimeDomainsKHR == nullptr) return {};
1896+
return GetVector<VkTimeDomainKHR>("vkGetPhysicalDeviceCalibrateableTimeDomainsKHR",
1897+
vkGetPhysicalDeviceCalibrateableTimeDomainsKHR, gpu.phys_device);
1898+
}
1899+
18891900
// --------- Format Properties ----------//
18901901
// can't use autogen because that is put in a header that we can't include because that header depends on stuff defined here
18911902
bool operator==(const VkFormatProperties &a, const VkFormatProperties b) {

vulkaninfo/vulkaninfo_functions.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -113,6 +113,8 @@ PFN_vkEnumeratePhysicalDevices vkEnumeratePhysicalDevices;
113113
PFN_vkGetPhysicalDeviceSurfaceCapabilities2EXT vkGetPhysicalDeviceSurfaceCapabilities2EXT;
114114
PFN_vkGetPhysicalDeviceToolPropertiesEXT vkGetPhysicalDeviceToolPropertiesEXT;
115115
PFN_vkGetPhysicalDeviceFormatProperties2KHR vkGetPhysicalDeviceFormatProperties2KHR;
116+
PFN_vkGetPhysicalDeviceCooperativeMatrixPropertiesKHR vkGetPhysicalDeviceCooperativeMatrixPropertiesKHR;
117+
PFN_vkGetPhysicalDeviceCalibrateableTimeDomainsKHR vkGetPhysicalDeviceCalibrateableTimeDomainsKHR;
116118

117119
// Device functions
118120
PFN_vkCreateImage vkCreateImage;
@@ -243,6 +245,8 @@ static void load_vulkan_instance_functions(VkInstance instance) {
243245
LOAD_INSTANCE_FUNCTION(instance, vkGetPhysicalDeviceSurfaceCapabilities2EXT);
244246
LOAD_INSTANCE_FUNCTION(instance, vkGetPhysicalDeviceToolPropertiesEXT);
245247
LOAD_INSTANCE_FUNCTION(instance, vkGetPhysicalDeviceFormatProperties2KHR);
248+
LOAD_INSTANCE_FUNCTION(instance, vkGetPhysicalDeviceCooperativeMatrixPropertiesKHR);
249+
LOAD_INSTANCE_FUNCTION(instance, vkGetPhysicalDeviceCalibrateableTimeDomainsKHR);
246250

247251
// Load device functions using vkGetInstanceProcAddr, vulkaninfo doesn't care about the extra indirection it causes
248252
LOAD_INSTANCE_FUNCTION(instance, vkCreateImage);

0 commit comments

Comments
 (0)