1/* WARNING: This is auto-generated file. Do not modify, since changes will 2 * be lost! Modify the generating script instead. 3 * This file was generated by /scripts/gen_framework.py 4 */ 5 6 7 8tcu::TestStatus createDeviceWithUnsupportedFeaturesTestExternalMemorySciBufFeaturesNV (Context& context) 9{ 10 const PlatformInterface& vkp = context.getPlatformInterface(); 11 tcu::TestLog& log = context.getTestContext().getLog(); 12 tcu::ResultCollector resultCollector (log); 13 const CustomInstance instance (createCustomInstanceWithExtensions(context, context.getInstanceExtensions(), DE_NULL, true)); 14 const InstanceDriver& instanceDriver (instance.getDriver()); 15 const VkPhysicalDevice physicalDevice = chooseDevice(instanceDriver, instance, context.getTestContext().getCommandLine()); 16 const deUint32 queueFamilyIndex = 0; 17 const deUint32 queueCount = 1; 18 const float queuePriority = 1.0f; 19 const DeviceFeatures deviceFeaturesAll (context.getInstanceInterface(), context.getUsedApiVersion(), physicalDevice, context.getInstanceExtensions(), context.getDeviceExtensions(), DE_TRUE); 20 const VkPhysicalDeviceFeatures2 deviceFeatures2 = deviceFeaturesAll.getCoreFeatures2(); 21 int numErrors = 0; 22 bool isSubProcess = context.getTestContext().getCommandLine().isSubProcess(); 23 VkDeviceObjectReservationCreateInfo memReservationStatMax = context.getResourceInterface()->getStatMax(); 24 25 VkPhysicalDeviceFeatures emptyDeviceFeatures; 26 deMemset(&emptyDeviceFeatures, 0, sizeof(emptyDeviceFeatures)); 27 28 // Only non-core extensions will be used when creating the device. 29 const auto& extensionNames = context.getDeviceCreationExtensions(); 30 DE_UNREF(extensionNames); // In some cases this is not used. 31 32 if (const void* featuresStruct = findStructureInChain(const_cast<const void*>(deviceFeatures2.pNext), getStructureType<VkPhysicalDeviceExternalMemorySciBufFeaturesNV>())) 33 { 34 static const Feature features[] = 35 { 36 FEATURE_ITEM (VkPhysicalDeviceExternalMemorySciBufFeaturesNV, sciBufImport), 37 FEATURE_ITEM (VkPhysicalDeviceExternalMemorySciBufFeaturesNV, sciBufExport), 38 }; 39 auto* supportedFeatures = reinterpret_cast<const VkPhysicalDeviceExternalMemorySciBufFeaturesNV*>(featuresStruct); 40 checkFeatures(vkp, instance, instanceDriver, physicalDevice, 2, features, supportedFeatures, queueFamilyIndex, queueCount, queuePriority, numErrors, resultCollector, &extensionNames, emptyDeviceFeatures, memReservationStatMax, isSubProcess, context.getUsedApiVersion()); 41 } 42 43 if (numErrors > 0) 44 return tcu::TestStatus(resultCollector.getResult(), "Enabling unsupported features didn't return VK_ERROR_FEATURE_NOT_PRESENT."); 45 else 46 return tcu::TestStatus(resultCollector.getResult(), resultCollector.getMessage()); 47} 48 49 50tcu::TestStatus createDeviceWithUnsupportedFeaturesTestVariablePointersFeatures (Context& context) 51{ 52 const PlatformInterface& vkp = context.getPlatformInterface(); 53 tcu::TestLog& log = context.getTestContext().getLog(); 54 tcu::ResultCollector resultCollector (log); 55 const CustomInstance instance (createCustomInstanceWithExtensions(context, context.getInstanceExtensions(), DE_NULL, true)); 56 const InstanceDriver& instanceDriver (instance.getDriver()); 57 const VkPhysicalDevice physicalDevice = chooseDevice(instanceDriver, instance, context.getTestContext().getCommandLine()); 58 const deUint32 queueFamilyIndex = 0; 59 const deUint32 queueCount = 1; 60 const float queuePriority = 1.0f; 61 const DeviceFeatures deviceFeaturesAll (context.getInstanceInterface(), context.getUsedApiVersion(), physicalDevice, context.getInstanceExtensions(), context.getDeviceExtensions(), DE_TRUE); 62 const VkPhysicalDeviceFeatures2 deviceFeatures2 = deviceFeaturesAll.getCoreFeatures2(); 63 int numErrors = 0; 64 bool isSubProcess = context.getTestContext().getCommandLine().isSubProcess(); 65 VkDeviceObjectReservationCreateInfo memReservationStatMax = context.getResourceInterface()->getStatMax(); 66 67 VkPhysicalDeviceFeatures emptyDeviceFeatures; 68 deMemset(&emptyDeviceFeatures, 0, sizeof(emptyDeviceFeatures)); 69 70 // Only non-core extensions will be used when creating the device. 71 const auto& extensionNames = context.getDeviceCreationExtensions(); 72 DE_UNREF(extensionNames); // In some cases this is not used. 73 74 if (const void* featuresStruct = findStructureInChain(const_cast<const void*>(deviceFeatures2.pNext), getStructureType<VkPhysicalDeviceVariablePointersFeatures>())) 75 { 76 static const Feature features[] = 77 { 78 FEATURE_ITEM (VkPhysicalDeviceVariablePointersFeatures, variablePointersStorageBuffer), 79 FEATURE_ITEM (VkPhysicalDeviceVariablePointersFeatures, variablePointers), 80 }; 81 auto* supportedFeatures = reinterpret_cast<const VkPhysicalDeviceVariablePointersFeatures*>(featuresStruct); 82 checkFeatures(vkp, instance, instanceDriver, physicalDevice, 2, features, supportedFeatures, queueFamilyIndex, queueCount, queuePriority, numErrors, resultCollector, &extensionNames, emptyDeviceFeatures, memReservationStatMax, isSubProcess, context.getUsedApiVersion()); 83 } 84 85 if (numErrors > 0) 86 return tcu::TestStatus(resultCollector.getResult(), "Enabling unsupported features didn't return VK_ERROR_FEATURE_NOT_PRESENT."); 87 else 88 return tcu::TestStatus(resultCollector.getResult(), resultCollector.getMessage()); 89} 90 91 92tcu::TestStatus createDeviceWithUnsupportedFeaturesTestExternalSciSyncFeaturesNV (Context& context) 93{ 94 const PlatformInterface& vkp = context.getPlatformInterface(); 95 tcu::TestLog& log = context.getTestContext().getLog(); 96 tcu::ResultCollector resultCollector (log); 97 const CustomInstance instance (createCustomInstanceWithExtensions(context, context.getInstanceExtensions(), DE_NULL, true)); 98 const InstanceDriver& instanceDriver (instance.getDriver()); 99 const VkPhysicalDevice physicalDevice = chooseDevice(instanceDriver, instance, context.getTestContext().getCommandLine()); 100 const deUint32 queueFamilyIndex = 0; 101 const deUint32 queueCount = 1; 102 const float queuePriority = 1.0f; 103 const DeviceFeatures deviceFeaturesAll (context.getInstanceInterface(), context.getUsedApiVersion(), physicalDevice, context.getInstanceExtensions(), context.getDeviceExtensions(), DE_TRUE); 104 const VkPhysicalDeviceFeatures2 deviceFeatures2 = deviceFeaturesAll.getCoreFeatures2(); 105 int numErrors = 0; 106 bool isSubProcess = context.getTestContext().getCommandLine().isSubProcess(); 107 VkDeviceObjectReservationCreateInfo memReservationStatMax = context.getResourceInterface()->getStatMax(); 108 109 VkPhysicalDeviceFeatures emptyDeviceFeatures; 110 deMemset(&emptyDeviceFeatures, 0, sizeof(emptyDeviceFeatures)); 111 112 // Only non-core extensions will be used when creating the device. 113 const auto& extensionNames = context.getDeviceCreationExtensions(); 114 DE_UNREF(extensionNames); // In some cases this is not used. 115 116 if (const void* featuresStruct = findStructureInChain(const_cast<const void*>(deviceFeatures2.pNext), getStructureType<VkPhysicalDeviceExternalSciSyncFeaturesNV>())) 117 { 118 static const Feature features[] = 119 { 120 FEATURE_ITEM (VkPhysicalDeviceExternalSciSyncFeaturesNV, sciSyncFence), 121 FEATURE_ITEM (VkPhysicalDeviceExternalSciSyncFeaturesNV, sciSyncSemaphore), 122 FEATURE_ITEM (VkPhysicalDeviceExternalSciSyncFeaturesNV, sciSyncImport), 123 FEATURE_ITEM (VkPhysicalDeviceExternalSciSyncFeaturesNV, sciSyncExport), 124 }; 125 auto* supportedFeatures = reinterpret_cast<const VkPhysicalDeviceExternalSciSyncFeaturesNV*>(featuresStruct); 126 checkFeatures(vkp, instance, instanceDriver, physicalDevice, 4, features, supportedFeatures, queueFamilyIndex, queueCount, queuePriority, numErrors, resultCollector, &extensionNames, emptyDeviceFeatures, memReservationStatMax, isSubProcess, context.getUsedApiVersion()); 127 } 128 129 if (numErrors > 0) 130 return tcu::TestStatus(resultCollector.getResult(), "Enabling unsupported features didn't return VK_ERROR_FEATURE_NOT_PRESENT."); 131 else 132 return tcu::TestStatus(resultCollector.getResult(), resultCollector.getMessage()); 133} 134 135 136tcu::TestStatus createDeviceWithUnsupportedFeaturesTestExternalSciSync2FeaturesNV (Context& context) 137{ 138 const PlatformInterface& vkp = context.getPlatformInterface(); 139 tcu::TestLog& log = context.getTestContext().getLog(); 140 tcu::ResultCollector resultCollector (log); 141 const CustomInstance instance (createCustomInstanceWithExtensions(context, context.getInstanceExtensions(), DE_NULL, true)); 142 const InstanceDriver& instanceDriver (instance.getDriver()); 143 const VkPhysicalDevice physicalDevice = chooseDevice(instanceDriver, instance, context.getTestContext().getCommandLine()); 144 const deUint32 queueFamilyIndex = 0; 145 const deUint32 queueCount = 1; 146 const float queuePriority = 1.0f; 147 const DeviceFeatures deviceFeaturesAll (context.getInstanceInterface(), context.getUsedApiVersion(), physicalDevice, context.getInstanceExtensions(), context.getDeviceExtensions(), DE_TRUE); 148 const VkPhysicalDeviceFeatures2 deviceFeatures2 = deviceFeaturesAll.getCoreFeatures2(); 149 int numErrors = 0; 150 bool isSubProcess = context.getTestContext().getCommandLine().isSubProcess(); 151 VkDeviceObjectReservationCreateInfo memReservationStatMax = context.getResourceInterface()->getStatMax(); 152 153 VkPhysicalDeviceFeatures emptyDeviceFeatures; 154 deMemset(&emptyDeviceFeatures, 0, sizeof(emptyDeviceFeatures)); 155 156 // Only non-core extensions will be used when creating the device. 157 const auto& extensionNames = context.getDeviceCreationExtensions(); 158 DE_UNREF(extensionNames); // In some cases this is not used. 159 160 if (const void* featuresStruct = findStructureInChain(const_cast<const void*>(deviceFeatures2.pNext), getStructureType<VkPhysicalDeviceExternalSciSync2FeaturesNV>())) 161 { 162 static const Feature features[] = 163 { 164 FEATURE_ITEM (VkPhysicalDeviceExternalSciSync2FeaturesNV, sciSyncFence), 165 FEATURE_ITEM (VkPhysicalDeviceExternalSciSync2FeaturesNV, sciSyncSemaphore2), 166 FEATURE_ITEM (VkPhysicalDeviceExternalSciSync2FeaturesNV, sciSyncImport), 167 FEATURE_ITEM (VkPhysicalDeviceExternalSciSync2FeaturesNV, sciSyncExport), 168 }; 169 auto* supportedFeatures = reinterpret_cast<const VkPhysicalDeviceExternalSciSync2FeaturesNV*>(featuresStruct); 170 checkFeatures(vkp, instance, instanceDriver, physicalDevice, 4, features, supportedFeatures, queueFamilyIndex, queueCount, queuePriority, numErrors, resultCollector, &extensionNames, emptyDeviceFeatures, memReservationStatMax, isSubProcess, context.getUsedApiVersion()); 171 } 172 173 if (numErrors > 0) 174 return tcu::TestStatus(resultCollector.getResult(), "Enabling unsupported features didn't return VK_ERROR_FEATURE_NOT_PRESENT."); 175 else 176 return tcu::TestStatus(resultCollector.getResult(), resultCollector.getMessage()); 177} 178 179 180tcu::TestStatus createDeviceWithUnsupportedFeaturesTestMultiviewFeatures (Context& context) 181{ 182 const PlatformInterface& vkp = context.getPlatformInterface(); 183 tcu::TestLog& log = context.getTestContext().getLog(); 184 tcu::ResultCollector resultCollector (log); 185 const CustomInstance instance (createCustomInstanceWithExtensions(context, context.getInstanceExtensions(), DE_NULL, true)); 186 const InstanceDriver& instanceDriver (instance.getDriver()); 187 const VkPhysicalDevice physicalDevice = chooseDevice(instanceDriver, instance, context.getTestContext().getCommandLine()); 188 const deUint32 queueFamilyIndex = 0; 189 const deUint32 queueCount = 1; 190 const float queuePriority = 1.0f; 191 const DeviceFeatures deviceFeaturesAll (context.getInstanceInterface(), context.getUsedApiVersion(), physicalDevice, context.getInstanceExtensions(), context.getDeviceExtensions(), DE_TRUE); 192 const VkPhysicalDeviceFeatures2 deviceFeatures2 = deviceFeaturesAll.getCoreFeatures2(); 193 int numErrors = 0; 194 bool isSubProcess = context.getTestContext().getCommandLine().isSubProcess(); 195 VkDeviceObjectReservationCreateInfo memReservationStatMax = context.getResourceInterface()->getStatMax(); 196 197 VkPhysicalDeviceFeatures emptyDeviceFeatures; 198 deMemset(&emptyDeviceFeatures, 0, sizeof(emptyDeviceFeatures)); 199 200 // Only non-core extensions will be used when creating the device. 201 const auto& extensionNames = context.getDeviceCreationExtensions(); 202 DE_UNREF(extensionNames); // In some cases this is not used. 203 204 if (const void* featuresStruct = findStructureInChain(const_cast<const void*>(deviceFeatures2.pNext), getStructureType<VkPhysicalDeviceMultiviewFeatures>())) 205 { 206 static const Feature features[] = 207 { 208 FEATURE_ITEM (VkPhysicalDeviceMultiviewFeatures, multiview), 209 FEATURE_ITEM (VkPhysicalDeviceMultiviewFeatures, multiviewGeometryShader), 210 FEATURE_ITEM (VkPhysicalDeviceMultiviewFeatures, multiviewTessellationShader), 211 }; 212 auto* supportedFeatures = reinterpret_cast<const VkPhysicalDeviceMultiviewFeatures*>(featuresStruct); 213 checkFeatures(vkp, instance, instanceDriver, physicalDevice, 3, features, supportedFeatures, queueFamilyIndex, queueCount, queuePriority, numErrors, resultCollector, &extensionNames, emptyDeviceFeatures, memReservationStatMax, isSubProcess, context.getUsedApiVersion()); 214 } 215 216 if (numErrors > 0) 217 return tcu::TestStatus(resultCollector.getResult(), "Enabling unsupported features didn't return VK_ERROR_FEATURE_NOT_PRESENT."); 218 else 219 return tcu::TestStatus(resultCollector.getResult(), resultCollector.getMessage()); 220} 221 222 223tcu::TestStatus createDeviceWithUnsupportedFeaturesTest16BitStorageFeatures (Context& context) 224{ 225 const PlatformInterface& vkp = context.getPlatformInterface(); 226 tcu::TestLog& log = context.getTestContext().getLog(); 227 tcu::ResultCollector resultCollector (log); 228 const CustomInstance instance (createCustomInstanceWithExtensions(context, context.getInstanceExtensions(), DE_NULL, true)); 229 const InstanceDriver& instanceDriver (instance.getDriver()); 230 const VkPhysicalDevice physicalDevice = chooseDevice(instanceDriver, instance, context.getTestContext().getCommandLine()); 231 const deUint32 queueFamilyIndex = 0; 232 const deUint32 queueCount = 1; 233 const float queuePriority = 1.0f; 234 const DeviceFeatures deviceFeaturesAll (context.getInstanceInterface(), context.getUsedApiVersion(), physicalDevice, context.getInstanceExtensions(), context.getDeviceExtensions(), DE_TRUE); 235 const VkPhysicalDeviceFeatures2 deviceFeatures2 = deviceFeaturesAll.getCoreFeatures2(); 236 int numErrors = 0; 237 bool isSubProcess = context.getTestContext().getCommandLine().isSubProcess(); 238 VkDeviceObjectReservationCreateInfo memReservationStatMax = context.getResourceInterface()->getStatMax(); 239 240 VkPhysicalDeviceFeatures emptyDeviceFeatures; 241 deMemset(&emptyDeviceFeatures, 0, sizeof(emptyDeviceFeatures)); 242 243 // Only non-core extensions will be used when creating the device. 244 const auto& extensionNames = context.getDeviceCreationExtensions(); 245 DE_UNREF(extensionNames); // In some cases this is not used. 246 247 if (const void* featuresStruct = findStructureInChain(const_cast<const void*>(deviceFeatures2.pNext), getStructureType<VkPhysicalDevice16BitStorageFeatures>())) 248 { 249 static const Feature features[] = 250 { 251 FEATURE_ITEM (VkPhysicalDevice16BitStorageFeatures, storageBuffer16BitAccess), 252 FEATURE_ITEM (VkPhysicalDevice16BitStorageFeatures, uniformAndStorageBuffer16BitAccess), 253 FEATURE_ITEM (VkPhysicalDevice16BitStorageFeatures, storagePushConstant16), 254 FEATURE_ITEM (VkPhysicalDevice16BitStorageFeatures, storageInputOutput16), 255 }; 256 auto* supportedFeatures = reinterpret_cast<const VkPhysicalDevice16BitStorageFeatures*>(featuresStruct); 257 checkFeatures(vkp, instance, instanceDriver, physicalDevice, 4, features, supportedFeatures, queueFamilyIndex, queueCount, queuePriority, numErrors, resultCollector, &extensionNames, emptyDeviceFeatures, memReservationStatMax, isSubProcess, context.getUsedApiVersion()); 258 } 259 260 if (numErrors > 0) 261 return tcu::TestStatus(resultCollector.getResult(), "Enabling unsupported features didn't return VK_ERROR_FEATURE_NOT_PRESENT."); 262 else 263 return tcu::TestStatus(resultCollector.getResult(), resultCollector.getMessage()); 264} 265 266 267tcu::TestStatus createDeviceWithUnsupportedFeaturesTestShaderSubgroupExtendedTypesFeatures (Context& context) 268{ 269 const PlatformInterface& vkp = context.getPlatformInterface(); 270 tcu::TestLog& log = context.getTestContext().getLog(); 271 tcu::ResultCollector resultCollector (log); 272 const CustomInstance instance (createCustomInstanceWithExtensions(context, context.getInstanceExtensions(), DE_NULL, true)); 273 const InstanceDriver& instanceDriver (instance.getDriver()); 274 const VkPhysicalDevice physicalDevice = chooseDevice(instanceDriver, instance, context.getTestContext().getCommandLine()); 275 const deUint32 queueFamilyIndex = 0; 276 const deUint32 queueCount = 1; 277 const float queuePriority = 1.0f; 278 const DeviceFeatures deviceFeaturesAll (context.getInstanceInterface(), context.getUsedApiVersion(), physicalDevice, context.getInstanceExtensions(), context.getDeviceExtensions(), DE_TRUE); 279 const VkPhysicalDeviceFeatures2 deviceFeatures2 = deviceFeaturesAll.getCoreFeatures2(); 280 int numErrors = 0; 281 bool isSubProcess = context.getTestContext().getCommandLine().isSubProcess(); 282 VkDeviceObjectReservationCreateInfo memReservationStatMax = context.getResourceInterface()->getStatMax(); 283 284 VkPhysicalDeviceFeatures emptyDeviceFeatures; 285 deMemset(&emptyDeviceFeatures, 0, sizeof(emptyDeviceFeatures)); 286 287 // Only non-core extensions will be used when creating the device. 288 const auto& extensionNames = context.getDeviceCreationExtensions(); 289 DE_UNREF(extensionNames); // In some cases this is not used. 290 291 if (const void* featuresStruct = findStructureInChain(const_cast<const void*>(deviceFeatures2.pNext), getStructureType<VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures>())) 292 { 293 static const Feature features[] = 294 { 295 FEATURE_ITEM (VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures, shaderSubgroupExtendedTypes), 296 }; 297 auto* supportedFeatures = reinterpret_cast<const VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures*>(featuresStruct); 298 checkFeatures(vkp, instance, instanceDriver, physicalDevice, 1, features, supportedFeatures, queueFamilyIndex, queueCount, queuePriority, numErrors, resultCollector, &extensionNames, emptyDeviceFeatures, memReservationStatMax, isSubProcess, context.getUsedApiVersion()); 299 } 300 301 if (numErrors > 0) 302 return tcu::TestStatus(resultCollector.getResult(), "Enabling unsupported features didn't return VK_ERROR_FEATURE_NOT_PRESENT."); 303 else 304 return tcu::TestStatus(resultCollector.getResult(), resultCollector.getMessage()); 305} 306 307 308tcu::TestStatus createDeviceWithUnsupportedFeaturesTestSamplerYcbcrConversionFeatures (Context& context) 309{ 310 const PlatformInterface& vkp = context.getPlatformInterface(); 311 tcu::TestLog& log = context.getTestContext().getLog(); 312 tcu::ResultCollector resultCollector (log); 313 const CustomInstance instance (createCustomInstanceWithExtensions(context, context.getInstanceExtensions(), DE_NULL, true)); 314 const InstanceDriver& instanceDriver (instance.getDriver()); 315 const VkPhysicalDevice physicalDevice = chooseDevice(instanceDriver, instance, context.getTestContext().getCommandLine()); 316 const deUint32 queueFamilyIndex = 0; 317 const deUint32 queueCount = 1; 318 const float queuePriority = 1.0f; 319 const DeviceFeatures deviceFeaturesAll (context.getInstanceInterface(), context.getUsedApiVersion(), physicalDevice, context.getInstanceExtensions(), context.getDeviceExtensions(), DE_TRUE); 320 const VkPhysicalDeviceFeatures2 deviceFeatures2 = deviceFeaturesAll.getCoreFeatures2(); 321 int numErrors = 0; 322 bool isSubProcess = context.getTestContext().getCommandLine().isSubProcess(); 323 VkDeviceObjectReservationCreateInfo memReservationStatMax = context.getResourceInterface()->getStatMax(); 324 325 VkPhysicalDeviceFeatures emptyDeviceFeatures; 326 deMemset(&emptyDeviceFeatures, 0, sizeof(emptyDeviceFeatures)); 327 328 // Only non-core extensions will be used when creating the device. 329 const auto& extensionNames = context.getDeviceCreationExtensions(); 330 DE_UNREF(extensionNames); // In some cases this is not used. 331 332 if (const void* featuresStruct = findStructureInChain(const_cast<const void*>(deviceFeatures2.pNext), getStructureType<VkPhysicalDeviceSamplerYcbcrConversionFeatures>())) 333 { 334 static const Feature features[] = 335 { 336 FEATURE_ITEM (VkPhysicalDeviceSamplerYcbcrConversionFeatures, samplerYcbcrConversion), 337 }; 338 auto* supportedFeatures = reinterpret_cast<const VkPhysicalDeviceSamplerYcbcrConversionFeatures*>(featuresStruct); 339 checkFeatures(vkp, instance, instanceDriver, physicalDevice, 1, features, supportedFeatures, queueFamilyIndex, queueCount, queuePriority, numErrors, resultCollector, &extensionNames, emptyDeviceFeatures, memReservationStatMax, isSubProcess, context.getUsedApiVersion()); 340 } 341 342 if (numErrors > 0) 343 return tcu::TestStatus(resultCollector.getResult(), "Enabling unsupported features didn't return VK_ERROR_FEATURE_NOT_PRESENT."); 344 else 345 return tcu::TestStatus(resultCollector.getResult(), resultCollector.getMessage()); 346} 347 348 349tcu::TestStatus createDeviceWithUnsupportedFeaturesTestProtectedMemoryFeatures (Context& context) 350{ 351 const PlatformInterface& vkp = context.getPlatformInterface(); 352 tcu::TestLog& log = context.getTestContext().getLog(); 353 tcu::ResultCollector resultCollector (log); 354 const CustomInstance instance (createCustomInstanceWithExtensions(context, context.getInstanceExtensions(), DE_NULL, true)); 355 const InstanceDriver& instanceDriver (instance.getDriver()); 356 const VkPhysicalDevice physicalDevice = chooseDevice(instanceDriver, instance, context.getTestContext().getCommandLine()); 357 const deUint32 queueFamilyIndex = 0; 358 const deUint32 queueCount = 1; 359 const float queuePriority = 1.0f; 360 const DeviceFeatures deviceFeaturesAll (context.getInstanceInterface(), context.getUsedApiVersion(), physicalDevice, context.getInstanceExtensions(), context.getDeviceExtensions(), DE_TRUE); 361 const VkPhysicalDeviceFeatures2 deviceFeatures2 = deviceFeaturesAll.getCoreFeatures2(); 362 int numErrors = 0; 363 bool isSubProcess = context.getTestContext().getCommandLine().isSubProcess(); 364 VkDeviceObjectReservationCreateInfo memReservationStatMax = context.getResourceInterface()->getStatMax(); 365 366 VkPhysicalDeviceFeatures emptyDeviceFeatures; 367 deMemset(&emptyDeviceFeatures, 0, sizeof(emptyDeviceFeatures)); 368 369 // Only non-core extensions will be used when creating the device. 370 const auto& extensionNames = context.getDeviceCreationExtensions(); 371 DE_UNREF(extensionNames); // In some cases this is not used. 372 373 if (const void* featuresStruct = findStructureInChain(const_cast<const void*>(deviceFeatures2.pNext), getStructureType<VkPhysicalDeviceProtectedMemoryFeatures>())) 374 { 375 static const Feature features[] = 376 { 377 FEATURE_ITEM (VkPhysicalDeviceProtectedMemoryFeatures, protectedMemory), 378 }; 379 auto* supportedFeatures = reinterpret_cast<const VkPhysicalDeviceProtectedMemoryFeatures*>(featuresStruct); 380 checkFeatures(vkp, instance, instanceDriver, physicalDevice, 1, features, supportedFeatures, queueFamilyIndex, queueCount, queuePriority, numErrors, resultCollector, &extensionNames, emptyDeviceFeatures, memReservationStatMax, isSubProcess, context.getUsedApiVersion()); 381 } 382 383 if (numErrors > 0) 384 return tcu::TestStatus(resultCollector.getResult(), "Enabling unsupported features didn't return VK_ERROR_FEATURE_NOT_PRESENT."); 385 else 386 return tcu::TestStatus(resultCollector.getResult(), resultCollector.getMessage()); 387} 388 389 390tcu::TestStatus createDeviceWithUnsupportedFeaturesTestBlendOperationAdvancedFeaturesEXT (Context& context) 391{ 392 const PlatformInterface& vkp = context.getPlatformInterface(); 393 tcu::TestLog& log = context.getTestContext().getLog(); 394 tcu::ResultCollector resultCollector (log); 395 const CustomInstance instance (createCustomInstanceWithExtensions(context, context.getInstanceExtensions(), DE_NULL, true)); 396 const InstanceDriver& instanceDriver (instance.getDriver()); 397 const VkPhysicalDevice physicalDevice = chooseDevice(instanceDriver, instance, context.getTestContext().getCommandLine()); 398 const deUint32 queueFamilyIndex = 0; 399 const deUint32 queueCount = 1; 400 const float queuePriority = 1.0f; 401 const DeviceFeatures deviceFeaturesAll (context.getInstanceInterface(), context.getUsedApiVersion(), physicalDevice, context.getInstanceExtensions(), context.getDeviceExtensions(), DE_TRUE); 402 const VkPhysicalDeviceFeatures2 deviceFeatures2 = deviceFeaturesAll.getCoreFeatures2(); 403 int numErrors = 0; 404 bool isSubProcess = context.getTestContext().getCommandLine().isSubProcess(); 405 VkDeviceObjectReservationCreateInfo memReservationStatMax = context.getResourceInterface()->getStatMax(); 406 407 VkPhysicalDeviceFeatures emptyDeviceFeatures; 408 deMemset(&emptyDeviceFeatures, 0, sizeof(emptyDeviceFeatures)); 409 410 // Only non-core extensions will be used when creating the device. 411 const auto& extensionNames = context.getDeviceCreationExtensions(); 412 DE_UNREF(extensionNames); // In some cases this is not used. 413 414 if (const void* featuresStruct = findStructureInChain(const_cast<const void*>(deviceFeatures2.pNext), getStructureType<VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT>())) 415 { 416 static const Feature features[] = 417 { 418 FEATURE_ITEM (VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT, advancedBlendCoherentOperations), 419 }; 420 auto* supportedFeatures = reinterpret_cast<const VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT*>(featuresStruct); 421 checkFeatures(vkp, instance, instanceDriver, physicalDevice, 1, features, supportedFeatures, queueFamilyIndex, queueCount, queuePriority, numErrors, resultCollector, &extensionNames, emptyDeviceFeatures, memReservationStatMax, isSubProcess, context.getUsedApiVersion()); 422 } 423 424 if (numErrors > 0) 425 return tcu::TestStatus(resultCollector.getResult(), "Enabling unsupported features didn't return VK_ERROR_FEATURE_NOT_PRESENT."); 426 else 427 return tcu::TestStatus(resultCollector.getResult(), resultCollector.getMessage()); 428} 429 430 431tcu::TestStatus createDeviceWithUnsupportedFeaturesTestShaderDrawParametersFeatures (Context& context) 432{ 433 const PlatformInterface& vkp = context.getPlatformInterface(); 434 tcu::TestLog& log = context.getTestContext().getLog(); 435 tcu::ResultCollector resultCollector (log); 436 const CustomInstance instance (createCustomInstanceWithExtensions(context, context.getInstanceExtensions(), DE_NULL, true)); 437 const InstanceDriver& instanceDriver (instance.getDriver()); 438 const VkPhysicalDevice physicalDevice = chooseDevice(instanceDriver, instance, context.getTestContext().getCommandLine()); 439 const deUint32 queueFamilyIndex = 0; 440 const deUint32 queueCount = 1; 441 const float queuePriority = 1.0f; 442 const DeviceFeatures deviceFeaturesAll (context.getInstanceInterface(), context.getUsedApiVersion(), physicalDevice, context.getInstanceExtensions(), context.getDeviceExtensions(), DE_TRUE); 443 const VkPhysicalDeviceFeatures2 deviceFeatures2 = deviceFeaturesAll.getCoreFeatures2(); 444 int numErrors = 0; 445 bool isSubProcess = context.getTestContext().getCommandLine().isSubProcess(); 446 VkDeviceObjectReservationCreateInfo memReservationStatMax = context.getResourceInterface()->getStatMax(); 447 448 VkPhysicalDeviceFeatures emptyDeviceFeatures; 449 deMemset(&emptyDeviceFeatures, 0, sizeof(emptyDeviceFeatures)); 450 451 // Only non-core extensions will be used when creating the device. 452 const auto& extensionNames = context.getDeviceCreationExtensions(); 453 DE_UNREF(extensionNames); // In some cases this is not used. 454 455 if (const void* featuresStruct = findStructureInChain(const_cast<const void*>(deviceFeatures2.pNext), getStructureType<VkPhysicalDeviceShaderDrawParametersFeatures>())) 456 { 457 static const Feature features[] = 458 { 459 FEATURE_ITEM (VkPhysicalDeviceShaderDrawParametersFeatures, shaderDrawParameters), 460 }; 461 auto* supportedFeatures = reinterpret_cast<const VkPhysicalDeviceShaderDrawParametersFeatures*>(featuresStruct); 462 checkFeatures(vkp, instance, instanceDriver, physicalDevice, 1, features, supportedFeatures, queueFamilyIndex, queueCount, queuePriority, numErrors, resultCollector, &extensionNames, emptyDeviceFeatures, memReservationStatMax, isSubProcess, context.getUsedApiVersion()); 463 } 464 465 if (numErrors > 0) 466 return tcu::TestStatus(resultCollector.getResult(), "Enabling unsupported features didn't return VK_ERROR_FEATURE_NOT_PRESENT."); 467 else 468 return tcu::TestStatus(resultCollector.getResult(), resultCollector.getMessage()); 469} 470 471 472tcu::TestStatus createDeviceWithUnsupportedFeaturesTestShaderFloat16Int8Features (Context& context) 473{ 474 const PlatformInterface& vkp = context.getPlatformInterface(); 475 tcu::TestLog& log = context.getTestContext().getLog(); 476 tcu::ResultCollector resultCollector (log); 477 const CustomInstance instance (createCustomInstanceWithExtensions(context, context.getInstanceExtensions(), DE_NULL, true)); 478 const InstanceDriver& instanceDriver (instance.getDriver()); 479 const VkPhysicalDevice physicalDevice = chooseDevice(instanceDriver, instance, context.getTestContext().getCommandLine()); 480 const deUint32 queueFamilyIndex = 0; 481 const deUint32 queueCount = 1; 482 const float queuePriority = 1.0f; 483 const DeviceFeatures deviceFeaturesAll (context.getInstanceInterface(), context.getUsedApiVersion(), physicalDevice, context.getInstanceExtensions(), context.getDeviceExtensions(), DE_TRUE); 484 const VkPhysicalDeviceFeatures2 deviceFeatures2 = deviceFeaturesAll.getCoreFeatures2(); 485 int numErrors = 0; 486 bool isSubProcess = context.getTestContext().getCommandLine().isSubProcess(); 487 VkDeviceObjectReservationCreateInfo memReservationStatMax = context.getResourceInterface()->getStatMax(); 488 489 VkPhysicalDeviceFeatures emptyDeviceFeatures; 490 deMemset(&emptyDeviceFeatures, 0, sizeof(emptyDeviceFeatures)); 491 492 // Only non-core extensions will be used when creating the device. 493 const auto& extensionNames = context.getDeviceCreationExtensions(); 494 DE_UNREF(extensionNames); // In some cases this is not used. 495 496 if (const void* featuresStruct = findStructureInChain(const_cast<const void*>(deviceFeatures2.pNext), getStructureType<VkPhysicalDeviceShaderFloat16Int8Features>())) 497 { 498 static const Feature features[] = 499 { 500 FEATURE_ITEM (VkPhysicalDeviceShaderFloat16Int8Features, shaderFloat16), 501 FEATURE_ITEM (VkPhysicalDeviceShaderFloat16Int8Features, shaderInt8), 502 }; 503 auto* supportedFeatures = reinterpret_cast<const VkPhysicalDeviceShaderFloat16Int8Features*>(featuresStruct); 504 checkFeatures(vkp, instance, instanceDriver, physicalDevice, 2, features, supportedFeatures, queueFamilyIndex, queueCount, queuePriority, numErrors, resultCollector, &extensionNames, emptyDeviceFeatures, memReservationStatMax, isSubProcess, context.getUsedApiVersion()); 505 } 506 507 if (numErrors > 0) 508 return tcu::TestStatus(resultCollector.getResult(), "Enabling unsupported features didn't return VK_ERROR_FEATURE_NOT_PRESENT."); 509 else 510 return tcu::TestStatus(resultCollector.getResult(), resultCollector.getMessage()); 511} 512 513 514tcu::TestStatus createDeviceWithUnsupportedFeaturesTestHostQueryResetFeatures (Context& context) 515{ 516 const PlatformInterface& vkp = context.getPlatformInterface(); 517 tcu::TestLog& log = context.getTestContext().getLog(); 518 tcu::ResultCollector resultCollector (log); 519 const CustomInstance instance (createCustomInstanceWithExtensions(context, context.getInstanceExtensions(), DE_NULL, true)); 520 const InstanceDriver& instanceDriver (instance.getDriver()); 521 const VkPhysicalDevice physicalDevice = chooseDevice(instanceDriver, instance, context.getTestContext().getCommandLine()); 522 const deUint32 queueFamilyIndex = 0; 523 const deUint32 queueCount = 1; 524 const float queuePriority = 1.0f; 525 const DeviceFeatures deviceFeaturesAll (context.getInstanceInterface(), context.getUsedApiVersion(), physicalDevice, context.getInstanceExtensions(), context.getDeviceExtensions(), DE_TRUE); 526 const VkPhysicalDeviceFeatures2 deviceFeatures2 = deviceFeaturesAll.getCoreFeatures2(); 527 int numErrors = 0; 528 bool isSubProcess = context.getTestContext().getCommandLine().isSubProcess(); 529 VkDeviceObjectReservationCreateInfo memReservationStatMax = context.getResourceInterface()->getStatMax(); 530 531 VkPhysicalDeviceFeatures emptyDeviceFeatures; 532 deMemset(&emptyDeviceFeatures, 0, sizeof(emptyDeviceFeatures)); 533 534 // Only non-core extensions will be used when creating the device. 535 const auto& extensionNames = context.getDeviceCreationExtensions(); 536 DE_UNREF(extensionNames); // In some cases this is not used. 537 538 if (const void* featuresStruct = findStructureInChain(const_cast<const void*>(deviceFeatures2.pNext), getStructureType<VkPhysicalDeviceHostQueryResetFeatures>())) 539 { 540 static const Feature features[] = 541 { 542 FEATURE_ITEM (VkPhysicalDeviceHostQueryResetFeatures, hostQueryReset), 543 }; 544 auto* supportedFeatures = reinterpret_cast<const VkPhysicalDeviceHostQueryResetFeatures*>(featuresStruct); 545 checkFeatures(vkp, instance, instanceDriver, physicalDevice, 1, features, supportedFeatures, queueFamilyIndex, queueCount, queuePriority, numErrors, resultCollector, &extensionNames, emptyDeviceFeatures, memReservationStatMax, isSubProcess, context.getUsedApiVersion()); 546 } 547 548 if (numErrors > 0) 549 return tcu::TestStatus(resultCollector.getResult(), "Enabling unsupported features didn't return VK_ERROR_FEATURE_NOT_PRESENT."); 550 else 551 return tcu::TestStatus(resultCollector.getResult(), resultCollector.getMessage()); 552} 553 554 555tcu::TestStatus createDeviceWithUnsupportedFeaturesTestDescriptorIndexingFeatures (Context& context) 556{ 557 const PlatformInterface& vkp = context.getPlatformInterface(); 558 tcu::TestLog& log = context.getTestContext().getLog(); 559 tcu::ResultCollector resultCollector (log); 560 const CustomInstance instance (createCustomInstanceWithExtensions(context, context.getInstanceExtensions(), DE_NULL, true)); 561 const InstanceDriver& instanceDriver (instance.getDriver()); 562 const VkPhysicalDevice physicalDevice = chooseDevice(instanceDriver, instance, context.getTestContext().getCommandLine()); 563 const deUint32 queueFamilyIndex = 0; 564 const deUint32 queueCount = 1; 565 const float queuePriority = 1.0f; 566 const DeviceFeatures deviceFeaturesAll (context.getInstanceInterface(), context.getUsedApiVersion(), physicalDevice, context.getInstanceExtensions(), context.getDeviceExtensions(), DE_TRUE); 567 const VkPhysicalDeviceFeatures2 deviceFeatures2 = deviceFeaturesAll.getCoreFeatures2(); 568 int numErrors = 0; 569 bool isSubProcess = context.getTestContext().getCommandLine().isSubProcess(); 570 VkDeviceObjectReservationCreateInfo memReservationStatMax = context.getResourceInterface()->getStatMax(); 571 572 VkPhysicalDeviceFeatures emptyDeviceFeatures; 573 deMemset(&emptyDeviceFeatures, 0, sizeof(emptyDeviceFeatures)); 574 575 // Only non-core extensions will be used when creating the device. 576 const auto& extensionNames = context.getDeviceCreationExtensions(); 577 DE_UNREF(extensionNames); // In some cases this is not used. 578 579 if (const void* featuresStruct = findStructureInChain(const_cast<const void*>(deviceFeatures2.pNext), getStructureType<VkPhysicalDeviceDescriptorIndexingFeatures>())) 580 { 581 static const Feature features[] = 582 { 583 FEATURE_ITEM (VkPhysicalDeviceDescriptorIndexingFeatures, shaderInputAttachmentArrayDynamicIndexing), 584 FEATURE_ITEM (VkPhysicalDeviceDescriptorIndexingFeatures, shaderUniformTexelBufferArrayDynamicIndexing), 585 FEATURE_ITEM (VkPhysicalDeviceDescriptorIndexingFeatures, shaderStorageTexelBufferArrayDynamicIndexing), 586 FEATURE_ITEM (VkPhysicalDeviceDescriptorIndexingFeatures, shaderUniformBufferArrayNonUniformIndexing), 587 FEATURE_ITEM (VkPhysicalDeviceDescriptorIndexingFeatures, shaderSampledImageArrayNonUniformIndexing), 588 FEATURE_ITEM (VkPhysicalDeviceDescriptorIndexingFeatures, shaderStorageBufferArrayNonUniformIndexing), 589 FEATURE_ITEM (VkPhysicalDeviceDescriptorIndexingFeatures, shaderStorageImageArrayNonUniformIndexing), 590 FEATURE_ITEM (VkPhysicalDeviceDescriptorIndexingFeatures, shaderInputAttachmentArrayNonUniformIndexing), 591 FEATURE_ITEM (VkPhysicalDeviceDescriptorIndexingFeatures, shaderUniformTexelBufferArrayNonUniformIndexing), 592 FEATURE_ITEM (VkPhysicalDeviceDescriptorIndexingFeatures, shaderStorageTexelBufferArrayNonUniformIndexing), 593 FEATURE_ITEM (VkPhysicalDeviceDescriptorIndexingFeatures, descriptorBindingUniformBufferUpdateAfterBind), 594 FEATURE_ITEM (VkPhysicalDeviceDescriptorIndexingFeatures, descriptorBindingSampledImageUpdateAfterBind), 595 FEATURE_ITEM (VkPhysicalDeviceDescriptorIndexingFeatures, descriptorBindingStorageImageUpdateAfterBind), 596 FEATURE_ITEM (VkPhysicalDeviceDescriptorIndexingFeatures, descriptorBindingStorageBufferUpdateAfterBind), 597 FEATURE_ITEM (VkPhysicalDeviceDescriptorIndexingFeatures, descriptorBindingUniformTexelBufferUpdateAfterBind), 598 FEATURE_ITEM (VkPhysicalDeviceDescriptorIndexingFeatures, descriptorBindingStorageTexelBufferUpdateAfterBind), 599 FEATURE_ITEM (VkPhysicalDeviceDescriptorIndexingFeatures, descriptorBindingUpdateUnusedWhilePending), 600 FEATURE_ITEM (VkPhysicalDeviceDescriptorIndexingFeatures, descriptorBindingPartiallyBound), 601 FEATURE_ITEM (VkPhysicalDeviceDescriptorIndexingFeatures, descriptorBindingVariableDescriptorCount), 602 FEATURE_ITEM (VkPhysicalDeviceDescriptorIndexingFeatures, runtimeDescriptorArray), 603 }; 604 auto* supportedFeatures = reinterpret_cast<const VkPhysicalDeviceDescriptorIndexingFeatures*>(featuresStruct); 605 checkFeatures(vkp, instance, instanceDriver, physicalDevice, 20, features, supportedFeatures, queueFamilyIndex, queueCount, queuePriority, numErrors, resultCollector, &extensionNames, emptyDeviceFeatures, memReservationStatMax, isSubProcess, context.getUsedApiVersion()); 606 } 607 608 if (numErrors > 0) 609 return tcu::TestStatus(resultCollector.getResult(), "Enabling unsupported features didn't return VK_ERROR_FEATURE_NOT_PRESENT."); 610 else 611 return tcu::TestStatus(resultCollector.getResult(), resultCollector.getMessage()); 612} 613 614 615tcu::TestStatus createDeviceWithUnsupportedFeaturesTestTimelineSemaphoreFeatures (Context& context) 616{ 617 const PlatformInterface& vkp = context.getPlatformInterface(); 618 tcu::TestLog& log = context.getTestContext().getLog(); 619 tcu::ResultCollector resultCollector (log); 620 const CustomInstance instance (createCustomInstanceWithExtensions(context, context.getInstanceExtensions(), DE_NULL, true)); 621 const InstanceDriver& instanceDriver (instance.getDriver()); 622 const VkPhysicalDevice physicalDevice = chooseDevice(instanceDriver, instance, context.getTestContext().getCommandLine()); 623 const deUint32 queueFamilyIndex = 0; 624 const deUint32 queueCount = 1; 625 const float queuePriority = 1.0f; 626 const DeviceFeatures deviceFeaturesAll (context.getInstanceInterface(), context.getUsedApiVersion(), physicalDevice, context.getInstanceExtensions(), context.getDeviceExtensions(), DE_TRUE); 627 const VkPhysicalDeviceFeatures2 deviceFeatures2 = deviceFeaturesAll.getCoreFeatures2(); 628 int numErrors = 0; 629 bool isSubProcess = context.getTestContext().getCommandLine().isSubProcess(); 630 VkDeviceObjectReservationCreateInfo memReservationStatMax = context.getResourceInterface()->getStatMax(); 631 632 VkPhysicalDeviceFeatures emptyDeviceFeatures; 633 deMemset(&emptyDeviceFeatures, 0, sizeof(emptyDeviceFeatures)); 634 635 // Only non-core extensions will be used when creating the device. 636 const auto& extensionNames = context.getDeviceCreationExtensions(); 637 DE_UNREF(extensionNames); // In some cases this is not used. 638 639 if (const void* featuresStruct = findStructureInChain(const_cast<const void*>(deviceFeatures2.pNext), getStructureType<VkPhysicalDeviceTimelineSemaphoreFeatures>())) 640 { 641 static const Feature features[] = 642 { 643 FEATURE_ITEM (VkPhysicalDeviceTimelineSemaphoreFeatures, timelineSemaphore), 644 }; 645 auto* supportedFeatures = reinterpret_cast<const VkPhysicalDeviceTimelineSemaphoreFeatures*>(featuresStruct); 646 checkFeatures(vkp, instance, instanceDriver, physicalDevice, 1, features, supportedFeatures, queueFamilyIndex, queueCount, queuePriority, numErrors, resultCollector, &extensionNames, emptyDeviceFeatures, memReservationStatMax, isSubProcess, context.getUsedApiVersion()); 647 } 648 649 if (numErrors > 0) 650 return tcu::TestStatus(resultCollector.getResult(), "Enabling unsupported features didn't return VK_ERROR_FEATURE_NOT_PRESENT."); 651 else 652 return tcu::TestStatus(resultCollector.getResult(), resultCollector.getMessage()); 653} 654 655 656tcu::TestStatus createDeviceWithUnsupportedFeaturesTest8BitStorageFeatures (Context& context) 657{ 658 const PlatformInterface& vkp = context.getPlatformInterface(); 659 tcu::TestLog& log = context.getTestContext().getLog(); 660 tcu::ResultCollector resultCollector (log); 661 const CustomInstance instance (createCustomInstanceWithExtensions(context, context.getInstanceExtensions(), DE_NULL, true)); 662 const InstanceDriver& instanceDriver (instance.getDriver()); 663 const VkPhysicalDevice physicalDevice = chooseDevice(instanceDriver, instance, context.getTestContext().getCommandLine()); 664 const deUint32 queueFamilyIndex = 0; 665 const deUint32 queueCount = 1; 666 const float queuePriority = 1.0f; 667 const DeviceFeatures deviceFeaturesAll (context.getInstanceInterface(), context.getUsedApiVersion(), physicalDevice, context.getInstanceExtensions(), context.getDeviceExtensions(), DE_TRUE); 668 const VkPhysicalDeviceFeatures2 deviceFeatures2 = deviceFeaturesAll.getCoreFeatures2(); 669 int numErrors = 0; 670 bool isSubProcess = context.getTestContext().getCommandLine().isSubProcess(); 671 VkDeviceObjectReservationCreateInfo memReservationStatMax = context.getResourceInterface()->getStatMax(); 672 673 VkPhysicalDeviceFeatures emptyDeviceFeatures; 674 deMemset(&emptyDeviceFeatures, 0, sizeof(emptyDeviceFeatures)); 675 676 // Only non-core extensions will be used when creating the device. 677 const auto& extensionNames = context.getDeviceCreationExtensions(); 678 DE_UNREF(extensionNames); // In some cases this is not used. 679 680 if (const void* featuresStruct = findStructureInChain(const_cast<const void*>(deviceFeatures2.pNext), getStructureType<VkPhysicalDevice8BitStorageFeatures>())) 681 { 682 static const Feature features[] = 683 { 684 FEATURE_ITEM (VkPhysicalDevice8BitStorageFeatures, storageBuffer8BitAccess), 685 FEATURE_ITEM (VkPhysicalDevice8BitStorageFeatures, uniformAndStorageBuffer8BitAccess), 686 FEATURE_ITEM (VkPhysicalDevice8BitStorageFeatures, storagePushConstant8), 687 }; 688 auto* supportedFeatures = reinterpret_cast<const VkPhysicalDevice8BitStorageFeatures*>(featuresStruct); 689 checkFeatures(vkp, instance, instanceDriver, physicalDevice, 3, features, supportedFeatures, queueFamilyIndex, queueCount, queuePriority, numErrors, resultCollector, &extensionNames, emptyDeviceFeatures, memReservationStatMax, isSubProcess, context.getUsedApiVersion()); 690 } 691 692 if (numErrors > 0) 693 return tcu::TestStatus(resultCollector.getResult(), "Enabling unsupported features didn't return VK_ERROR_FEATURE_NOT_PRESENT."); 694 else 695 return tcu::TestStatus(resultCollector.getResult(), resultCollector.getMessage()); 696} 697 698 699tcu::TestStatus createDeviceWithUnsupportedFeaturesTestVulkanMemoryModelFeatures (Context& context) 700{ 701 const PlatformInterface& vkp = context.getPlatformInterface(); 702 tcu::TestLog& log = context.getTestContext().getLog(); 703 tcu::ResultCollector resultCollector (log); 704 const CustomInstance instance (createCustomInstanceWithExtensions(context, context.getInstanceExtensions(), DE_NULL, true)); 705 const InstanceDriver& instanceDriver (instance.getDriver()); 706 const VkPhysicalDevice physicalDevice = chooseDevice(instanceDriver, instance, context.getTestContext().getCommandLine()); 707 const deUint32 queueFamilyIndex = 0; 708 const deUint32 queueCount = 1; 709 const float queuePriority = 1.0f; 710 const DeviceFeatures deviceFeaturesAll (context.getInstanceInterface(), context.getUsedApiVersion(), physicalDevice, context.getInstanceExtensions(), context.getDeviceExtensions(), DE_TRUE); 711 const VkPhysicalDeviceFeatures2 deviceFeatures2 = deviceFeaturesAll.getCoreFeatures2(); 712 int numErrors = 0; 713 bool isSubProcess = context.getTestContext().getCommandLine().isSubProcess(); 714 VkDeviceObjectReservationCreateInfo memReservationStatMax = context.getResourceInterface()->getStatMax(); 715 716 VkPhysicalDeviceFeatures emptyDeviceFeatures; 717 deMemset(&emptyDeviceFeatures, 0, sizeof(emptyDeviceFeatures)); 718 719 // Only non-core extensions will be used when creating the device. 720 const auto& extensionNames = context.getDeviceCreationExtensions(); 721 DE_UNREF(extensionNames); // In some cases this is not used. 722 723 if (const void* featuresStruct = findStructureInChain(const_cast<const void*>(deviceFeatures2.pNext), getStructureType<VkPhysicalDeviceVulkanMemoryModelFeatures>())) 724 { 725 static const Feature features[] = 726 { 727 FEATURE_ITEM (VkPhysicalDeviceVulkanMemoryModelFeatures, vulkanMemoryModel), 728 FEATURE_ITEM (VkPhysicalDeviceVulkanMemoryModelFeatures, vulkanMemoryModelDeviceScope), 729 FEATURE_ITEM (VkPhysicalDeviceVulkanMemoryModelFeatures, vulkanMemoryModelAvailabilityVisibilityChains), 730 }; 731 auto* supportedFeatures = reinterpret_cast<const VkPhysicalDeviceVulkanMemoryModelFeatures*>(featuresStruct); 732 checkFeatures(vkp, instance, instanceDriver, physicalDevice, 3, features, supportedFeatures, queueFamilyIndex, queueCount, queuePriority, numErrors, resultCollector, &extensionNames, emptyDeviceFeatures, memReservationStatMax, isSubProcess, context.getUsedApiVersion()); 733 } 734 735 if (numErrors > 0) 736 return tcu::TestStatus(resultCollector.getResult(), "Enabling unsupported features didn't return VK_ERROR_FEATURE_NOT_PRESENT."); 737 else 738 return tcu::TestStatus(resultCollector.getResult(), resultCollector.getMessage()); 739} 740 741 742tcu::TestStatus createDeviceWithUnsupportedFeaturesTestShaderAtomicInt64Features (Context& context) 743{ 744 const PlatformInterface& vkp = context.getPlatformInterface(); 745 tcu::TestLog& log = context.getTestContext().getLog(); 746 tcu::ResultCollector resultCollector (log); 747 const CustomInstance instance (createCustomInstanceWithExtensions(context, context.getInstanceExtensions(), DE_NULL, true)); 748 const InstanceDriver& instanceDriver (instance.getDriver()); 749 const VkPhysicalDevice physicalDevice = chooseDevice(instanceDriver, instance, context.getTestContext().getCommandLine()); 750 const deUint32 queueFamilyIndex = 0; 751 const deUint32 queueCount = 1; 752 const float queuePriority = 1.0f; 753 const DeviceFeatures deviceFeaturesAll (context.getInstanceInterface(), context.getUsedApiVersion(), physicalDevice, context.getInstanceExtensions(), context.getDeviceExtensions(), DE_TRUE); 754 const VkPhysicalDeviceFeatures2 deviceFeatures2 = deviceFeaturesAll.getCoreFeatures2(); 755 int numErrors = 0; 756 bool isSubProcess = context.getTestContext().getCommandLine().isSubProcess(); 757 VkDeviceObjectReservationCreateInfo memReservationStatMax = context.getResourceInterface()->getStatMax(); 758 759 VkPhysicalDeviceFeatures emptyDeviceFeatures; 760 deMemset(&emptyDeviceFeatures, 0, sizeof(emptyDeviceFeatures)); 761 762 // Only non-core extensions will be used when creating the device. 763 const auto& extensionNames = context.getDeviceCreationExtensions(); 764 DE_UNREF(extensionNames); // In some cases this is not used. 765 766 if (const void* featuresStruct = findStructureInChain(const_cast<const void*>(deviceFeatures2.pNext), getStructureType<VkPhysicalDeviceShaderAtomicInt64Features>())) 767 { 768 static const Feature features[] = 769 { 770 FEATURE_ITEM (VkPhysicalDeviceShaderAtomicInt64Features, shaderBufferInt64Atomics), 771 FEATURE_ITEM (VkPhysicalDeviceShaderAtomicInt64Features, shaderSharedInt64Atomics), 772 }; 773 auto* supportedFeatures = reinterpret_cast<const VkPhysicalDeviceShaderAtomicInt64Features*>(featuresStruct); 774 checkFeatures(vkp, instance, instanceDriver, physicalDevice, 2, features, supportedFeatures, queueFamilyIndex, queueCount, queuePriority, numErrors, resultCollector, &extensionNames, emptyDeviceFeatures, memReservationStatMax, isSubProcess, context.getUsedApiVersion()); 775 } 776 777 if (numErrors > 0) 778 return tcu::TestStatus(resultCollector.getResult(), "Enabling unsupported features didn't return VK_ERROR_FEATURE_NOT_PRESENT."); 779 else 780 return tcu::TestStatus(resultCollector.getResult(), resultCollector.getMessage()); 781} 782 783 784tcu::TestStatus createDeviceWithUnsupportedFeaturesTestShaderAtomicFloatFeaturesEXT (Context& context) 785{ 786 const PlatformInterface& vkp = context.getPlatformInterface(); 787 tcu::TestLog& log = context.getTestContext().getLog(); 788 tcu::ResultCollector resultCollector (log); 789 const CustomInstance instance (createCustomInstanceWithExtensions(context, context.getInstanceExtensions(), DE_NULL, true)); 790 const InstanceDriver& instanceDriver (instance.getDriver()); 791 const VkPhysicalDevice physicalDevice = chooseDevice(instanceDriver, instance, context.getTestContext().getCommandLine()); 792 const deUint32 queueFamilyIndex = 0; 793 const deUint32 queueCount = 1; 794 const float queuePriority = 1.0f; 795 const DeviceFeatures deviceFeaturesAll (context.getInstanceInterface(), context.getUsedApiVersion(), physicalDevice, context.getInstanceExtensions(), context.getDeviceExtensions(), DE_TRUE); 796 const VkPhysicalDeviceFeatures2 deviceFeatures2 = deviceFeaturesAll.getCoreFeatures2(); 797 int numErrors = 0; 798 bool isSubProcess = context.getTestContext().getCommandLine().isSubProcess(); 799 VkDeviceObjectReservationCreateInfo memReservationStatMax = context.getResourceInterface()->getStatMax(); 800 801 VkPhysicalDeviceFeatures emptyDeviceFeatures; 802 deMemset(&emptyDeviceFeatures, 0, sizeof(emptyDeviceFeatures)); 803 804 // Only non-core extensions will be used when creating the device. 805 const auto& extensionNames = context.getDeviceCreationExtensions(); 806 DE_UNREF(extensionNames); // In some cases this is not used. 807 808 if (const void* featuresStruct = findStructureInChain(const_cast<const void*>(deviceFeatures2.pNext), getStructureType<VkPhysicalDeviceShaderAtomicFloatFeaturesEXT>())) 809 { 810 static const Feature features[] = 811 { 812 FEATURE_ITEM (VkPhysicalDeviceShaderAtomicFloatFeaturesEXT, shaderBufferFloat32Atomics), 813 FEATURE_ITEM (VkPhysicalDeviceShaderAtomicFloatFeaturesEXT, shaderBufferFloat32AtomicAdd), 814 FEATURE_ITEM (VkPhysicalDeviceShaderAtomicFloatFeaturesEXT, shaderBufferFloat64Atomics), 815 FEATURE_ITEM (VkPhysicalDeviceShaderAtomicFloatFeaturesEXT, shaderBufferFloat64AtomicAdd), 816 FEATURE_ITEM (VkPhysicalDeviceShaderAtomicFloatFeaturesEXT, shaderSharedFloat32Atomics), 817 FEATURE_ITEM (VkPhysicalDeviceShaderAtomicFloatFeaturesEXT, shaderSharedFloat32AtomicAdd), 818 FEATURE_ITEM (VkPhysicalDeviceShaderAtomicFloatFeaturesEXT, shaderSharedFloat64Atomics), 819 FEATURE_ITEM (VkPhysicalDeviceShaderAtomicFloatFeaturesEXT, shaderSharedFloat64AtomicAdd), 820 FEATURE_ITEM (VkPhysicalDeviceShaderAtomicFloatFeaturesEXT, shaderImageFloat32Atomics), 821 FEATURE_ITEM (VkPhysicalDeviceShaderAtomicFloatFeaturesEXT, shaderImageFloat32AtomicAdd), 822 FEATURE_ITEM (VkPhysicalDeviceShaderAtomicFloatFeaturesEXT, sparseImageFloat32Atomics), 823 FEATURE_ITEM (VkPhysicalDeviceShaderAtomicFloatFeaturesEXT, sparseImageFloat32AtomicAdd), 824 }; 825 auto* supportedFeatures = reinterpret_cast<const VkPhysicalDeviceShaderAtomicFloatFeaturesEXT*>(featuresStruct); 826 checkFeatures(vkp, instance, instanceDriver, physicalDevice, 12, features, supportedFeatures, queueFamilyIndex, queueCount, queuePriority, numErrors, resultCollector, &extensionNames, emptyDeviceFeatures, memReservationStatMax, isSubProcess, context.getUsedApiVersion()); 827 } 828 829 if (numErrors > 0) 830 return tcu::TestStatus(resultCollector.getResult(), "Enabling unsupported features didn't return VK_ERROR_FEATURE_NOT_PRESENT."); 831 else 832 return tcu::TestStatus(resultCollector.getResult(), resultCollector.getMessage()); 833} 834 835 836tcu::TestStatus createDeviceWithUnsupportedFeaturesTestVertexAttributeDivisorFeaturesEXT (Context& context) 837{ 838 const PlatformInterface& vkp = context.getPlatformInterface(); 839 tcu::TestLog& log = context.getTestContext().getLog(); 840 tcu::ResultCollector resultCollector (log); 841 const CustomInstance instance (createCustomInstanceWithExtensions(context, context.getInstanceExtensions(), DE_NULL, true)); 842 const InstanceDriver& instanceDriver (instance.getDriver()); 843 const VkPhysicalDevice physicalDevice = chooseDevice(instanceDriver, instance, context.getTestContext().getCommandLine()); 844 const deUint32 queueFamilyIndex = 0; 845 const deUint32 queueCount = 1; 846 const float queuePriority = 1.0f; 847 const DeviceFeatures deviceFeaturesAll (context.getInstanceInterface(), context.getUsedApiVersion(), physicalDevice, context.getInstanceExtensions(), context.getDeviceExtensions(), DE_TRUE); 848 const VkPhysicalDeviceFeatures2 deviceFeatures2 = deviceFeaturesAll.getCoreFeatures2(); 849 int numErrors = 0; 850 bool isSubProcess = context.getTestContext().getCommandLine().isSubProcess(); 851 VkDeviceObjectReservationCreateInfo memReservationStatMax = context.getResourceInterface()->getStatMax(); 852 853 VkPhysicalDeviceFeatures emptyDeviceFeatures; 854 deMemset(&emptyDeviceFeatures, 0, sizeof(emptyDeviceFeatures)); 855 856 // Only non-core extensions will be used when creating the device. 857 const auto& extensionNames = context.getDeviceCreationExtensions(); 858 DE_UNREF(extensionNames); // In some cases this is not used. 859 860 if (const void* featuresStruct = findStructureInChain(const_cast<const void*>(deviceFeatures2.pNext), getStructureType<VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT>())) 861 { 862 static const Feature features[] = 863 { 864 FEATURE_ITEM (VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT, vertexAttributeInstanceRateDivisor), 865 FEATURE_ITEM (VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT, vertexAttributeInstanceRateZeroDivisor), 866 }; 867 auto* supportedFeatures = reinterpret_cast<const VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT*>(featuresStruct); 868 checkFeatures(vkp, instance, instanceDriver, physicalDevice, 2, features, supportedFeatures, queueFamilyIndex, queueCount, queuePriority, numErrors, resultCollector, &extensionNames, emptyDeviceFeatures, memReservationStatMax, isSubProcess, context.getUsedApiVersion()); 869 } 870 871 if (numErrors > 0) 872 return tcu::TestStatus(resultCollector.getResult(), "Enabling unsupported features didn't return VK_ERROR_FEATURE_NOT_PRESENT."); 873 else 874 return tcu::TestStatus(resultCollector.getResult(), resultCollector.getMessage()); 875} 876 877 878tcu::TestStatus createDeviceWithUnsupportedFeaturesTestASTCDecodeFeaturesEXT (Context& context) 879{ 880 const PlatformInterface& vkp = context.getPlatformInterface(); 881 tcu::TestLog& log = context.getTestContext().getLog(); 882 tcu::ResultCollector resultCollector (log); 883 const CustomInstance instance (createCustomInstanceWithExtensions(context, context.getInstanceExtensions(), DE_NULL, true)); 884 const InstanceDriver& instanceDriver (instance.getDriver()); 885 const VkPhysicalDevice physicalDevice = chooseDevice(instanceDriver, instance, context.getTestContext().getCommandLine()); 886 const deUint32 queueFamilyIndex = 0; 887 const deUint32 queueCount = 1; 888 const float queuePriority = 1.0f; 889 const DeviceFeatures deviceFeaturesAll (context.getInstanceInterface(), context.getUsedApiVersion(), physicalDevice, context.getInstanceExtensions(), context.getDeviceExtensions(), DE_TRUE); 890 const VkPhysicalDeviceFeatures2 deviceFeatures2 = deviceFeaturesAll.getCoreFeatures2(); 891 int numErrors = 0; 892 bool isSubProcess = context.getTestContext().getCommandLine().isSubProcess(); 893 VkDeviceObjectReservationCreateInfo memReservationStatMax = context.getResourceInterface()->getStatMax(); 894 895 VkPhysicalDeviceFeatures emptyDeviceFeatures; 896 deMemset(&emptyDeviceFeatures, 0, sizeof(emptyDeviceFeatures)); 897 898 // Only non-core extensions will be used when creating the device. 899 const auto& extensionNames = context.getDeviceCreationExtensions(); 900 DE_UNREF(extensionNames); // In some cases this is not used. 901 902 if (const void* featuresStruct = findStructureInChain(const_cast<const void*>(deviceFeatures2.pNext), getStructureType<VkPhysicalDeviceASTCDecodeFeaturesEXT>())) 903 { 904 static const Feature features[] = 905 { 906 FEATURE_ITEM (VkPhysicalDeviceASTCDecodeFeaturesEXT, decodeModeSharedExponent), 907 }; 908 auto* supportedFeatures = reinterpret_cast<const VkPhysicalDeviceASTCDecodeFeaturesEXT*>(featuresStruct); 909 checkFeatures(vkp, instance, instanceDriver, physicalDevice, 1, features, supportedFeatures, queueFamilyIndex, queueCount, queuePriority, numErrors, resultCollector, &extensionNames, emptyDeviceFeatures, memReservationStatMax, isSubProcess, context.getUsedApiVersion()); 910 } 911 912 if (numErrors > 0) 913 return tcu::TestStatus(resultCollector.getResult(), "Enabling unsupported features didn't return VK_ERROR_FEATURE_NOT_PRESENT."); 914 else 915 return tcu::TestStatus(resultCollector.getResult(), resultCollector.getMessage()); 916} 917 918 919tcu::TestStatus createDeviceWithUnsupportedFeaturesTestScalarBlockLayoutFeatures (Context& context) 920{ 921 const PlatformInterface& vkp = context.getPlatformInterface(); 922 tcu::TestLog& log = context.getTestContext().getLog(); 923 tcu::ResultCollector resultCollector (log); 924 const CustomInstance instance (createCustomInstanceWithExtensions(context, context.getInstanceExtensions(), DE_NULL, true)); 925 const InstanceDriver& instanceDriver (instance.getDriver()); 926 const VkPhysicalDevice physicalDevice = chooseDevice(instanceDriver, instance, context.getTestContext().getCommandLine()); 927 const deUint32 queueFamilyIndex = 0; 928 const deUint32 queueCount = 1; 929 const float queuePriority = 1.0f; 930 const DeviceFeatures deviceFeaturesAll (context.getInstanceInterface(), context.getUsedApiVersion(), physicalDevice, context.getInstanceExtensions(), context.getDeviceExtensions(), DE_TRUE); 931 const VkPhysicalDeviceFeatures2 deviceFeatures2 = deviceFeaturesAll.getCoreFeatures2(); 932 int numErrors = 0; 933 bool isSubProcess = context.getTestContext().getCommandLine().isSubProcess(); 934 VkDeviceObjectReservationCreateInfo memReservationStatMax = context.getResourceInterface()->getStatMax(); 935 936 VkPhysicalDeviceFeatures emptyDeviceFeatures; 937 deMemset(&emptyDeviceFeatures, 0, sizeof(emptyDeviceFeatures)); 938 939 // Only non-core extensions will be used when creating the device. 940 const auto& extensionNames = context.getDeviceCreationExtensions(); 941 DE_UNREF(extensionNames); // In some cases this is not used. 942 943 if (const void* featuresStruct = findStructureInChain(const_cast<const void*>(deviceFeatures2.pNext), getStructureType<VkPhysicalDeviceScalarBlockLayoutFeatures>())) 944 { 945 static const Feature features[] = 946 { 947 FEATURE_ITEM (VkPhysicalDeviceScalarBlockLayoutFeatures, scalarBlockLayout), 948 }; 949 auto* supportedFeatures = reinterpret_cast<const VkPhysicalDeviceScalarBlockLayoutFeatures*>(featuresStruct); 950 checkFeatures(vkp, instance, instanceDriver, physicalDevice, 1, features, supportedFeatures, queueFamilyIndex, queueCount, queuePriority, numErrors, resultCollector, &extensionNames, emptyDeviceFeatures, memReservationStatMax, isSubProcess, context.getUsedApiVersion()); 951 } 952 953 if (numErrors > 0) 954 return tcu::TestStatus(resultCollector.getResult(), "Enabling unsupported features didn't return VK_ERROR_FEATURE_NOT_PRESENT."); 955 else 956 return tcu::TestStatus(resultCollector.getResult(), resultCollector.getMessage()); 957} 958 959 960tcu::TestStatus createDeviceWithUnsupportedFeaturesTestUniformBufferStandardLayoutFeatures (Context& context) 961{ 962 const PlatformInterface& vkp = context.getPlatformInterface(); 963 tcu::TestLog& log = context.getTestContext().getLog(); 964 tcu::ResultCollector resultCollector (log); 965 const CustomInstance instance (createCustomInstanceWithExtensions(context, context.getInstanceExtensions(), DE_NULL, true)); 966 const InstanceDriver& instanceDriver (instance.getDriver()); 967 const VkPhysicalDevice physicalDevice = chooseDevice(instanceDriver, instance, context.getTestContext().getCommandLine()); 968 const deUint32 queueFamilyIndex = 0; 969 const deUint32 queueCount = 1; 970 const float queuePriority = 1.0f; 971 const DeviceFeatures deviceFeaturesAll (context.getInstanceInterface(), context.getUsedApiVersion(), physicalDevice, context.getInstanceExtensions(), context.getDeviceExtensions(), DE_TRUE); 972 const VkPhysicalDeviceFeatures2 deviceFeatures2 = deviceFeaturesAll.getCoreFeatures2(); 973 int numErrors = 0; 974 bool isSubProcess = context.getTestContext().getCommandLine().isSubProcess(); 975 VkDeviceObjectReservationCreateInfo memReservationStatMax = context.getResourceInterface()->getStatMax(); 976 977 VkPhysicalDeviceFeatures emptyDeviceFeatures; 978 deMemset(&emptyDeviceFeatures, 0, sizeof(emptyDeviceFeatures)); 979 980 // Only non-core extensions will be used when creating the device. 981 const auto& extensionNames = context.getDeviceCreationExtensions(); 982 DE_UNREF(extensionNames); // In some cases this is not used. 983 984 if (const void* featuresStruct = findStructureInChain(const_cast<const void*>(deviceFeatures2.pNext), getStructureType<VkPhysicalDeviceUniformBufferStandardLayoutFeatures>())) 985 { 986 static const Feature features[] = 987 { 988 FEATURE_ITEM (VkPhysicalDeviceUniformBufferStandardLayoutFeatures, uniformBufferStandardLayout), 989 }; 990 auto* supportedFeatures = reinterpret_cast<const VkPhysicalDeviceUniformBufferStandardLayoutFeatures*>(featuresStruct); 991 checkFeatures(vkp, instance, instanceDriver, physicalDevice, 1, features, supportedFeatures, queueFamilyIndex, queueCount, queuePriority, numErrors, resultCollector, &extensionNames, emptyDeviceFeatures, memReservationStatMax, isSubProcess, context.getUsedApiVersion()); 992 } 993 994 if (numErrors > 0) 995 return tcu::TestStatus(resultCollector.getResult(), "Enabling unsupported features didn't return VK_ERROR_FEATURE_NOT_PRESENT."); 996 else 997 return tcu::TestStatus(resultCollector.getResult(), resultCollector.getMessage()); 998} 999 1000 1001tcu::TestStatus createDeviceWithUnsupportedFeaturesTestDepthClipEnableFeaturesEXT (Context& context) 1002{ 1003 const PlatformInterface& vkp = context.getPlatformInterface(); 1004 tcu::TestLog& log = context.getTestContext().getLog(); 1005 tcu::ResultCollector resultCollector (log); 1006 const CustomInstance instance (createCustomInstanceWithExtensions(context, context.getInstanceExtensions(), DE_NULL, true)); 1007 const InstanceDriver& instanceDriver (instance.getDriver()); 1008 const VkPhysicalDevice physicalDevice = chooseDevice(instanceDriver, instance, context.getTestContext().getCommandLine()); 1009 const deUint32 queueFamilyIndex = 0; 1010 const deUint32 queueCount = 1; 1011 const float queuePriority = 1.0f; 1012 const DeviceFeatures deviceFeaturesAll (context.getInstanceInterface(), context.getUsedApiVersion(), physicalDevice, context.getInstanceExtensions(), context.getDeviceExtensions(), DE_TRUE); 1013 const VkPhysicalDeviceFeatures2 deviceFeatures2 = deviceFeaturesAll.getCoreFeatures2(); 1014 int numErrors = 0; 1015 bool isSubProcess = context.getTestContext().getCommandLine().isSubProcess(); 1016 VkDeviceObjectReservationCreateInfo memReservationStatMax = context.getResourceInterface()->getStatMax(); 1017 1018 VkPhysicalDeviceFeatures emptyDeviceFeatures; 1019 deMemset(&emptyDeviceFeatures, 0, sizeof(emptyDeviceFeatures)); 1020 1021 // Only non-core extensions will be used when creating the device. 1022 const auto& extensionNames = context.getDeviceCreationExtensions(); 1023 DE_UNREF(extensionNames); // In some cases this is not used. 1024 1025 if (const void* featuresStruct = findStructureInChain(const_cast<const void*>(deviceFeatures2.pNext), getStructureType<VkPhysicalDeviceDepthClipEnableFeaturesEXT>())) 1026 { 1027 static const Feature features[] = 1028 { 1029 FEATURE_ITEM (VkPhysicalDeviceDepthClipEnableFeaturesEXT, depthClipEnable), 1030 }; 1031 auto* supportedFeatures = reinterpret_cast<const VkPhysicalDeviceDepthClipEnableFeaturesEXT*>(featuresStruct); 1032 checkFeatures(vkp, instance, instanceDriver, physicalDevice, 1, features, supportedFeatures, queueFamilyIndex, queueCount, queuePriority, numErrors, resultCollector, &extensionNames, emptyDeviceFeatures, memReservationStatMax, isSubProcess, context.getUsedApiVersion()); 1033 } 1034 1035 if (numErrors > 0) 1036 return tcu::TestStatus(resultCollector.getResult(), "Enabling unsupported features didn't return VK_ERROR_FEATURE_NOT_PRESENT."); 1037 else 1038 return tcu::TestStatus(resultCollector.getResult(), resultCollector.getMessage()); 1039} 1040 1041 1042tcu::TestStatus createDeviceWithUnsupportedFeaturesTestBufferDeviceAddressFeatures (Context& context) 1043{ 1044 const PlatformInterface& vkp = context.getPlatformInterface(); 1045 tcu::TestLog& log = context.getTestContext().getLog(); 1046 tcu::ResultCollector resultCollector (log); 1047 const CustomInstance instance (createCustomInstanceWithExtensions(context, context.getInstanceExtensions(), DE_NULL, true)); 1048 const InstanceDriver& instanceDriver (instance.getDriver()); 1049 const VkPhysicalDevice physicalDevice = chooseDevice(instanceDriver, instance, context.getTestContext().getCommandLine()); 1050 const deUint32 queueFamilyIndex = 0; 1051 const deUint32 queueCount = 1; 1052 const float queuePriority = 1.0f; 1053 const DeviceFeatures deviceFeaturesAll (context.getInstanceInterface(), context.getUsedApiVersion(), physicalDevice, context.getInstanceExtensions(), context.getDeviceExtensions(), DE_TRUE); 1054 const VkPhysicalDeviceFeatures2 deviceFeatures2 = deviceFeaturesAll.getCoreFeatures2(); 1055 int numErrors = 0; 1056 bool isSubProcess = context.getTestContext().getCommandLine().isSubProcess(); 1057 VkDeviceObjectReservationCreateInfo memReservationStatMax = context.getResourceInterface()->getStatMax(); 1058 1059 VkPhysicalDeviceFeatures emptyDeviceFeatures; 1060 deMemset(&emptyDeviceFeatures, 0, sizeof(emptyDeviceFeatures)); 1061 1062 // Only non-core extensions will be used when creating the device. 1063 const auto& extensionNames = context.getDeviceCreationExtensions(); 1064 DE_UNREF(extensionNames); // In some cases this is not used. 1065 1066 if (const void* featuresStruct = findStructureInChain(const_cast<const void*>(deviceFeatures2.pNext), getStructureType<VkPhysicalDeviceBufferDeviceAddressFeatures>())) 1067 { 1068 static const Feature features[] = 1069 { 1070 FEATURE_ITEM (VkPhysicalDeviceBufferDeviceAddressFeatures, bufferDeviceAddress), 1071 FEATURE_ITEM (VkPhysicalDeviceBufferDeviceAddressFeatures, bufferDeviceAddressCaptureReplay), 1072 FEATURE_ITEM (VkPhysicalDeviceBufferDeviceAddressFeatures, bufferDeviceAddressMultiDevice), 1073 }; 1074 auto* supportedFeatures = reinterpret_cast<const VkPhysicalDeviceBufferDeviceAddressFeatures*>(featuresStruct); 1075 checkFeatures(vkp, instance, instanceDriver, physicalDevice, 3, features, supportedFeatures, queueFamilyIndex, queueCount, queuePriority, numErrors, resultCollector, &extensionNames, emptyDeviceFeatures, memReservationStatMax, isSubProcess, context.getUsedApiVersion()); 1076 } 1077 1078 if (numErrors > 0) 1079 return tcu::TestStatus(resultCollector.getResult(), "Enabling unsupported features didn't return VK_ERROR_FEATURE_NOT_PRESENT."); 1080 else 1081 return tcu::TestStatus(resultCollector.getResult(), resultCollector.getMessage()); 1082} 1083 1084 1085tcu::TestStatus createDeviceWithUnsupportedFeaturesTestImagelessFramebufferFeatures (Context& context) 1086{ 1087 const PlatformInterface& vkp = context.getPlatformInterface(); 1088 tcu::TestLog& log = context.getTestContext().getLog(); 1089 tcu::ResultCollector resultCollector (log); 1090 const CustomInstance instance (createCustomInstanceWithExtensions(context, context.getInstanceExtensions(), DE_NULL, true)); 1091 const InstanceDriver& instanceDriver (instance.getDriver()); 1092 const VkPhysicalDevice physicalDevice = chooseDevice(instanceDriver, instance, context.getTestContext().getCommandLine()); 1093 const deUint32 queueFamilyIndex = 0; 1094 const deUint32 queueCount = 1; 1095 const float queuePriority = 1.0f; 1096 const DeviceFeatures deviceFeaturesAll (context.getInstanceInterface(), context.getUsedApiVersion(), physicalDevice, context.getInstanceExtensions(), context.getDeviceExtensions(), DE_TRUE); 1097 const VkPhysicalDeviceFeatures2 deviceFeatures2 = deviceFeaturesAll.getCoreFeatures2(); 1098 int numErrors = 0; 1099 bool isSubProcess = context.getTestContext().getCommandLine().isSubProcess(); 1100 VkDeviceObjectReservationCreateInfo memReservationStatMax = context.getResourceInterface()->getStatMax(); 1101 1102 VkPhysicalDeviceFeatures emptyDeviceFeatures; 1103 deMemset(&emptyDeviceFeatures, 0, sizeof(emptyDeviceFeatures)); 1104 1105 // Only non-core extensions will be used when creating the device. 1106 const auto& extensionNames = context.getDeviceCreationExtensions(); 1107 DE_UNREF(extensionNames); // In some cases this is not used. 1108 1109 if (const void* featuresStruct = findStructureInChain(const_cast<const void*>(deviceFeatures2.pNext), getStructureType<VkPhysicalDeviceImagelessFramebufferFeatures>())) 1110 { 1111 static const Feature features[] = 1112 { 1113 FEATURE_ITEM (VkPhysicalDeviceImagelessFramebufferFeatures, imagelessFramebuffer), 1114 }; 1115 auto* supportedFeatures = reinterpret_cast<const VkPhysicalDeviceImagelessFramebufferFeatures*>(featuresStruct); 1116 checkFeatures(vkp, instance, instanceDriver, physicalDevice, 1, features, supportedFeatures, queueFamilyIndex, queueCount, queuePriority, numErrors, resultCollector, &extensionNames, emptyDeviceFeatures, memReservationStatMax, isSubProcess, context.getUsedApiVersion()); 1117 } 1118 1119 if (numErrors > 0) 1120 return tcu::TestStatus(resultCollector.getResult(), "Enabling unsupported features didn't return VK_ERROR_FEATURE_NOT_PRESENT."); 1121 else 1122 return tcu::TestStatus(resultCollector.getResult(), resultCollector.getMessage()); 1123} 1124 1125 1126tcu::TestStatus createDeviceWithUnsupportedFeaturesTestTextureCompressionASTCHDRFeaturesEXT (Context& context) 1127{ 1128 const PlatformInterface& vkp = context.getPlatformInterface(); 1129 tcu::TestLog& log = context.getTestContext().getLog(); 1130 tcu::ResultCollector resultCollector (log); 1131 const CustomInstance instance (createCustomInstanceWithExtensions(context, context.getInstanceExtensions(), DE_NULL, true)); 1132 const InstanceDriver& instanceDriver (instance.getDriver()); 1133 const VkPhysicalDevice physicalDevice = chooseDevice(instanceDriver, instance, context.getTestContext().getCommandLine()); 1134 const deUint32 queueFamilyIndex = 0; 1135 const deUint32 queueCount = 1; 1136 const float queuePriority = 1.0f; 1137 const DeviceFeatures deviceFeaturesAll (context.getInstanceInterface(), context.getUsedApiVersion(), physicalDevice, context.getInstanceExtensions(), context.getDeviceExtensions(), DE_TRUE); 1138 const VkPhysicalDeviceFeatures2 deviceFeatures2 = deviceFeaturesAll.getCoreFeatures2(); 1139 int numErrors = 0; 1140 bool isSubProcess = context.getTestContext().getCommandLine().isSubProcess(); 1141 VkDeviceObjectReservationCreateInfo memReservationStatMax = context.getResourceInterface()->getStatMax(); 1142 1143 VkPhysicalDeviceFeatures emptyDeviceFeatures; 1144 deMemset(&emptyDeviceFeatures, 0, sizeof(emptyDeviceFeatures)); 1145 1146 // Only non-core extensions will be used when creating the device. 1147 const auto& extensionNames = context.getDeviceCreationExtensions(); 1148 DE_UNREF(extensionNames); // In some cases this is not used. 1149 1150 if (const void* featuresStruct = findStructureInChain(const_cast<const void*>(deviceFeatures2.pNext), getStructureType<VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT>())) 1151 { 1152 static const Feature features[] = 1153 { 1154 FEATURE_ITEM (VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT, textureCompressionASTC_HDR), 1155 }; 1156 auto* supportedFeatures = reinterpret_cast<const VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT*>(featuresStruct); 1157 checkFeatures(vkp, instance, instanceDriver, physicalDevice, 1, features, supportedFeatures, queueFamilyIndex, queueCount, queuePriority, numErrors, resultCollector, &extensionNames, emptyDeviceFeatures, memReservationStatMax, isSubProcess, context.getUsedApiVersion()); 1158 } 1159 1160 if (numErrors > 0) 1161 return tcu::TestStatus(resultCollector.getResult(), "Enabling unsupported features didn't return VK_ERROR_FEATURE_NOT_PRESENT."); 1162 else 1163 return tcu::TestStatus(resultCollector.getResult(), resultCollector.getMessage()); 1164} 1165 1166 1167tcu::TestStatus createDeviceWithUnsupportedFeaturesTestYcbcrImageArraysFeaturesEXT (Context& context) 1168{ 1169 const PlatformInterface& vkp = context.getPlatformInterface(); 1170 tcu::TestLog& log = context.getTestContext().getLog(); 1171 tcu::ResultCollector resultCollector (log); 1172 const CustomInstance instance (createCustomInstanceWithExtensions(context, context.getInstanceExtensions(), DE_NULL, true)); 1173 const InstanceDriver& instanceDriver (instance.getDriver()); 1174 const VkPhysicalDevice physicalDevice = chooseDevice(instanceDriver, instance, context.getTestContext().getCommandLine()); 1175 const deUint32 queueFamilyIndex = 0; 1176 const deUint32 queueCount = 1; 1177 const float queuePriority = 1.0f; 1178 const DeviceFeatures deviceFeaturesAll (context.getInstanceInterface(), context.getUsedApiVersion(), physicalDevice, context.getInstanceExtensions(), context.getDeviceExtensions(), DE_TRUE); 1179 const VkPhysicalDeviceFeatures2 deviceFeatures2 = deviceFeaturesAll.getCoreFeatures2(); 1180 int numErrors = 0; 1181 bool isSubProcess = context.getTestContext().getCommandLine().isSubProcess(); 1182 VkDeviceObjectReservationCreateInfo memReservationStatMax = context.getResourceInterface()->getStatMax(); 1183 1184 VkPhysicalDeviceFeatures emptyDeviceFeatures; 1185 deMemset(&emptyDeviceFeatures, 0, sizeof(emptyDeviceFeatures)); 1186 1187 // Only non-core extensions will be used when creating the device. 1188 const auto& extensionNames = context.getDeviceCreationExtensions(); 1189 DE_UNREF(extensionNames); // In some cases this is not used. 1190 1191 if (const void* featuresStruct = findStructureInChain(const_cast<const void*>(deviceFeatures2.pNext), getStructureType<VkPhysicalDeviceYcbcrImageArraysFeaturesEXT>())) 1192 { 1193 static const Feature features[] = 1194 { 1195 FEATURE_ITEM (VkPhysicalDeviceYcbcrImageArraysFeaturesEXT, ycbcrImageArrays), 1196 }; 1197 auto* supportedFeatures = reinterpret_cast<const VkPhysicalDeviceYcbcrImageArraysFeaturesEXT*>(featuresStruct); 1198 checkFeatures(vkp, instance, instanceDriver, physicalDevice, 1, features, supportedFeatures, queueFamilyIndex, queueCount, queuePriority, numErrors, resultCollector, &extensionNames, emptyDeviceFeatures, memReservationStatMax, isSubProcess, context.getUsedApiVersion()); 1199 } 1200 1201 if (numErrors > 0) 1202 return tcu::TestStatus(resultCollector.getResult(), "Enabling unsupported features didn't return VK_ERROR_FEATURE_NOT_PRESENT."); 1203 else 1204 return tcu::TestStatus(resultCollector.getResult(), resultCollector.getMessage()); 1205} 1206 1207 1208tcu::TestStatus createDeviceWithUnsupportedFeaturesTestPerformanceQueryFeaturesKHR (Context& context) 1209{ 1210 const PlatformInterface& vkp = context.getPlatformInterface(); 1211 tcu::TestLog& log = context.getTestContext().getLog(); 1212 tcu::ResultCollector resultCollector (log); 1213 const CustomInstance instance (createCustomInstanceWithExtensions(context, context.getInstanceExtensions(), DE_NULL, true)); 1214 const InstanceDriver& instanceDriver (instance.getDriver()); 1215 const VkPhysicalDevice physicalDevice = chooseDevice(instanceDriver, instance, context.getTestContext().getCommandLine()); 1216 const deUint32 queueFamilyIndex = 0; 1217 const deUint32 queueCount = 1; 1218 const float queuePriority = 1.0f; 1219 const DeviceFeatures deviceFeaturesAll (context.getInstanceInterface(), context.getUsedApiVersion(), physicalDevice, context.getInstanceExtensions(), context.getDeviceExtensions(), DE_TRUE); 1220 const VkPhysicalDeviceFeatures2 deviceFeatures2 = deviceFeaturesAll.getCoreFeatures2(); 1221 int numErrors = 0; 1222 bool isSubProcess = context.getTestContext().getCommandLine().isSubProcess(); 1223 VkDeviceObjectReservationCreateInfo memReservationStatMax = context.getResourceInterface()->getStatMax(); 1224 1225 VkPhysicalDeviceFeatures emptyDeviceFeatures; 1226 deMemset(&emptyDeviceFeatures, 0, sizeof(emptyDeviceFeatures)); 1227 1228 // Only non-core extensions will be used when creating the device. 1229 const auto& extensionNames = context.getDeviceCreationExtensions(); 1230 DE_UNREF(extensionNames); // In some cases this is not used. 1231 1232 if (const void* featuresStruct = findStructureInChain(const_cast<const void*>(deviceFeatures2.pNext), getStructureType<VkPhysicalDevicePerformanceQueryFeaturesKHR>())) 1233 { 1234 static const Feature features[] = 1235 { 1236 FEATURE_ITEM (VkPhysicalDevicePerformanceQueryFeaturesKHR, performanceCounterQueryPools), 1237 FEATURE_ITEM (VkPhysicalDevicePerformanceQueryFeaturesKHR, performanceCounterMultipleQueryPools), 1238 }; 1239 auto* supportedFeatures = reinterpret_cast<const VkPhysicalDevicePerformanceQueryFeaturesKHR*>(featuresStruct); 1240 checkFeatures(vkp, instance, instanceDriver, physicalDevice, 2, features, supportedFeatures, queueFamilyIndex, queueCount, queuePriority, numErrors, resultCollector, &extensionNames, emptyDeviceFeatures, memReservationStatMax, isSubProcess, context.getUsedApiVersion()); 1241 } 1242 1243 if (numErrors > 0) 1244 return tcu::TestStatus(resultCollector.getResult(), "Enabling unsupported features didn't return VK_ERROR_FEATURE_NOT_PRESENT."); 1245 else 1246 return tcu::TestStatus(resultCollector.getResult(), resultCollector.getMessage()); 1247} 1248 1249 1250tcu::TestStatus createDeviceWithUnsupportedFeaturesTestShaderClockFeaturesKHR (Context& context) 1251{ 1252 const PlatformInterface& vkp = context.getPlatformInterface(); 1253 tcu::TestLog& log = context.getTestContext().getLog(); 1254 tcu::ResultCollector resultCollector (log); 1255 const CustomInstance instance (createCustomInstanceWithExtensions(context, context.getInstanceExtensions(), DE_NULL, true)); 1256 const InstanceDriver& instanceDriver (instance.getDriver()); 1257 const VkPhysicalDevice physicalDevice = chooseDevice(instanceDriver, instance, context.getTestContext().getCommandLine()); 1258 const deUint32 queueFamilyIndex = 0; 1259 const deUint32 queueCount = 1; 1260 const float queuePriority = 1.0f; 1261 const DeviceFeatures deviceFeaturesAll (context.getInstanceInterface(), context.getUsedApiVersion(), physicalDevice, context.getInstanceExtensions(), context.getDeviceExtensions(), DE_TRUE); 1262 const VkPhysicalDeviceFeatures2 deviceFeatures2 = deviceFeaturesAll.getCoreFeatures2(); 1263 int numErrors = 0; 1264 bool isSubProcess = context.getTestContext().getCommandLine().isSubProcess(); 1265 VkDeviceObjectReservationCreateInfo memReservationStatMax = context.getResourceInterface()->getStatMax(); 1266 1267 VkPhysicalDeviceFeatures emptyDeviceFeatures; 1268 deMemset(&emptyDeviceFeatures, 0, sizeof(emptyDeviceFeatures)); 1269 1270 // Only non-core extensions will be used when creating the device. 1271 const auto& extensionNames = context.getDeviceCreationExtensions(); 1272 DE_UNREF(extensionNames); // In some cases this is not used. 1273 1274 if (const void* featuresStruct = findStructureInChain(const_cast<const void*>(deviceFeatures2.pNext), getStructureType<VkPhysicalDeviceShaderClockFeaturesKHR>())) 1275 { 1276 static const Feature features[] = 1277 { 1278 FEATURE_ITEM (VkPhysicalDeviceShaderClockFeaturesKHR, shaderSubgroupClock), 1279 FEATURE_ITEM (VkPhysicalDeviceShaderClockFeaturesKHR, shaderDeviceClock), 1280 }; 1281 auto* supportedFeatures = reinterpret_cast<const VkPhysicalDeviceShaderClockFeaturesKHR*>(featuresStruct); 1282 checkFeatures(vkp, instance, instanceDriver, physicalDevice, 2, features, supportedFeatures, queueFamilyIndex, queueCount, queuePriority, numErrors, resultCollector, &extensionNames, emptyDeviceFeatures, memReservationStatMax, isSubProcess, context.getUsedApiVersion()); 1283 } 1284 1285 if (numErrors > 0) 1286 return tcu::TestStatus(resultCollector.getResult(), "Enabling unsupported features didn't return VK_ERROR_FEATURE_NOT_PRESENT."); 1287 else 1288 return tcu::TestStatus(resultCollector.getResult(), resultCollector.getMessage()); 1289} 1290 1291 1292tcu::TestStatus createDeviceWithUnsupportedFeaturesTestIndexTypeUint8FeaturesEXT (Context& context) 1293{ 1294 const PlatformInterface& vkp = context.getPlatformInterface(); 1295 tcu::TestLog& log = context.getTestContext().getLog(); 1296 tcu::ResultCollector resultCollector (log); 1297 const CustomInstance instance (createCustomInstanceWithExtensions(context, context.getInstanceExtensions(), DE_NULL, true)); 1298 const InstanceDriver& instanceDriver (instance.getDriver()); 1299 const VkPhysicalDevice physicalDevice = chooseDevice(instanceDriver, instance, context.getTestContext().getCommandLine()); 1300 const deUint32 queueFamilyIndex = 0; 1301 const deUint32 queueCount = 1; 1302 const float queuePriority = 1.0f; 1303 const DeviceFeatures deviceFeaturesAll (context.getInstanceInterface(), context.getUsedApiVersion(), physicalDevice, context.getInstanceExtensions(), context.getDeviceExtensions(), DE_TRUE); 1304 const VkPhysicalDeviceFeatures2 deviceFeatures2 = deviceFeaturesAll.getCoreFeatures2(); 1305 int numErrors = 0; 1306 bool isSubProcess = context.getTestContext().getCommandLine().isSubProcess(); 1307 VkDeviceObjectReservationCreateInfo memReservationStatMax = context.getResourceInterface()->getStatMax(); 1308 1309 VkPhysicalDeviceFeatures emptyDeviceFeatures; 1310 deMemset(&emptyDeviceFeatures, 0, sizeof(emptyDeviceFeatures)); 1311 1312 // Only non-core extensions will be used when creating the device. 1313 const auto& extensionNames = context.getDeviceCreationExtensions(); 1314 DE_UNREF(extensionNames); // In some cases this is not used. 1315 1316 if (const void* featuresStruct = findStructureInChain(const_cast<const void*>(deviceFeatures2.pNext), getStructureType<VkPhysicalDeviceIndexTypeUint8FeaturesEXT>())) 1317 { 1318 static const Feature features[] = 1319 { 1320 FEATURE_ITEM (VkPhysicalDeviceIndexTypeUint8FeaturesEXT, indexTypeUint8), 1321 }; 1322 auto* supportedFeatures = reinterpret_cast<const VkPhysicalDeviceIndexTypeUint8FeaturesEXT*>(featuresStruct); 1323 checkFeatures(vkp, instance, instanceDriver, physicalDevice, 1, features, supportedFeatures, queueFamilyIndex, queueCount, queuePriority, numErrors, resultCollector, &extensionNames, emptyDeviceFeatures, memReservationStatMax, isSubProcess, context.getUsedApiVersion()); 1324 } 1325 1326 if (numErrors > 0) 1327 return tcu::TestStatus(resultCollector.getResult(), "Enabling unsupported features didn't return VK_ERROR_FEATURE_NOT_PRESENT."); 1328 else 1329 return tcu::TestStatus(resultCollector.getResult(), resultCollector.getMessage()); 1330} 1331 1332 1333tcu::TestStatus createDeviceWithUnsupportedFeaturesTestFragmentShaderInterlockFeaturesEXT (Context& context) 1334{ 1335 const PlatformInterface& vkp = context.getPlatformInterface(); 1336 tcu::TestLog& log = context.getTestContext().getLog(); 1337 tcu::ResultCollector resultCollector (log); 1338 const CustomInstance instance (createCustomInstanceWithExtensions(context, context.getInstanceExtensions(), DE_NULL, true)); 1339 const InstanceDriver& instanceDriver (instance.getDriver()); 1340 const VkPhysicalDevice physicalDevice = chooseDevice(instanceDriver, instance, context.getTestContext().getCommandLine()); 1341 const deUint32 queueFamilyIndex = 0; 1342 const deUint32 queueCount = 1; 1343 const float queuePriority = 1.0f; 1344 const DeviceFeatures deviceFeaturesAll (context.getInstanceInterface(), context.getUsedApiVersion(), physicalDevice, context.getInstanceExtensions(), context.getDeviceExtensions(), DE_TRUE); 1345 const VkPhysicalDeviceFeatures2 deviceFeatures2 = deviceFeaturesAll.getCoreFeatures2(); 1346 int numErrors = 0; 1347 bool isSubProcess = context.getTestContext().getCommandLine().isSubProcess(); 1348 VkDeviceObjectReservationCreateInfo memReservationStatMax = context.getResourceInterface()->getStatMax(); 1349 1350 VkPhysicalDeviceFeatures emptyDeviceFeatures; 1351 deMemset(&emptyDeviceFeatures, 0, sizeof(emptyDeviceFeatures)); 1352 1353 // Only non-core extensions will be used when creating the device. 1354 const auto& extensionNames = context.getDeviceCreationExtensions(); 1355 DE_UNREF(extensionNames); // In some cases this is not used. 1356 1357 if (const void* featuresStruct = findStructureInChain(const_cast<const void*>(deviceFeatures2.pNext), getStructureType<VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT>())) 1358 { 1359 static const Feature features[] = 1360 { 1361 FEATURE_ITEM (VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT, fragmentShaderSampleInterlock), 1362 FEATURE_ITEM (VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT, fragmentShaderPixelInterlock), 1363 FEATURE_ITEM (VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT, fragmentShaderShadingRateInterlock), 1364 }; 1365 auto* supportedFeatures = reinterpret_cast<const VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT*>(featuresStruct); 1366 checkFeatures(vkp, instance, instanceDriver, physicalDevice, 3, features, supportedFeatures, queueFamilyIndex, queueCount, queuePriority, numErrors, resultCollector, &extensionNames, emptyDeviceFeatures, memReservationStatMax, isSubProcess, context.getUsedApiVersion()); 1367 } 1368 1369 if (numErrors > 0) 1370 return tcu::TestStatus(resultCollector.getResult(), "Enabling unsupported features didn't return VK_ERROR_FEATURE_NOT_PRESENT."); 1371 else 1372 return tcu::TestStatus(resultCollector.getResult(), resultCollector.getMessage()); 1373} 1374 1375 1376tcu::TestStatus createDeviceWithUnsupportedFeaturesTestSeparateDepthStencilLayoutsFeatures (Context& context) 1377{ 1378 const PlatformInterface& vkp = context.getPlatformInterface(); 1379 tcu::TestLog& log = context.getTestContext().getLog(); 1380 tcu::ResultCollector resultCollector (log); 1381 const CustomInstance instance (createCustomInstanceWithExtensions(context, context.getInstanceExtensions(), DE_NULL, true)); 1382 const InstanceDriver& instanceDriver (instance.getDriver()); 1383 const VkPhysicalDevice physicalDevice = chooseDevice(instanceDriver, instance, context.getTestContext().getCommandLine()); 1384 const deUint32 queueFamilyIndex = 0; 1385 const deUint32 queueCount = 1; 1386 const float queuePriority = 1.0f; 1387 const DeviceFeatures deviceFeaturesAll (context.getInstanceInterface(), context.getUsedApiVersion(), physicalDevice, context.getInstanceExtensions(), context.getDeviceExtensions(), DE_TRUE); 1388 const VkPhysicalDeviceFeatures2 deviceFeatures2 = deviceFeaturesAll.getCoreFeatures2(); 1389 int numErrors = 0; 1390 bool isSubProcess = context.getTestContext().getCommandLine().isSubProcess(); 1391 VkDeviceObjectReservationCreateInfo memReservationStatMax = context.getResourceInterface()->getStatMax(); 1392 1393 VkPhysicalDeviceFeatures emptyDeviceFeatures; 1394 deMemset(&emptyDeviceFeatures, 0, sizeof(emptyDeviceFeatures)); 1395 1396 // Only non-core extensions will be used when creating the device. 1397 const auto& extensionNames = context.getDeviceCreationExtensions(); 1398 DE_UNREF(extensionNames); // In some cases this is not used. 1399 1400 if (const void* featuresStruct = findStructureInChain(const_cast<const void*>(deviceFeatures2.pNext), getStructureType<VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures>())) 1401 { 1402 static const Feature features[] = 1403 { 1404 FEATURE_ITEM (VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures, separateDepthStencilLayouts), 1405 }; 1406 auto* supportedFeatures = reinterpret_cast<const VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures*>(featuresStruct); 1407 checkFeatures(vkp, instance, instanceDriver, physicalDevice, 1, features, supportedFeatures, queueFamilyIndex, queueCount, queuePriority, numErrors, resultCollector, &extensionNames, emptyDeviceFeatures, memReservationStatMax, isSubProcess, context.getUsedApiVersion()); 1408 } 1409 1410 if (numErrors > 0) 1411 return tcu::TestStatus(resultCollector.getResult(), "Enabling unsupported features didn't return VK_ERROR_FEATURE_NOT_PRESENT."); 1412 else 1413 return tcu::TestStatus(resultCollector.getResult(), resultCollector.getMessage()); 1414} 1415 1416 1417tcu::TestStatus createDeviceWithUnsupportedFeaturesTestShaderDemoteToHelperInvocationFeaturesEXT (Context& context) 1418{ 1419 const PlatformInterface& vkp = context.getPlatformInterface(); 1420 tcu::TestLog& log = context.getTestContext().getLog(); 1421 tcu::ResultCollector resultCollector (log); 1422 const CustomInstance instance (createCustomInstanceWithExtensions(context, context.getInstanceExtensions(), DE_NULL, true)); 1423 const InstanceDriver& instanceDriver (instance.getDriver()); 1424 const VkPhysicalDevice physicalDevice = chooseDevice(instanceDriver, instance, context.getTestContext().getCommandLine()); 1425 const deUint32 queueFamilyIndex = 0; 1426 const deUint32 queueCount = 1; 1427 const float queuePriority = 1.0f; 1428 const DeviceFeatures deviceFeaturesAll (context.getInstanceInterface(), context.getUsedApiVersion(), physicalDevice, context.getInstanceExtensions(), context.getDeviceExtensions(), DE_TRUE); 1429 const VkPhysicalDeviceFeatures2 deviceFeatures2 = deviceFeaturesAll.getCoreFeatures2(); 1430 int numErrors = 0; 1431 bool isSubProcess = context.getTestContext().getCommandLine().isSubProcess(); 1432 VkDeviceObjectReservationCreateInfo memReservationStatMax = context.getResourceInterface()->getStatMax(); 1433 1434 VkPhysicalDeviceFeatures emptyDeviceFeatures; 1435 deMemset(&emptyDeviceFeatures, 0, sizeof(emptyDeviceFeatures)); 1436 1437 // Only non-core extensions will be used when creating the device. 1438 const auto& extensionNames = context.getDeviceCreationExtensions(); 1439 DE_UNREF(extensionNames); // In some cases this is not used. 1440 1441 if (const void* featuresStruct = findStructureInChain(const_cast<const void*>(deviceFeatures2.pNext), getStructureType<VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT>())) 1442 { 1443 static const Feature features[] = 1444 { 1445 FEATURE_ITEM (VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT, shaderDemoteToHelperInvocation), 1446 }; 1447 auto* supportedFeatures = reinterpret_cast<const VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT*>(featuresStruct); 1448 checkFeatures(vkp, instance, instanceDriver, physicalDevice, 1, features, supportedFeatures, queueFamilyIndex, queueCount, queuePriority, numErrors, resultCollector, &extensionNames, emptyDeviceFeatures, memReservationStatMax, isSubProcess, context.getUsedApiVersion()); 1449 } 1450 1451 if (numErrors > 0) 1452 return tcu::TestStatus(resultCollector.getResult(), "Enabling unsupported features didn't return VK_ERROR_FEATURE_NOT_PRESENT."); 1453 else 1454 return tcu::TestStatus(resultCollector.getResult(), resultCollector.getMessage()); 1455} 1456 1457 1458tcu::TestStatus createDeviceWithUnsupportedFeaturesTestTexelBufferAlignmentFeaturesEXT (Context& context) 1459{ 1460 const PlatformInterface& vkp = context.getPlatformInterface(); 1461 tcu::TestLog& log = context.getTestContext().getLog(); 1462 tcu::ResultCollector resultCollector (log); 1463 const CustomInstance instance (createCustomInstanceWithExtensions(context, context.getInstanceExtensions(), DE_NULL, true)); 1464 const InstanceDriver& instanceDriver (instance.getDriver()); 1465 const VkPhysicalDevice physicalDevice = chooseDevice(instanceDriver, instance, context.getTestContext().getCommandLine()); 1466 const deUint32 queueFamilyIndex = 0; 1467 const deUint32 queueCount = 1; 1468 const float queuePriority = 1.0f; 1469 const DeviceFeatures deviceFeaturesAll (context.getInstanceInterface(), context.getUsedApiVersion(), physicalDevice, context.getInstanceExtensions(), context.getDeviceExtensions(), DE_TRUE); 1470 const VkPhysicalDeviceFeatures2 deviceFeatures2 = deviceFeaturesAll.getCoreFeatures2(); 1471 int numErrors = 0; 1472 bool isSubProcess = context.getTestContext().getCommandLine().isSubProcess(); 1473 VkDeviceObjectReservationCreateInfo memReservationStatMax = context.getResourceInterface()->getStatMax(); 1474 1475 VkPhysicalDeviceFeatures emptyDeviceFeatures; 1476 deMemset(&emptyDeviceFeatures, 0, sizeof(emptyDeviceFeatures)); 1477 1478 // Only non-core extensions will be used when creating the device. 1479 const auto& extensionNames = context.getDeviceCreationExtensions(); 1480 DE_UNREF(extensionNames); // In some cases this is not used. 1481 1482 if (const void* featuresStruct = findStructureInChain(const_cast<const void*>(deviceFeatures2.pNext), getStructureType<VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT>())) 1483 { 1484 static const Feature features[] = 1485 { 1486 FEATURE_ITEM (VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT, texelBufferAlignment), 1487 }; 1488 auto* supportedFeatures = reinterpret_cast<const VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT*>(featuresStruct); 1489 checkFeatures(vkp, instance, instanceDriver, physicalDevice, 1, features, supportedFeatures, queueFamilyIndex, queueCount, queuePriority, numErrors, resultCollector, &extensionNames, emptyDeviceFeatures, memReservationStatMax, isSubProcess, context.getUsedApiVersion()); 1490 } 1491 1492 if (numErrors > 0) 1493 return tcu::TestStatus(resultCollector.getResult(), "Enabling unsupported features didn't return VK_ERROR_FEATURE_NOT_PRESENT."); 1494 else 1495 return tcu::TestStatus(resultCollector.getResult(), resultCollector.getMessage()); 1496} 1497 1498 1499tcu::TestStatus createDeviceWithUnsupportedFeaturesTestSubgroupSizeControlFeaturesEXT (Context& context) 1500{ 1501 const PlatformInterface& vkp = context.getPlatformInterface(); 1502 tcu::TestLog& log = context.getTestContext().getLog(); 1503 tcu::ResultCollector resultCollector (log); 1504 const CustomInstance instance (createCustomInstanceWithExtensions(context, context.getInstanceExtensions(), DE_NULL, true)); 1505 const InstanceDriver& instanceDriver (instance.getDriver()); 1506 const VkPhysicalDevice physicalDevice = chooseDevice(instanceDriver, instance, context.getTestContext().getCommandLine()); 1507 const deUint32 queueFamilyIndex = 0; 1508 const deUint32 queueCount = 1; 1509 const float queuePriority = 1.0f; 1510 const DeviceFeatures deviceFeaturesAll (context.getInstanceInterface(), context.getUsedApiVersion(), physicalDevice, context.getInstanceExtensions(), context.getDeviceExtensions(), DE_TRUE); 1511 const VkPhysicalDeviceFeatures2 deviceFeatures2 = deviceFeaturesAll.getCoreFeatures2(); 1512 int numErrors = 0; 1513 bool isSubProcess = context.getTestContext().getCommandLine().isSubProcess(); 1514 VkDeviceObjectReservationCreateInfo memReservationStatMax = context.getResourceInterface()->getStatMax(); 1515 1516 VkPhysicalDeviceFeatures emptyDeviceFeatures; 1517 deMemset(&emptyDeviceFeatures, 0, sizeof(emptyDeviceFeatures)); 1518 1519 // Only non-core extensions will be used when creating the device. 1520 const auto& extensionNames = context.getDeviceCreationExtensions(); 1521 DE_UNREF(extensionNames); // In some cases this is not used. 1522 1523 if (const void* featuresStruct = findStructureInChain(const_cast<const void*>(deviceFeatures2.pNext), getStructureType<VkPhysicalDeviceSubgroupSizeControlFeaturesEXT>())) 1524 { 1525 static const Feature features[] = 1526 { 1527 FEATURE_ITEM (VkPhysicalDeviceSubgroupSizeControlFeaturesEXT, subgroupSizeControl), 1528 FEATURE_ITEM (VkPhysicalDeviceSubgroupSizeControlFeaturesEXT, computeFullSubgroups), 1529 }; 1530 auto* supportedFeatures = reinterpret_cast<const VkPhysicalDeviceSubgroupSizeControlFeaturesEXT*>(featuresStruct); 1531 checkFeatures(vkp, instance, instanceDriver, physicalDevice, 2, features, supportedFeatures, queueFamilyIndex, queueCount, queuePriority, numErrors, resultCollector, &extensionNames, emptyDeviceFeatures, memReservationStatMax, isSubProcess, context.getUsedApiVersion()); 1532 } 1533 1534 if (numErrors > 0) 1535 return tcu::TestStatus(resultCollector.getResult(), "Enabling unsupported features didn't return VK_ERROR_FEATURE_NOT_PRESENT."); 1536 else 1537 return tcu::TestStatus(resultCollector.getResult(), resultCollector.getMessage()); 1538} 1539 1540 1541tcu::TestStatus createDeviceWithUnsupportedFeaturesTestLineRasterizationFeaturesEXT (Context& context) 1542{ 1543 const PlatformInterface& vkp = context.getPlatformInterface(); 1544 tcu::TestLog& log = context.getTestContext().getLog(); 1545 tcu::ResultCollector resultCollector (log); 1546 const CustomInstance instance (createCustomInstanceWithExtensions(context, context.getInstanceExtensions(), DE_NULL, true)); 1547 const InstanceDriver& instanceDriver (instance.getDriver()); 1548 const VkPhysicalDevice physicalDevice = chooseDevice(instanceDriver, instance, context.getTestContext().getCommandLine()); 1549 const deUint32 queueFamilyIndex = 0; 1550 const deUint32 queueCount = 1; 1551 const float queuePriority = 1.0f; 1552 const DeviceFeatures deviceFeaturesAll (context.getInstanceInterface(), context.getUsedApiVersion(), physicalDevice, context.getInstanceExtensions(), context.getDeviceExtensions(), DE_TRUE); 1553 const VkPhysicalDeviceFeatures2 deviceFeatures2 = deviceFeaturesAll.getCoreFeatures2(); 1554 int numErrors = 0; 1555 bool isSubProcess = context.getTestContext().getCommandLine().isSubProcess(); 1556 VkDeviceObjectReservationCreateInfo memReservationStatMax = context.getResourceInterface()->getStatMax(); 1557 1558 VkPhysicalDeviceFeatures emptyDeviceFeatures; 1559 deMemset(&emptyDeviceFeatures, 0, sizeof(emptyDeviceFeatures)); 1560 1561 // Only non-core extensions will be used when creating the device. 1562 const auto& extensionNames = context.getDeviceCreationExtensions(); 1563 DE_UNREF(extensionNames); // In some cases this is not used. 1564 1565 if (const void* featuresStruct = findStructureInChain(const_cast<const void*>(deviceFeatures2.pNext), getStructureType<VkPhysicalDeviceLineRasterizationFeaturesEXT>())) 1566 { 1567 static const Feature features[] = 1568 { 1569 FEATURE_ITEM (VkPhysicalDeviceLineRasterizationFeaturesEXT, rectangularLines), 1570 FEATURE_ITEM (VkPhysicalDeviceLineRasterizationFeaturesEXT, bresenhamLines), 1571 FEATURE_ITEM (VkPhysicalDeviceLineRasterizationFeaturesEXT, smoothLines), 1572 FEATURE_ITEM (VkPhysicalDeviceLineRasterizationFeaturesEXT, stippledRectangularLines), 1573 FEATURE_ITEM (VkPhysicalDeviceLineRasterizationFeaturesEXT, stippledBresenhamLines), 1574 FEATURE_ITEM (VkPhysicalDeviceLineRasterizationFeaturesEXT, stippledSmoothLines), 1575 }; 1576 auto* supportedFeatures = reinterpret_cast<const VkPhysicalDeviceLineRasterizationFeaturesEXT*>(featuresStruct); 1577 checkFeatures(vkp, instance, instanceDriver, physicalDevice, 6, features, supportedFeatures, queueFamilyIndex, queueCount, queuePriority, numErrors, resultCollector, &extensionNames, emptyDeviceFeatures, memReservationStatMax, isSubProcess, context.getUsedApiVersion()); 1578 } 1579 1580 if (numErrors > 0) 1581 return tcu::TestStatus(resultCollector.getResult(), "Enabling unsupported features didn't return VK_ERROR_FEATURE_NOT_PRESENT."); 1582 else 1583 return tcu::TestStatus(resultCollector.getResult(), resultCollector.getMessage()); 1584} 1585 1586 1587tcu::TestStatus createDeviceWithUnsupportedFeaturesTestVulkan11Features (Context& context) 1588{ 1589 const PlatformInterface& vkp = context.getPlatformInterface(); 1590 tcu::TestLog& log = context.getTestContext().getLog(); 1591 tcu::ResultCollector resultCollector (log); 1592 const CustomInstance instance (createCustomInstanceWithExtensions(context, context.getInstanceExtensions(), DE_NULL, true)); 1593 const InstanceDriver& instanceDriver (instance.getDriver()); 1594 const VkPhysicalDevice physicalDevice = chooseDevice(instanceDriver, instance, context.getTestContext().getCommandLine()); 1595 const deUint32 queueFamilyIndex = 0; 1596 const deUint32 queueCount = 1; 1597 const float queuePriority = 1.0f; 1598 const DeviceFeatures deviceFeaturesAll (context.getInstanceInterface(), context.getUsedApiVersion(), physicalDevice, context.getInstanceExtensions(), context.getDeviceExtensions(), DE_TRUE); 1599 const VkPhysicalDeviceFeatures2 deviceFeatures2 = deviceFeaturesAll.getCoreFeatures2(); 1600 int numErrors = 0; 1601 bool isSubProcess = context.getTestContext().getCommandLine().isSubProcess(); 1602 VkDeviceObjectReservationCreateInfo memReservationStatMax = context.getResourceInterface()->getStatMax(); 1603 1604 VkPhysicalDeviceFeatures emptyDeviceFeatures; 1605 deMemset(&emptyDeviceFeatures, 0, sizeof(emptyDeviceFeatures)); 1606 1607 // Only non-core extensions will be used when creating the device. 1608 const auto& extensionNames = context.getDeviceCreationExtensions(); 1609 DE_UNREF(extensionNames); // In some cases this is not used. 1610 1611 if (const void* featuresStruct = findStructureInChain(const_cast<const void*>(deviceFeatures2.pNext), getStructureType<VkPhysicalDeviceVulkan11Features>())) 1612 { 1613 static const Feature features[] = 1614 { 1615 FEATURE_ITEM (VkPhysicalDeviceVulkan11Features, storageBuffer16BitAccess), 1616 FEATURE_ITEM (VkPhysicalDeviceVulkan11Features, uniformAndStorageBuffer16BitAccess), 1617 FEATURE_ITEM (VkPhysicalDeviceVulkan11Features, storagePushConstant16), 1618 FEATURE_ITEM (VkPhysicalDeviceVulkan11Features, storageInputOutput16), 1619 FEATURE_ITEM (VkPhysicalDeviceVulkan11Features, multiview), 1620 FEATURE_ITEM (VkPhysicalDeviceVulkan11Features, multiviewGeometryShader), 1621 FEATURE_ITEM (VkPhysicalDeviceVulkan11Features, multiviewTessellationShader), 1622 FEATURE_ITEM (VkPhysicalDeviceVulkan11Features, variablePointersStorageBuffer), 1623 FEATURE_ITEM (VkPhysicalDeviceVulkan11Features, variablePointers), 1624 FEATURE_ITEM (VkPhysicalDeviceVulkan11Features, protectedMemory), 1625 FEATURE_ITEM (VkPhysicalDeviceVulkan11Features, samplerYcbcrConversion), 1626 FEATURE_ITEM (VkPhysicalDeviceVulkan11Features, shaderDrawParameters), 1627 }; 1628 auto* supportedFeatures = reinterpret_cast<const VkPhysicalDeviceVulkan11Features*>(featuresStruct); 1629 checkFeatures(vkp, instance, instanceDriver, physicalDevice, 12, features, supportedFeatures, queueFamilyIndex, queueCount, queuePriority, numErrors, resultCollector, DE_NULL, emptyDeviceFeatures, memReservationStatMax, isSubProcess, context.getUsedApiVersion()); 1630 } 1631 1632 if (numErrors > 0) 1633 return tcu::TestStatus(resultCollector.getResult(), "Enabling unsupported features didn't return VK_ERROR_FEATURE_NOT_PRESENT."); 1634 else 1635 return tcu::TestStatus(resultCollector.getResult(), resultCollector.getMessage()); 1636} 1637 1638 1639tcu::TestStatus createDeviceWithUnsupportedFeaturesTestVulkan12Features (Context& context) 1640{ 1641 const PlatformInterface& vkp = context.getPlatformInterface(); 1642 tcu::TestLog& log = context.getTestContext().getLog(); 1643 tcu::ResultCollector resultCollector (log); 1644 const CustomInstance instance (createCustomInstanceWithExtensions(context, context.getInstanceExtensions(), DE_NULL, true)); 1645 const InstanceDriver& instanceDriver (instance.getDriver()); 1646 const VkPhysicalDevice physicalDevice = chooseDevice(instanceDriver, instance, context.getTestContext().getCommandLine()); 1647 const deUint32 queueFamilyIndex = 0; 1648 const deUint32 queueCount = 1; 1649 const float queuePriority = 1.0f; 1650 const DeviceFeatures deviceFeaturesAll (context.getInstanceInterface(), context.getUsedApiVersion(), physicalDevice, context.getInstanceExtensions(), context.getDeviceExtensions(), DE_TRUE); 1651 const VkPhysicalDeviceFeatures2 deviceFeatures2 = deviceFeaturesAll.getCoreFeatures2(); 1652 int numErrors = 0; 1653 bool isSubProcess = context.getTestContext().getCommandLine().isSubProcess(); 1654 VkDeviceObjectReservationCreateInfo memReservationStatMax = context.getResourceInterface()->getStatMax(); 1655 1656 VkPhysicalDeviceFeatures emptyDeviceFeatures; 1657 deMemset(&emptyDeviceFeatures, 0, sizeof(emptyDeviceFeatures)); 1658 1659 // Only non-core extensions will be used when creating the device. 1660 const auto& extensionNames = context.getDeviceCreationExtensions(); 1661 DE_UNREF(extensionNames); // In some cases this is not used. 1662 1663 if (const void* featuresStruct = findStructureInChain(const_cast<const void*>(deviceFeatures2.pNext), getStructureType<VkPhysicalDeviceVulkan12Features>())) 1664 { 1665 static const Feature features[] = 1666 { 1667 FEATURE_ITEM (VkPhysicalDeviceVulkan12Features, samplerMirrorClampToEdge), 1668 FEATURE_ITEM (VkPhysicalDeviceVulkan12Features, drawIndirectCount), 1669 FEATURE_ITEM (VkPhysicalDeviceVulkan12Features, storageBuffer8BitAccess), 1670 FEATURE_ITEM (VkPhysicalDeviceVulkan12Features, uniformAndStorageBuffer8BitAccess), 1671 FEATURE_ITEM (VkPhysicalDeviceVulkan12Features, storagePushConstant8), 1672 FEATURE_ITEM (VkPhysicalDeviceVulkan12Features, shaderBufferInt64Atomics), 1673 FEATURE_ITEM (VkPhysicalDeviceVulkan12Features, shaderSharedInt64Atomics), 1674 FEATURE_ITEM (VkPhysicalDeviceVulkan12Features, shaderFloat16), 1675 FEATURE_ITEM (VkPhysicalDeviceVulkan12Features, shaderInt8), 1676 FEATURE_ITEM (VkPhysicalDeviceVulkan12Features, descriptorIndexing), 1677 FEATURE_ITEM (VkPhysicalDeviceVulkan12Features, shaderInputAttachmentArrayDynamicIndexing), 1678 FEATURE_ITEM (VkPhysicalDeviceVulkan12Features, shaderUniformTexelBufferArrayDynamicIndexing), 1679 FEATURE_ITEM (VkPhysicalDeviceVulkan12Features, shaderStorageTexelBufferArrayDynamicIndexing), 1680 FEATURE_ITEM (VkPhysicalDeviceVulkan12Features, shaderUniformBufferArrayNonUniformIndexing), 1681 FEATURE_ITEM (VkPhysicalDeviceVulkan12Features, shaderSampledImageArrayNonUniformIndexing), 1682 FEATURE_ITEM (VkPhysicalDeviceVulkan12Features, shaderStorageBufferArrayNonUniformIndexing), 1683 FEATURE_ITEM (VkPhysicalDeviceVulkan12Features, shaderStorageImageArrayNonUniformIndexing), 1684 FEATURE_ITEM (VkPhysicalDeviceVulkan12Features, shaderInputAttachmentArrayNonUniformIndexing), 1685 FEATURE_ITEM (VkPhysicalDeviceVulkan12Features, shaderUniformTexelBufferArrayNonUniformIndexing), 1686 FEATURE_ITEM (VkPhysicalDeviceVulkan12Features, shaderStorageTexelBufferArrayNonUniformIndexing), 1687 FEATURE_ITEM (VkPhysicalDeviceVulkan12Features, descriptorBindingUniformBufferUpdateAfterBind), 1688 FEATURE_ITEM (VkPhysicalDeviceVulkan12Features, descriptorBindingSampledImageUpdateAfterBind), 1689 FEATURE_ITEM (VkPhysicalDeviceVulkan12Features, descriptorBindingStorageImageUpdateAfterBind), 1690 FEATURE_ITEM (VkPhysicalDeviceVulkan12Features, descriptorBindingStorageBufferUpdateAfterBind), 1691 FEATURE_ITEM (VkPhysicalDeviceVulkan12Features, descriptorBindingUniformTexelBufferUpdateAfterBind), 1692 FEATURE_ITEM (VkPhysicalDeviceVulkan12Features, descriptorBindingStorageTexelBufferUpdateAfterBind), 1693 FEATURE_ITEM (VkPhysicalDeviceVulkan12Features, descriptorBindingUpdateUnusedWhilePending), 1694 FEATURE_ITEM (VkPhysicalDeviceVulkan12Features, descriptorBindingPartiallyBound), 1695 FEATURE_ITEM (VkPhysicalDeviceVulkan12Features, descriptorBindingVariableDescriptorCount), 1696 FEATURE_ITEM (VkPhysicalDeviceVulkan12Features, runtimeDescriptorArray), 1697 FEATURE_ITEM (VkPhysicalDeviceVulkan12Features, samplerFilterMinmax), 1698 FEATURE_ITEM (VkPhysicalDeviceVulkan12Features, scalarBlockLayout), 1699 FEATURE_ITEM (VkPhysicalDeviceVulkan12Features, imagelessFramebuffer), 1700 FEATURE_ITEM (VkPhysicalDeviceVulkan12Features, uniformBufferStandardLayout), 1701 FEATURE_ITEM (VkPhysicalDeviceVulkan12Features, shaderSubgroupExtendedTypes), 1702 FEATURE_ITEM (VkPhysicalDeviceVulkan12Features, separateDepthStencilLayouts), 1703 FEATURE_ITEM (VkPhysicalDeviceVulkan12Features, hostQueryReset), 1704 FEATURE_ITEM (VkPhysicalDeviceVulkan12Features, timelineSemaphore), 1705 FEATURE_ITEM (VkPhysicalDeviceVulkan12Features, bufferDeviceAddress), 1706 FEATURE_ITEM (VkPhysicalDeviceVulkan12Features, bufferDeviceAddressCaptureReplay), 1707 FEATURE_ITEM (VkPhysicalDeviceVulkan12Features, bufferDeviceAddressMultiDevice), 1708 FEATURE_ITEM (VkPhysicalDeviceVulkan12Features, vulkanMemoryModel), 1709 FEATURE_ITEM (VkPhysicalDeviceVulkan12Features, vulkanMemoryModelDeviceScope), 1710 FEATURE_ITEM (VkPhysicalDeviceVulkan12Features, vulkanMemoryModelAvailabilityVisibilityChains), 1711 FEATURE_ITEM (VkPhysicalDeviceVulkan12Features, shaderOutputViewportIndex), 1712 FEATURE_ITEM (VkPhysicalDeviceVulkan12Features, shaderOutputLayer), 1713 FEATURE_ITEM (VkPhysicalDeviceVulkan12Features, subgroupBroadcastDynamicId), 1714 }; 1715 auto* supportedFeatures = reinterpret_cast<const VkPhysicalDeviceVulkan12Features*>(featuresStruct); 1716 checkFeatures(vkp, instance, instanceDriver, physicalDevice, 47, features, supportedFeatures, queueFamilyIndex, queueCount, queuePriority, numErrors, resultCollector, DE_NULL, emptyDeviceFeatures, memReservationStatMax, isSubProcess, context.getUsedApiVersion()); 1717 } 1718 1719 if (numErrors > 0) 1720 return tcu::TestStatus(resultCollector.getResult(), "Enabling unsupported features didn't return VK_ERROR_FEATURE_NOT_PRESENT."); 1721 else 1722 return tcu::TestStatus(resultCollector.getResult(), resultCollector.getMessage()); 1723} 1724 1725 1726tcu::TestStatus createDeviceWithUnsupportedFeaturesTestVulkan13Features (Context& context) 1727{ 1728 const PlatformInterface& vkp = context.getPlatformInterface(); 1729 tcu::TestLog& log = context.getTestContext().getLog(); 1730 tcu::ResultCollector resultCollector (log); 1731 const CustomInstance instance (createCustomInstanceWithExtensions(context, context.getInstanceExtensions(), DE_NULL, true)); 1732 const InstanceDriver& instanceDriver (instance.getDriver()); 1733 const VkPhysicalDevice physicalDevice = chooseDevice(instanceDriver, instance, context.getTestContext().getCommandLine()); 1734 const deUint32 queueFamilyIndex = 0; 1735 const deUint32 queueCount = 1; 1736 const float queuePriority = 1.0f; 1737 const DeviceFeatures deviceFeaturesAll (context.getInstanceInterface(), context.getUsedApiVersion(), physicalDevice, context.getInstanceExtensions(), context.getDeviceExtensions(), DE_TRUE); 1738 const VkPhysicalDeviceFeatures2 deviceFeatures2 = deviceFeaturesAll.getCoreFeatures2(); 1739 int numErrors = 0; 1740 bool isSubProcess = context.getTestContext().getCommandLine().isSubProcess(); 1741 VkDeviceObjectReservationCreateInfo memReservationStatMax = context.getResourceInterface()->getStatMax(); 1742 1743 VkPhysicalDeviceFeatures emptyDeviceFeatures; 1744 deMemset(&emptyDeviceFeatures, 0, sizeof(emptyDeviceFeatures)); 1745 1746 // Only non-core extensions will be used when creating the device. 1747 const auto& extensionNames = context.getDeviceCreationExtensions(); 1748 DE_UNREF(extensionNames); // In some cases this is not used. 1749 1750 if (const void* featuresStruct = findStructureInChain(const_cast<const void*>(deviceFeatures2.pNext), getStructureType<VkPhysicalDeviceVulkan13Features>())) 1751 { 1752 static const Feature features[] = 1753 { 1754 FEATURE_ITEM (VkPhysicalDeviceVulkan13Features, robustImageAccess), 1755 FEATURE_ITEM (VkPhysicalDeviceVulkan13Features, inlineUniformBlock), 1756 FEATURE_ITEM (VkPhysicalDeviceVulkan13Features, descriptorBindingInlineUniformBlockUpdateAfterBind), 1757 FEATURE_ITEM (VkPhysicalDeviceVulkan13Features, pipelineCreationCacheControl), 1758 FEATURE_ITEM (VkPhysicalDeviceVulkan13Features, privateData), 1759 FEATURE_ITEM (VkPhysicalDeviceVulkan13Features, shaderDemoteToHelperInvocation), 1760 FEATURE_ITEM (VkPhysicalDeviceVulkan13Features, shaderTerminateInvocation), 1761 FEATURE_ITEM (VkPhysicalDeviceVulkan13Features, subgroupSizeControl), 1762 FEATURE_ITEM (VkPhysicalDeviceVulkan13Features, computeFullSubgroups), 1763 FEATURE_ITEM (VkPhysicalDeviceVulkan13Features, synchronization2), 1764 FEATURE_ITEM (VkPhysicalDeviceVulkan13Features, textureCompressionASTC_HDR), 1765 FEATURE_ITEM (VkPhysicalDeviceVulkan13Features, shaderZeroInitializeWorkgroupMemory), 1766 FEATURE_ITEM (VkPhysicalDeviceVulkan13Features, dynamicRendering), 1767 FEATURE_ITEM (VkPhysicalDeviceVulkan13Features, shaderIntegerDotProduct), 1768 FEATURE_ITEM (VkPhysicalDeviceVulkan13Features, maintenance4), 1769 }; 1770 auto* supportedFeatures = reinterpret_cast<const VkPhysicalDeviceVulkan13Features*>(featuresStruct); 1771 checkFeatures(vkp, instance, instanceDriver, physicalDevice, 15, features, supportedFeatures, queueFamilyIndex, queueCount, queuePriority, numErrors, resultCollector, DE_NULL, emptyDeviceFeatures, memReservationStatMax, isSubProcess, context.getUsedApiVersion()); 1772 } 1773 1774 if (numErrors > 0) 1775 return tcu::TestStatus(resultCollector.getResult(), "Enabling unsupported features didn't return VK_ERROR_FEATURE_NOT_PRESENT."); 1776 else 1777 return tcu::TestStatus(resultCollector.getResult(), resultCollector.getMessage()); 1778} 1779 1780 1781tcu::TestStatus createDeviceWithUnsupportedFeaturesTestCustomBorderColorFeaturesEXT (Context& context) 1782{ 1783 const PlatformInterface& vkp = context.getPlatformInterface(); 1784 tcu::TestLog& log = context.getTestContext().getLog(); 1785 tcu::ResultCollector resultCollector (log); 1786 const CustomInstance instance (createCustomInstanceWithExtensions(context, context.getInstanceExtensions(), DE_NULL, true)); 1787 const InstanceDriver& instanceDriver (instance.getDriver()); 1788 const VkPhysicalDevice physicalDevice = chooseDevice(instanceDriver, instance, context.getTestContext().getCommandLine()); 1789 const deUint32 queueFamilyIndex = 0; 1790 const deUint32 queueCount = 1; 1791 const float queuePriority = 1.0f; 1792 const DeviceFeatures deviceFeaturesAll (context.getInstanceInterface(), context.getUsedApiVersion(), physicalDevice, context.getInstanceExtensions(), context.getDeviceExtensions(), DE_TRUE); 1793 const VkPhysicalDeviceFeatures2 deviceFeatures2 = deviceFeaturesAll.getCoreFeatures2(); 1794 int numErrors = 0; 1795 bool isSubProcess = context.getTestContext().getCommandLine().isSubProcess(); 1796 VkDeviceObjectReservationCreateInfo memReservationStatMax = context.getResourceInterface()->getStatMax(); 1797 1798 VkPhysicalDeviceFeatures emptyDeviceFeatures; 1799 deMemset(&emptyDeviceFeatures, 0, sizeof(emptyDeviceFeatures)); 1800 1801 // Only non-core extensions will be used when creating the device. 1802 const auto& extensionNames = context.getDeviceCreationExtensions(); 1803 DE_UNREF(extensionNames); // In some cases this is not used. 1804 1805 if (const void* featuresStruct = findStructureInChain(const_cast<const void*>(deviceFeatures2.pNext), getStructureType<VkPhysicalDeviceCustomBorderColorFeaturesEXT>())) 1806 { 1807 static const Feature features[] = 1808 { 1809 FEATURE_ITEM (VkPhysicalDeviceCustomBorderColorFeaturesEXT, customBorderColors), 1810 FEATURE_ITEM (VkPhysicalDeviceCustomBorderColorFeaturesEXT, customBorderColorWithoutFormat), 1811 }; 1812 auto* supportedFeatures = reinterpret_cast<const VkPhysicalDeviceCustomBorderColorFeaturesEXT*>(featuresStruct); 1813 checkFeatures(vkp, instance, instanceDriver, physicalDevice, 2, features, supportedFeatures, queueFamilyIndex, queueCount, queuePriority, numErrors, resultCollector, &extensionNames, emptyDeviceFeatures, memReservationStatMax, isSubProcess, context.getUsedApiVersion()); 1814 } 1815 1816 if (numErrors > 0) 1817 return tcu::TestStatus(resultCollector.getResult(), "Enabling unsupported features didn't return VK_ERROR_FEATURE_NOT_PRESENT."); 1818 else 1819 return tcu::TestStatus(resultCollector.getResult(), resultCollector.getMessage()); 1820} 1821 1822 1823tcu::TestStatus createDeviceWithUnsupportedFeaturesTestExtendedDynamicStateFeaturesEXT (Context& context) 1824{ 1825 const PlatformInterface& vkp = context.getPlatformInterface(); 1826 tcu::TestLog& log = context.getTestContext().getLog(); 1827 tcu::ResultCollector resultCollector (log); 1828 const CustomInstance instance (createCustomInstanceWithExtensions(context, context.getInstanceExtensions(), DE_NULL, true)); 1829 const InstanceDriver& instanceDriver (instance.getDriver()); 1830 const VkPhysicalDevice physicalDevice = chooseDevice(instanceDriver, instance, context.getTestContext().getCommandLine()); 1831 const deUint32 queueFamilyIndex = 0; 1832 const deUint32 queueCount = 1; 1833 const float queuePriority = 1.0f; 1834 const DeviceFeatures deviceFeaturesAll (context.getInstanceInterface(), context.getUsedApiVersion(), physicalDevice, context.getInstanceExtensions(), context.getDeviceExtensions(), DE_TRUE); 1835 const VkPhysicalDeviceFeatures2 deviceFeatures2 = deviceFeaturesAll.getCoreFeatures2(); 1836 int numErrors = 0; 1837 bool isSubProcess = context.getTestContext().getCommandLine().isSubProcess(); 1838 VkDeviceObjectReservationCreateInfo memReservationStatMax = context.getResourceInterface()->getStatMax(); 1839 1840 VkPhysicalDeviceFeatures emptyDeviceFeatures; 1841 deMemset(&emptyDeviceFeatures, 0, sizeof(emptyDeviceFeatures)); 1842 1843 // Only non-core extensions will be used when creating the device. 1844 const auto& extensionNames = context.getDeviceCreationExtensions(); 1845 DE_UNREF(extensionNames); // In some cases this is not used. 1846 1847 if (const void* featuresStruct = findStructureInChain(const_cast<const void*>(deviceFeatures2.pNext), getStructureType<VkPhysicalDeviceExtendedDynamicStateFeaturesEXT>())) 1848 { 1849 static const Feature features[] = 1850 { 1851 FEATURE_ITEM (VkPhysicalDeviceExtendedDynamicStateFeaturesEXT, extendedDynamicState), 1852 }; 1853 auto* supportedFeatures = reinterpret_cast<const VkPhysicalDeviceExtendedDynamicStateFeaturesEXT*>(featuresStruct); 1854 checkFeatures(vkp, instance, instanceDriver, physicalDevice, 1, features, supportedFeatures, queueFamilyIndex, queueCount, queuePriority, numErrors, resultCollector, &extensionNames, emptyDeviceFeatures, memReservationStatMax, isSubProcess, context.getUsedApiVersion()); 1855 } 1856 1857 if (numErrors > 0) 1858 return tcu::TestStatus(resultCollector.getResult(), "Enabling unsupported features didn't return VK_ERROR_FEATURE_NOT_PRESENT."); 1859 else 1860 return tcu::TestStatus(resultCollector.getResult(), resultCollector.getMessage()); 1861} 1862 1863 1864tcu::TestStatus createDeviceWithUnsupportedFeaturesTestExtendedDynamicState2FeaturesEXT (Context& context) 1865{ 1866 const PlatformInterface& vkp = context.getPlatformInterface(); 1867 tcu::TestLog& log = context.getTestContext().getLog(); 1868 tcu::ResultCollector resultCollector (log); 1869 const CustomInstance instance (createCustomInstanceWithExtensions(context, context.getInstanceExtensions(), DE_NULL, true)); 1870 const InstanceDriver& instanceDriver (instance.getDriver()); 1871 const VkPhysicalDevice physicalDevice = chooseDevice(instanceDriver, instance, context.getTestContext().getCommandLine()); 1872 const deUint32 queueFamilyIndex = 0; 1873 const deUint32 queueCount = 1; 1874 const float queuePriority = 1.0f; 1875 const DeviceFeatures deviceFeaturesAll (context.getInstanceInterface(), context.getUsedApiVersion(), physicalDevice, context.getInstanceExtensions(), context.getDeviceExtensions(), DE_TRUE); 1876 const VkPhysicalDeviceFeatures2 deviceFeatures2 = deviceFeaturesAll.getCoreFeatures2(); 1877 int numErrors = 0; 1878 bool isSubProcess = context.getTestContext().getCommandLine().isSubProcess(); 1879 VkDeviceObjectReservationCreateInfo memReservationStatMax = context.getResourceInterface()->getStatMax(); 1880 1881 VkPhysicalDeviceFeatures emptyDeviceFeatures; 1882 deMemset(&emptyDeviceFeatures, 0, sizeof(emptyDeviceFeatures)); 1883 1884 // Only non-core extensions will be used when creating the device. 1885 const auto& extensionNames = context.getDeviceCreationExtensions(); 1886 DE_UNREF(extensionNames); // In some cases this is not used. 1887 1888 if (const void* featuresStruct = findStructureInChain(const_cast<const void*>(deviceFeatures2.pNext), getStructureType<VkPhysicalDeviceExtendedDynamicState2FeaturesEXT>())) 1889 { 1890 static const Feature features[] = 1891 { 1892 FEATURE_ITEM (VkPhysicalDeviceExtendedDynamicState2FeaturesEXT, extendedDynamicState2), 1893 FEATURE_ITEM (VkPhysicalDeviceExtendedDynamicState2FeaturesEXT, extendedDynamicState2LogicOp), 1894 FEATURE_ITEM (VkPhysicalDeviceExtendedDynamicState2FeaturesEXT, extendedDynamicState2PatchControlPoints), 1895 }; 1896 auto* supportedFeatures = reinterpret_cast<const VkPhysicalDeviceExtendedDynamicState2FeaturesEXT*>(featuresStruct); 1897 checkFeatures(vkp, instance, instanceDriver, physicalDevice, 3, features, supportedFeatures, queueFamilyIndex, queueCount, queuePriority, numErrors, resultCollector, &extensionNames, emptyDeviceFeatures, memReservationStatMax, isSubProcess, context.getUsedApiVersion()); 1898 } 1899 1900 if (numErrors > 0) 1901 return tcu::TestStatus(resultCollector.getResult(), "Enabling unsupported features didn't return VK_ERROR_FEATURE_NOT_PRESENT."); 1902 else 1903 return tcu::TestStatus(resultCollector.getResult(), resultCollector.getMessage()); 1904} 1905 1906 1907tcu::TestStatus createDeviceWithUnsupportedFeaturesTestRobustness2FeaturesEXT (Context& context) 1908{ 1909 const PlatformInterface& vkp = context.getPlatformInterface(); 1910 tcu::TestLog& log = context.getTestContext().getLog(); 1911 tcu::ResultCollector resultCollector (log); 1912 const CustomInstance instance (createCustomInstanceWithExtensions(context, context.getInstanceExtensions(), DE_NULL, true)); 1913 const InstanceDriver& instanceDriver (instance.getDriver()); 1914 const VkPhysicalDevice physicalDevice = chooseDevice(instanceDriver, instance, context.getTestContext().getCommandLine()); 1915 const deUint32 queueFamilyIndex = 0; 1916 const deUint32 queueCount = 1; 1917 const float queuePriority = 1.0f; 1918 const DeviceFeatures deviceFeaturesAll (context.getInstanceInterface(), context.getUsedApiVersion(), physicalDevice, context.getInstanceExtensions(), context.getDeviceExtensions(), DE_TRUE); 1919 const VkPhysicalDeviceFeatures2 deviceFeatures2 = deviceFeaturesAll.getCoreFeatures2(); 1920 int numErrors = 0; 1921 bool isSubProcess = context.getTestContext().getCommandLine().isSubProcess(); 1922 VkDeviceObjectReservationCreateInfo memReservationStatMax = context.getResourceInterface()->getStatMax(); 1923 1924 VkPhysicalDeviceFeatures emptyDeviceFeatures; 1925 deMemset(&emptyDeviceFeatures, 0, sizeof(emptyDeviceFeatures)); 1926 1927 // Only non-core extensions will be used when creating the device. 1928 const auto& extensionNames = context.getDeviceCreationExtensions(); 1929 DE_UNREF(extensionNames); // In some cases this is not used. 1930 1931 if (const void* featuresStruct = findStructureInChain(const_cast<const void*>(deviceFeatures2.pNext), getStructureType<VkPhysicalDeviceRobustness2FeaturesEXT>())) 1932 { 1933 static const Feature features[] = 1934 { 1935 FEATURE_ITEM (VkPhysicalDeviceRobustness2FeaturesEXT, robustBufferAccess2), 1936 FEATURE_ITEM (VkPhysicalDeviceRobustness2FeaturesEXT, robustImageAccess2), 1937 FEATURE_ITEM (VkPhysicalDeviceRobustness2FeaturesEXT, nullDescriptor), 1938 }; 1939 auto* supportedFeatures = reinterpret_cast<const VkPhysicalDeviceRobustness2FeaturesEXT*>(featuresStruct); 1940 checkFeatures(vkp, instance, instanceDriver, physicalDevice, 3, features, supportedFeatures, queueFamilyIndex, queueCount, queuePriority, numErrors, resultCollector, &extensionNames, emptyDeviceFeatures, memReservationStatMax, isSubProcess, context.getUsedApiVersion()); 1941 } 1942 1943 if (numErrors > 0) 1944 return tcu::TestStatus(resultCollector.getResult(), "Enabling unsupported features didn't return VK_ERROR_FEATURE_NOT_PRESENT."); 1945 else 1946 return tcu::TestStatus(resultCollector.getResult(), resultCollector.getMessage()); 1947} 1948 1949 1950tcu::TestStatus createDeviceWithUnsupportedFeaturesTestImageRobustnessFeaturesEXT (Context& context) 1951{ 1952 const PlatformInterface& vkp = context.getPlatformInterface(); 1953 tcu::TestLog& log = context.getTestContext().getLog(); 1954 tcu::ResultCollector resultCollector (log); 1955 const CustomInstance instance (createCustomInstanceWithExtensions(context, context.getInstanceExtensions(), DE_NULL, true)); 1956 const InstanceDriver& instanceDriver (instance.getDriver()); 1957 const VkPhysicalDevice physicalDevice = chooseDevice(instanceDriver, instance, context.getTestContext().getCommandLine()); 1958 const deUint32 queueFamilyIndex = 0; 1959 const deUint32 queueCount = 1; 1960 const float queuePriority = 1.0f; 1961 const DeviceFeatures deviceFeaturesAll (context.getInstanceInterface(), context.getUsedApiVersion(), physicalDevice, context.getInstanceExtensions(), context.getDeviceExtensions(), DE_TRUE); 1962 const VkPhysicalDeviceFeatures2 deviceFeatures2 = deviceFeaturesAll.getCoreFeatures2(); 1963 int numErrors = 0; 1964 bool isSubProcess = context.getTestContext().getCommandLine().isSubProcess(); 1965 VkDeviceObjectReservationCreateInfo memReservationStatMax = context.getResourceInterface()->getStatMax(); 1966 1967 VkPhysicalDeviceFeatures emptyDeviceFeatures; 1968 deMemset(&emptyDeviceFeatures, 0, sizeof(emptyDeviceFeatures)); 1969 1970 // Only non-core extensions will be used when creating the device. 1971 const auto& extensionNames = context.getDeviceCreationExtensions(); 1972 DE_UNREF(extensionNames); // In some cases this is not used. 1973 1974 if (const void* featuresStruct = findStructureInChain(const_cast<const void*>(deviceFeatures2.pNext), getStructureType<VkPhysicalDeviceImageRobustnessFeaturesEXT>())) 1975 { 1976 static const Feature features[] = 1977 { 1978 FEATURE_ITEM (VkPhysicalDeviceImageRobustnessFeaturesEXT, robustImageAccess), 1979 }; 1980 auto* supportedFeatures = reinterpret_cast<const VkPhysicalDeviceImageRobustnessFeaturesEXT*>(featuresStruct); 1981 checkFeatures(vkp, instance, instanceDriver, physicalDevice, 1, features, supportedFeatures, queueFamilyIndex, queueCount, queuePriority, numErrors, resultCollector, &extensionNames, emptyDeviceFeatures, memReservationStatMax, isSubProcess, context.getUsedApiVersion()); 1982 } 1983 1984 if (numErrors > 0) 1985 return tcu::TestStatus(resultCollector.getResult(), "Enabling unsupported features didn't return VK_ERROR_FEATURE_NOT_PRESENT."); 1986 else 1987 return tcu::TestStatus(resultCollector.getResult(), resultCollector.getMessage()); 1988} 1989 1990 1991tcu::TestStatus createDeviceWithUnsupportedFeaturesTest4444FormatsFeaturesEXT (Context& context) 1992{ 1993 const PlatformInterface& vkp = context.getPlatformInterface(); 1994 tcu::TestLog& log = context.getTestContext().getLog(); 1995 tcu::ResultCollector resultCollector (log); 1996 const CustomInstance instance (createCustomInstanceWithExtensions(context, context.getInstanceExtensions(), DE_NULL, true)); 1997 const InstanceDriver& instanceDriver (instance.getDriver()); 1998 const VkPhysicalDevice physicalDevice = chooseDevice(instanceDriver, instance, context.getTestContext().getCommandLine()); 1999 const deUint32 queueFamilyIndex = 0; 2000 const deUint32 queueCount = 1; 2001 const float queuePriority = 1.0f; 2002 const DeviceFeatures deviceFeaturesAll (context.getInstanceInterface(), context.getUsedApiVersion(), physicalDevice, context.getInstanceExtensions(), context.getDeviceExtensions(), DE_TRUE); 2003 const VkPhysicalDeviceFeatures2 deviceFeatures2 = deviceFeaturesAll.getCoreFeatures2(); 2004 int numErrors = 0; 2005 bool isSubProcess = context.getTestContext().getCommandLine().isSubProcess(); 2006 VkDeviceObjectReservationCreateInfo memReservationStatMax = context.getResourceInterface()->getStatMax(); 2007 2008 VkPhysicalDeviceFeatures emptyDeviceFeatures; 2009 deMemset(&emptyDeviceFeatures, 0, sizeof(emptyDeviceFeatures)); 2010 2011 // Only non-core extensions will be used when creating the device. 2012 const auto& extensionNames = context.getDeviceCreationExtensions(); 2013 DE_UNREF(extensionNames); // In some cases this is not used. 2014 2015 if (const void* featuresStruct = findStructureInChain(const_cast<const void*>(deviceFeatures2.pNext), getStructureType<VkPhysicalDevice4444FormatsFeaturesEXT>())) 2016 { 2017 static const Feature features[] = 2018 { 2019 FEATURE_ITEM (VkPhysicalDevice4444FormatsFeaturesEXT, formatA4R4G4B4), 2020 FEATURE_ITEM (VkPhysicalDevice4444FormatsFeaturesEXT, formatA4B4G4R4), 2021 }; 2022 auto* supportedFeatures = reinterpret_cast<const VkPhysicalDevice4444FormatsFeaturesEXT*>(featuresStruct); 2023 checkFeatures(vkp, instance, instanceDriver, physicalDevice, 2, features, supportedFeatures, queueFamilyIndex, queueCount, queuePriority, numErrors, resultCollector, &extensionNames, emptyDeviceFeatures, memReservationStatMax, isSubProcess, context.getUsedApiVersion()); 2024 } 2025 2026 if (numErrors > 0) 2027 return tcu::TestStatus(resultCollector.getResult(), "Enabling unsupported features didn't return VK_ERROR_FEATURE_NOT_PRESENT."); 2028 else 2029 return tcu::TestStatus(resultCollector.getResult(), resultCollector.getMessage()); 2030} 2031 2032 2033tcu::TestStatus createDeviceWithUnsupportedFeaturesTestShaderImageAtomicInt64FeaturesEXT (Context& context) 2034{ 2035 const PlatformInterface& vkp = context.getPlatformInterface(); 2036 tcu::TestLog& log = context.getTestContext().getLog(); 2037 tcu::ResultCollector resultCollector (log); 2038 const CustomInstance instance (createCustomInstanceWithExtensions(context, context.getInstanceExtensions(), DE_NULL, true)); 2039 const InstanceDriver& instanceDriver (instance.getDriver()); 2040 const VkPhysicalDevice physicalDevice = chooseDevice(instanceDriver, instance, context.getTestContext().getCommandLine()); 2041 const deUint32 queueFamilyIndex = 0; 2042 const deUint32 queueCount = 1; 2043 const float queuePriority = 1.0f; 2044 const DeviceFeatures deviceFeaturesAll (context.getInstanceInterface(), context.getUsedApiVersion(), physicalDevice, context.getInstanceExtensions(), context.getDeviceExtensions(), DE_TRUE); 2045 const VkPhysicalDeviceFeatures2 deviceFeatures2 = deviceFeaturesAll.getCoreFeatures2(); 2046 int numErrors = 0; 2047 bool isSubProcess = context.getTestContext().getCommandLine().isSubProcess(); 2048 VkDeviceObjectReservationCreateInfo memReservationStatMax = context.getResourceInterface()->getStatMax(); 2049 2050 VkPhysicalDeviceFeatures emptyDeviceFeatures; 2051 deMemset(&emptyDeviceFeatures, 0, sizeof(emptyDeviceFeatures)); 2052 2053 // Only non-core extensions will be used when creating the device. 2054 const auto& extensionNames = context.getDeviceCreationExtensions(); 2055 DE_UNREF(extensionNames); // In some cases this is not used. 2056 2057 if (const void* featuresStruct = findStructureInChain(const_cast<const void*>(deviceFeatures2.pNext), getStructureType<VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT>())) 2058 { 2059 static const Feature features[] = 2060 { 2061 FEATURE_ITEM (VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT, shaderImageInt64Atomics), 2062 FEATURE_ITEM (VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT, sparseImageInt64Atomics), 2063 }; 2064 auto* supportedFeatures = reinterpret_cast<const VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT*>(featuresStruct); 2065 checkFeatures(vkp, instance, instanceDriver, physicalDevice, 2, features, supportedFeatures, queueFamilyIndex, queueCount, queuePriority, numErrors, resultCollector, &extensionNames, emptyDeviceFeatures, memReservationStatMax, isSubProcess, context.getUsedApiVersion()); 2066 } 2067 2068 if (numErrors > 0) 2069 return tcu::TestStatus(resultCollector.getResult(), "Enabling unsupported features didn't return VK_ERROR_FEATURE_NOT_PRESENT."); 2070 else 2071 return tcu::TestStatus(resultCollector.getResult(), resultCollector.getMessage()); 2072} 2073 2074 2075tcu::TestStatus createDeviceWithUnsupportedFeaturesTestFragmentShadingRateFeaturesKHR (Context& context) 2076{ 2077 const PlatformInterface& vkp = context.getPlatformInterface(); 2078 tcu::TestLog& log = context.getTestContext().getLog(); 2079 tcu::ResultCollector resultCollector (log); 2080 const CustomInstance instance (createCustomInstanceWithExtensions(context, context.getInstanceExtensions(), DE_NULL, true)); 2081 const InstanceDriver& instanceDriver (instance.getDriver()); 2082 const VkPhysicalDevice physicalDevice = chooseDevice(instanceDriver, instance, context.getTestContext().getCommandLine()); 2083 const deUint32 queueFamilyIndex = 0; 2084 const deUint32 queueCount = 1; 2085 const float queuePriority = 1.0f; 2086 const DeviceFeatures deviceFeaturesAll (context.getInstanceInterface(), context.getUsedApiVersion(), physicalDevice, context.getInstanceExtensions(), context.getDeviceExtensions(), DE_TRUE); 2087 const VkPhysicalDeviceFeatures2 deviceFeatures2 = deviceFeaturesAll.getCoreFeatures2(); 2088 int numErrors = 0; 2089 bool isSubProcess = context.getTestContext().getCommandLine().isSubProcess(); 2090 VkDeviceObjectReservationCreateInfo memReservationStatMax = context.getResourceInterface()->getStatMax(); 2091 2092 VkPhysicalDeviceFeatures emptyDeviceFeatures; 2093 deMemset(&emptyDeviceFeatures, 0, sizeof(emptyDeviceFeatures)); 2094 2095 // Only non-core extensions will be used when creating the device. 2096 const auto& extensionNames = context.getDeviceCreationExtensions(); 2097 DE_UNREF(extensionNames); // In some cases this is not used. 2098 2099 if (const void* featuresStruct = findStructureInChain(const_cast<const void*>(deviceFeatures2.pNext), getStructureType<VkPhysicalDeviceFragmentShadingRateFeaturesKHR>())) 2100 { 2101 static const Feature features[] = 2102 { 2103 FEATURE_ITEM (VkPhysicalDeviceFragmentShadingRateFeaturesKHR, pipelineFragmentShadingRate), 2104 FEATURE_ITEM (VkPhysicalDeviceFragmentShadingRateFeaturesKHR, primitiveFragmentShadingRate), 2105 FEATURE_ITEM (VkPhysicalDeviceFragmentShadingRateFeaturesKHR, attachmentFragmentShadingRate), 2106 }; 2107 auto* supportedFeatures = reinterpret_cast<const VkPhysicalDeviceFragmentShadingRateFeaturesKHR*>(featuresStruct); 2108 checkFeatures(vkp, instance, instanceDriver, physicalDevice, 3, features, supportedFeatures, queueFamilyIndex, queueCount, queuePriority, numErrors, resultCollector, &extensionNames, emptyDeviceFeatures, memReservationStatMax, isSubProcess, context.getUsedApiVersion()); 2109 } 2110 2111 if (numErrors > 0) 2112 return tcu::TestStatus(resultCollector.getResult(), "Enabling unsupported features didn't return VK_ERROR_FEATURE_NOT_PRESENT."); 2113 else 2114 return tcu::TestStatus(resultCollector.getResult(), resultCollector.getMessage()); 2115} 2116 2117 2118tcu::TestStatus createDeviceWithUnsupportedFeaturesTestShaderTerminateInvocationFeaturesKHR (Context& context) 2119{ 2120 const PlatformInterface& vkp = context.getPlatformInterface(); 2121 tcu::TestLog& log = context.getTestContext().getLog(); 2122 tcu::ResultCollector resultCollector (log); 2123 const CustomInstance instance (createCustomInstanceWithExtensions(context, context.getInstanceExtensions(), DE_NULL, true)); 2124 const InstanceDriver& instanceDriver (instance.getDriver()); 2125 const VkPhysicalDevice physicalDevice = chooseDevice(instanceDriver, instance, context.getTestContext().getCommandLine()); 2126 const deUint32 queueFamilyIndex = 0; 2127 const deUint32 queueCount = 1; 2128 const float queuePriority = 1.0f; 2129 const DeviceFeatures deviceFeaturesAll (context.getInstanceInterface(), context.getUsedApiVersion(), physicalDevice, context.getInstanceExtensions(), context.getDeviceExtensions(), DE_TRUE); 2130 const VkPhysicalDeviceFeatures2 deviceFeatures2 = deviceFeaturesAll.getCoreFeatures2(); 2131 int numErrors = 0; 2132 bool isSubProcess = context.getTestContext().getCommandLine().isSubProcess(); 2133 VkDeviceObjectReservationCreateInfo memReservationStatMax = context.getResourceInterface()->getStatMax(); 2134 2135 VkPhysicalDeviceFeatures emptyDeviceFeatures; 2136 deMemset(&emptyDeviceFeatures, 0, sizeof(emptyDeviceFeatures)); 2137 2138 // Only non-core extensions will be used when creating the device. 2139 const auto& extensionNames = context.getDeviceCreationExtensions(); 2140 DE_UNREF(extensionNames); // In some cases this is not used. 2141 2142 if (const void* featuresStruct = findStructureInChain(const_cast<const void*>(deviceFeatures2.pNext), getStructureType<VkPhysicalDeviceShaderTerminateInvocationFeaturesKHR>())) 2143 { 2144 static const Feature features[] = 2145 { 2146 FEATURE_ITEM (VkPhysicalDeviceShaderTerminateInvocationFeaturesKHR, shaderTerminateInvocation), 2147 }; 2148 auto* supportedFeatures = reinterpret_cast<const VkPhysicalDeviceShaderTerminateInvocationFeaturesKHR*>(featuresStruct); 2149 checkFeatures(vkp, instance, instanceDriver, physicalDevice, 1, features, supportedFeatures, queueFamilyIndex, queueCount, queuePriority, numErrors, resultCollector, &extensionNames, emptyDeviceFeatures, memReservationStatMax, isSubProcess, context.getUsedApiVersion()); 2150 } 2151 2152 if (numErrors > 0) 2153 return tcu::TestStatus(resultCollector.getResult(), "Enabling unsupported features didn't return VK_ERROR_FEATURE_NOT_PRESENT."); 2154 else 2155 return tcu::TestStatus(resultCollector.getResult(), resultCollector.getMessage()); 2156} 2157 2158 2159tcu::TestStatus createDeviceWithUnsupportedFeaturesTestVertexInputDynamicStateFeaturesEXT (Context& context) 2160{ 2161 const PlatformInterface& vkp = context.getPlatformInterface(); 2162 tcu::TestLog& log = context.getTestContext().getLog(); 2163 tcu::ResultCollector resultCollector (log); 2164 const CustomInstance instance (createCustomInstanceWithExtensions(context, context.getInstanceExtensions(), DE_NULL, true)); 2165 const InstanceDriver& instanceDriver (instance.getDriver()); 2166 const VkPhysicalDevice physicalDevice = chooseDevice(instanceDriver, instance, context.getTestContext().getCommandLine()); 2167 const deUint32 queueFamilyIndex = 0; 2168 const deUint32 queueCount = 1; 2169 const float queuePriority = 1.0f; 2170 const DeviceFeatures deviceFeaturesAll (context.getInstanceInterface(), context.getUsedApiVersion(), physicalDevice, context.getInstanceExtensions(), context.getDeviceExtensions(), DE_TRUE); 2171 const VkPhysicalDeviceFeatures2 deviceFeatures2 = deviceFeaturesAll.getCoreFeatures2(); 2172 int numErrors = 0; 2173 bool isSubProcess = context.getTestContext().getCommandLine().isSubProcess(); 2174 VkDeviceObjectReservationCreateInfo memReservationStatMax = context.getResourceInterface()->getStatMax(); 2175 2176 VkPhysicalDeviceFeatures emptyDeviceFeatures; 2177 deMemset(&emptyDeviceFeatures, 0, sizeof(emptyDeviceFeatures)); 2178 2179 // Only non-core extensions will be used when creating the device. 2180 const auto& extensionNames = context.getDeviceCreationExtensions(); 2181 DE_UNREF(extensionNames); // In some cases this is not used. 2182 2183 if (const void* featuresStruct = findStructureInChain(const_cast<const void*>(deviceFeatures2.pNext), getStructureType<VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT>())) 2184 { 2185 static const Feature features[] = 2186 { 2187 FEATURE_ITEM (VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT, vertexInputDynamicState), 2188 }; 2189 auto* supportedFeatures = reinterpret_cast<const VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT*>(featuresStruct); 2190 checkFeatures(vkp, instance, instanceDriver, physicalDevice, 1, features, supportedFeatures, queueFamilyIndex, queueCount, queuePriority, numErrors, resultCollector, &extensionNames, emptyDeviceFeatures, memReservationStatMax, isSubProcess, context.getUsedApiVersion()); 2191 } 2192 2193 if (numErrors > 0) 2194 return tcu::TestStatus(resultCollector.getResult(), "Enabling unsupported features didn't return VK_ERROR_FEATURE_NOT_PRESENT."); 2195 else 2196 return tcu::TestStatus(resultCollector.getResult(), resultCollector.getMessage()); 2197} 2198 2199 2200tcu::TestStatus createDeviceWithUnsupportedFeaturesTestColorWriteEnableFeaturesEXT (Context& context) 2201{ 2202 const PlatformInterface& vkp = context.getPlatformInterface(); 2203 tcu::TestLog& log = context.getTestContext().getLog(); 2204 tcu::ResultCollector resultCollector (log); 2205 const CustomInstance instance (createCustomInstanceWithExtensions(context, context.getInstanceExtensions(), DE_NULL, true)); 2206 const InstanceDriver& instanceDriver (instance.getDriver()); 2207 const VkPhysicalDevice physicalDevice = chooseDevice(instanceDriver, instance, context.getTestContext().getCommandLine()); 2208 const deUint32 queueFamilyIndex = 0; 2209 const deUint32 queueCount = 1; 2210 const float queuePriority = 1.0f; 2211 const DeviceFeatures deviceFeaturesAll (context.getInstanceInterface(), context.getUsedApiVersion(), physicalDevice, context.getInstanceExtensions(), context.getDeviceExtensions(), DE_TRUE); 2212 const VkPhysicalDeviceFeatures2 deviceFeatures2 = deviceFeaturesAll.getCoreFeatures2(); 2213 int numErrors = 0; 2214 bool isSubProcess = context.getTestContext().getCommandLine().isSubProcess(); 2215 VkDeviceObjectReservationCreateInfo memReservationStatMax = context.getResourceInterface()->getStatMax(); 2216 2217 VkPhysicalDeviceFeatures emptyDeviceFeatures; 2218 deMemset(&emptyDeviceFeatures, 0, sizeof(emptyDeviceFeatures)); 2219 2220 // Only non-core extensions will be used when creating the device. 2221 const auto& extensionNames = context.getDeviceCreationExtensions(); 2222 DE_UNREF(extensionNames); // In some cases this is not used. 2223 2224 if (const void* featuresStruct = findStructureInChain(const_cast<const void*>(deviceFeatures2.pNext), getStructureType<VkPhysicalDeviceColorWriteEnableFeaturesEXT>())) 2225 { 2226 static const Feature features[] = 2227 { 2228 FEATURE_ITEM (VkPhysicalDeviceColorWriteEnableFeaturesEXT, colorWriteEnable), 2229 }; 2230 auto* supportedFeatures = reinterpret_cast<const VkPhysicalDeviceColorWriteEnableFeaturesEXT*>(featuresStruct); 2231 checkFeatures(vkp, instance, instanceDriver, physicalDevice, 1, features, supportedFeatures, queueFamilyIndex, queueCount, queuePriority, numErrors, resultCollector, &extensionNames, emptyDeviceFeatures, memReservationStatMax, isSubProcess, context.getUsedApiVersion()); 2232 } 2233 2234 if (numErrors > 0) 2235 return tcu::TestStatus(resultCollector.getResult(), "Enabling unsupported features didn't return VK_ERROR_FEATURE_NOT_PRESENT."); 2236 else 2237 return tcu::TestStatus(resultCollector.getResult(), resultCollector.getMessage()); 2238} 2239 2240 2241tcu::TestStatus createDeviceWithUnsupportedFeaturesTestSynchronization2FeaturesKHR (Context& context) 2242{ 2243 const PlatformInterface& vkp = context.getPlatformInterface(); 2244 tcu::TestLog& log = context.getTestContext().getLog(); 2245 tcu::ResultCollector resultCollector (log); 2246 const CustomInstance instance (createCustomInstanceWithExtensions(context, context.getInstanceExtensions(), DE_NULL, true)); 2247 const InstanceDriver& instanceDriver (instance.getDriver()); 2248 const VkPhysicalDevice physicalDevice = chooseDevice(instanceDriver, instance, context.getTestContext().getCommandLine()); 2249 const deUint32 queueFamilyIndex = 0; 2250 const deUint32 queueCount = 1; 2251 const float queuePriority = 1.0f; 2252 const DeviceFeatures deviceFeaturesAll (context.getInstanceInterface(), context.getUsedApiVersion(), physicalDevice, context.getInstanceExtensions(), context.getDeviceExtensions(), DE_TRUE); 2253 const VkPhysicalDeviceFeatures2 deviceFeatures2 = deviceFeaturesAll.getCoreFeatures2(); 2254 int numErrors = 0; 2255 bool isSubProcess = context.getTestContext().getCommandLine().isSubProcess(); 2256 VkDeviceObjectReservationCreateInfo memReservationStatMax = context.getResourceInterface()->getStatMax(); 2257 2258 VkPhysicalDeviceFeatures emptyDeviceFeatures; 2259 deMemset(&emptyDeviceFeatures, 0, sizeof(emptyDeviceFeatures)); 2260 2261 // Only non-core extensions will be used when creating the device. 2262 const auto& extensionNames = context.getDeviceCreationExtensions(); 2263 DE_UNREF(extensionNames); // In some cases this is not used. 2264 2265 if (const void* featuresStruct = findStructureInChain(const_cast<const void*>(deviceFeatures2.pNext), getStructureType<VkPhysicalDeviceSynchronization2FeaturesKHR>())) 2266 { 2267 static const Feature features[] = 2268 { 2269 FEATURE_ITEM (VkPhysicalDeviceSynchronization2FeaturesKHR, synchronization2), 2270 }; 2271 auto* supportedFeatures = reinterpret_cast<const VkPhysicalDeviceSynchronization2FeaturesKHR*>(featuresStruct); 2272 checkFeatures(vkp, instance, instanceDriver, physicalDevice, 1, features, supportedFeatures, queueFamilyIndex, queueCount, queuePriority, numErrors, resultCollector, &extensionNames, emptyDeviceFeatures, memReservationStatMax, isSubProcess, context.getUsedApiVersion()); 2273 } 2274 2275 if (numErrors > 0) 2276 return tcu::TestStatus(resultCollector.getResult(), "Enabling unsupported features didn't return VK_ERROR_FEATURE_NOT_PRESENT."); 2277 else 2278 return tcu::TestStatus(resultCollector.getResult(), resultCollector.getMessage()); 2279} 2280 2281 2282tcu::TestStatus createDeviceWithUnsupportedFeaturesTestVulkanSC10Features (Context& context) 2283{ 2284 const PlatformInterface& vkp = context.getPlatformInterface(); 2285 tcu::TestLog& log = context.getTestContext().getLog(); 2286 tcu::ResultCollector resultCollector (log); 2287 const CustomInstance instance (createCustomInstanceWithExtensions(context, context.getInstanceExtensions(), DE_NULL, true)); 2288 const InstanceDriver& instanceDriver (instance.getDriver()); 2289 const VkPhysicalDevice physicalDevice = chooseDevice(instanceDriver, instance, context.getTestContext().getCommandLine()); 2290 const deUint32 queueFamilyIndex = 0; 2291 const deUint32 queueCount = 1; 2292 const float queuePriority = 1.0f; 2293 const DeviceFeatures deviceFeaturesAll (context.getInstanceInterface(), context.getUsedApiVersion(), physicalDevice, context.getInstanceExtensions(), context.getDeviceExtensions(), DE_TRUE); 2294 const VkPhysicalDeviceFeatures2 deviceFeatures2 = deviceFeaturesAll.getCoreFeatures2(); 2295 int numErrors = 0; 2296 bool isSubProcess = context.getTestContext().getCommandLine().isSubProcess(); 2297 VkDeviceObjectReservationCreateInfo memReservationStatMax = context.getResourceInterface()->getStatMax(); 2298 2299 VkPhysicalDeviceFeatures emptyDeviceFeatures; 2300 deMemset(&emptyDeviceFeatures, 0, sizeof(emptyDeviceFeatures)); 2301 2302 // Only non-core extensions will be used when creating the device. 2303 const auto& extensionNames = context.getDeviceCreationExtensions(); 2304 DE_UNREF(extensionNames); // In some cases this is not used. 2305 2306 if (const void* featuresStruct = findStructureInChain(const_cast<const void*>(deviceFeatures2.pNext), getStructureType<VkPhysicalDeviceVulkanSC10Features>())) 2307 { 2308 static const Feature features[] = 2309 { 2310 FEATURE_ITEM (VkPhysicalDeviceVulkanSC10Features, shaderAtomicInstructions), 2311 }; 2312 auto* supportedFeatures = reinterpret_cast<const VkPhysicalDeviceVulkanSC10Features*>(featuresStruct); 2313 checkFeatures(vkp, instance, instanceDriver, physicalDevice, 1, features, supportedFeatures, queueFamilyIndex, queueCount, queuePriority, numErrors, resultCollector, &extensionNames, emptyDeviceFeatures, memReservationStatMax, isSubProcess, context.getUsedApiVersion()); 2314 } 2315 2316 if (numErrors > 0) 2317 return tcu::TestStatus(resultCollector.getResult(), "Enabling unsupported features didn't return VK_ERROR_FEATURE_NOT_PRESENT."); 2318 else 2319 return tcu::TestStatus(resultCollector.getResult(), resultCollector.getMessage()); 2320} 2321 2322 2323tcu::TestStatus createDeviceWithUnsupportedFeaturesTestYcbcr2Plane444FormatsFeaturesEXT (Context& context) 2324{ 2325 const PlatformInterface& vkp = context.getPlatformInterface(); 2326 tcu::TestLog& log = context.getTestContext().getLog(); 2327 tcu::ResultCollector resultCollector (log); 2328 const CustomInstance instance (createCustomInstanceWithExtensions(context, context.getInstanceExtensions(), DE_NULL, true)); 2329 const InstanceDriver& instanceDriver (instance.getDriver()); 2330 const VkPhysicalDevice physicalDevice = chooseDevice(instanceDriver, instance, context.getTestContext().getCommandLine()); 2331 const deUint32 queueFamilyIndex = 0; 2332 const deUint32 queueCount = 1; 2333 const float queuePriority = 1.0f; 2334 const DeviceFeatures deviceFeaturesAll (context.getInstanceInterface(), context.getUsedApiVersion(), physicalDevice, context.getInstanceExtensions(), context.getDeviceExtensions(), DE_TRUE); 2335 const VkPhysicalDeviceFeatures2 deviceFeatures2 = deviceFeaturesAll.getCoreFeatures2(); 2336 int numErrors = 0; 2337 bool isSubProcess = context.getTestContext().getCommandLine().isSubProcess(); 2338 VkDeviceObjectReservationCreateInfo memReservationStatMax = context.getResourceInterface()->getStatMax(); 2339 2340 VkPhysicalDeviceFeatures emptyDeviceFeatures; 2341 deMemset(&emptyDeviceFeatures, 0, sizeof(emptyDeviceFeatures)); 2342 2343 // Only non-core extensions will be used when creating the device. 2344 const auto& extensionNames = context.getDeviceCreationExtensions(); 2345 DE_UNREF(extensionNames); // In some cases this is not used. 2346 2347 if (const void* featuresStruct = findStructureInChain(const_cast<const void*>(deviceFeatures2.pNext), getStructureType<VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT>())) 2348 { 2349 static const Feature features[] = 2350 { 2351 FEATURE_ITEM (VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT, ycbcr2plane444Formats), 2352 }; 2353 auto* supportedFeatures = reinterpret_cast<const VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT*>(featuresStruct); 2354 checkFeatures(vkp, instance, instanceDriver, physicalDevice, 1, features, supportedFeatures, queueFamilyIndex, queueCount, queuePriority, numErrors, resultCollector, &extensionNames, emptyDeviceFeatures, memReservationStatMax, isSubProcess, context.getUsedApiVersion()); 2355 } 2356 2357 if (numErrors > 0) 2358 return tcu::TestStatus(resultCollector.getResult(), "Enabling unsupported features didn't return VK_ERROR_FEATURE_NOT_PRESENT."); 2359 else 2360 return tcu::TestStatus(resultCollector.getResult(), resultCollector.getMessage()); 2361} 2362 2363 2364tcu::TestStatus createDeviceWithUnsupportedFeaturesTestExternalMemoryScreenBufferFeaturesQNX (Context& context) 2365{ 2366 const PlatformInterface& vkp = context.getPlatformInterface(); 2367 tcu::TestLog& log = context.getTestContext().getLog(); 2368 tcu::ResultCollector resultCollector (log); 2369 const CustomInstance instance (createCustomInstanceWithExtensions(context, context.getInstanceExtensions(), DE_NULL, true)); 2370 const InstanceDriver& instanceDriver (instance.getDriver()); 2371 const VkPhysicalDevice physicalDevice = chooseDevice(instanceDriver, instance, context.getTestContext().getCommandLine()); 2372 const deUint32 queueFamilyIndex = 0; 2373 const deUint32 queueCount = 1; 2374 const float queuePriority = 1.0f; 2375 const DeviceFeatures deviceFeaturesAll (context.getInstanceInterface(), context.getUsedApiVersion(), physicalDevice, context.getInstanceExtensions(), context.getDeviceExtensions(), DE_TRUE); 2376 const VkPhysicalDeviceFeatures2 deviceFeatures2 = deviceFeaturesAll.getCoreFeatures2(); 2377 int numErrors = 0; 2378 bool isSubProcess = context.getTestContext().getCommandLine().isSubProcess(); 2379 VkDeviceObjectReservationCreateInfo memReservationStatMax = context.getResourceInterface()->getStatMax(); 2380 2381 VkPhysicalDeviceFeatures emptyDeviceFeatures; 2382 deMemset(&emptyDeviceFeatures, 0, sizeof(emptyDeviceFeatures)); 2383 2384 // Only non-core extensions will be used when creating the device. 2385 const auto& extensionNames = context.getDeviceCreationExtensions(); 2386 DE_UNREF(extensionNames); // In some cases this is not used. 2387 2388 if (const void* featuresStruct = findStructureInChain(const_cast<const void*>(deviceFeatures2.pNext), getStructureType<VkPhysicalDeviceExternalMemoryScreenBufferFeaturesQNX>())) 2389 { 2390 static const Feature features[] = 2391 { 2392 FEATURE_ITEM (VkPhysicalDeviceExternalMemoryScreenBufferFeaturesQNX, screenBufferImport), 2393 }; 2394 auto* supportedFeatures = reinterpret_cast<const VkPhysicalDeviceExternalMemoryScreenBufferFeaturesQNX*>(featuresStruct); 2395 checkFeatures(vkp, instance, instanceDriver, physicalDevice, 1, features, supportedFeatures, queueFamilyIndex, queueCount, queuePriority, numErrors, resultCollector, &extensionNames, emptyDeviceFeatures, memReservationStatMax, isSubProcess, context.getUsedApiVersion()); 2396 } 2397 2398 if (numErrors > 0) 2399 return tcu::TestStatus(resultCollector.getResult(), "Enabling unsupported features didn't return VK_ERROR_FEATURE_NOT_PRESENT."); 2400 else 2401 return tcu::TestStatus(resultCollector.getResult(), resultCollector.getMessage()); 2402} 2403 2404 2405void addSeparateUnsupportedFeatureTests (tcu::TestCaseGroup* testGroup) 2406{ 2407 2408 addFunctionCase(testGroup, "external_memory_sci_buf_features_nv", createDeviceWithUnsupportedFeaturesTestExternalMemorySciBufFeaturesNV); 2409 addFunctionCase(testGroup, "variable_pointers_features", createDeviceWithUnsupportedFeaturesTestVariablePointersFeatures); 2410 addFunctionCase(testGroup, "external_sci_sync_features_nv", createDeviceWithUnsupportedFeaturesTestExternalSciSyncFeaturesNV); 2411 addFunctionCase(testGroup, "external_sci_sync2_features_nv", createDeviceWithUnsupportedFeaturesTestExternalSciSync2FeaturesNV); 2412 addFunctionCase(testGroup, "multiview_features", createDeviceWithUnsupportedFeaturesTestMultiviewFeatures); 2413 addFunctionCase(testGroup, "16_bit_storage_features", createDeviceWithUnsupportedFeaturesTest16BitStorageFeatures); 2414 addFunctionCase(testGroup, "shader_subgroup_extended_types_features", createDeviceWithUnsupportedFeaturesTestShaderSubgroupExtendedTypesFeatures); 2415 addFunctionCase(testGroup, "sampler_ycbcr_conversion_features", createDeviceWithUnsupportedFeaturesTestSamplerYcbcrConversionFeatures); 2416 addFunctionCase(testGroup, "protected_memory_features", createDeviceWithUnsupportedFeaturesTestProtectedMemoryFeatures); 2417 addFunctionCase(testGroup, "blend_operation_advanced_features_ext", createDeviceWithUnsupportedFeaturesTestBlendOperationAdvancedFeaturesEXT); 2418 addFunctionCase(testGroup, "shader_draw_parameters_features", createDeviceWithUnsupportedFeaturesTestShaderDrawParametersFeatures); 2419 addFunctionCase(testGroup, "shader_float16_int8_features", createDeviceWithUnsupportedFeaturesTestShaderFloat16Int8Features); 2420 addFunctionCase(testGroup, "host_query_reset_features", createDeviceWithUnsupportedFeaturesTestHostQueryResetFeatures); 2421 addFunctionCase(testGroup, "descriptor_indexing_features", createDeviceWithUnsupportedFeaturesTestDescriptorIndexingFeatures); 2422 addFunctionCase(testGroup, "timeline_semaphore_features", createDeviceWithUnsupportedFeaturesTestTimelineSemaphoreFeatures); 2423 addFunctionCase(testGroup, "8_bit_storage_features", createDeviceWithUnsupportedFeaturesTest8BitStorageFeatures); 2424 addFunctionCase(testGroup, "vulkan_memory_model_features", createDeviceWithUnsupportedFeaturesTestVulkanMemoryModelFeatures); 2425 addFunctionCase(testGroup, "shader_atomic_int64_features", createDeviceWithUnsupportedFeaturesTestShaderAtomicInt64Features); 2426 addFunctionCase(testGroup, "shader_atomic_float_features_ext", createDeviceWithUnsupportedFeaturesTestShaderAtomicFloatFeaturesEXT); 2427 addFunctionCase(testGroup, "vertex_attribute_divisor_features_ext", createDeviceWithUnsupportedFeaturesTestVertexAttributeDivisorFeaturesEXT); 2428 addFunctionCase(testGroup, "astc_decode_features_ext", createDeviceWithUnsupportedFeaturesTestASTCDecodeFeaturesEXT); 2429 addFunctionCase(testGroup, "scalar_block_layout_features", createDeviceWithUnsupportedFeaturesTestScalarBlockLayoutFeatures); 2430 addFunctionCase(testGroup, "uniform_buffer_standard_layout_features", createDeviceWithUnsupportedFeaturesTestUniformBufferStandardLayoutFeatures); 2431 addFunctionCase(testGroup, "depth_clip_enable_features_ext", createDeviceWithUnsupportedFeaturesTestDepthClipEnableFeaturesEXT); 2432 addFunctionCase(testGroup, "buffer_device_address_features", createDeviceWithUnsupportedFeaturesTestBufferDeviceAddressFeatures); 2433 addFunctionCase(testGroup, "imageless_framebuffer_features", createDeviceWithUnsupportedFeaturesTestImagelessFramebufferFeatures); 2434 addFunctionCase(testGroup, "texture_compression_astchdr_features_ext", createDeviceWithUnsupportedFeaturesTestTextureCompressionASTCHDRFeaturesEXT); 2435 addFunctionCase(testGroup, "ycbcr_image_arrays_features_ext", createDeviceWithUnsupportedFeaturesTestYcbcrImageArraysFeaturesEXT); 2436 addFunctionCase(testGroup, "performance_query_features_khr", createDeviceWithUnsupportedFeaturesTestPerformanceQueryFeaturesKHR); 2437 addFunctionCase(testGroup, "shader_clock_features_khr", createDeviceWithUnsupportedFeaturesTestShaderClockFeaturesKHR); 2438 addFunctionCase(testGroup, "index_type_uint8_features_ext", createDeviceWithUnsupportedFeaturesTestIndexTypeUint8FeaturesEXT); 2439 addFunctionCase(testGroup, "fragment_shader_interlock_features_ext", createDeviceWithUnsupportedFeaturesTestFragmentShaderInterlockFeaturesEXT); 2440 addFunctionCase(testGroup, "separate_depth_stencil_layouts_features", createDeviceWithUnsupportedFeaturesTestSeparateDepthStencilLayoutsFeatures); 2441 addFunctionCase(testGroup, "shader_demote_to_helper_invocation_features_ext", createDeviceWithUnsupportedFeaturesTestShaderDemoteToHelperInvocationFeaturesEXT); 2442 addFunctionCase(testGroup, "texel_buffer_alignment_features_ext", createDeviceWithUnsupportedFeaturesTestTexelBufferAlignmentFeaturesEXT); 2443 addFunctionCase(testGroup, "subgroup_size_control_features_ext", createDeviceWithUnsupportedFeaturesTestSubgroupSizeControlFeaturesEXT); 2444 addFunctionCase(testGroup, "line_rasterization_features_ext", createDeviceWithUnsupportedFeaturesTestLineRasterizationFeaturesEXT); 2445 addFunctionCase(testGroup, "vulkan11_features", createDeviceWithUnsupportedFeaturesTestVulkan11Features); 2446 addFunctionCase(testGroup, "vulkan12_features", createDeviceWithUnsupportedFeaturesTestVulkan12Features); 2447 addFunctionCase(testGroup, "vulkan13_features", createDeviceWithUnsupportedFeaturesTestVulkan13Features); 2448 addFunctionCase(testGroup, "custom_border_color_features_ext", createDeviceWithUnsupportedFeaturesTestCustomBorderColorFeaturesEXT); 2449 addFunctionCase(testGroup, "extended_dynamic_state_features_ext", createDeviceWithUnsupportedFeaturesTestExtendedDynamicStateFeaturesEXT); 2450 addFunctionCase(testGroup, "extended_dynamic_state2_features_ext", createDeviceWithUnsupportedFeaturesTestExtendedDynamicState2FeaturesEXT); 2451 addFunctionCase(testGroup, "robustness2_features_ext", createDeviceWithUnsupportedFeaturesTestRobustness2FeaturesEXT); 2452 addFunctionCase(testGroup, "image_robustness_features_ext", createDeviceWithUnsupportedFeaturesTestImageRobustnessFeaturesEXT); 2453 addFunctionCase(testGroup, "4444_formats_features_ext", createDeviceWithUnsupportedFeaturesTest4444FormatsFeaturesEXT); 2454 addFunctionCase(testGroup, "shader_image_atomic_int64_features_ext", createDeviceWithUnsupportedFeaturesTestShaderImageAtomicInt64FeaturesEXT); 2455 addFunctionCase(testGroup, "fragment_shading_rate_features_khr", createDeviceWithUnsupportedFeaturesTestFragmentShadingRateFeaturesKHR); 2456 addFunctionCase(testGroup, "shader_terminate_invocation_features_khr", createDeviceWithUnsupportedFeaturesTestShaderTerminateInvocationFeaturesKHR); 2457 addFunctionCase(testGroup, "vertex_input_dynamic_state_features_ext", createDeviceWithUnsupportedFeaturesTestVertexInputDynamicStateFeaturesEXT); 2458 addFunctionCase(testGroup, "color_write_enable_features_ext", createDeviceWithUnsupportedFeaturesTestColorWriteEnableFeaturesEXT); 2459 addFunctionCase(testGroup, "synchronization2_features_khr", createDeviceWithUnsupportedFeaturesTestSynchronization2FeaturesKHR); 2460 addFunctionCase(testGroup, "vulkan_sc10_features", createDeviceWithUnsupportedFeaturesTestVulkanSC10Features); 2461 addFunctionCase(testGroup, "ycbcr2_plane444_formats_features_ext", createDeviceWithUnsupportedFeaturesTestYcbcr2Plane444FormatsFeaturesEXT); 2462 addFunctionCase(testGroup, "external_memory_screen_buffer_features_qnx", createDeviceWithUnsupportedFeaturesTestExternalMemoryScreenBufferFeaturesQNX); 2463} 2464 2465