@@ -1718,12 +1718,14 @@ static vk_device ggml_vk_get_device(size_t idx) {
1718
1718
vk::PhysicalDeviceMaintenance3Properties props3;
1719
1719
vk::PhysicalDeviceMaintenance4Properties props4;
1720
1720
vk::PhysicalDeviceSubgroupProperties subgroup_props;
1721
+ vk::PhysicalDeviceDriverProperties driver_props;
1721
1722
vk::PhysicalDeviceShaderSMBuiltinsPropertiesNV sm_props;
1722
1723
vk::PhysicalDeviceShaderCoreProperties2AMD amd_shader_core_properties2_props;
1723
1724
props2.pNext = &props3;
1724
1725
props3.pNext = &subgroup_props;
1726
+ subgroup_props.pNext = &driver_props;
1725
1727
1726
- VkBaseOutStructure * last_struct = (VkBaseOutStructure *)&subgroup_props ;
1728
+ VkBaseOutStructure * last_struct = (VkBaseOutStructure *)&driver_props ;
1727
1729
1728
1730
if (maintenance4_support) {
1729
1731
last_struct->pNext = (VkBaseOutStructure *)&props4;
@@ -1789,8 +1791,9 @@ static vk_device ggml_vk_get_device(size_t idx) {
1789
1791
1790
1792
device->fp16 = !force_disable_f16 && fp16_storage && fp16_compute;
1791
1793
1792
- if (device->vendor_id == VK_VENDOR_ID_INTEL) {
1794
+ if (device->vendor_id == VK_VENDOR_ID_INTEL || (props2. properties . vendorID == VK_VENDOR_ID_AMD && driver_props. driverID == vk::DriverId::eAmdProprietary) ) {
1793
1795
// Intel drivers don't support coopmat properly yet
1796
+ // Only RADV supports coopmat properly on AMD
1794
1797
device->coopmat_support = false ;
1795
1798
}
1796
1799
@@ -2060,8 +2063,9 @@ static void ggml_vk_print_gpu_info(size_t idx) {
2060
2063
}
2061
2064
}
2062
2065
2063
- if (props2.properties .vendorID == VK_VENDOR_ID_INTEL) {
2066
+ if (props2.properties .vendorID == VK_VENDOR_ID_INTEL || (props2. properties . vendorID == VK_VENDOR_ID_AMD && driver_props. driverID == vk::DriverId::eAmdProprietary) ) {
2064
2067
// Intel drivers don't support coopmat properly yet
2068
+ // Only RADV supports coopmat properly on AMD
2065
2069
coopmat_support = false ;
2066
2070
}
2067
2071
0 commit comments