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 createDeviceWithUnsupportedFeaturesTestDeviceGeneratedCommandsFeaturesNV (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 24 25 VkPhysicalDeviceFeatures emptyDeviceFeatures; 26 deMemset(&emptyDeviceFeatures, 0, sizeof(emptyDeviceFeatures)); 27 28 // Only non-core extensions will be used when creating the device. 29 vector<const char*> coreExtensions; 30 getCoreDeviceExtensions(context.getUsedApiVersion(), coreExtensions); 31 vector<string> nonCoreExtensions(removeExtensions(context.getDeviceExtensions(), coreExtensions)); 32 33 vector<const char*> extensionNames; 34 extensionNames.reserve(nonCoreExtensions.size()); 35 for (const string& extension : nonCoreExtensions) 36 extensionNames.push_back(extension.c_str()); 37 38 if (const void* featuresStruct = findStructureInChain(const_cast<const void*>(deviceFeatures2.pNext), getStructureType<VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV>())) 39 { 40 static const Feature features[] = 41 { 42 FEATURE_ITEM (VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV, deviceGeneratedCommands), 43 }; 44 auto* supportedFeatures = reinterpret_cast<const VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV*>(featuresStruct); 45 checkFeatures(vkp, instance, instanceDriver, physicalDevice, 1, features, supportedFeatures, queueFamilyIndex, queueCount, queuePriority, numErrors, resultCollector, &extensionNames, emptyDeviceFeatures, isSubProcess); 46 } 47 48 if (numErrors > 0) 49 return tcu::TestStatus(resultCollector.getResult(), "Enabling unsupported features didn't return VK_ERROR_FEATURE_NOT_PRESENT."); 50 else 51 return tcu::TestStatus(resultCollector.getResult(), resultCollector.getMessage()); 52} 53 54 55tcu::TestStatus createDeviceWithUnsupportedFeaturesTestPrivateDataFeatures (Context& context) 56{ 57 const PlatformInterface& vkp = context.getPlatformInterface(); 58 tcu::TestLog& log = context.getTestContext().getLog(); 59 tcu::ResultCollector resultCollector (log); 60 const CustomInstance instance (createCustomInstanceWithExtensions(context, context.getInstanceExtensions(), DE_NULL, true)); 61 const InstanceDriver& instanceDriver (instance.getDriver()); 62 const VkPhysicalDevice physicalDevice = chooseDevice(instanceDriver, instance, context.getTestContext().getCommandLine()); 63 const deUint32 queueFamilyIndex = 0; 64 const deUint32 queueCount = 1; 65 const float queuePriority = 1.0f; 66 const DeviceFeatures deviceFeaturesAll (context.getInstanceInterface(), context.getUsedApiVersion(), physicalDevice, context.getInstanceExtensions(), context.getDeviceExtensions(), DE_TRUE); 67 const VkPhysicalDeviceFeatures2 deviceFeatures2 = deviceFeaturesAll.getCoreFeatures2(); 68 int numErrors = 0; 69 bool isSubProcess = context.getTestContext().getCommandLine().isSubProcess(); 70 71 72 VkPhysicalDeviceFeatures emptyDeviceFeatures; 73 deMemset(&emptyDeviceFeatures, 0, sizeof(emptyDeviceFeatures)); 74 75 // Only non-core extensions will be used when creating the device. 76 vector<const char*> coreExtensions; 77 getCoreDeviceExtensions(context.getUsedApiVersion(), coreExtensions); 78 vector<string> nonCoreExtensions(removeExtensions(context.getDeviceExtensions(), coreExtensions)); 79 80 vector<const char*> extensionNames; 81 extensionNames.reserve(nonCoreExtensions.size()); 82 for (const string& extension : nonCoreExtensions) 83 extensionNames.push_back(extension.c_str()); 84 85 if (const void* featuresStruct = findStructureInChain(const_cast<const void*>(deviceFeatures2.pNext), getStructureType<VkPhysicalDevicePrivateDataFeatures>())) 86 { 87 static const Feature features[] = 88 { 89 FEATURE_ITEM (VkPhysicalDevicePrivateDataFeatures, privateData), 90 }; 91 auto* supportedFeatures = reinterpret_cast<const VkPhysicalDevicePrivateDataFeatures*>(featuresStruct); 92 checkFeatures(vkp, instance, instanceDriver, physicalDevice, 1, features, supportedFeatures, queueFamilyIndex, queueCount, queuePriority, numErrors, resultCollector, &extensionNames, emptyDeviceFeatures, isSubProcess); 93 } 94 95 if (numErrors > 0) 96 return tcu::TestStatus(resultCollector.getResult(), "Enabling unsupported features didn't return VK_ERROR_FEATURE_NOT_PRESENT."); 97 else 98 return tcu::TestStatus(resultCollector.getResult(), resultCollector.getMessage()); 99} 100 101 102tcu::TestStatus createDeviceWithUnsupportedFeaturesTestVariablePointersFeatures (Context& context) 103{ 104 const PlatformInterface& vkp = context.getPlatformInterface(); 105 tcu::TestLog& log = context.getTestContext().getLog(); 106 tcu::ResultCollector resultCollector (log); 107 const CustomInstance instance (createCustomInstanceWithExtensions(context, context.getInstanceExtensions(), DE_NULL, true)); 108 const InstanceDriver& instanceDriver (instance.getDriver()); 109 const VkPhysicalDevice physicalDevice = chooseDevice(instanceDriver, instance, context.getTestContext().getCommandLine()); 110 const deUint32 queueFamilyIndex = 0; 111 const deUint32 queueCount = 1; 112 const float queuePriority = 1.0f; 113 const DeviceFeatures deviceFeaturesAll (context.getInstanceInterface(), context.getUsedApiVersion(), physicalDevice, context.getInstanceExtensions(), context.getDeviceExtensions(), DE_TRUE); 114 const VkPhysicalDeviceFeatures2 deviceFeatures2 = deviceFeaturesAll.getCoreFeatures2(); 115 int numErrors = 0; 116 bool isSubProcess = context.getTestContext().getCommandLine().isSubProcess(); 117 118 119 VkPhysicalDeviceFeatures emptyDeviceFeatures; 120 deMemset(&emptyDeviceFeatures, 0, sizeof(emptyDeviceFeatures)); 121 122 // Only non-core extensions will be used when creating the device. 123 vector<const char*> coreExtensions; 124 getCoreDeviceExtensions(context.getUsedApiVersion(), coreExtensions); 125 vector<string> nonCoreExtensions(removeExtensions(context.getDeviceExtensions(), coreExtensions)); 126 127 vector<const char*> extensionNames; 128 extensionNames.reserve(nonCoreExtensions.size()); 129 for (const string& extension : nonCoreExtensions) 130 extensionNames.push_back(extension.c_str()); 131 132 if (const void* featuresStruct = findStructureInChain(const_cast<const void*>(deviceFeatures2.pNext), getStructureType<VkPhysicalDeviceVariablePointersFeatures>())) 133 { 134 static const Feature features[] = 135 { 136 FEATURE_ITEM (VkPhysicalDeviceVariablePointersFeatures, variablePointersStorageBuffer), 137 FEATURE_ITEM (VkPhysicalDeviceVariablePointersFeatures, variablePointers), 138 }; 139 auto* supportedFeatures = reinterpret_cast<const VkPhysicalDeviceVariablePointersFeatures*>(featuresStruct); 140 checkFeatures(vkp, instance, instanceDriver, physicalDevice, 2, features, supportedFeatures, queueFamilyIndex, queueCount, queuePriority, numErrors, resultCollector, &extensionNames, emptyDeviceFeatures, isSubProcess); 141 } 142 143 if (numErrors > 0) 144 return tcu::TestStatus(resultCollector.getResult(), "Enabling unsupported features didn't return VK_ERROR_FEATURE_NOT_PRESENT."); 145 else 146 return tcu::TestStatus(resultCollector.getResult(), resultCollector.getMessage()); 147} 148 149 150tcu::TestStatus createDeviceWithUnsupportedFeaturesTestMultiviewFeatures (Context& context) 151{ 152 const PlatformInterface& vkp = context.getPlatformInterface(); 153 tcu::TestLog& log = context.getTestContext().getLog(); 154 tcu::ResultCollector resultCollector (log); 155 const CustomInstance instance (createCustomInstanceWithExtensions(context, context.getInstanceExtensions(), DE_NULL, true)); 156 const InstanceDriver& instanceDriver (instance.getDriver()); 157 const VkPhysicalDevice physicalDevice = chooseDevice(instanceDriver, instance, context.getTestContext().getCommandLine()); 158 const deUint32 queueFamilyIndex = 0; 159 const deUint32 queueCount = 1; 160 const float queuePriority = 1.0f; 161 const DeviceFeatures deviceFeaturesAll (context.getInstanceInterface(), context.getUsedApiVersion(), physicalDevice, context.getInstanceExtensions(), context.getDeviceExtensions(), DE_TRUE); 162 const VkPhysicalDeviceFeatures2 deviceFeatures2 = deviceFeaturesAll.getCoreFeatures2(); 163 int numErrors = 0; 164 bool isSubProcess = context.getTestContext().getCommandLine().isSubProcess(); 165 166 167 VkPhysicalDeviceFeatures emptyDeviceFeatures; 168 deMemset(&emptyDeviceFeatures, 0, sizeof(emptyDeviceFeatures)); 169 170 // Only non-core extensions will be used when creating the device. 171 vector<const char*> coreExtensions; 172 getCoreDeviceExtensions(context.getUsedApiVersion(), coreExtensions); 173 vector<string> nonCoreExtensions(removeExtensions(context.getDeviceExtensions(), coreExtensions)); 174 175 vector<const char*> extensionNames; 176 extensionNames.reserve(nonCoreExtensions.size()); 177 for (const string& extension : nonCoreExtensions) 178 extensionNames.push_back(extension.c_str()); 179 180 if (const void* featuresStruct = findStructureInChain(const_cast<const void*>(deviceFeatures2.pNext), getStructureType<VkPhysicalDeviceMultiviewFeatures>())) 181 { 182 static const Feature features[] = 183 { 184 FEATURE_ITEM (VkPhysicalDeviceMultiviewFeatures, multiview), 185 FEATURE_ITEM (VkPhysicalDeviceMultiviewFeatures, multiviewGeometryShader), 186 FEATURE_ITEM (VkPhysicalDeviceMultiviewFeatures, multiviewTessellationShader), 187 }; 188 auto* supportedFeatures = reinterpret_cast<const VkPhysicalDeviceMultiviewFeatures*>(featuresStruct); 189 checkFeatures(vkp, instance, instanceDriver, physicalDevice, 3, features, supportedFeatures, queueFamilyIndex, queueCount, queuePriority, numErrors, resultCollector, &extensionNames, emptyDeviceFeatures, isSubProcess); 190 } 191 192 if (numErrors > 0) 193 return tcu::TestStatus(resultCollector.getResult(), "Enabling unsupported features didn't return VK_ERROR_FEATURE_NOT_PRESENT."); 194 else 195 return tcu::TestStatus(resultCollector.getResult(), resultCollector.getMessage()); 196} 197 198 199tcu::TestStatus createDeviceWithUnsupportedFeaturesTestPresentIdFeaturesKHR (Context& context) 200{ 201 const PlatformInterface& vkp = context.getPlatformInterface(); 202 tcu::TestLog& log = context.getTestContext().getLog(); 203 tcu::ResultCollector resultCollector (log); 204 const CustomInstance instance (createCustomInstanceWithExtensions(context, context.getInstanceExtensions(), DE_NULL, true)); 205 const InstanceDriver& instanceDriver (instance.getDriver()); 206 const VkPhysicalDevice physicalDevice = chooseDevice(instanceDriver, instance, context.getTestContext().getCommandLine()); 207 const deUint32 queueFamilyIndex = 0; 208 const deUint32 queueCount = 1; 209 const float queuePriority = 1.0f; 210 const DeviceFeatures deviceFeaturesAll (context.getInstanceInterface(), context.getUsedApiVersion(), physicalDevice, context.getInstanceExtensions(), context.getDeviceExtensions(), DE_TRUE); 211 const VkPhysicalDeviceFeatures2 deviceFeatures2 = deviceFeaturesAll.getCoreFeatures2(); 212 int numErrors = 0; 213 bool isSubProcess = context.getTestContext().getCommandLine().isSubProcess(); 214 215 216 VkPhysicalDeviceFeatures emptyDeviceFeatures; 217 deMemset(&emptyDeviceFeatures, 0, sizeof(emptyDeviceFeatures)); 218 219 // Only non-core extensions will be used when creating the device. 220 vector<const char*> coreExtensions; 221 getCoreDeviceExtensions(context.getUsedApiVersion(), coreExtensions); 222 vector<string> nonCoreExtensions(removeExtensions(context.getDeviceExtensions(), coreExtensions)); 223 224 vector<const char*> extensionNames; 225 extensionNames.reserve(nonCoreExtensions.size()); 226 for (const string& extension : nonCoreExtensions) 227 extensionNames.push_back(extension.c_str()); 228 229 if (const void* featuresStruct = findStructureInChain(const_cast<const void*>(deviceFeatures2.pNext), getStructureType<VkPhysicalDevicePresentIdFeaturesKHR>())) 230 { 231 static const Feature features[] = 232 { 233 FEATURE_ITEM (VkPhysicalDevicePresentIdFeaturesKHR, presentId), 234 }; 235 auto* supportedFeatures = reinterpret_cast<const VkPhysicalDevicePresentIdFeaturesKHR*>(featuresStruct); 236 checkFeatures(vkp, instance, instanceDriver, physicalDevice, 1, features, supportedFeatures, queueFamilyIndex, queueCount, queuePriority, numErrors, resultCollector, &extensionNames, emptyDeviceFeatures, isSubProcess); 237 } 238 239 if (numErrors > 0) 240 return tcu::TestStatus(resultCollector.getResult(), "Enabling unsupported features didn't return VK_ERROR_FEATURE_NOT_PRESENT."); 241 else 242 return tcu::TestStatus(resultCollector.getResult(), resultCollector.getMessage()); 243} 244 245 246tcu::TestStatus createDeviceWithUnsupportedFeaturesTestPresentWaitFeaturesKHR (Context& context) 247{ 248 const PlatformInterface& vkp = context.getPlatformInterface(); 249 tcu::TestLog& log = context.getTestContext().getLog(); 250 tcu::ResultCollector resultCollector (log); 251 const CustomInstance instance (createCustomInstanceWithExtensions(context, context.getInstanceExtensions(), DE_NULL, true)); 252 const InstanceDriver& instanceDriver (instance.getDriver()); 253 const VkPhysicalDevice physicalDevice = chooseDevice(instanceDriver, instance, context.getTestContext().getCommandLine()); 254 const deUint32 queueFamilyIndex = 0; 255 const deUint32 queueCount = 1; 256 const float queuePriority = 1.0f; 257 const DeviceFeatures deviceFeaturesAll (context.getInstanceInterface(), context.getUsedApiVersion(), physicalDevice, context.getInstanceExtensions(), context.getDeviceExtensions(), DE_TRUE); 258 const VkPhysicalDeviceFeatures2 deviceFeatures2 = deviceFeaturesAll.getCoreFeatures2(); 259 int numErrors = 0; 260 bool isSubProcess = context.getTestContext().getCommandLine().isSubProcess(); 261 262 263 VkPhysicalDeviceFeatures emptyDeviceFeatures; 264 deMemset(&emptyDeviceFeatures, 0, sizeof(emptyDeviceFeatures)); 265 266 // Only non-core extensions will be used when creating the device. 267 vector<const char*> coreExtensions; 268 getCoreDeviceExtensions(context.getUsedApiVersion(), coreExtensions); 269 vector<string> nonCoreExtensions(removeExtensions(context.getDeviceExtensions(), coreExtensions)); 270 271 vector<const char*> extensionNames; 272 extensionNames.reserve(nonCoreExtensions.size()); 273 for (const string& extension : nonCoreExtensions) 274 extensionNames.push_back(extension.c_str()); 275 276 if (const void* featuresStruct = findStructureInChain(const_cast<const void*>(deviceFeatures2.pNext), getStructureType<VkPhysicalDevicePresentWaitFeaturesKHR>())) 277 { 278 static const Feature features[] = 279 { 280 FEATURE_ITEM (VkPhysicalDevicePresentWaitFeaturesKHR, presentWait), 281 }; 282 auto* supportedFeatures = reinterpret_cast<const VkPhysicalDevicePresentWaitFeaturesKHR*>(featuresStruct); 283 checkFeatures(vkp, instance, instanceDriver, physicalDevice, 1, features, supportedFeatures, queueFamilyIndex, queueCount, queuePriority, numErrors, resultCollector, &extensionNames, emptyDeviceFeatures, isSubProcess); 284 } 285 286 if (numErrors > 0) 287 return tcu::TestStatus(resultCollector.getResult(), "Enabling unsupported features didn't return VK_ERROR_FEATURE_NOT_PRESENT."); 288 else 289 return tcu::TestStatus(resultCollector.getResult(), resultCollector.getMessage()); 290} 291 292 293tcu::TestStatus createDeviceWithUnsupportedFeaturesTest16BitStorageFeatures (Context& context) 294{ 295 const PlatformInterface& vkp = context.getPlatformInterface(); 296 tcu::TestLog& log = context.getTestContext().getLog(); 297 tcu::ResultCollector resultCollector (log); 298 const CustomInstance instance (createCustomInstanceWithExtensions(context, context.getInstanceExtensions(), DE_NULL, true)); 299 const InstanceDriver& instanceDriver (instance.getDriver()); 300 const VkPhysicalDevice physicalDevice = chooseDevice(instanceDriver, instance, context.getTestContext().getCommandLine()); 301 const deUint32 queueFamilyIndex = 0; 302 const deUint32 queueCount = 1; 303 const float queuePriority = 1.0f; 304 const DeviceFeatures deviceFeaturesAll (context.getInstanceInterface(), context.getUsedApiVersion(), physicalDevice, context.getInstanceExtensions(), context.getDeviceExtensions(), DE_TRUE); 305 const VkPhysicalDeviceFeatures2 deviceFeatures2 = deviceFeaturesAll.getCoreFeatures2(); 306 int numErrors = 0; 307 bool isSubProcess = context.getTestContext().getCommandLine().isSubProcess(); 308 309 310 VkPhysicalDeviceFeatures emptyDeviceFeatures; 311 deMemset(&emptyDeviceFeatures, 0, sizeof(emptyDeviceFeatures)); 312 313 // Only non-core extensions will be used when creating the device. 314 vector<const char*> coreExtensions; 315 getCoreDeviceExtensions(context.getUsedApiVersion(), coreExtensions); 316 vector<string> nonCoreExtensions(removeExtensions(context.getDeviceExtensions(), coreExtensions)); 317 318 vector<const char*> extensionNames; 319 extensionNames.reserve(nonCoreExtensions.size()); 320 for (const string& extension : nonCoreExtensions) 321 extensionNames.push_back(extension.c_str()); 322 323 if (const void* featuresStruct = findStructureInChain(const_cast<const void*>(deviceFeatures2.pNext), getStructureType<VkPhysicalDevice16BitStorageFeatures>())) 324 { 325 static const Feature features[] = 326 { 327 FEATURE_ITEM (VkPhysicalDevice16BitStorageFeatures, storageBuffer16BitAccess), 328 FEATURE_ITEM (VkPhysicalDevice16BitStorageFeatures, uniformAndStorageBuffer16BitAccess), 329 FEATURE_ITEM (VkPhysicalDevice16BitStorageFeatures, storagePushConstant16), 330 FEATURE_ITEM (VkPhysicalDevice16BitStorageFeatures, storageInputOutput16), 331 }; 332 auto* supportedFeatures = reinterpret_cast<const VkPhysicalDevice16BitStorageFeatures*>(featuresStruct); 333 checkFeatures(vkp, instance, instanceDriver, physicalDevice, 4, features, supportedFeatures, queueFamilyIndex, queueCount, queuePriority, numErrors, resultCollector, &extensionNames, emptyDeviceFeatures, isSubProcess); 334 } 335 336 if (numErrors > 0) 337 return tcu::TestStatus(resultCollector.getResult(), "Enabling unsupported features didn't return VK_ERROR_FEATURE_NOT_PRESENT."); 338 else 339 return tcu::TestStatus(resultCollector.getResult(), resultCollector.getMessage()); 340} 341 342 343tcu::TestStatus createDeviceWithUnsupportedFeaturesTestShaderSubgroupExtendedTypesFeatures (Context& context) 344{ 345 const PlatformInterface& vkp = context.getPlatformInterface(); 346 tcu::TestLog& log = context.getTestContext().getLog(); 347 tcu::ResultCollector resultCollector (log); 348 const CustomInstance instance (createCustomInstanceWithExtensions(context, context.getInstanceExtensions(), DE_NULL, true)); 349 const InstanceDriver& instanceDriver (instance.getDriver()); 350 const VkPhysicalDevice physicalDevice = chooseDevice(instanceDriver, instance, context.getTestContext().getCommandLine()); 351 const deUint32 queueFamilyIndex = 0; 352 const deUint32 queueCount = 1; 353 const float queuePriority = 1.0f; 354 const DeviceFeatures deviceFeaturesAll (context.getInstanceInterface(), context.getUsedApiVersion(), physicalDevice, context.getInstanceExtensions(), context.getDeviceExtensions(), DE_TRUE); 355 const VkPhysicalDeviceFeatures2 deviceFeatures2 = deviceFeaturesAll.getCoreFeatures2(); 356 int numErrors = 0; 357 bool isSubProcess = context.getTestContext().getCommandLine().isSubProcess(); 358 359 360 VkPhysicalDeviceFeatures emptyDeviceFeatures; 361 deMemset(&emptyDeviceFeatures, 0, sizeof(emptyDeviceFeatures)); 362 363 // Only non-core extensions will be used when creating the device. 364 vector<const char*> coreExtensions; 365 getCoreDeviceExtensions(context.getUsedApiVersion(), coreExtensions); 366 vector<string> nonCoreExtensions(removeExtensions(context.getDeviceExtensions(), coreExtensions)); 367 368 vector<const char*> extensionNames; 369 extensionNames.reserve(nonCoreExtensions.size()); 370 for (const string& extension : nonCoreExtensions) 371 extensionNames.push_back(extension.c_str()); 372 373 if (const void* featuresStruct = findStructureInChain(const_cast<const void*>(deviceFeatures2.pNext), getStructureType<VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures>())) 374 { 375 static const Feature features[] = 376 { 377 FEATURE_ITEM (VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures, shaderSubgroupExtendedTypes), 378 }; 379 auto* supportedFeatures = reinterpret_cast<const VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures*>(featuresStruct); 380 checkFeatures(vkp, instance, instanceDriver, physicalDevice, 1, features, supportedFeatures, queueFamilyIndex, queueCount, queuePriority, numErrors, resultCollector, &extensionNames, emptyDeviceFeatures, isSubProcess); 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 createDeviceWithUnsupportedFeaturesTestSamplerYcbcrConversionFeatures (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 406 407 VkPhysicalDeviceFeatures emptyDeviceFeatures; 408 deMemset(&emptyDeviceFeatures, 0, sizeof(emptyDeviceFeatures)); 409 410 // Only non-core extensions will be used when creating the device. 411 vector<const char*> coreExtensions; 412 getCoreDeviceExtensions(context.getUsedApiVersion(), coreExtensions); 413 vector<string> nonCoreExtensions(removeExtensions(context.getDeviceExtensions(), coreExtensions)); 414 415 vector<const char*> extensionNames; 416 extensionNames.reserve(nonCoreExtensions.size()); 417 for (const string& extension : nonCoreExtensions) 418 extensionNames.push_back(extension.c_str()); 419 420 if (const void* featuresStruct = findStructureInChain(const_cast<const void*>(deviceFeatures2.pNext), getStructureType<VkPhysicalDeviceSamplerYcbcrConversionFeatures>())) 421 { 422 static const Feature features[] = 423 { 424 FEATURE_ITEM (VkPhysicalDeviceSamplerYcbcrConversionFeatures, samplerYcbcrConversion), 425 }; 426 auto* supportedFeatures = reinterpret_cast<const VkPhysicalDeviceSamplerYcbcrConversionFeatures*>(featuresStruct); 427 checkFeatures(vkp, instance, instanceDriver, physicalDevice, 1, features, supportedFeatures, queueFamilyIndex, queueCount, queuePriority, numErrors, resultCollector, &extensionNames, emptyDeviceFeatures, isSubProcess); 428 } 429 430 if (numErrors > 0) 431 return tcu::TestStatus(resultCollector.getResult(), "Enabling unsupported features didn't return VK_ERROR_FEATURE_NOT_PRESENT."); 432 else 433 return tcu::TestStatus(resultCollector.getResult(), resultCollector.getMessage()); 434} 435 436 437tcu::TestStatus createDeviceWithUnsupportedFeaturesTestProtectedMemoryFeatures (Context& context) 438{ 439 const PlatformInterface& vkp = context.getPlatformInterface(); 440 tcu::TestLog& log = context.getTestContext().getLog(); 441 tcu::ResultCollector resultCollector (log); 442 const CustomInstance instance (createCustomInstanceWithExtensions(context, context.getInstanceExtensions(), DE_NULL, true)); 443 const InstanceDriver& instanceDriver (instance.getDriver()); 444 const VkPhysicalDevice physicalDevice = chooseDevice(instanceDriver, instance, context.getTestContext().getCommandLine()); 445 const deUint32 queueFamilyIndex = 0; 446 const deUint32 queueCount = 1; 447 const float queuePriority = 1.0f; 448 const DeviceFeatures deviceFeaturesAll (context.getInstanceInterface(), context.getUsedApiVersion(), physicalDevice, context.getInstanceExtensions(), context.getDeviceExtensions(), DE_TRUE); 449 const VkPhysicalDeviceFeatures2 deviceFeatures2 = deviceFeaturesAll.getCoreFeatures2(); 450 int numErrors = 0; 451 bool isSubProcess = context.getTestContext().getCommandLine().isSubProcess(); 452 453 454 VkPhysicalDeviceFeatures emptyDeviceFeatures; 455 deMemset(&emptyDeviceFeatures, 0, sizeof(emptyDeviceFeatures)); 456 457 // Only non-core extensions will be used when creating the device. 458 vector<const char*> coreExtensions; 459 getCoreDeviceExtensions(context.getUsedApiVersion(), coreExtensions); 460 vector<string> nonCoreExtensions(removeExtensions(context.getDeviceExtensions(), coreExtensions)); 461 462 vector<const char*> extensionNames; 463 extensionNames.reserve(nonCoreExtensions.size()); 464 for (const string& extension : nonCoreExtensions) 465 extensionNames.push_back(extension.c_str()); 466 467 if (const void* featuresStruct = findStructureInChain(const_cast<const void*>(deviceFeatures2.pNext), getStructureType<VkPhysicalDeviceProtectedMemoryFeatures>())) 468 { 469 static const Feature features[] = 470 { 471 FEATURE_ITEM (VkPhysicalDeviceProtectedMemoryFeatures, protectedMemory), 472 }; 473 auto* supportedFeatures = reinterpret_cast<const VkPhysicalDeviceProtectedMemoryFeatures*>(featuresStruct); 474 checkFeatures(vkp, instance, instanceDriver, physicalDevice, 1, features, supportedFeatures, queueFamilyIndex, queueCount, queuePriority, numErrors, resultCollector, &extensionNames, emptyDeviceFeatures, isSubProcess); 475 } 476 477 if (numErrors > 0) 478 return tcu::TestStatus(resultCollector.getResult(), "Enabling unsupported features didn't return VK_ERROR_FEATURE_NOT_PRESENT."); 479 else 480 return tcu::TestStatus(resultCollector.getResult(), resultCollector.getMessage()); 481} 482 483 484tcu::TestStatus createDeviceWithUnsupportedFeaturesTestBlendOperationAdvancedFeaturesEXT (Context& context) 485{ 486 const PlatformInterface& vkp = context.getPlatformInterface(); 487 tcu::TestLog& log = context.getTestContext().getLog(); 488 tcu::ResultCollector resultCollector (log); 489 const CustomInstance instance (createCustomInstanceWithExtensions(context, context.getInstanceExtensions(), DE_NULL, true)); 490 const InstanceDriver& instanceDriver (instance.getDriver()); 491 const VkPhysicalDevice physicalDevice = chooseDevice(instanceDriver, instance, context.getTestContext().getCommandLine()); 492 const deUint32 queueFamilyIndex = 0; 493 const deUint32 queueCount = 1; 494 const float queuePriority = 1.0f; 495 const DeviceFeatures deviceFeaturesAll (context.getInstanceInterface(), context.getUsedApiVersion(), physicalDevice, context.getInstanceExtensions(), context.getDeviceExtensions(), DE_TRUE); 496 const VkPhysicalDeviceFeatures2 deviceFeatures2 = deviceFeaturesAll.getCoreFeatures2(); 497 int numErrors = 0; 498 bool isSubProcess = context.getTestContext().getCommandLine().isSubProcess(); 499 500 501 VkPhysicalDeviceFeatures emptyDeviceFeatures; 502 deMemset(&emptyDeviceFeatures, 0, sizeof(emptyDeviceFeatures)); 503 504 // Only non-core extensions will be used when creating the device. 505 vector<const char*> coreExtensions; 506 getCoreDeviceExtensions(context.getUsedApiVersion(), coreExtensions); 507 vector<string> nonCoreExtensions(removeExtensions(context.getDeviceExtensions(), coreExtensions)); 508 509 vector<const char*> extensionNames; 510 extensionNames.reserve(nonCoreExtensions.size()); 511 for (const string& extension : nonCoreExtensions) 512 extensionNames.push_back(extension.c_str()); 513 514 if (const void* featuresStruct = findStructureInChain(const_cast<const void*>(deviceFeatures2.pNext), getStructureType<VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT>())) 515 { 516 static const Feature features[] = 517 { 518 FEATURE_ITEM (VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT, advancedBlendCoherentOperations), 519 }; 520 auto* supportedFeatures = reinterpret_cast<const VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT*>(featuresStruct); 521 checkFeatures(vkp, instance, instanceDriver, physicalDevice, 1, features, supportedFeatures, queueFamilyIndex, queueCount, queuePriority, numErrors, resultCollector, &extensionNames, emptyDeviceFeatures, isSubProcess); 522 } 523 524 if (numErrors > 0) 525 return tcu::TestStatus(resultCollector.getResult(), "Enabling unsupported features didn't return VK_ERROR_FEATURE_NOT_PRESENT."); 526 else 527 return tcu::TestStatus(resultCollector.getResult(), resultCollector.getMessage()); 528} 529 530 531tcu::TestStatus createDeviceWithUnsupportedFeaturesTestMultiDrawFeaturesEXT (Context& context) 532{ 533 const PlatformInterface& vkp = context.getPlatformInterface(); 534 tcu::TestLog& log = context.getTestContext().getLog(); 535 tcu::ResultCollector resultCollector (log); 536 const CustomInstance instance (createCustomInstanceWithExtensions(context, context.getInstanceExtensions(), DE_NULL, true)); 537 const InstanceDriver& instanceDriver (instance.getDriver()); 538 const VkPhysicalDevice physicalDevice = chooseDevice(instanceDriver, instance, context.getTestContext().getCommandLine()); 539 const deUint32 queueFamilyIndex = 0; 540 const deUint32 queueCount = 1; 541 const float queuePriority = 1.0f; 542 const DeviceFeatures deviceFeaturesAll (context.getInstanceInterface(), context.getUsedApiVersion(), physicalDevice, context.getInstanceExtensions(), context.getDeviceExtensions(), DE_TRUE); 543 const VkPhysicalDeviceFeatures2 deviceFeatures2 = deviceFeaturesAll.getCoreFeatures2(); 544 int numErrors = 0; 545 bool isSubProcess = context.getTestContext().getCommandLine().isSubProcess(); 546 547 548 VkPhysicalDeviceFeatures emptyDeviceFeatures; 549 deMemset(&emptyDeviceFeatures, 0, sizeof(emptyDeviceFeatures)); 550 551 // Only non-core extensions will be used when creating the device. 552 vector<const char*> coreExtensions; 553 getCoreDeviceExtensions(context.getUsedApiVersion(), coreExtensions); 554 vector<string> nonCoreExtensions(removeExtensions(context.getDeviceExtensions(), coreExtensions)); 555 556 vector<const char*> extensionNames; 557 extensionNames.reserve(nonCoreExtensions.size()); 558 for (const string& extension : nonCoreExtensions) 559 extensionNames.push_back(extension.c_str()); 560 561 if (const void* featuresStruct = findStructureInChain(const_cast<const void*>(deviceFeatures2.pNext), getStructureType<VkPhysicalDeviceMultiDrawFeaturesEXT>())) 562 { 563 static const Feature features[] = 564 { 565 FEATURE_ITEM (VkPhysicalDeviceMultiDrawFeaturesEXT, multiDraw), 566 }; 567 auto* supportedFeatures = reinterpret_cast<const VkPhysicalDeviceMultiDrawFeaturesEXT*>(featuresStruct); 568 checkFeatures(vkp, instance, instanceDriver, physicalDevice, 1, features, supportedFeatures, queueFamilyIndex, queueCount, queuePriority, numErrors, resultCollector, &extensionNames, emptyDeviceFeatures, isSubProcess); 569 } 570 571 if (numErrors > 0) 572 return tcu::TestStatus(resultCollector.getResult(), "Enabling unsupported features didn't return VK_ERROR_FEATURE_NOT_PRESENT."); 573 else 574 return tcu::TestStatus(resultCollector.getResult(), resultCollector.getMessage()); 575} 576 577 578tcu::TestStatus createDeviceWithUnsupportedFeaturesTestInlineUniformBlockFeatures (Context& context) 579{ 580 const PlatformInterface& vkp = context.getPlatformInterface(); 581 tcu::TestLog& log = context.getTestContext().getLog(); 582 tcu::ResultCollector resultCollector (log); 583 const CustomInstance instance (createCustomInstanceWithExtensions(context, context.getInstanceExtensions(), DE_NULL, true)); 584 const InstanceDriver& instanceDriver (instance.getDriver()); 585 const VkPhysicalDevice physicalDevice = chooseDevice(instanceDriver, instance, context.getTestContext().getCommandLine()); 586 const deUint32 queueFamilyIndex = 0; 587 const deUint32 queueCount = 1; 588 const float queuePriority = 1.0f; 589 const DeviceFeatures deviceFeaturesAll (context.getInstanceInterface(), context.getUsedApiVersion(), physicalDevice, context.getInstanceExtensions(), context.getDeviceExtensions(), DE_TRUE); 590 const VkPhysicalDeviceFeatures2 deviceFeatures2 = deviceFeaturesAll.getCoreFeatures2(); 591 int numErrors = 0; 592 bool isSubProcess = context.getTestContext().getCommandLine().isSubProcess(); 593 594 595 VkPhysicalDeviceFeatures emptyDeviceFeatures; 596 deMemset(&emptyDeviceFeatures, 0, sizeof(emptyDeviceFeatures)); 597 598 // Only non-core extensions will be used when creating the device. 599 vector<const char*> coreExtensions; 600 getCoreDeviceExtensions(context.getUsedApiVersion(), coreExtensions); 601 vector<string> nonCoreExtensions(removeExtensions(context.getDeviceExtensions(), coreExtensions)); 602 603 vector<const char*> extensionNames; 604 extensionNames.reserve(nonCoreExtensions.size()); 605 for (const string& extension : nonCoreExtensions) 606 extensionNames.push_back(extension.c_str()); 607 608 if (const void* featuresStruct = findStructureInChain(const_cast<const void*>(deviceFeatures2.pNext), getStructureType<VkPhysicalDeviceInlineUniformBlockFeatures>())) 609 { 610 static const Feature features[] = 611 { 612 FEATURE_ITEM (VkPhysicalDeviceInlineUniformBlockFeatures, inlineUniformBlock), 613 FEATURE_ITEM (VkPhysicalDeviceInlineUniformBlockFeatures, descriptorBindingInlineUniformBlockUpdateAfterBind), 614 }; 615 auto* supportedFeatures = reinterpret_cast<const VkPhysicalDeviceInlineUniformBlockFeatures*>(featuresStruct); 616 checkFeatures(vkp, instance, instanceDriver, physicalDevice, 2, features, supportedFeatures, queueFamilyIndex, queueCount, queuePriority, numErrors, resultCollector, &extensionNames, emptyDeviceFeatures, isSubProcess); 617 } 618 619 if (numErrors > 0) 620 return tcu::TestStatus(resultCollector.getResult(), "Enabling unsupported features didn't return VK_ERROR_FEATURE_NOT_PRESENT."); 621 else 622 return tcu::TestStatus(resultCollector.getResult(), resultCollector.getMessage()); 623} 624 625 626tcu::TestStatus createDeviceWithUnsupportedFeaturesTestMaintenance4Features (Context& context) 627{ 628 const PlatformInterface& vkp = context.getPlatformInterface(); 629 tcu::TestLog& log = context.getTestContext().getLog(); 630 tcu::ResultCollector resultCollector (log); 631 const CustomInstance instance (createCustomInstanceWithExtensions(context, context.getInstanceExtensions(), DE_NULL, true)); 632 const InstanceDriver& instanceDriver (instance.getDriver()); 633 const VkPhysicalDevice physicalDevice = chooseDevice(instanceDriver, instance, context.getTestContext().getCommandLine()); 634 const deUint32 queueFamilyIndex = 0; 635 const deUint32 queueCount = 1; 636 const float queuePriority = 1.0f; 637 const DeviceFeatures deviceFeaturesAll (context.getInstanceInterface(), context.getUsedApiVersion(), physicalDevice, context.getInstanceExtensions(), context.getDeviceExtensions(), DE_TRUE); 638 const VkPhysicalDeviceFeatures2 deviceFeatures2 = deviceFeaturesAll.getCoreFeatures2(); 639 int numErrors = 0; 640 bool isSubProcess = context.getTestContext().getCommandLine().isSubProcess(); 641 642 643 VkPhysicalDeviceFeatures emptyDeviceFeatures; 644 deMemset(&emptyDeviceFeatures, 0, sizeof(emptyDeviceFeatures)); 645 646 // Only non-core extensions will be used when creating the device. 647 vector<const char*> coreExtensions; 648 getCoreDeviceExtensions(context.getUsedApiVersion(), coreExtensions); 649 vector<string> nonCoreExtensions(removeExtensions(context.getDeviceExtensions(), coreExtensions)); 650 651 vector<const char*> extensionNames; 652 extensionNames.reserve(nonCoreExtensions.size()); 653 for (const string& extension : nonCoreExtensions) 654 extensionNames.push_back(extension.c_str()); 655 656 if (const void* featuresStruct = findStructureInChain(const_cast<const void*>(deviceFeatures2.pNext), getStructureType<VkPhysicalDeviceMaintenance4Features>())) 657 { 658 static const Feature features[] = 659 { 660 FEATURE_ITEM (VkPhysicalDeviceMaintenance4Features, maintenance4), 661 }; 662 auto* supportedFeatures = reinterpret_cast<const VkPhysicalDeviceMaintenance4Features*>(featuresStruct); 663 checkFeatures(vkp, instance, instanceDriver, physicalDevice, 1, features, supportedFeatures, queueFamilyIndex, queueCount, queuePriority, numErrors, resultCollector, &extensionNames, emptyDeviceFeatures, isSubProcess); 664 } 665 666 if (numErrors > 0) 667 return tcu::TestStatus(resultCollector.getResult(), "Enabling unsupported features didn't return VK_ERROR_FEATURE_NOT_PRESENT."); 668 else 669 return tcu::TestStatus(resultCollector.getResult(), resultCollector.getMessage()); 670} 671 672 673tcu::TestStatus createDeviceWithUnsupportedFeaturesTestShaderDrawParametersFeatures (Context& context) 674{ 675 const PlatformInterface& vkp = context.getPlatformInterface(); 676 tcu::TestLog& log = context.getTestContext().getLog(); 677 tcu::ResultCollector resultCollector (log); 678 const CustomInstance instance (createCustomInstanceWithExtensions(context, context.getInstanceExtensions(), DE_NULL, true)); 679 const InstanceDriver& instanceDriver (instance.getDriver()); 680 const VkPhysicalDevice physicalDevice = chooseDevice(instanceDriver, instance, context.getTestContext().getCommandLine()); 681 const deUint32 queueFamilyIndex = 0; 682 const deUint32 queueCount = 1; 683 const float queuePriority = 1.0f; 684 const DeviceFeatures deviceFeaturesAll (context.getInstanceInterface(), context.getUsedApiVersion(), physicalDevice, context.getInstanceExtensions(), context.getDeviceExtensions(), DE_TRUE); 685 const VkPhysicalDeviceFeatures2 deviceFeatures2 = deviceFeaturesAll.getCoreFeatures2(); 686 int numErrors = 0; 687 bool isSubProcess = context.getTestContext().getCommandLine().isSubProcess(); 688 689 690 VkPhysicalDeviceFeatures emptyDeviceFeatures; 691 deMemset(&emptyDeviceFeatures, 0, sizeof(emptyDeviceFeatures)); 692 693 // Only non-core extensions will be used when creating the device. 694 vector<const char*> coreExtensions; 695 getCoreDeviceExtensions(context.getUsedApiVersion(), coreExtensions); 696 vector<string> nonCoreExtensions(removeExtensions(context.getDeviceExtensions(), coreExtensions)); 697 698 vector<const char*> extensionNames; 699 extensionNames.reserve(nonCoreExtensions.size()); 700 for (const string& extension : nonCoreExtensions) 701 extensionNames.push_back(extension.c_str()); 702 703 if (const void* featuresStruct = findStructureInChain(const_cast<const void*>(deviceFeatures2.pNext), getStructureType<VkPhysicalDeviceShaderDrawParametersFeatures>())) 704 { 705 static const Feature features[] = 706 { 707 FEATURE_ITEM (VkPhysicalDeviceShaderDrawParametersFeatures, shaderDrawParameters), 708 }; 709 auto* supportedFeatures = reinterpret_cast<const VkPhysicalDeviceShaderDrawParametersFeatures*>(featuresStruct); 710 checkFeatures(vkp, instance, instanceDriver, physicalDevice, 1, features, supportedFeatures, queueFamilyIndex, queueCount, queuePriority, numErrors, resultCollector, &extensionNames, emptyDeviceFeatures, isSubProcess); 711 } 712 713 if (numErrors > 0) 714 return tcu::TestStatus(resultCollector.getResult(), "Enabling unsupported features didn't return VK_ERROR_FEATURE_NOT_PRESENT."); 715 else 716 return tcu::TestStatus(resultCollector.getResult(), resultCollector.getMessage()); 717} 718 719 720tcu::TestStatus createDeviceWithUnsupportedFeaturesTestShaderFloat16Int8Features (Context& context) 721{ 722 const PlatformInterface& vkp = context.getPlatformInterface(); 723 tcu::TestLog& log = context.getTestContext().getLog(); 724 tcu::ResultCollector resultCollector (log); 725 const CustomInstance instance (createCustomInstanceWithExtensions(context, context.getInstanceExtensions(), DE_NULL, true)); 726 const InstanceDriver& instanceDriver (instance.getDriver()); 727 const VkPhysicalDevice physicalDevice = chooseDevice(instanceDriver, instance, context.getTestContext().getCommandLine()); 728 const deUint32 queueFamilyIndex = 0; 729 const deUint32 queueCount = 1; 730 const float queuePriority = 1.0f; 731 const DeviceFeatures deviceFeaturesAll (context.getInstanceInterface(), context.getUsedApiVersion(), physicalDevice, context.getInstanceExtensions(), context.getDeviceExtensions(), DE_TRUE); 732 const VkPhysicalDeviceFeatures2 deviceFeatures2 = deviceFeaturesAll.getCoreFeatures2(); 733 int numErrors = 0; 734 bool isSubProcess = context.getTestContext().getCommandLine().isSubProcess(); 735 736 737 VkPhysicalDeviceFeatures emptyDeviceFeatures; 738 deMemset(&emptyDeviceFeatures, 0, sizeof(emptyDeviceFeatures)); 739 740 // Only non-core extensions will be used when creating the device. 741 vector<const char*> coreExtensions; 742 getCoreDeviceExtensions(context.getUsedApiVersion(), coreExtensions); 743 vector<string> nonCoreExtensions(removeExtensions(context.getDeviceExtensions(), coreExtensions)); 744 745 vector<const char*> extensionNames; 746 extensionNames.reserve(nonCoreExtensions.size()); 747 for (const string& extension : nonCoreExtensions) 748 extensionNames.push_back(extension.c_str()); 749 750 if (const void* featuresStruct = findStructureInChain(const_cast<const void*>(deviceFeatures2.pNext), getStructureType<VkPhysicalDeviceShaderFloat16Int8Features>())) 751 { 752 static const Feature features[] = 753 { 754 FEATURE_ITEM (VkPhysicalDeviceShaderFloat16Int8Features, shaderFloat16), 755 FEATURE_ITEM (VkPhysicalDeviceShaderFloat16Int8Features, shaderInt8), 756 }; 757 auto* supportedFeatures = reinterpret_cast<const VkPhysicalDeviceShaderFloat16Int8Features*>(featuresStruct); 758 checkFeatures(vkp, instance, instanceDriver, physicalDevice, 2, features, supportedFeatures, queueFamilyIndex, queueCount, queuePriority, numErrors, resultCollector, &extensionNames, emptyDeviceFeatures, isSubProcess); 759 } 760 761 if (numErrors > 0) 762 return tcu::TestStatus(resultCollector.getResult(), "Enabling unsupported features didn't return VK_ERROR_FEATURE_NOT_PRESENT."); 763 else 764 return tcu::TestStatus(resultCollector.getResult(), resultCollector.getMessage()); 765} 766 767 768tcu::TestStatus createDeviceWithUnsupportedFeaturesTestHostQueryResetFeatures (Context& context) 769{ 770 const PlatformInterface& vkp = context.getPlatformInterface(); 771 tcu::TestLog& log = context.getTestContext().getLog(); 772 tcu::ResultCollector resultCollector (log); 773 const CustomInstance instance (createCustomInstanceWithExtensions(context, context.getInstanceExtensions(), DE_NULL, true)); 774 const InstanceDriver& instanceDriver (instance.getDriver()); 775 const VkPhysicalDevice physicalDevice = chooseDevice(instanceDriver, instance, context.getTestContext().getCommandLine()); 776 const deUint32 queueFamilyIndex = 0; 777 const deUint32 queueCount = 1; 778 const float queuePriority = 1.0f; 779 const DeviceFeatures deviceFeaturesAll (context.getInstanceInterface(), context.getUsedApiVersion(), physicalDevice, context.getInstanceExtensions(), context.getDeviceExtensions(), DE_TRUE); 780 const VkPhysicalDeviceFeatures2 deviceFeatures2 = deviceFeaturesAll.getCoreFeatures2(); 781 int numErrors = 0; 782 bool isSubProcess = context.getTestContext().getCommandLine().isSubProcess(); 783 784 785 VkPhysicalDeviceFeatures emptyDeviceFeatures; 786 deMemset(&emptyDeviceFeatures, 0, sizeof(emptyDeviceFeatures)); 787 788 // Only non-core extensions will be used when creating the device. 789 vector<const char*> coreExtensions; 790 getCoreDeviceExtensions(context.getUsedApiVersion(), coreExtensions); 791 vector<string> nonCoreExtensions(removeExtensions(context.getDeviceExtensions(), coreExtensions)); 792 793 vector<const char*> extensionNames; 794 extensionNames.reserve(nonCoreExtensions.size()); 795 for (const string& extension : nonCoreExtensions) 796 extensionNames.push_back(extension.c_str()); 797 798 if (const void* featuresStruct = findStructureInChain(const_cast<const void*>(deviceFeatures2.pNext), getStructureType<VkPhysicalDeviceHostQueryResetFeatures>())) 799 { 800 static const Feature features[] = 801 { 802 FEATURE_ITEM (VkPhysicalDeviceHostQueryResetFeatures, hostQueryReset), 803 }; 804 auto* supportedFeatures = reinterpret_cast<const VkPhysicalDeviceHostQueryResetFeatures*>(featuresStruct); 805 checkFeatures(vkp, instance, instanceDriver, physicalDevice, 1, features, supportedFeatures, queueFamilyIndex, queueCount, queuePriority, numErrors, resultCollector, &extensionNames, emptyDeviceFeatures, isSubProcess); 806 } 807 808 if (numErrors > 0) 809 return tcu::TestStatus(resultCollector.getResult(), "Enabling unsupported features didn't return VK_ERROR_FEATURE_NOT_PRESENT."); 810 else 811 return tcu::TestStatus(resultCollector.getResult(), resultCollector.getMessage()); 812} 813 814 815tcu::TestStatus createDeviceWithUnsupportedFeaturesTestGlobalPriorityQueryFeaturesKHR (Context& context) 816{ 817 const PlatformInterface& vkp = context.getPlatformInterface(); 818 tcu::TestLog& log = context.getTestContext().getLog(); 819 tcu::ResultCollector resultCollector (log); 820 const CustomInstance instance (createCustomInstanceWithExtensions(context, context.getInstanceExtensions(), DE_NULL, true)); 821 const InstanceDriver& instanceDriver (instance.getDriver()); 822 const VkPhysicalDevice physicalDevice = chooseDevice(instanceDriver, instance, context.getTestContext().getCommandLine()); 823 const deUint32 queueFamilyIndex = 0; 824 const deUint32 queueCount = 1; 825 const float queuePriority = 1.0f; 826 const DeviceFeatures deviceFeaturesAll (context.getInstanceInterface(), context.getUsedApiVersion(), physicalDevice, context.getInstanceExtensions(), context.getDeviceExtensions(), DE_TRUE); 827 const VkPhysicalDeviceFeatures2 deviceFeatures2 = deviceFeaturesAll.getCoreFeatures2(); 828 int numErrors = 0; 829 bool isSubProcess = context.getTestContext().getCommandLine().isSubProcess(); 830 831 832 VkPhysicalDeviceFeatures emptyDeviceFeatures; 833 deMemset(&emptyDeviceFeatures, 0, sizeof(emptyDeviceFeatures)); 834 835 // Only non-core extensions will be used when creating the device. 836 vector<const char*> coreExtensions; 837 getCoreDeviceExtensions(context.getUsedApiVersion(), coreExtensions); 838 vector<string> nonCoreExtensions(removeExtensions(context.getDeviceExtensions(), coreExtensions)); 839 840 vector<const char*> extensionNames; 841 extensionNames.reserve(nonCoreExtensions.size()); 842 for (const string& extension : nonCoreExtensions) 843 extensionNames.push_back(extension.c_str()); 844 845 if (const void* featuresStruct = findStructureInChain(const_cast<const void*>(deviceFeatures2.pNext), getStructureType<VkPhysicalDeviceGlobalPriorityQueryFeaturesKHR>())) 846 { 847 static const Feature features[] = 848 { 849 FEATURE_ITEM (VkPhysicalDeviceGlobalPriorityQueryFeaturesKHR, globalPriorityQuery), 850 }; 851 auto* supportedFeatures = reinterpret_cast<const VkPhysicalDeviceGlobalPriorityQueryFeaturesKHR*>(featuresStruct); 852 checkFeatures(vkp, instance, instanceDriver, physicalDevice, 1, features, supportedFeatures, queueFamilyIndex, queueCount, queuePriority, numErrors, resultCollector, &extensionNames, emptyDeviceFeatures, isSubProcess); 853 } 854 855 if (numErrors > 0) 856 return tcu::TestStatus(resultCollector.getResult(), "Enabling unsupported features didn't return VK_ERROR_FEATURE_NOT_PRESENT."); 857 else 858 return tcu::TestStatus(resultCollector.getResult(), resultCollector.getMessage()); 859} 860 861 862tcu::TestStatus createDeviceWithUnsupportedFeaturesTestDeviceMemoryReportFeaturesEXT (Context& context) 863{ 864 const PlatformInterface& vkp = context.getPlatformInterface(); 865 tcu::TestLog& log = context.getTestContext().getLog(); 866 tcu::ResultCollector resultCollector (log); 867 const CustomInstance instance (createCustomInstanceWithExtensions(context, context.getInstanceExtensions(), DE_NULL, true)); 868 const InstanceDriver& instanceDriver (instance.getDriver()); 869 const VkPhysicalDevice physicalDevice = chooseDevice(instanceDriver, instance, context.getTestContext().getCommandLine()); 870 const deUint32 queueFamilyIndex = 0; 871 const deUint32 queueCount = 1; 872 const float queuePriority = 1.0f; 873 const DeviceFeatures deviceFeaturesAll (context.getInstanceInterface(), context.getUsedApiVersion(), physicalDevice, context.getInstanceExtensions(), context.getDeviceExtensions(), DE_TRUE); 874 const VkPhysicalDeviceFeatures2 deviceFeatures2 = deviceFeaturesAll.getCoreFeatures2(); 875 int numErrors = 0; 876 bool isSubProcess = context.getTestContext().getCommandLine().isSubProcess(); 877 878 879 VkPhysicalDeviceFeatures emptyDeviceFeatures; 880 deMemset(&emptyDeviceFeatures, 0, sizeof(emptyDeviceFeatures)); 881 882 // Only non-core extensions will be used when creating the device. 883 vector<const char*> coreExtensions; 884 getCoreDeviceExtensions(context.getUsedApiVersion(), coreExtensions); 885 vector<string> nonCoreExtensions(removeExtensions(context.getDeviceExtensions(), coreExtensions)); 886 887 vector<const char*> extensionNames; 888 extensionNames.reserve(nonCoreExtensions.size()); 889 for (const string& extension : nonCoreExtensions) 890 extensionNames.push_back(extension.c_str()); 891 892 if (const void* featuresStruct = findStructureInChain(const_cast<const void*>(deviceFeatures2.pNext), getStructureType<VkPhysicalDeviceDeviceMemoryReportFeaturesEXT>())) 893 { 894 static const Feature features[] = 895 { 896 FEATURE_ITEM (VkPhysicalDeviceDeviceMemoryReportFeaturesEXT, deviceMemoryReport), 897 }; 898 auto* supportedFeatures = reinterpret_cast<const VkPhysicalDeviceDeviceMemoryReportFeaturesEXT*>(featuresStruct); 899 checkFeatures(vkp, instance, instanceDriver, physicalDevice, 1, features, supportedFeatures, queueFamilyIndex, queueCount, queuePriority, numErrors, resultCollector, &extensionNames, emptyDeviceFeatures, isSubProcess); 900 } 901 902 if (numErrors > 0) 903 return tcu::TestStatus(resultCollector.getResult(), "Enabling unsupported features didn't return VK_ERROR_FEATURE_NOT_PRESENT."); 904 else 905 return tcu::TestStatus(resultCollector.getResult(), resultCollector.getMessage()); 906} 907 908 909tcu::TestStatus createDeviceWithUnsupportedFeaturesTestDescriptorIndexingFeatures (Context& context) 910{ 911 const PlatformInterface& vkp = context.getPlatformInterface(); 912 tcu::TestLog& log = context.getTestContext().getLog(); 913 tcu::ResultCollector resultCollector (log); 914 const CustomInstance instance (createCustomInstanceWithExtensions(context, context.getInstanceExtensions(), DE_NULL, true)); 915 const InstanceDriver& instanceDriver (instance.getDriver()); 916 const VkPhysicalDevice physicalDevice = chooseDevice(instanceDriver, instance, context.getTestContext().getCommandLine()); 917 const deUint32 queueFamilyIndex = 0; 918 const deUint32 queueCount = 1; 919 const float queuePriority = 1.0f; 920 const DeviceFeatures deviceFeaturesAll (context.getInstanceInterface(), context.getUsedApiVersion(), physicalDevice, context.getInstanceExtensions(), context.getDeviceExtensions(), DE_TRUE); 921 const VkPhysicalDeviceFeatures2 deviceFeatures2 = deviceFeaturesAll.getCoreFeatures2(); 922 int numErrors = 0; 923 bool isSubProcess = context.getTestContext().getCommandLine().isSubProcess(); 924 925 926 VkPhysicalDeviceFeatures emptyDeviceFeatures; 927 deMemset(&emptyDeviceFeatures, 0, sizeof(emptyDeviceFeatures)); 928 929 // Only non-core extensions will be used when creating the device. 930 vector<const char*> coreExtensions; 931 getCoreDeviceExtensions(context.getUsedApiVersion(), coreExtensions); 932 vector<string> nonCoreExtensions(removeExtensions(context.getDeviceExtensions(), coreExtensions)); 933 934 vector<const char*> extensionNames; 935 extensionNames.reserve(nonCoreExtensions.size()); 936 for (const string& extension : nonCoreExtensions) 937 extensionNames.push_back(extension.c_str()); 938 939 if (const void* featuresStruct = findStructureInChain(const_cast<const void*>(deviceFeatures2.pNext), getStructureType<VkPhysicalDeviceDescriptorIndexingFeatures>())) 940 { 941 static const Feature features[] = 942 { 943 FEATURE_ITEM (VkPhysicalDeviceDescriptorIndexingFeatures, shaderInputAttachmentArrayDynamicIndexing), 944 FEATURE_ITEM (VkPhysicalDeviceDescriptorIndexingFeatures, shaderUniformTexelBufferArrayDynamicIndexing), 945 FEATURE_ITEM (VkPhysicalDeviceDescriptorIndexingFeatures, shaderStorageTexelBufferArrayDynamicIndexing), 946 FEATURE_ITEM (VkPhysicalDeviceDescriptorIndexingFeatures, shaderUniformBufferArrayNonUniformIndexing), 947 FEATURE_ITEM (VkPhysicalDeviceDescriptorIndexingFeatures, shaderSampledImageArrayNonUniformIndexing), 948 FEATURE_ITEM (VkPhysicalDeviceDescriptorIndexingFeatures, shaderStorageBufferArrayNonUniformIndexing), 949 FEATURE_ITEM (VkPhysicalDeviceDescriptorIndexingFeatures, shaderStorageImageArrayNonUniformIndexing), 950 FEATURE_ITEM (VkPhysicalDeviceDescriptorIndexingFeatures, shaderInputAttachmentArrayNonUniformIndexing), 951 FEATURE_ITEM (VkPhysicalDeviceDescriptorIndexingFeatures, shaderUniformTexelBufferArrayNonUniformIndexing), 952 FEATURE_ITEM (VkPhysicalDeviceDescriptorIndexingFeatures, shaderStorageTexelBufferArrayNonUniformIndexing), 953 FEATURE_ITEM (VkPhysicalDeviceDescriptorIndexingFeatures, descriptorBindingUniformBufferUpdateAfterBind), 954 FEATURE_ITEM (VkPhysicalDeviceDescriptorIndexingFeatures, descriptorBindingSampledImageUpdateAfterBind), 955 FEATURE_ITEM (VkPhysicalDeviceDescriptorIndexingFeatures, descriptorBindingStorageImageUpdateAfterBind), 956 FEATURE_ITEM (VkPhysicalDeviceDescriptorIndexingFeatures, descriptorBindingStorageBufferUpdateAfterBind), 957 FEATURE_ITEM (VkPhysicalDeviceDescriptorIndexingFeatures, descriptorBindingUniformTexelBufferUpdateAfterBind), 958 FEATURE_ITEM (VkPhysicalDeviceDescriptorIndexingFeatures, descriptorBindingStorageTexelBufferUpdateAfterBind), 959 FEATURE_ITEM (VkPhysicalDeviceDescriptorIndexingFeatures, descriptorBindingUpdateUnusedWhilePending), 960 FEATURE_ITEM (VkPhysicalDeviceDescriptorIndexingFeatures, descriptorBindingPartiallyBound), 961 FEATURE_ITEM (VkPhysicalDeviceDescriptorIndexingFeatures, descriptorBindingVariableDescriptorCount), 962 FEATURE_ITEM (VkPhysicalDeviceDescriptorIndexingFeatures, runtimeDescriptorArray), 963 }; 964 auto* supportedFeatures = reinterpret_cast<const VkPhysicalDeviceDescriptorIndexingFeatures*>(featuresStruct); 965 checkFeatures(vkp, instance, instanceDriver, physicalDevice, 20, features, supportedFeatures, queueFamilyIndex, queueCount, queuePriority, numErrors, resultCollector, &extensionNames, emptyDeviceFeatures, isSubProcess); 966 } 967 968 if (numErrors > 0) 969 return tcu::TestStatus(resultCollector.getResult(), "Enabling unsupported features didn't return VK_ERROR_FEATURE_NOT_PRESENT."); 970 else 971 return tcu::TestStatus(resultCollector.getResult(), resultCollector.getMessage()); 972} 973 974 975tcu::TestStatus createDeviceWithUnsupportedFeaturesTestTimelineSemaphoreFeatures (Context& context) 976{ 977 const PlatformInterface& vkp = context.getPlatformInterface(); 978 tcu::TestLog& log = context.getTestContext().getLog(); 979 tcu::ResultCollector resultCollector (log); 980 const CustomInstance instance (createCustomInstanceWithExtensions(context, context.getInstanceExtensions(), DE_NULL, true)); 981 const InstanceDriver& instanceDriver (instance.getDriver()); 982 const VkPhysicalDevice physicalDevice = chooseDevice(instanceDriver, instance, context.getTestContext().getCommandLine()); 983 const deUint32 queueFamilyIndex = 0; 984 const deUint32 queueCount = 1; 985 const float queuePriority = 1.0f; 986 const DeviceFeatures deviceFeaturesAll (context.getInstanceInterface(), context.getUsedApiVersion(), physicalDevice, context.getInstanceExtensions(), context.getDeviceExtensions(), DE_TRUE); 987 const VkPhysicalDeviceFeatures2 deviceFeatures2 = deviceFeaturesAll.getCoreFeatures2(); 988 int numErrors = 0; 989 bool isSubProcess = context.getTestContext().getCommandLine().isSubProcess(); 990 991 992 VkPhysicalDeviceFeatures emptyDeviceFeatures; 993 deMemset(&emptyDeviceFeatures, 0, sizeof(emptyDeviceFeatures)); 994 995 // Only non-core extensions will be used when creating the device. 996 vector<const char*> coreExtensions; 997 getCoreDeviceExtensions(context.getUsedApiVersion(), coreExtensions); 998 vector<string> nonCoreExtensions(removeExtensions(context.getDeviceExtensions(), coreExtensions)); 999 1000 vector<const char*> extensionNames; 1001 extensionNames.reserve(nonCoreExtensions.size()); 1002 for (const string& extension : nonCoreExtensions) 1003 extensionNames.push_back(extension.c_str()); 1004 1005 if (const void* featuresStruct = findStructureInChain(const_cast<const void*>(deviceFeatures2.pNext), getStructureType<VkPhysicalDeviceTimelineSemaphoreFeatures>())) 1006 { 1007 static const Feature features[] = 1008 { 1009 FEATURE_ITEM (VkPhysicalDeviceTimelineSemaphoreFeatures, timelineSemaphore), 1010 }; 1011 auto* supportedFeatures = reinterpret_cast<const VkPhysicalDeviceTimelineSemaphoreFeatures*>(featuresStruct); 1012 checkFeatures(vkp, instance, instanceDriver, physicalDevice, 1, features, supportedFeatures, queueFamilyIndex, queueCount, queuePriority, numErrors, resultCollector, &extensionNames, emptyDeviceFeatures, isSubProcess); 1013 } 1014 1015 if (numErrors > 0) 1016 return tcu::TestStatus(resultCollector.getResult(), "Enabling unsupported features didn't return VK_ERROR_FEATURE_NOT_PRESENT."); 1017 else 1018 return tcu::TestStatus(resultCollector.getResult(), resultCollector.getMessage()); 1019} 1020 1021 1022tcu::TestStatus createDeviceWithUnsupportedFeaturesTest8BitStorageFeatures (Context& context) 1023{ 1024 const PlatformInterface& vkp = context.getPlatformInterface(); 1025 tcu::TestLog& log = context.getTestContext().getLog(); 1026 tcu::ResultCollector resultCollector (log); 1027 const CustomInstance instance (createCustomInstanceWithExtensions(context, context.getInstanceExtensions(), DE_NULL, true)); 1028 const InstanceDriver& instanceDriver (instance.getDriver()); 1029 const VkPhysicalDevice physicalDevice = chooseDevice(instanceDriver, instance, context.getTestContext().getCommandLine()); 1030 const deUint32 queueFamilyIndex = 0; 1031 const deUint32 queueCount = 1; 1032 const float queuePriority = 1.0f; 1033 const DeviceFeatures deviceFeaturesAll (context.getInstanceInterface(), context.getUsedApiVersion(), physicalDevice, context.getInstanceExtensions(), context.getDeviceExtensions(), DE_TRUE); 1034 const VkPhysicalDeviceFeatures2 deviceFeatures2 = deviceFeaturesAll.getCoreFeatures2(); 1035 int numErrors = 0; 1036 bool isSubProcess = context.getTestContext().getCommandLine().isSubProcess(); 1037 1038 1039 VkPhysicalDeviceFeatures emptyDeviceFeatures; 1040 deMemset(&emptyDeviceFeatures, 0, sizeof(emptyDeviceFeatures)); 1041 1042 // Only non-core extensions will be used when creating the device. 1043 vector<const char*> coreExtensions; 1044 getCoreDeviceExtensions(context.getUsedApiVersion(), coreExtensions); 1045 vector<string> nonCoreExtensions(removeExtensions(context.getDeviceExtensions(), coreExtensions)); 1046 1047 vector<const char*> extensionNames; 1048 extensionNames.reserve(nonCoreExtensions.size()); 1049 for (const string& extension : nonCoreExtensions) 1050 extensionNames.push_back(extension.c_str()); 1051 1052 if (const void* featuresStruct = findStructureInChain(const_cast<const void*>(deviceFeatures2.pNext), getStructureType<VkPhysicalDevice8BitStorageFeatures>())) 1053 { 1054 static const Feature features[] = 1055 { 1056 FEATURE_ITEM (VkPhysicalDevice8BitStorageFeatures, storageBuffer8BitAccess), 1057 FEATURE_ITEM (VkPhysicalDevice8BitStorageFeatures, uniformAndStorageBuffer8BitAccess), 1058 FEATURE_ITEM (VkPhysicalDevice8BitStorageFeatures, storagePushConstant8), 1059 }; 1060 auto* supportedFeatures = reinterpret_cast<const VkPhysicalDevice8BitStorageFeatures*>(featuresStruct); 1061 checkFeatures(vkp, instance, instanceDriver, physicalDevice, 3, features, supportedFeatures, queueFamilyIndex, queueCount, queuePriority, numErrors, resultCollector, &extensionNames, emptyDeviceFeatures, isSubProcess); 1062 } 1063 1064 if (numErrors > 0) 1065 return tcu::TestStatus(resultCollector.getResult(), "Enabling unsupported features didn't return VK_ERROR_FEATURE_NOT_PRESENT."); 1066 else 1067 return tcu::TestStatus(resultCollector.getResult(), resultCollector.getMessage()); 1068} 1069 1070 1071tcu::TestStatus createDeviceWithUnsupportedFeaturesTestConditionalRenderingFeaturesEXT (Context& context) 1072{ 1073 const PlatformInterface& vkp = context.getPlatformInterface(); 1074 tcu::TestLog& log = context.getTestContext().getLog(); 1075 tcu::ResultCollector resultCollector (log); 1076 const CustomInstance instance (createCustomInstanceWithExtensions(context, context.getInstanceExtensions(), DE_NULL, true)); 1077 const InstanceDriver& instanceDriver (instance.getDriver()); 1078 const VkPhysicalDevice physicalDevice = chooseDevice(instanceDriver, instance, context.getTestContext().getCommandLine()); 1079 const deUint32 queueFamilyIndex = 0; 1080 const deUint32 queueCount = 1; 1081 const float queuePriority = 1.0f; 1082 const DeviceFeatures deviceFeaturesAll (context.getInstanceInterface(), context.getUsedApiVersion(), physicalDevice, context.getInstanceExtensions(), context.getDeviceExtensions(), DE_TRUE); 1083 const VkPhysicalDeviceFeatures2 deviceFeatures2 = deviceFeaturesAll.getCoreFeatures2(); 1084 int numErrors = 0; 1085 bool isSubProcess = context.getTestContext().getCommandLine().isSubProcess(); 1086 1087 1088 VkPhysicalDeviceFeatures emptyDeviceFeatures; 1089 deMemset(&emptyDeviceFeatures, 0, sizeof(emptyDeviceFeatures)); 1090 1091 // Only non-core extensions will be used when creating the device. 1092 vector<const char*> coreExtensions; 1093 getCoreDeviceExtensions(context.getUsedApiVersion(), coreExtensions); 1094 vector<string> nonCoreExtensions(removeExtensions(context.getDeviceExtensions(), coreExtensions)); 1095 1096 vector<const char*> extensionNames; 1097 extensionNames.reserve(nonCoreExtensions.size()); 1098 for (const string& extension : nonCoreExtensions) 1099 extensionNames.push_back(extension.c_str()); 1100 1101 if (const void* featuresStruct = findStructureInChain(const_cast<const void*>(deviceFeatures2.pNext), getStructureType<VkPhysicalDeviceConditionalRenderingFeaturesEXT>())) 1102 { 1103 static const Feature features[] = 1104 { 1105 FEATURE_ITEM (VkPhysicalDeviceConditionalRenderingFeaturesEXT, conditionalRendering), 1106 FEATURE_ITEM (VkPhysicalDeviceConditionalRenderingFeaturesEXT, inheritedConditionalRendering), 1107 }; 1108 auto* supportedFeatures = reinterpret_cast<const VkPhysicalDeviceConditionalRenderingFeaturesEXT*>(featuresStruct); 1109 checkFeatures(vkp, instance, instanceDriver, physicalDevice, 2, features, supportedFeatures, queueFamilyIndex, queueCount, queuePriority, numErrors, resultCollector, &extensionNames, emptyDeviceFeatures, isSubProcess); 1110 } 1111 1112 if (numErrors > 0) 1113 return tcu::TestStatus(resultCollector.getResult(), "Enabling unsupported features didn't return VK_ERROR_FEATURE_NOT_PRESENT."); 1114 else 1115 return tcu::TestStatus(resultCollector.getResult(), resultCollector.getMessage()); 1116} 1117 1118 1119tcu::TestStatus createDeviceWithUnsupportedFeaturesTestVulkanMemoryModelFeatures (Context& context) 1120{ 1121 const PlatformInterface& vkp = context.getPlatformInterface(); 1122 tcu::TestLog& log = context.getTestContext().getLog(); 1123 tcu::ResultCollector resultCollector (log); 1124 const CustomInstance instance (createCustomInstanceWithExtensions(context, context.getInstanceExtensions(), DE_NULL, true)); 1125 const InstanceDriver& instanceDriver (instance.getDriver()); 1126 const VkPhysicalDevice physicalDevice = chooseDevice(instanceDriver, instance, context.getTestContext().getCommandLine()); 1127 const deUint32 queueFamilyIndex = 0; 1128 const deUint32 queueCount = 1; 1129 const float queuePriority = 1.0f; 1130 const DeviceFeatures deviceFeaturesAll (context.getInstanceInterface(), context.getUsedApiVersion(), physicalDevice, context.getInstanceExtensions(), context.getDeviceExtensions(), DE_TRUE); 1131 const VkPhysicalDeviceFeatures2 deviceFeatures2 = deviceFeaturesAll.getCoreFeatures2(); 1132 int numErrors = 0; 1133 bool isSubProcess = context.getTestContext().getCommandLine().isSubProcess(); 1134 1135 1136 VkPhysicalDeviceFeatures emptyDeviceFeatures; 1137 deMemset(&emptyDeviceFeatures, 0, sizeof(emptyDeviceFeatures)); 1138 1139 // Only non-core extensions will be used when creating the device. 1140 vector<const char*> coreExtensions; 1141 getCoreDeviceExtensions(context.getUsedApiVersion(), coreExtensions); 1142 vector<string> nonCoreExtensions(removeExtensions(context.getDeviceExtensions(), coreExtensions)); 1143 1144 vector<const char*> extensionNames; 1145 extensionNames.reserve(nonCoreExtensions.size()); 1146 for (const string& extension : nonCoreExtensions) 1147 extensionNames.push_back(extension.c_str()); 1148 1149 if (const void* featuresStruct = findStructureInChain(const_cast<const void*>(deviceFeatures2.pNext), getStructureType<VkPhysicalDeviceVulkanMemoryModelFeatures>())) 1150 { 1151 static const Feature features[] = 1152 { 1153 FEATURE_ITEM (VkPhysicalDeviceVulkanMemoryModelFeatures, vulkanMemoryModel), 1154 FEATURE_ITEM (VkPhysicalDeviceVulkanMemoryModelFeatures, vulkanMemoryModelDeviceScope), 1155 FEATURE_ITEM (VkPhysicalDeviceVulkanMemoryModelFeatures, vulkanMemoryModelAvailabilityVisibilityChains), 1156 }; 1157 auto* supportedFeatures = reinterpret_cast<const VkPhysicalDeviceVulkanMemoryModelFeatures*>(featuresStruct); 1158 checkFeatures(vkp, instance, instanceDriver, physicalDevice, 3, features, supportedFeatures, queueFamilyIndex, queueCount, queuePriority, numErrors, resultCollector, &extensionNames, emptyDeviceFeatures, isSubProcess); 1159 } 1160 1161 if (numErrors > 0) 1162 return tcu::TestStatus(resultCollector.getResult(), "Enabling unsupported features didn't return VK_ERROR_FEATURE_NOT_PRESENT."); 1163 else 1164 return tcu::TestStatus(resultCollector.getResult(), resultCollector.getMessage()); 1165} 1166 1167 1168tcu::TestStatus createDeviceWithUnsupportedFeaturesTestShaderAtomicInt64Features (Context& context) 1169{ 1170 const PlatformInterface& vkp = context.getPlatformInterface(); 1171 tcu::TestLog& log = context.getTestContext().getLog(); 1172 tcu::ResultCollector resultCollector (log); 1173 const CustomInstance instance (createCustomInstanceWithExtensions(context, context.getInstanceExtensions(), DE_NULL, true)); 1174 const InstanceDriver& instanceDriver (instance.getDriver()); 1175 const VkPhysicalDevice physicalDevice = chooseDevice(instanceDriver, instance, context.getTestContext().getCommandLine()); 1176 const deUint32 queueFamilyIndex = 0; 1177 const deUint32 queueCount = 1; 1178 const float queuePriority = 1.0f; 1179 const DeviceFeatures deviceFeaturesAll (context.getInstanceInterface(), context.getUsedApiVersion(), physicalDevice, context.getInstanceExtensions(), context.getDeviceExtensions(), DE_TRUE); 1180 const VkPhysicalDeviceFeatures2 deviceFeatures2 = deviceFeaturesAll.getCoreFeatures2(); 1181 int numErrors = 0; 1182 bool isSubProcess = context.getTestContext().getCommandLine().isSubProcess(); 1183 1184 1185 VkPhysicalDeviceFeatures emptyDeviceFeatures; 1186 deMemset(&emptyDeviceFeatures, 0, sizeof(emptyDeviceFeatures)); 1187 1188 // Only non-core extensions will be used when creating the device. 1189 vector<const char*> coreExtensions; 1190 getCoreDeviceExtensions(context.getUsedApiVersion(), coreExtensions); 1191 vector<string> nonCoreExtensions(removeExtensions(context.getDeviceExtensions(), coreExtensions)); 1192 1193 vector<const char*> extensionNames; 1194 extensionNames.reserve(nonCoreExtensions.size()); 1195 for (const string& extension : nonCoreExtensions) 1196 extensionNames.push_back(extension.c_str()); 1197 1198 if (const void* featuresStruct = findStructureInChain(const_cast<const void*>(deviceFeatures2.pNext), getStructureType<VkPhysicalDeviceShaderAtomicInt64Features>())) 1199 { 1200 static const Feature features[] = 1201 { 1202 FEATURE_ITEM (VkPhysicalDeviceShaderAtomicInt64Features, shaderBufferInt64Atomics), 1203 FEATURE_ITEM (VkPhysicalDeviceShaderAtomicInt64Features, shaderSharedInt64Atomics), 1204 }; 1205 auto* supportedFeatures = reinterpret_cast<const VkPhysicalDeviceShaderAtomicInt64Features*>(featuresStruct); 1206 checkFeatures(vkp, instance, instanceDriver, physicalDevice, 2, features, supportedFeatures, queueFamilyIndex, queueCount, queuePriority, numErrors, resultCollector, &extensionNames, emptyDeviceFeatures, isSubProcess); 1207 } 1208 1209 if (numErrors > 0) 1210 return tcu::TestStatus(resultCollector.getResult(), "Enabling unsupported features didn't return VK_ERROR_FEATURE_NOT_PRESENT."); 1211 else 1212 return tcu::TestStatus(resultCollector.getResult(), resultCollector.getMessage()); 1213} 1214 1215 1216tcu::TestStatus createDeviceWithUnsupportedFeaturesTestShaderAtomicFloatFeaturesEXT (Context& context) 1217{ 1218 const PlatformInterface& vkp = context.getPlatformInterface(); 1219 tcu::TestLog& log = context.getTestContext().getLog(); 1220 tcu::ResultCollector resultCollector (log); 1221 const CustomInstance instance (createCustomInstanceWithExtensions(context, context.getInstanceExtensions(), DE_NULL, true)); 1222 const InstanceDriver& instanceDriver (instance.getDriver()); 1223 const VkPhysicalDevice physicalDevice = chooseDevice(instanceDriver, instance, context.getTestContext().getCommandLine()); 1224 const deUint32 queueFamilyIndex = 0; 1225 const deUint32 queueCount = 1; 1226 const float queuePriority = 1.0f; 1227 const DeviceFeatures deviceFeaturesAll (context.getInstanceInterface(), context.getUsedApiVersion(), physicalDevice, context.getInstanceExtensions(), context.getDeviceExtensions(), DE_TRUE); 1228 const VkPhysicalDeviceFeatures2 deviceFeatures2 = deviceFeaturesAll.getCoreFeatures2(); 1229 int numErrors = 0; 1230 bool isSubProcess = context.getTestContext().getCommandLine().isSubProcess(); 1231 1232 1233 VkPhysicalDeviceFeatures emptyDeviceFeatures; 1234 deMemset(&emptyDeviceFeatures, 0, sizeof(emptyDeviceFeatures)); 1235 1236 // Only non-core extensions will be used when creating the device. 1237 vector<const char*> coreExtensions; 1238 getCoreDeviceExtensions(context.getUsedApiVersion(), coreExtensions); 1239 vector<string> nonCoreExtensions(removeExtensions(context.getDeviceExtensions(), coreExtensions)); 1240 1241 vector<const char*> extensionNames; 1242 extensionNames.reserve(nonCoreExtensions.size()); 1243 for (const string& extension : nonCoreExtensions) 1244 extensionNames.push_back(extension.c_str()); 1245 1246 if (const void* featuresStruct = findStructureInChain(const_cast<const void*>(deviceFeatures2.pNext), getStructureType<VkPhysicalDeviceShaderAtomicFloatFeaturesEXT>())) 1247 { 1248 static const Feature features[] = 1249 { 1250 FEATURE_ITEM (VkPhysicalDeviceShaderAtomicFloatFeaturesEXT, shaderBufferFloat32Atomics), 1251 FEATURE_ITEM (VkPhysicalDeviceShaderAtomicFloatFeaturesEXT, shaderBufferFloat32AtomicAdd), 1252 FEATURE_ITEM (VkPhysicalDeviceShaderAtomicFloatFeaturesEXT, shaderBufferFloat64Atomics), 1253 FEATURE_ITEM (VkPhysicalDeviceShaderAtomicFloatFeaturesEXT, shaderBufferFloat64AtomicAdd), 1254 FEATURE_ITEM (VkPhysicalDeviceShaderAtomicFloatFeaturesEXT, shaderSharedFloat32Atomics), 1255 FEATURE_ITEM (VkPhysicalDeviceShaderAtomicFloatFeaturesEXT, shaderSharedFloat32AtomicAdd), 1256 FEATURE_ITEM (VkPhysicalDeviceShaderAtomicFloatFeaturesEXT, shaderSharedFloat64Atomics), 1257 FEATURE_ITEM (VkPhysicalDeviceShaderAtomicFloatFeaturesEXT, shaderSharedFloat64AtomicAdd), 1258 FEATURE_ITEM (VkPhysicalDeviceShaderAtomicFloatFeaturesEXT, shaderImageFloat32Atomics), 1259 FEATURE_ITEM (VkPhysicalDeviceShaderAtomicFloatFeaturesEXT, shaderImageFloat32AtomicAdd), 1260 FEATURE_ITEM (VkPhysicalDeviceShaderAtomicFloatFeaturesEXT, sparseImageFloat32Atomics), 1261 FEATURE_ITEM (VkPhysicalDeviceShaderAtomicFloatFeaturesEXT, sparseImageFloat32AtomicAdd), 1262 }; 1263 auto* supportedFeatures = reinterpret_cast<const VkPhysicalDeviceShaderAtomicFloatFeaturesEXT*>(featuresStruct); 1264 checkFeatures(vkp, instance, instanceDriver, physicalDevice, 12, features, supportedFeatures, queueFamilyIndex, queueCount, queuePriority, numErrors, resultCollector, &extensionNames, emptyDeviceFeatures, isSubProcess); 1265 } 1266 1267 if (numErrors > 0) 1268 return tcu::TestStatus(resultCollector.getResult(), "Enabling unsupported features didn't return VK_ERROR_FEATURE_NOT_PRESENT."); 1269 else 1270 return tcu::TestStatus(resultCollector.getResult(), resultCollector.getMessage()); 1271} 1272 1273 1274tcu::TestStatus createDeviceWithUnsupportedFeaturesTestShaderAtomicFloat2FeaturesEXT (Context& context) 1275{ 1276 const PlatformInterface& vkp = context.getPlatformInterface(); 1277 tcu::TestLog& log = context.getTestContext().getLog(); 1278 tcu::ResultCollector resultCollector (log); 1279 const CustomInstance instance (createCustomInstanceWithExtensions(context, context.getInstanceExtensions(), DE_NULL, true)); 1280 const InstanceDriver& instanceDriver (instance.getDriver()); 1281 const VkPhysicalDevice physicalDevice = chooseDevice(instanceDriver, instance, context.getTestContext().getCommandLine()); 1282 const deUint32 queueFamilyIndex = 0; 1283 const deUint32 queueCount = 1; 1284 const float queuePriority = 1.0f; 1285 const DeviceFeatures deviceFeaturesAll (context.getInstanceInterface(), context.getUsedApiVersion(), physicalDevice, context.getInstanceExtensions(), context.getDeviceExtensions(), DE_TRUE); 1286 const VkPhysicalDeviceFeatures2 deviceFeatures2 = deviceFeaturesAll.getCoreFeatures2(); 1287 int numErrors = 0; 1288 bool isSubProcess = context.getTestContext().getCommandLine().isSubProcess(); 1289 1290 1291 VkPhysicalDeviceFeatures emptyDeviceFeatures; 1292 deMemset(&emptyDeviceFeatures, 0, sizeof(emptyDeviceFeatures)); 1293 1294 // Only non-core extensions will be used when creating the device. 1295 vector<const char*> coreExtensions; 1296 getCoreDeviceExtensions(context.getUsedApiVersion(), coreExtensions); 1297 vector<string> nonCoreExtensions(removeExtensions(context.getDeviceExtensions(), coreExtensions)); 1298 1299 vector<const char*> extensionNames; 1300 extensionNames.reserve(nonCoreExtensions.size()); 1301 for (const string& extension : nonCoreExtensions) 1302 extensionNames.push_back(extension.c_str()); 1303 1304 if (const void* featuresStruct = findStructureInChain(const_cast<const void*>(deviceFeatures2.pNext), getStructureType<VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT>())) 1305 { 1306 static const Feature features[] = 1307 { 1308 FEATURE_ITEM (VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT, shaderBufferFloat16Atomics), 1309 FEATURE_ITEM (VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT, shaderBufferFloat16AtomicAdd), 1310 FEATURE_ITEM (VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT, shaderBufferFloat16AtomicMinMax), 1311 FEATURE_ITEM (VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT, shaderBufferFloat32AtomicMinMax), 1312 FEATURE_ITEM (VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT, shaderBufferFloat64AtomicMinMax), 1313 FEATURE_ITEM (VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT, shaderSharedFloat16Atomics), 1314 FEATURE_ITEM (VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT, shaderSharedFloat16AtomicAdd), 1315 FEATURE_ITEM (VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT, shaderSharedFloat16AtomicMinMax), 1316 FEATURE_ITEM (VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT, shaderSharedFloat32AtomicMinMax), 1317 FEATURE_ITEM (VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT, shaderSharedFloat64AtomicMinMax), 1318 FEATURE_ITEM (VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT, shaderImageFloat32AtomicMinMax), 1319 FEATURE_ITEM (VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT, sparseImageFloat32AtomicMinMax), 1320 }; 1321 auto* supportedFeatures = reinterpret_cast<const VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT*>(featuresStruct); 1322 checkFeatures(vkp, instance, instanceDriver, physicalDevice, 12, features, supportedFeatures, queueFamilyIndex, queueCount, queuePriority, numErrors, resultCollector, &extensionNames, emptyDeviceFeatures, isSubProcess); 1323 } 1324 1325 if (numErrors > 0) 1326 return tcu::TestStatus(resultCollector.getResult(), "Enabling unsupported features didn't return VK_ERROR_FEATURE_NOT_PRESENT."); 1327 else 1328 return tcu::TestStatus(resultCollector.getResult(), resultCollector.getMessage()); 1329} 1330 1331 1332tcu::TestStatus createDeviceWithUnsupportedFeaturesTestVertexAttributeDivisorFeaturesEXT (Context& context) 1333{ 1334 const PlatformInterface& vkp = context.getPlatformInterface(); 1335 tcu::TestLog& log = context.getTestContext().getLog(); 1336 tcu::ResultCollector resultCollector (log); 1337 const CustomInstance instance (createCustomInstanceWithExtensions(context, context.getInstanceExtensions(), DE_NULL, true)); 1338 const InstanceDriver& instanceDriver (instance.getDriver()); 1339 const VkPhysicalDevice physicalDevice = chooseDevice(instanceDriver, instance, context.getTestContext().getCommandLine()); 1340 const deUint32 queueFamilyIndex = 0; 1341 const deUint32 queueCount = 1; 1342 const float queuePriority = 1.0f; 1343 const DeviceFeatures deviceFeaturesAll (context.getInstanceInterface(), context.getUsedApiVersion(), physicalDevice, context.getInstanceExtensions(), context.getDeviceExtensions(), DE_TRUE); 1344 const VkPhysicalDeviceFeatures2 deviceFeatures2 = deviceFeaturesAll.getCoreFeatures2(); 1345 int numErrors = 0; 1346 bool isSubProcess = context.getTestContext().getCommandLine().isSubProcess(); 1347 1348 1349 VkPhysicalDeviceFeatures emptyDeviceFeatures; 1350 deMemset(&emptyDeviceFeatures, 0, sizeof(emptyDeviceFeatures)); 1351 1352 // Only non-core extensions will be used when creating the device. 1353 vector<const char*> coreExtensions; 1354 getCoreDeviceExtensions(context.getUsedApiVersion(), coreExtensions); 1355 vector<string> nonCoreExtensions(removeExtensions(context.getDeviceExtensions(), coreExtensions)); 1356 1357 vector<const char*> extensionNames; 1358 extensionNames.reserve(nonCoreExtensions.size()); 1359 for (const string& extension : nonCoreExtensions) 1360 extensionNames.push_back(extension.c_str()); 1361 1362 if (const void* featuresStruct = findStructureInChain(const_cast<const void*>(deviceFeatures2.pNext), getStructureType<VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT>())) 1363 { 1364 static const Feature features[] = 1365 { 1366 FEATURE_ITEM (VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT, vertexAttributeInstanceRateDivisor), 1367 FEATURE_ITEM (VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT, vertexAttributeInstanceRateZeroDivisor), 1368 }; 1369 auto* supportedFeatures = reinterpret_cast<const VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT*>(featuresStruct); 1370 checkFeatures(vkp, instance, instanceDriver, physicalDevice, 2, features, supportedFeatures, queueFamilyIndex, queueCount, queuePriority, numErrors, resultCollector, &extensionNames, emptyDeviceFeatures, isSubProcess); 1371 } 1372 1373 if (numErrors > 0) 1374 return tcu::TestStatus(resultCollector.getResult(), "Enabling unsupported features didn't return VK_ERROR_FEATURE_NOT_PRESENT."); 1375 else 1376 return tcu::TestStatus(resultCollector.getResult(), resultCollector.getMessage()); 1377} 1378 1379 1380tcu::TestStatus createDeviceWithUnsupportedFeaturesTestASTCDecodeFeaturesEXT (Context& context) 1381{ 1382 const PlatformInterface& vkp = context.getPlatformInterface(); 1383 tcu::TestLog& log = context.getTestContext().getLog(); 1384 tcu::ResultCollector resultCollector (log); 1385 const CustomInstance instance (createCustomInstanceWithExtensions(context, context.getInstanceExtensions(), DE_NULL, true)); 1386 const InstanceDriver& instanceDriver (instance.getDriver()); 1387 const VkPhysicalDevice physicalDevice = chooseDevice(instanceDriver, instance, context.getTestContext().getCommandLine()); 1388 const deUint32 queueFamilyIndex = 0; 1389 const deUint32 queueCount = 1; 1390 const float queuePriority = 1.0f; 1391 const DeviceFeatures deviceFeaturesAll (context.getInstanceInterface(), context.getUsedApiVersion(), physicalDevice, context.getInstanceExtensions(), context.getDeviceExtensions(), DE_TRUE); 1392 const VkPhysicalDeviceFeatures2 deviceFeatures2 = deviceFeaturesAll.getCoreFeatures2(); 1393 int numErrors = 0; 1394 bool isSubProcess = context.getTestContext().getCommandLine().isSubProcess(); 1395 1396 1397 VkPhysicalDeviceFeatures emptyDeviceFeatures; 1398 deMemset(&emptyDeviceFeatures, 0, sizeof(emptyDeviceFeatures)); 1399 1400 // Only non-core extensions will be used when creating the device. 1401 vector<const char*> coreExtensions; 1402 getCoreDeviceExtensions(context.getUsedApiVersion(), coreExtensions); 1403 vector<string> nonCoreExtensions(removeExtensions(context.getDeviceExtensions(), coreExtensions)); 1404 1405 vector<const char*> extensionNames; 1406 extensionNames.reserve(nonCoreExtensions.size()); 1407 for (const string& extension : nonCoreExtensions) 1408 extensionNames.push_back(extension.c_str()); 1409 1410 if (const void* featuresStruct = findStructureInChain(const_cast<const void*>(deviceFeatures2.pNext), getStructureType<VkPhysicalDeviceASTCDecodeFeaturesEXT>())) 1411 { 1412 static const Feature features[] = 1413 { 1414 FEATURE_ITEM (VkPhysicalDeviceASTCDecodeFeaturesEXT, decodeModeSharedExponent), 1415 }; 1416 auto* supportedFeatures = reinterpret_cast<const VkPhysicalDeviceASTCDecodeFeaturesEXT*>(featuresStruct); 1417 checkFeatures(vkp, instance, instanceDriver, physicalDevice, 1, features, supportedFeatures, queueFamilyIndex, queueCount, queuePriority, numErrors, resultCollector, &extensionNames, emptyDeviceFeatures, isSubProcess); 1418 } 1419 1420 if (numErrors > 0) 1421 return tcu::TestStatus(resultCollector.getResult(), "Enabling unsupported features didn't return VK_ERROR_FEATURE_NOT_PRESENT."); 1422 else 1423 return tcu::TestStatus(resultCollector.getResult(), resultCollector.getMessage()); 1424} 1425 1426 1427tcu::TestStatus createDeviceWithUnsupportedFeaturesTestTransformFeedbackFeaturesEXT (Context& context) 1428{ 1429 const PlatformInterface& vkp = context.getPlatformInterface(); 1430 tcu::TestLog& log = context.getTestContext().getLog(); 1431 tcu::ResultCollector resultCollector (log); 1432 const CustomInstance instance (createCustomInstanceWithExtensions(context, context.getInstanceExtensions(), DE_NULL, true)); 1433 const InstanceDriver& instanceDriver (instance.getDriver()); 1434 const VkPhysicalDevice physicalDevice = chooseDevice(instanceDriver, instance, context.getTestContext().getCommandLine()); 1435 const deUint32 queueFamilyIndex = 0; 1436 const deUint32 queueCount = 1; 1437 const float queuePriority = 1.0f; 1438 const DeviceFeatures deviceFeaturesAll (context.getInstanceInterface(), context.getUsedApiVersion(), physicalDevice, context.getInstanceExtensions(), context.getDeviceExtensions(), DE_TRUE); 1439 const VkPhysicalDeviceFeatures2 deviceFeatures2 = deviceFeaturesAll.getCoreFeatures2(); 1440 int numErrors = 0; 1441 bool isSubProcess = context.getTestContext().getCommandLine().isSubProcess(); 1442 1443 1444 VkPhysicalDeviceFeatures emptyDeviceFeatures; 1445 deMemset(&emptyDeviceFeatures, 0, sizeof(emptyDeviceFeatures)); 1446 1447 // Only non-core extensions will be used when creating the device. 1448 vector<const char*> coreExtensions; 1449 getCoreDeviceExtensions(context.getUsedApiVersion(), coreExtensions); 1450 vector<string> nonCoreExtensions(removeExtensions(context.getDeviceExtensions(), coreExtensions)); 1451 1452 vector<const char*> extensionNames; 1453 extensionNames.reserve(nonCoreExtensions.size()); 1454 for (const string& extension : nonCoreExtensions) 1455 extensionNames.push_back(extension.c_str()); 1456 1457 if (const void* featuresStruct = findStructureInChain(const_cast<const void*>(deviceFeatures2.pNext), getStructureType<VkPhysicalDeviceTransformFeedbackFeaturesEXT>())) 1458 { 1459 static const Feature features[] = 1460 { 1461 FEATURE_ITEM (VkPhysicalDeviceTransformFeedbackFeaturesEXT, transformFeedback), 1462 FEATURE_ITEM (VkPhysicalDeviceTransformFeedbackFeaturesEXT, geometryStreams), 1463 }; 1464 auto* supportedFeatures = reinterpret_cast<const VkPhysicalDeviceTransformFeedbackFeaturesEXT*>(featuresStruct); 1465 checkFeatures(vkp, instance, instanceDriver, physicalDevice, 2, features, supportedFeatures, queueFamilyIndex, queueCount, queuePriority, numErrors, resultCollector, &extensionNames, emptyDeviceFeatures, isSubProcess); 1466 } 1467 1468 if (numErrors > 0) 1469 return tcu::TestStatus(resultCollector.getResult(), "Enabling unsupported features didn't return VK_ERROR_FEATURE_NOT_PRESENT."); 1470 else 1471 return tcu::TestStatus(resultCollector.getResult(), resultCollector.getMessage()); 1472} 1473 1474 1475tcu::TestStatus createDeviceWithUnsupportedFeaturesTestRepresentativeFragmentTestFeaturesNV (Context& context) 1476{ 1477 const PlatformInterface& vkp = context.getPlatformInterface(); 1478 tcu::TestLog& log = context.getTestContext().getLog(); 1479 tcu::ResultCollector resultCollector (log); 1480 const CustomInstance instance (createCustomInstanceWithExtensions(context, context.getInstanceExtensions(), DE_NULL, true)); 1481 const InstanceDriver& instanceDriver (instance.getDriver()); 1482 const VkPhysicalDevice physicalDevice = chooseDevice(instanceDriver, instance, context.getTestContext().getCommandLine()); 1483 const deUint32 queueFamilyIndex = 0; 1484 const deUint32 queueCount = 1; 1485 const float queuePriority = 1.0f; 1486 const DeviceFeatures deviceFeaturesAll (context.getInstanceInterface(), context.getUsedApiVersion(), physicalDevice, context.getInstanceExtensions(), context.getDeviceExtensions(), DE_TRUE); 1487 const VkPhysicalDeviceFeatures2 deviceFeatures2 = deviceFeaturesAll.getCoreFeatures2(); 1488 int numErrors = 0; 1489 bool isSubProcess = context.getTestContext().getCommandLine().isSubProcess(); 1490 1491 1492 VkPhysicalDeviceFeatures emptyDeviceFeatures; 1493 deMemset(&emptyDeviceFeatures, 0, sizeof(emptyDeviceFeatures)); 1494 1495 // Only non-core extensions will be used when creating the device. 1496 vector<const char*> coreExtensions; 1497 getCoreDeviceExtensions(context.getUsedApiVersion(), coreExtensions); 1498 vector<string> nonCoreExtensions(removeExtensions(context.getDeviceExtensions(), coreExtensions)); 1499 1500 vector<const char*> extensionNames; 1501 extensionNames.reserve(nonCoreExtensions.size()); 1502 for (const string& extension : nonCoreExtensions) 1503 extensionNames.push_back(extension.c_str()); 1504 1505 if (const void* featuresStruct = findStructureInChain(const_cast<const void*>(deviceFeatures2.pNext), getStructureType<VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV>())) 1506 { 1507 static const Feature features[] = 1508 { 1509 FEATURE_ITEM (VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV, representativeFragmentTest), 1510 }; 1511 auto* supportedFeatures = reinterpret_cast<const VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV*>(featuresStruct); 1512 checkFeatures(vkp, instance, instanceDriver, physicalDevice, 1, features, supportedFeatures, queueFamilyIndex, queueCount, queuePriority, numErrors, resultCollector, &extensionNames, emptyDeviceFeatures, isSubProcess); 1513 } 1514 1515 if (numErrors > 0) 1516 return tcu::TestStatus(resultCollector.getResult(), "Enabling unsupported features didn't return VK_ERROR_FEATURE_NOT_PRESENT."); 1517 else 1518 return tcu::TestStatus(resultCollector.getResult(), resultCollector.getMessage()); 1519} 1520 1521 1522tcu::TestStatus createDeviceWithUnsupportedFeaturesTestExclusiveScissorFeaturesNV (Context& context) 1523{ 1524 const PlatformInterface& vkp = context.getPlatformInterface(); 1525 tcu::TestLog& log = context.getTestContext().getLog(); 1526 tcu::ResultCollector resultCollector (log); 1527 const CustomInstance instance (createCustomInstanceWithExtensions(context, context.getInstanceExtensions(), DE_NULL, true)); 1528 const InstanceDriver& instanceDriver (instance.getDriver()); 1529 const VkPhysicalDevice physicalDevice = chooseDevice(instanceDriver, instance, context.getTestContext().getCommandLine()); 1530 const deUint32 queueFamilyIndex = 0; 1531 const deUint32 queueCount = 1; 1532 const float queuePriority = 1.0f; 1533 const DeviceFeatures deviceFeaturesAll (context.getInstanceInterface(), context.getUsedApiVersion(), physicalDevice, context.getInstanceExtensions(), context.getDeviceExtensions(), DE_TRUE); 1534 const VkPhysicalDeviceFeatures2 deviceFeatures2 = deviceFeaturesAll.getCoreFeatures2(); 1535 int numErrors = 0; 1536 bool isSubProcess = context.getTestContext().getCommandLine().isSubProcess(); 1537 1538 1539 VkPhysicalDeviceFeatures emptyDeviceFeatures; 1540 deMemset(&emptyDeviceFeatures, 0, sizeof(emptyDeviceFeatures)); 1541 1542 // Only non-core extensions will be used when creating the device. 1543 vector<const char*> coreExtensions; 1544 getCoreDeviceExtensions(context.getUsedApiVersion(), coreExtensions); 1545 vector<string> nonCoreExtensions(removeExtensions(context.getDeviceExtensions(), coreExtensions)); 1546 1547 vector<const char*> extensionNames; 1548 extensionNames.reserve(nonCoreExtensions.size()); 1549 for (const string& extension : nonCoreExtensions) 1550 extensionNames.push_back(extension.c_str()); 1551 1552 if (const void* featuresStruct = findStructureInChain(const_cast<const void*>(deviceFeatures2.pNext), getStructureType<VkPhysicalDeviceExclusiveScissorFeaturesNV>())) 1553 { 1554 static const Feature features[] = 1555 { 1556 FEATURE_ITEM (VkPhysicalDeviceExclusiveScissorFeaturesNV, exclusiveScissor), 1557 }; 1558 auto* supportedFeatures = reinterpret_cast<const VkPhysicalDeviceExclusiveScissorFeaturesNV*>(featuresStruct); 1559 checkFeatures(vkp, instance, instanceDriver, physicalDevice, 1, features, supportedFeatures, queueFamilyIndex, queueCount, queuePriority, numErrors, resultCollector, &extensionNames, emptyDeviceFeatures, isSubProcess); 1560 } 1561 1562 if (numErrors > 0) 1563 return tcu::TestStatus(resultCollector.getResult(), "Enabling unsupported features didn't return VK_ERROR_FEATURE_NOT_PRESENT."); 1564 else 1565 return tcu::TestStatus(resultCollector.getResult(), resultCollector.getMessage()); 1566} 1567 1568 1569tcu::TestStatus createDeviceWithUnsupportedFeaturesTestCornerSampledImageFeaturesNV (Context& context) 1570{ 1571 const PlatformInterface& vkp = context.getPlatformInterface(); 1572 tcu::TestLog& log = context.getTestContext().getLog(); 1573 tcu::ResultCollector resultCollector (log); 1574 const CustomInstance instance (createCustomInstanceWithExtensions(context, context.getInstanceExtensions(), DE_NULL, true)); 1575 const InstanceDriver& instanceDriver (instance.getDriver()); 1576 const VkPhysicalDevice physicalDevice = chooseDevice(instanceDriver, instance, context.getTestContext().getCommandLine()); 1577 const deUint32 queueFamilyIndex = 0; 1578 const deUint32 queueCount = 1; 1579 const float queuePriority = 1.0f; 1580 const DeviceFeatures deviceFeaturesAll (context.getInstanceInterface(), context.getUsedApiVersion(), physicalDevice, context.getInstanceExtensions(), context.getDeviceExtensions(), DE_TRUE); 1581 const VkPhysicalDeviceFeatures2 deviceFeatures2 = deviceFeaturesAll.getCoreFeatures2(); 1582 int numErrors = 0; 1583 bool isSubProcess = context.getTestContext().getCommandLine().isSubProcess(); 1584 1585 1586 VkPhysicalDeviceFeatures emptyDeviceFeatures; 1587 deMemset(&emptyDeviceFeatures, 0, sizeof(emptyDeviceFeatures)); 1588 1589 // Only non-core extensions will be used when creating the device. 1590 vector<const char*> coreExtensions; 1591 getCoreDeviceExtensions(context.getUsedApiVersion(), coreExtensions); 1592 vector<string> nonCoreExtensions(removeExtensions(context.getDeviceExtensions(), coreExtensions)); 1593 1594 vector<const char*> extensionNames; 1595 extensionNames.reserve(nonCoreExtensions.size()); 1596 for (const string& extension : nonCoreExtensions) 1597 extensionNames.push_back(extension.c_str()); 1598 1599 if (const void* featuresStruct = findStructureInChain(const_cast<const void*>(deviceFeatures2.pNext), getStructureType<VkPhysicalDeviceCornerSampledImageFeaturesNV>())) 1600 { 1601 static const Feature features[] = 1602 { 1603 FEATURE_ITEM (VkPhysicalDeviceCornerSampledImageFeaturesNV, cornerSampledImage), 1604 }; 1605 auto* supportedFeatures = reinterpret_cast<const VkPhysicalDeviceCornerSampledImageFeaturesNV*>(featuresStruct); 1606 checkFeatures(vkp, instance, instanceDriver, physicalDevice, 1, features, supportedFeatures, queueFamilyIndex, queueCount, queuePriority, numErrors, resultCollector, &extensionNames, emptyDeviceFeatures, isSubProcess); 1607 } 1608 1609 if (numErrors > 0) 1610 return tcu::TestStatus(resultCollector.getResult(), "Enabling unsupported features didn't return VK_ERROR_FEATURE_NOT_PRESENT."); 1611 else 1612 return tcu::TestStatus(resultCollector.getResult(), resultCollector.getMessage()); 1613} 1614 1615 1616tcu::TestStatus createDeviceWithUnsupportedFeaturesTestComputeShaderDerivativesFeaturesNV (Context& context) 1617{ 1618 const PlatformInterface& vkp = context.getPlatformInterface(); 1619 tcu::TestLog& log = context.getTestContext().getLog(); 1620 tcu::ResultCollector resultCollector (log); 1621 const CustomInstance instance (createCustomInstanceWithExtensions(context, context.getInstanceExtensions(), DE_NULL, true)); 1622 const InstanceDriver& instanceDriver (instance.getDriver()); 1623 const VkPhysicalDevice physicalDevice = chooseDevice(instanceDriver, instance, context.getTestContext().getCommandLine()); 1624 const deUint32 queueFamilyIndex = 0; 1625 const deUint32 queueCount = 1; 1626 const float queuePriority = 1.0f; 1627 const DeviceFeatures deviceFeaturesAll (context.getInstanceInterface(), context.getUsedApiVersion(), physicalDevice, context.getInstanceExtensions(), context.getDeviceExtensions(), DE_TRUE); 1628 const VkPhysicalDeviceFeatures2 deviceFeatures2 = deviceFeaturesAll.getCoreFeatures2(); 1629 int numErrors = 0; 1630 bool isSubProcess = context.getTestContext().getCommandLine().isSubProcess(); 1631 1632 1633 VkPhysicalDeviceFeatures emptyDeviceFeatures; 1634 deMemset(&emptyDeviceFeatures, 0, sizeof(emptyDeviceFeatures)); 1635 1636 // Only non-core extensions will be used when creating the device. 1637 vector<const char*> coreExtensions; 1638 getCoreDeviceExtensions(context.getUsedApiVersion(), coreExtensions); 1639 vector<string> nonCoreExtensions(removeExtensions(context.getDeviceExtensions(), coreExtensions)); 1640 1641 vector<const char*> extensionNames; 1642 extensionNames.reserve(nonCoreExtensions.size()); 1643 for (const string& extension : nonCoreExtensions) 1644 extensionNames.push_back(extension.c_str()); 1645 1646 if (const void* featuresStruct = findStructureInChain(const_cast<const void*>(deviceFeatures2.pNext), getStructureType<VkPhysicalDeviceComputeShaderDerivativesFeaturesNV>())) 1647 { 1648 static const Feature features[] = 1649 { 1650 FEATURE_ITEM (VkPhysicalDeviceComputeShaderDerivativesFeaturesNV, computeDerivativeGroupQuads), 1651 FEATURE_ITEM (VkPhysicalDeviceComputeShaderDerivativesFeaturesNV, computeDerivativeGroupLinear), 1652 }; 1653 auto* supportedFeatures = reinterpret_cast<const VkPhysicalDeviceComputeShaderDerivativesFeaturesNV*>(featuresStruct); 1654 checkFeatures(vkp, instance, instanceDriver, physicalDevice, 2, features, supportedFeatures, queueFamilyIndex, queueCount, queuePriority, numErrors, resultCollector, &extensionNames, emptyDeviceFeatures, isSubProcess); 1655 } 1656 1657 if (numErrors > 0) 1658 return tcu::TestStatus(resultCollector.getResult(), "Enabling unsupported features didn't return VK_ERROR_FEATURE_NOT_PRESENT."); 1659 else 1660 return tcu::TestStatus(resultCollector.getResult(), resultCollector.getMessage()); 1661} 1662 1663 1664tcu::TestStatus createDeviceWithUnsupportedFeaturesTestShaderImageFootprintFeaturesNV (Context& context) 1665{ 1666 const PlatformInterface& vkp = context.getPlatformInterface(); 1667 tcu::TestLog& log = context.getTestContext().getLog(); 1668 tcu::ResultCollector resultCollector (log); 1669 const CustomInstance instance (createCustomInstanceWithExtensions(context, context.getInstanceExtensions(), DE_NULL, true)); 1670 const InstanceDriver& instanceDriver (instance.getDriver()); 1671 const VkPhysicalDevice physicalDevice = chooseDevice(instanceDriver, instance, context.getTestContext().getCommandLine()); 1672 const deUint32 queueFamilyIndex = 0; 1673 const deUint32 queueCount = 1; 1674 const float queuePriority = 1.0f; 1675 const DeviceFeatures deviceFeaturesAll (context.getInstanceInterface(), context.getUsedApiVersion(), physicalDevice, context.getInstanceExtensions(), context.getDeviceExtensions(), DE_TRUE); 1676 const VkPhysicalDeviceFeatures2 deviceFeatures2 = deviceFeaturesAll.getCoreFeatures2(); 1677 int numErrors = 0; 1678 bool isSubProcess = context.getTestContext().getCommandLine().isSubProcess(); 1679 1680 1681 VkPhysicalDeviceFeatures emptyDeviceFeatures; 1682 deMemset(&emptyDeviceFeatures, 0, sizeof(emptyDeviceFeatures)); 1683 1684 // Only non-core extensions will be used when creating the device. 1685 vector<const char*> coreExtensions; 1686 getCoreDeviceExtensions(context.getUsedApiVersion(), coreExtensions); 1687 vector<string> nonCoreExtensions(removeExtensions(context.getDeviceExtensions(), coreExtensions)); 1688 1689 vector<const char*> extensionNames; 1690 extensionNames.reserve(nonCoreExtensions.size()); 1691 for (const string& extension : nonCoreExtensions) 1692 extensionNames.push_back(extension.c_str()); 1693 1694 if (const void* featuresStruct = findStructureInChain(const_cast<const void*>(deviceFeatures2.pNext), getStructureType<VkPhysicalDeviceShaderImageFootprintFeaturesNV>())) 1695 { 1696 static const Feature features[] = 1697 { 1698 FEATURE_ITEM (VkPhysicalDeviceShaderImageFootprintFeaturesNV, imageFootprint), 1699 }; 1700 auto* supportedFeatures = reinterpret_cast<const VkPhysicalDeviceShaderImageFootprintFeaturesNV*>(featuresStruct); 1701 checkFeatures(vkp, instance, instanceDriver, physicalDevice, 1, features, supportedFeatures, queueFamilyIndex, queueCount, queuePriority, numErrors, resultCollector, &extensionNames, emptyDeviceFeatures, isSubProcess); 1702 } 1703 1704 if (numErrors > 0) 1705 return tcu::TestStatus(resultCollector.getResult(), "Enabling unsupported features didn't return VK_ERROR_FEATURE_NOT_PRESENT."); 1706 else 1707 return tcu::TestStatus(resultCollector.getResult(), resultCollector.getMessage()); 1708} 1709 1710 1711tcu::TestStatus createDeviceWithUnsupportedFeaturesTestDedicatedAllocationImageAliasingFeaturesNV (Context& context) 1712{ 1713 const PlatformInterface& vkp = context.getPlatformInterface(); 1714 tcu::TestLog& log = context.getTestContext().getLog(); 1715 tcu::ResultCollector resultCollector (log); 1716 const CustomInstance instance (createCustomInstanceWithExtensions(context, context.getInstanceExtensions(), DE_NULL, true)); 1717 const InstanceDriver& instanceDriver (instance.getDriver()); 1718 const VkPhysicalDevice physicalDevice = chooseDevice(instanceDriver, instance, context.getTestContext().getCommandLine()); 1719 const deUint32 queueFamilyIndex = 0; 1720 const deUint32 queueCount = 1; 1721 const float queuePriority = 1.0f; 1722 const DeviceFeatures deviceFeaturesAll (context.getInstanceInterface(), context.getUsedApiVersion(), physicalDevice, context.getInstanceExtensions(), context.getDeviceExtensions(), DE_TRUE); 1723 const VkPhysicalDeviceFeatures2 deviceFeatures2 = deviceFeaturesAll.getCoreFeatures2(); 1724 int numErrors = 0; 1725 bool isSubProcess = context.getTestContext().getCommandLine().isSubProcess(); 1726 1727 1728 VkPhysicalDeviceFeatures emptyDeviceFeatures; 1729 deMemset(&emptyDeviceFeatures, 0, sizeof(emptyDeviceFeatures)); 1730 1731 // Only non-core extensions will be used when creating the device. 1732 vector<const char*> coreExtensions; 1733 getCoreDeviceExtensions(context.getUsedApiVersion(), coreExtensions); 1734 vector<string> nonCoreExtensions(removeExtensions(context.getDeviceExtensions(), coreExtensions)); 1735 1736 vector<const char*> extensionNames; 1737 extensionNames.reserve(nonCoreExtensions.size()); 1738 for (const string& extension : nonCoreExtensions) 1739 extensionNames.push_back(extension.c_str()); 1740 1741 if (const void* featuresStruct = findStructureInChain(const_cast<const void*>(deviceFeatures2.pNext), getStructureType<VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV>())) 1742 { 1743 static const Feature features[] = 1744 { 1745 FEATURE_ITEM (VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV, dedicatedAllocationImageAliasing), 1746 }; 1747 auto* supportedFeatures = reinterpret_cast<const VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV*>(featuresStruct); 1748 checkFeatures(vkp, instance, instanceDriver, physicalDevice, 1, features, supportedFeatures, queueFamilyIndex, queueCount, queuePriority, numErrors, resultCollector, &extensionNames, emptyDeviceFeatures, isSubProcess); 1749 } 1750 1751 if (numErrors > 0) 1752 return tcu::TestStatus(resultCollector.getResult(), "Enabling unsupported features didn't return VK_ERROR_FEATURE_NOT_PRESENT."); 1753 else 1754 return tcu::TestStatus(resultCollector.getResult(), resultCollector.getMessage()); 1755} 1756 1757 1758tcu::TestStatus createDeviceWithUnsupportedFeaturesTestCopyMemoryIndirectFeaturesNV (Context& context) 1759{ 1760 const PlatformInterface& vkp = context.getPlatformInterface(); 1761 tcu::TestLog& log = context.getTestContext().getLog(); 1762 tcu::ResultCollector resultCollector (log); 1763 const CustomInstance instance (createCustomInstanceWithExtensions(context, context.getInstanceExtensions(), DE_NULL, true)); 1764 const InstanceDriver& instanceDriver (instance.getDriver()); 1765 const VkPhysicalDevice physicalDevice = chooseDevice(instanceDriver, instance, context.getTestContext().getCommandLine()); 1766 const deUint32 queueFamilyIndex = 0; 1767 const deUint32 queueCount = 1; 1768 const float queuePriority = 1.0f; 1769 const DeviceFeatures deviceFeaturesAll (context.getInstanceInterface(), context.getUsedApiVersion(), physicalDevice, context.getInstanceExtensions(), context.getDeviceExtensions(), DE_TRUE); 1770 const VkPhysicalDeviceFeatures2 deviceFeatures2 = deviceFeaturesAll.getCoreFeatures2(); 1771 int numErrors = 0; 1772 bool isSubProcess = context.getTestContext().getCommandLine().isSubProcess(); 1773 1774 1775 VkPhysicalDeviceFeatures emptyDeviceFeatures; 1776 deMemset(&emptyDeviceFeatures, 0, sizeof(emptyDeviceFeatures)); 1777 1778 // Only non-core extensions will be used when creating the device. 1779 vector<const char*> coreExtensions; 1780 getCoreDeviceExtensions(context.getUsedApiVersion(), coreExtensions); 1781 vector<string> nonCoreExtensions(removeExtensions(context.getDeviceExtensions(), coreExtensions)); 1782 1783 vector<const char*> extensionNames; 1784 extensionNames.reserve(nonCoreExtensions.size()); 1785 for (const string& extension : nonCoreExtensions) 1786 extensionNames.push_back(extension.c_str()); 1787 1788 if (const void* featuresStruct = findStructureInChain(const_cast<const void*>(deviceFeatures2.pNext), getStructureType<VkPhysicalDeviceCopyMemoryIndirectFeaturesNV>())) 1789 { 1790 static const Feature features[] = 1791 { 1792 FEATURE_ITEM (VkPhysicalDeviceCopyMemoryIndirectFeaturesNV, indirectCopy), 1793 }; 1794 auto* supportedFeatures = reinterpret_cast<const VkPhysicalDeviceCopyMemoryIndirectFeaturesNV*>(featuresStruct); 1795 checkFeatures(vkp, instance, instanceDriver, physicalDevice, 1, features, supportedFeatures, queueFamilyIndex, queueCount, queuePriority, numErrors, resultCollector, &extensionNames, emptyDeviceFeatures, isSubProcess); 1796 } 1797 1798 if (numErrors > 0) 1799 return tcu::TestStatus(resultCollector.getResult(), "Enabling unsupported features didn't return VK_ERROR_FEATURE_NOT_PRESENT."); 1800 else 1801 return tcu::TestStatus(resultCollector.getResult(), resultCollector.getMessage()); 1802} 1803 1804 1805tcu::TestStatus createDeviceWithUnsupportedFeaturesTestMemoryDecompressionFeaturesNV (Context& context) 1806{ 1807 const PlatformInterface& vkp = context.getPlatformInterface(); 1808 tcu::TestLog& log = context.getTestContext().getLog(); 1809 tcu::ResultCollector resultCollector (log); 1810 const CustomInstance instance (createCustomInstanceWithExtensions(context, context.getInstanceExtensions(), DE_NULL, true)); 1811 const InstanceDriver& instanceDriver (instance.getDriver()); 1812 const VkPhysicalDevice physicalDevice = chooseDevice(instanceDriver, instance, context.getTestContext().getCommandLine()); 1813 const deUint32 queueFamilyIndex = 0; 1814 const deUint32 queueCount = 1; 1815 const float queuePriority = 1.0f; 1816 const DeviceFeatures deviceFeaturesAll (context.getInstanceInterface(), context.getUsedApiVersion(), physicalDevice, context.getInstanceExtensions(), context.getDeviceExtensions(), DE_TRUE); 1817 const VkPhysicalDeviceFeatures2 deviceFeatures2 = deviceFeaturesAll.getCoreFeatures2(); 1818 int numErrors = 0; 1819 bool isSubProcess = context.getTestContext().getCommandLine().isSubProcess(); 1820 1821 1822 VkPhysicalDeviceFeatures emptyDeviceFeatures; 1823 deMemset(&emptyDeviceFeatures, 0, sizeof(emptyDeviceFeatures)); 1824 1825 // Only non-core extensions will be used when creating the device. 1826 vector<const char*> coreExtensions; 1827 getCoreDeviceExtensions(context.getUsedApiVersion(), coreExtensions); 1828 vector<string> nonCoreExtensions(removeExtensions(context.getDeviceExtensions(), coreExtensions)); 1829 1830 vector<const char*> extensionNames; 1831 extensionNames.reserve(nonCoreExtensions.size()); 1832 for (const string& extension : nonCoreExtensions) 1833 extensionNames.push_back(extension.c_str()); 1834 1835 if (const void* featuresStruct = findStructureInChain(const_cast<const void*>(deviceFeatures2.pNext), getStructureType<VkPhysicalDeviceMemoryDecompressionFeaturesNV>())) 1836 { 1837 static const Feature features[] = 1838 { 1839 FEATURE_ITEM (VkPhysicalDeviceMemoryDecompressionFeaturesNV, memoryDecompression), 1840 }; 1841 auto* supportedFeatures = reinterpret_cast<const VkPhysicalDeviceMemoryDecompressionFeaturesNV*>(featuresStruct); 1842 checkFeatures(vkp, instance, instanceDriver, physicalDevice, 1, features, supportedFeatures, queueFamilyIndex, queueCount, queuePriority, numErrors, resultCollector, &extensionNames, emptyDeviceFeatures, isSubProcess); 1843 } 1844 1845 if (numErrors > 0) 1846 return tcu::TestStatus(resultCollector.getResult(), "Enabling unsupported features didn't return VK_ERROR_FEATURE_NOT_PRESENT."); 1847 else 1848 return tcu::TestStatus(resultCollector.getResult(), resultCollector.getMessage()); 1849} 1850 1851 1852tcu::TestStatus createDeviceWithUnsupportedFeaturesTestShadingRateImageFeaturesNV (Context& context) 1853{ 1854 const PlatformInterface& vkp = context.getPlatformInterface(); 1855 tcu::TestLog& log = context.getTestContext().getLog(); 1856 tcu::ResultCollector resultCollector (log); 1857 const CustomInstance instance (createCustomInstanceWithExtensions(context, context.getInstanceExtensions(), DE_NULL, true)); 1858 const InstanceDriver& instanceDriver (instance.getDriver()); 1859 const VkPhysicalDevice physicalDevice = chooseDevice(instanceDriver, instance, context.getTestContext().getCommandLine()); 1860 const deUint32 queueFamilyIndex = 0; 1861 const deUint32 queueCount = 1; 1862 const float queuePriority = 1.0f; 1863 const DeviceFeatures deviceFeaturesAll (context.getInstanceInterface(), context.getUsedApiVersion(), physicalDevice, context.getInstanceExtensions(), context.getDeviceExtensions(), DE_TRUE); 1864 const VkPhysicalDeviceFeatures2 deviceFeatures2 = deviceFeaturesAll.getCoreFeatures2(); 1865 int numErrors = 0; 1866 bool isSubProcess = context.getTestContext().getCommandLine().isSubProcess(); 1867 1868 1869 VkPhysicalDeviceFeatures emptyDeviceFeatures; 1870 deMemset(&emptyDeviceFeatures, 0, sizeof(emptyDeviceFeatures)); 1871 1872 // Only non-core extensions will be used when creating the device. 1873 vector<const char*> coreExtensions; 1874 getCoreDeviceExtensions(context.getUsedApiVersion(), coreExtensions); 1875 vector<string> nonCoreExtensions(removeExtensions(context.getDeviceExtensions(), coreExtensions)); 1876 1877 vector<const char*> extensionNames; 1878 extensionNames.reserve(nonCoreExtensions.size()); 1879 for (const string& extension : nonCoreExtensions) 1880 extensionNames.push_back(extension.c_str()); 1881 1882 if (const void* featuresStruct = findStructureInChain(const_cast<const void*>(deviceFeatures2.pNext), getStructureType<VkPhysicalDeviceShadingRateImageFeaturesNV>())) 1883 { 1884 static const Feature features[] = 1885 { 1886 FEATURE_ITEM (VkPhysicalDeviceShadingRateImageFeaturesNV, shadingRateImage), 1887 FEATURE_ITEM (VkPhysicalDeviceShadingRateImageFeaturesNV, shadingRateCoarseSampleOrder), 1888 }; 1889 auto* supportedFeatures = reinterpret_cast<const VkPhysicalDeviceShadingRateImageFeaturesNV*>(featuresStruct); 1890 checkFeatures(vkp, instance, instanceDriver, physicalDevice, 2, features, supportedFeatures, queueFamilyIndex, queueCount, queuePriority, numErrors, resultCollector, &extensionNames, emptyDeviceFeatures, isSubProcess); 1891 } 1892 1893 if (numErrors > 0) 1894 return tcu::TestStatus(resultCollector.getResult(), "Enabling unsupported features didn't return VK_ERROR_FEATURE_NOT_PRESENT."); 1895 else 1896 return tcu::TestStatus(resultCollector.getResult(), resultCollector.getMessage()); 1897} 1898 1899 1900tcu::TestStatus createDeviceWithUnsupportedFeaturesTestInvocationMaskFeaturesHUAWEI (Context& context) 1901{ 1902 const PlatformInterface& vkp = context.getPlatformInterface(); 1903 tcu::TestLog& log = context.getTestContext().getLog(); 1904 tcu::ResultCollector resultCollector (log); 1905 const CustomInstance instance (createCustomInstanceWithExtensions(context, context.getInstanceExtensions(), DE_NULL, true)); 1906 const InstanceDriver& instanceDriver (instance.getDriver()); 1907 const VkPhysicalDevice physicalDevice = chooseDevice(instanceDriver, instance, context.getTestContext().getCommandLine()); 1908 const deUint32 queueFamilyIndex = 0; 1909 const deUint32 queueCount = 1; 1910 const float queuePriority = 1.0f; 1911 const DeviceFeatures deviceFeaturesAll (context.getInstanceInterface(), context.getUsedApiVersion(), physicalDevice, context.getInstanceExtensions(), context.getDeviceExtensions(), DE_TRUE); 1912 const VkPhysicalDeviceFeatures2 deviceFeatures2 = deviceFeaturesAll.getCoreFeatures2(); 1913 int numErrors = 0; 1914 bool isSubProcess = context.getTestContext().getCommandLine().isSubProcess(); 1915 1916 1917 VkPhysicalDeviceFeatures emptyDeviceFeatures; 1918 deMemset(&emptyDeviceFeatures, 0, sizeof(emptyDeviceFeatures)); 1919 1920 // Only non-core extensions will be used when creating the device. 1921 vector<const char*> coreExtensions; 1922 getCoreDeviceExtensions(context.getUsedApiVersion(), coreExtensions); 1923 vector<string> nonCoreExtensions(removeExtensions(context.getDeviceExtensions(), coreExtensions)); 1924 1925 vector<const char*> extensionNames; 1926 extensionNames.reserve(nonCoreExtensions.size()); 1927 for (const string& extension : nonCoreExtensions) 1928 extensionNames.push_back(extension.c_str()); 1929 1930 if (const void* featuresStruct = findStructureInChain(const_cast<const void*>(deviceFeatures2.pNext), getStructureType<VkPhysicalDeviceInvocationMaskFeaturesHUAWEI>())) 1931 { 1932 static const Feature features[] = 1933 { 1934 FEATURE_ITEM (VkPhysicalDeviceInvocationMaskFeaturesHUAWEI, invocationMask), 1935 }; 1936 auto* supportedFeatures = reinterpret_cast<const VkPhysicalDeviceInvocationMaskFeaturesHUAWEI*>(featuresStruct); 1937 checkFeatures(vkp, instance, instanceDriver, physicalDevice, 1, features, supportedFeatures, queueFamilyIndex, queueCount, queuePriority, numErrors, resultCollector, &extensionNames, emptyDeviceFeatures, isSubProcess); 1938 } 1939 1940 if (numErrors > 0) 1941 return tcu::TestStatus(resultCollector.getResult(), "Enabling unsupported features didn't return VK_ERROR_FEATURE_NOT_PRESENT."); 1942 else 1943 return tcu::TestStatus(resultCollector.getResult(), resultCollector.getMessage()); 1944} 1945 1946 1947tcu::TestStatus createDeviceWithUnsupportedFeaturesTestMeshShaderFeaturesNV (Context& context) 1948{ 1949 const PlatformInterface& vkp = context.getPlatformInterface(); 1950 tcu::TestLog& log = context.getTestContext().getLog(); 1951 tcu::ResultCollector resultCollector (log); 1952 const CustomInstance instance (createCustomInstanceWithExtensions(context, context.getInstanceExtensions(), DE_NULL, true)); 1953 const InstanceDriver& instanceDriver (instance.getDriver()); 1954 const VkPhysicalDevice physicalDevice = chooseDevice(instanceDriver, instance, context.getTestContext().getCommandLine()); 1955 const deUint32 queueFamilyIndex = 0; 1956 const deUint32 queueCount = 1; 1957 const float queuePriority = 1.0f; 1958 const DeviceFeatures deviceFeaturesAll (context.getInstanceInterface(), context.getUsedApiVersion(), physicalDevice, context.getInstanceExtensions(), context.getDeviceExtensions(), DE_TRUE); 1959 const VkPhysicalDeviceFeatures2 deviceFeatures2 = deviceFeaturesAll.getCoreFeatures2(); 1960 int numErrors = 0; 1961 bool isSubProcess = context.getTestContext().getCommandLine().isSubProcess(); 1962 1963 1964 VkPhysicalDeviceFeatures emptyDeviceFeatures; 1965 deMemset(&emptyDeviceFeatures, 0, sizeof(emptyDeviceFeatures)); 1966 1967 // Only non-core extensions will be used when creating the device. 1968 vector<const char*> coreExtensions; 1969 getCoreDeviceExtensions(context.getUsedApiVersion(), coreExtensions); 1970 vector<string> nonCoreExtensions(removeExtensions(context.getDeviceExtensions(), coreExtensions)); 1971 1972 vector<const char*> extensionNames; 1973 extensionNames.reserve(nonCoreExtensions.size()); 1974 for (const string& extension : nonCoreExtensions) 1975 extensionNames.push_back(extension.c_str()); 1976 1977 if (const void* featuresStruct = findStructureInChain(const_cast<const void*>(deviceFeatures2.pNext), getStructureType<VkPhysicalDeviceMeshShaderFeaturesNV>())) 1978 { 1979 static const Feature features[] = 1980 { 1981 FEATURE_ITEM (VkPhysicalDeviceMeshShaderFeaturesNV, taskShader), 1982 FEATURE_ITEM (VkPhysicalDeviceMeshShaderFeaturesNV, meshShader), 1983 }; 1984 auto* supportedFeatures = reinterpret_cast<const VkPhysicalDeviceMeshShaderFeaturesNV*>(featuresStruct); 1985 checkFeatures(vkp, instance, instanceDriver, physicalDevice, 2, features, supportedFeatures, queueFamilyIndex, queueCount, queuePriority, numErrors, resultCollector, &extensionNames, emptyDeviceFeatures, isSubProcess); 1986 } 1987 1988 if (numErrors > 0) 1989 return tcu::TestStatus(resultCollector.getResult(), "Enabling unsupported features didn't return VK_ERROR_FEATURE_NOT_PRESENT."); 1990 else 1991 return tcu::TestStatus(resultCollector.getResult(), resultCollector.getMessage()); 1992} 1993 1994 1995tcu::TestStatus createDeviceWithUnsupportedFeaturesTestMeshShaderFeaturesEXT (Context& context) 1996{ 1997 const PlatformInterface& vkp = context.getPlatformInterface(); 1998 tcu::TestLog& log = context.getTestContext().getLog(); 1999 tcu::ResultCollector resultCollector (log); 2000 const CustomInstance instance (createCustomInstanceWithExtensions(context, context.getInstanceExtensions(), DE_NULL, true)); 2001 const InstanceDriver& instanceDriver (instance.getDriver()); 2002 const VkPhysicalDevice physicalDevice = chooseDevice(instanceDriver, instance, context.getTestContext().getCommandLine()); 2003 const deUint32 queueFamilyIndex = 0; 2004 const deUint32 queueCount = 1; 2005 const float queuePriority = 1.0f; 2006 const DeviceFeatures deviceFeaturesAll (context.getInstanceInterface(), context.getUsedApiVersion(), physicalDevice, context.getInstanceExtensions(), context.getDeviceExtensions(), DE_TRUE); 2007 const VkPhysicalDeviceFeatures2 deviceFeatures2 = deviceFeaturesAll.getCoreFeatures2(); 2008 int numErrors = 0; 2009 bool isSubProcess = context.getTestContext().getCommandLine().isSubProcess(); 2010 2011 2012 VkPhysicalDeviceFeatures emptyDeviceFeatures; 2013 deMemset(&emptyDeviceFeatures, 0, sizeof(emptyDeviceFeatures)); 2014 2015 // Only non-core extensions will be used when creating the device. 2016 vector<const char*> coreExtensions; 2017 getCoreDeviceExtensions(context.getUsedApiVersion(), coreExtensions); 2018 vector<string> nonCoreExtensions(removeExtensions(context.getDeviceExtensions(), coreExtensions)); 2019 2020 vector<const char*> extensionNames; 2021 extensionNames.reserve(nonCoreExtensions.size()); 2022 for (const string& extension : nonCoreExtensions) 2023 extensionNames.push_back(extension.c_str()); 2024 2025 if (const void* featuresStruct = findStructureInChain(const_cast<const void*>(deviceFeatures2.pNext), getStructureType<VkPhysicalDeviceMeshShaderFeaturesEXT>())) 2026 { 2027 static const Feature features[] = 2028 { 2029 FEATURE_ITEM (VkPhysicalDeviceMeshShaderFeaturesEXT, taskShader), 2030 FEATURE_ITEM (VkPhysicalDeviceMeshShaderFeaturesEXT, meshShader), 2031 FEATURE_ITEM (VkPhysicalDeviceMeshShaderFeaturesEXT, multiviewMeshShader), 2032 FEATURE_ITEM (VkPhysicalDeviceMeshShaderFeaturesEXT, primitiveFragmentShadingRateMeshShader), 2033 FEATURE_ITEM (VkPhysicalDeviceMeshShaderFeaturesEXT, meshShaderQueries), 2034 }; 2035 auto* supportedFeatures = reinterpret_cast<const VkPhysicalDeviceMeshShaderFeaturesEXT*>(featuresStruct); 2036 checkFeatures(vkp, instance, instanceDriver, physicalDevice, 5, features, supportedFeatures, queueFamilyIndex, queueCount, queuePriority, numErrors, resultCollector, &extensionNames, emptyDeviceFeatures, isSubProcess); 2037 } 2038 2039 if (numErrors > 0) 2040 return tcu::TestStatus(resultCollector.getResult(), "Enabling unsupported features didn't return VK_ERROR_FEATURE_NOT_PRESENT."); 2041 else 2042 return tcu::TestStatus(resultCollector.getResult(), resultCollector.getMessage()); 2043} 2044 2045 2046tcu::TestStatus createDeviceWithUnsupportedFeaturesTestAccelerationStructureFeaturesKHR (Context& context) 2047{ 2048 const PlatformInterface& vkp = context.getPlatformInterface(); 2049 tcu::TestLog& log = context.getTestContext().getLog(); 2050 tcu::ResultCollector resultCollector (log); 2051 const CustomInstance instance (createCustomInstanceWithExtensions(context, context.getInstanceExtensions(), DE_NULL, true)); 2052 const InstanceDriver& instanceDriver (instance.getDriver()); 2053 const VkPhysicalDevice physicalDevice = chooseDevice(instanceDriver, instance, context.getTestContext().getCommandLine()); 2054 const deUint32 queueFamilyIndex = 0; 2055 const deUint32 queueCount = 1; 2056 const float queuePriority = 1.0f; 2057 const DeviceFeatures deviceFeaturesAll (context.getInstanceInterface(), context.getUsedApiVersion(), physicalDevice, context.getInstanceExtensions(), context.getDeviceExtensions(), DE_TRUE); 2058 const VkPhysicalDeviceFeatures2 deviceFeatures2 = deviceFeaturesAll.getCoreFeatures2(); 2059 int numErrors = 0; 2060 bool isSubProcess = context.getTestContext().getCommandLine().isSubProcess(); 2061 2062 2063 VkPhysicalDeviceFeatures emptyDeviceFeatures; 2064 deMemset(&emptyDeviceFeatures, 0, sizeof(emptyDeviceFeatures)); 2065 2066 // Only non-core extensions will be used when creating the device. 2067 vector<const char*> coreExtensions; 2068 getCoreDeviceExtensions(context.getUsedApiVersion(), coreExtensions); 2069 vector<string> nonCoreExtensions(removeExtensions(context.getDeviceExtensions(), coreExtensions)); 2070 2071 vector<const char*> extensionNames; 2072 extensionNames.reserve(nonCoreExtensions.size()); 2073 for (const string& extension : nonCoreExtensions) 2074 extensionNames.push_back(extension.c_str()); 2075 2076 if (const void* featuresStruct = findStructureInChain(const_cast<const void*>(deviceFeatures2.pNext), getStructureType<VkPhysicalDeviceAccelerationStructureFeaturesKHR>())) 2077 { 2078 static const Feature features[] = 2079 { 2080 FEATURE_ITEM (VkPhysicalDeviceAccelerationStructureFeaturesKHR, accelerationStructure), 2081 FEATURE_ITEM (VkPhysicalDeviceAccelerationStructureFeaturesKHR, accelerationStructureCaptureReplay), 2082 FEATURE_ITEM (VkPhysicalDeviceAccelerationStructureFeaturesKHR, accelerationStructureIndirectBuild), 2083 FEATURE_ITEM (VkPhysicalDeviceAccelerationStructureFeaturesKHR, accelerationStructureHostCommands), 2084 FEATURE_ITEM (VkPhysicalDeviceAccelerationStructureFeaturesKHR, descriptorBindingAccelerationStructureUpdateAfterBind), 2085 }; 2086 auto* supportedFeatures = reinterpret_cast<const VkPhysicalDeviceAccelerationStructureFeaturesKHR*>(featuresStruct); 2087 checkFeatures(vkp, instance, instanceDriver, physicalDevice, 5, features, supportedFeatures, queueFamilyIndex, queueCount, queuePriority, numErrors, resultCollector, &extensionNames, emptyDeviceFeatures, isSubProcess); 2088 } 2089 2090 if (numErrors > 0) 2091 return tcu::TestStatus(resultCollector.getResult(), "Enabling unsupported features didn't return VK_ERROR_FEATURE_NOT_PRESENT."); 2092 else 2093 return tcu::TestStatus(resultCollector.getResult(), resultCollector.getMessage()); 2094} 2095 2096 2097tcu::TestStatus createDeviceWithUnsupportedFeaturesTestRayTracingPipelineFeaturesKHR (Context& context) 2098{ 2099 const PlatformInterface& vkp = context.getPlatformInterface(); 2100 tcu::TestLog& log = context.getTestContext().getLog(); 2101 tcu::ResultCollector resultCollector (log); 2102 const CustomInstance instance (createCustomInstanceWithExtensions(context, context.getInstanceExtensions(), DE_NULL, true)); 2103 const InstanceDriver& instanceDriver (instance.getDriver()); 2104 const VkPhysicalDevice physicalDevice = chooseDevice(instanceDriver, instance, context.getTestContext().getCommandLine()); 2105 const deUint32 queueFamilyIndex = 0; 2106 const deUint32 queueCount = 1; 2107 const float queuePriority = 1.0f; 2108 const DeviceFeatures deviceFeaturesAll (context.getInstanceInterface(), context.getUsedApiVersion(), physicalDevice, context.getInstanceExtensions(), context.getDeviceExtensions(), DE_TRUE); 2109 const VkPhysicalDeviceFeatures2 deviceFeatures2 = deviceFeaturesAll.getCoreFeatures2(); 2110 int numErrors = 0; 2111 bool isSubProcess = context.getTestContext().getCommandLine().isSubProcess(); 2112 2113 2114 VkPhysicalDeviceFeatures emptyDeviceFeatures; 2115 deMemset(&emptyDeviceFeatures, 0, sizeof(emptyDeviceFeatures)); 2116 2117 // Only non-core extensions will be used when creating the device. 2118 vector<const char*> coreExtensions; 2119 getCoreDeviceExtensions(context.getUsedApiVersion(), coreExtensions); 2120 vector<string> nonCoreExtensions(removeExtensions(context.getDeviceExtensions(), coreExtensions)); 2121 2122 vector<const char*> extensionNames; 2123 extensionNames.reserve(nonCoreExtensions.size()); 2124 for (const string& extension : nonCoreExtensions) 2125 extensionNames.push_back(extension.c_str()); 2126 2127 if (const void* featuresStruct = findStructureInChain(const_cast<const void*>(deviceFeatures2.pNext), getStructureType<VkPhysicalDeviceRayTracingPipelineFeaturesKHR>())) 2128 { 2129 static const Feature features[] = 2130 { 2131 FEATURE_ITEM (VkPhysicalDeviceRayTracingPipelineFeaturesKHR, rayTracingPipeline), 2132 FEATURE_ITEM (VkPhysicalDeviceRayTracingPipelineFeaturesKHR, rayTracingPipelineShaderGroupHandleCaptureReplay), 2133 FEATURE_ITEM (VkPhysicalDeviceRayTracingPipelineFeaturesKHR, rayTracingPipelineShaderGroupHandleCaptureReplayMixed), 2134 FEATURE_ITEM (VkPhysicalDeviceRayTracingPipelineFeaturesKHR, rayTracingPipelineTraceRaysIndirect), 2135 FEATURE_ITEM (VkPhysicalDeviceRayTracingPipelineFeaturesKHR, rayTraversalPrimitiveCulling), 2136 }; 2137 auto* supportedFeatures = reinterpret_cast<const VkPhysicalDeviceRayTracingPipelineFeaturesKHR*>(featuresStruct); 2138 checkFeatures(vkp, instance, instanceDriver, physicalDevice, 5, features, supportedFeatures, queueFamilyIndex, queueCount, queuePriority, numErrors, resultCollector, &extensionNames, emptyDeviceFeatures, isSubProcess); 2139 } 2140 2141 if (numErrors > 0) 2142 return tcu::TestStatus(resultCollector.getResult(), "Enabling unsupported features didn't return VK_ERROR_FEATURE_NOT_PRESENT."); 2143 else 2144 return tcu::TestStatus(resultCollector.getResult(), resultCollector.getMessage()); 2145} 2146 2147 2148tcu::TestStatus createDeviceWithUnsupportedFeaturesTestRayQueryFeaturesKHR (Context& context) 2149{ 2150 const PlatformInterface& vkp = context.getPlatformInterface(); 2151 tcu::TestLog& log = context.getTestContext().getLog(); 2152 tcu::ResultCollector resultCollector (log); 2153 const CustomInstance instance (createCustomInstanceWithExtensions(context, context.getInstanceExtensions(), DE_NULL, true)); 2154 const InstanceDriver& instanceDriver (instance.getDriver()); 2155 const VkPhysicalDevice physicalDevice = chooseDevice(instanceDriver, instance, context.getTestContext().getCommandLine()); 2156 const deUint32 queueFamilyIndex = 0; 2157 const deUint32 queueCount = 1; 2158 const float queuePriority = 1.0f; 2159 const DeviceFeatures deviceFeaturesAll (context.getInstanceInterface(), context.getUsedApiVersion(), physicalDevice, context.getInstanceExtensions(), context.getDeviceExtensions(), DE_TRUE); 2160 const VkPhysicalDeviceFeatures2 deviceFeatures2 = deviceFeaturesAll.getCoreFeatures2(); 2161 int numErrors = 0; 2162 bool isSubProcess = context.getTestContext().getCommandLine().isSubProcess(); 2163 2164 2165 VkPhysicalDeviceFeatures emptyDeviceFeatures; 2166 deMemset(&emptyDeviceFeatures, 0, sizeof(emptyDeviceFeatures)); 2167 2168 // Only non-core extensions will be used when creating the device. 2169 vector<const char*> coreExtensions; 2170 getCoreDeviceExtensions(context.getUsedApiVersion(), coreExtensions); 2171 vector<string> nonCoreExtensions(removeExtensions(context.getDeviceExtensions(), coreExtensions)); 2172 2173 vector<const char*> extensionNames; 2174 extensionNames.reserve(nonCoreExtensions.size()); 2175 for (const string& extension : nonCoreExtensions) 2176 extensionNames.push_back(extension.c_str()); 2177 2178 if (const void* featuresStruct = findStructureInChain(const_cast<const void*>(deviceFeatures2.pNext), getStructureType<VkPhysicalDeviceRayQueryFeaturesKHR>())) 2179 { 2180 static const Feature features[] = 2181 { 2182 FEATURE_ITEM (VkPhysicalDeviceRayQueryFeaturesKHR, rayQuery), 2183 }; 2184 auto* supportedFeatures = reinterpret_cast<const VkPhysicalDeviceRayQueryFeaturesKHR*>(featuresStruct); 2185 checkFeatures(vkp, instance, instanceDriver, physicalDevice, 1, features, supportedFeatures, queueFamilyIndex, queueCount, queuePriority, numErrors, resultCollector, &extensionNames, emptyDeviceFeatures, isSubProcess); 2186 } 2187 2188 if (numErrors > 0) 2189 return tcu::TestStatus(resultCollector.getResult(), "Enabling unsupported features didn't return VK_ERROR_FEATURE_NOT_PRESENT."); 2190 else 2191 return tcu::TestStatus(resultCollector.getResult(), resultCollector.getMessage()); 2192} 2193 2194 2195tcu::TestStatus createDeviceWithUnsupportedFeaturesTestRayTracingMaintenance1FeaturesKHR (Context& context) 2196{ 2197 const PlatformInterface& vkp = context.getPlatformInterface(); 2198 tcu::TestLog& log = context.getTestContext().getLog(); 2199 tcu::ResultCollector resultCollector (log); 2200 const CustomInstance instance (createCustomInstanceWithExtensions(context, context.getInstanceExtensions(), DE_NULL, true)); 2201 const InstanceDriver& instanceDriver (instance.getDriver()); 2202 const VkPhysicalDevice physicalDevice = chooseDevice(instanceDriver, instance, context.getTestContext().getCommandLine()); 2203 const deUint32 queueFamilyIndex = 0; 2204 const deUint32 queueCount = 1; 2205 const float queuePriority = 1.0f; 2206 const DeviceFeatures deviceFeaturesAll (context.getInstanceInterface(), context.getUsedApiVersion(), physicalDevice, context.getInstanceExtensions(), context.getDeviceExtensions(), DE_TRUE); 2207 const VkPhysicalDeviceFeatures2 deviceFeatures2 = deviceFeaturesAll.getCoreFeatures2(); 2208 int numErrors = 0; 2209 bool isSubProcess = context.getTestContext().getCommandLine().isSubProcess(); 2210 2211 2212 VkPhysicalDeviceFeatures emptyDeviceFeatures; 2213 deMemset(&emptyDeviceFeatures, 0, sizeof(emptyDeviceFeatures)); 2214 2215 // Only non-core extensions will be used when creating the device. 2216 vector<const char*> coreExtensions; 2217 getCoreDeviceExtensions(context.getUsedApiVersion(), coreExtensions); 2218 vector<string> nonCoreExtensions(removeExtensions(context.getDeviceExtensions(), coreExtensions)); 2219 2220 vector<const char*> extensionNames; 2221 extensionNames.reserve(nonCoreExtensions.size()); 2222 for (const string& extension : nonCoreExtensions) 2223 extensionNames.push_back(extension.c_str()); 2224 2225 if (const void* featuresStruct = findStructureInChain(const_cast<const void*>(deviceFeatures2.pNext), getStructureType<VkPhysicalDeviceRayTracingMaintenance1FeaturesKHR>())) 2226 { 2227 static const Feature features[] = 2228 { 2229 FEATURE_ITEM (VkPhysicalDeviceRayTracingMaintenance1FeaturesKHR, rayTracingMaintenance1), 2230 FEATURE_ITEM (VkPhysicalDeviceRayTracingMaintenance1FeaturesKHR, rayTracingPipelineTraceRaysIndirect2), 2231 }; 2232 auto* supportedFeatures = reinterpret_cast<const VkPhysicalDeviceRayTracingMaintenance1FeaturesKHR*>(featuresStruct); 2233 checkFeatures(vkp, instance, instanceDriver, physicalDevice, 2, features, supportedFeatures, queueFamilyIndex, queueCount, queuePriority, numErrors, resultCollector, &extensionNames, emptyDeviceFeatures, isSubProcess); 2234 } 2235 2236 if (numErrors > 0) 2237 return tcu::TestStatus(resultCollector.getResult(), "Enabling unsupported features didn't return VK_ERROR_FEATURE_NOT_PRESENT."); 2238 else 2239 return tcu::TestStatus(resultCollector.getResult(), resultCollector.getMessage()); 2240} 2241 2242 2243tcu::TestStatus createDeviceWithUnsupportedFeaturesTestFragmentDensityMapFeaturesEXT (Context& context) 2244{ 2245 const PlatformInterface& vkp = context.getPlatformInterface(); 2246 tcu::TestLog& log = context.getTestContext().getLog(); 2247 tcu::ResultCollector resultCollector (log); 2248 const CustomInstance instance (createCustomInstanceWithExtensions(context, context.getInstanceExtensions(), DE_NULL, true)); 2249 const InstanceDriver& instanceDriver (instance.getDriver()); 2250 const VkPhysicalDevice physicalDevice = chooseDevice(instanceDriver, instance, context.getTestContext().getCommandLine()); 2251 const deUint32 queueFamilyIndex = 0; 2252 const deUint32 queueCount = 1; 2253 const float queuePriority = 1.0f; 2254 const DeviceFeatures deviceFeaturesAll (context.getInstanceInterface(), context.getUsedApiVersion(), physicalDevice, context.getInstanceExtensions(), context.getDeviceExtensions(), DE_TRUE); 2255 const VkPhysicalDeviceFeatures2 deviceFeatures2 = deviceFeaturesAll.getCoreFeatures2(); 2256 int numErrors = 0; 2257 bool isSubProcess = context.getTestContext().getCommandLine().isSubProcess(); 2258 2259 2260 VkPhysicalDeviceFeatures emptyDeviceFeatures; 2261 deMemset(&emptyDeviceFeatures, 0, sizeof(emptyDeviceFeatures)); 2262 2263 // Only non-core extensions will be used when creating the device. 2264 vector<const char*> coreExtensions; 2265 getCoreDeviceExtensions(context.getUsedApiVersion(), coreExtensions); 2266 vector<string> nonCoreExtensions(removeExtensions(context.getDeviceExtensions(), coreExtensions)); 2267 2268 vector<const char*> extensionNames; 2269 extensionNames.reserve(nonCoreExtensions.size()); 2270 for (const string& extension : nonCoreExtensions) 2271 extensionNames.push_back(extension.c_str()); 2272 2273 if (const void* featuresStruct = findStructureInChain(const_cast<const void*>(deviceFeatures2.pNext), getStructureType<VkPhysicalDeviceFragmentDensityMapFeaturesEXT>())) 2274 { 2275 static const Feature features[] = 2276 { 2277 FEATURE_ITEM (VkPhysicalDeviceFragmentDensityMapFeaturesEXT, fragmentDensityMap), 2278 FEATURE_ITEM (VkPhysicalDeviceFragmentDensityMapFeaturesEXT, fragmentDensityMapDynamic), 2279 FEATURE_ITEM (VkPhysicalDeviceFragmentDensityMapFeaturesEXT, fragmentDensityMapNonSubsampledImages), 2280 }; 2281 auto* supportedFeatures = reinterpret_cast<const VkPhysicalDeviceFragmentDensityMapFeaturesEXT*>(featuresStruct); 2282 checkFeatures(vkp, instance, instanceDriver, physicalDevice, 3, features, supportedFeatures, queueFamilyIndex, queueCount, queuePriority, numErrors, resultCollector, &extensionNames, emptyDeviceFeatures, isSubProcess); 2283 } 2284 2285 if (numErrors > 0) 2286 return tcu::TestStatus(resultCollector.getResult(), "Enabling unsupported features didn't return VK_ERROR_FEATURE_NOT_PRESENT."); 2287 else 2288 return tcu::TestStatus(resultCollector.getResult(), resultCollector.getMessage()); 2289} 2290 2291 2292tcu::TestStatus createDeviceWithUnsupportedFeaturesTestFragmentDensityMap2FeaturesEXT (Context& context) 2293{ 2294 const PlatformInterface& vkp = context.getPlatformInterface(); 2295 tcu::TestLog& log = context.getTestContext().getLog(); 2296 tcu::ResultCollector resultCollector (log); 2297 const CustomInstance instance (createCustomInstanceWithExtensions(context, context.getInstanceExtensions(), DE_NULL, true)); 2298 const InstanceDriver& instanceDriver (instance.getDriver()); 2299 const VkPhysicalDevice physicalDevice = chooseDevice(instanceDriver, instance, context.getTestContext().getCommandLine()); 2300 const deUint32 queueFamilyIndex = 0; 2301 const deUint32 queueCount = 1; 2302 const float queuePriority = 1.0f; 2303 const DeviceFeatures deviceFeaturesAll (context.getInstanceInterface(), context.getUsedApiVersion(), physicalDevice, context.getInstanceExtensions(), context.getDeviceExtensions(), DE_TRUE); 2304 const VkPhysicalDeviceFeatures2 deviceFeatures2 = deviceFeaturesAll.getCoreFeatures2(); 2305 int numErrors = 0; 2306 bool isSubProcess = context.getTestContext().getCommandLine().isSubProcess(); 2307 2308 2309 VkPhysicalDeviceFeatures emptyDeviceFeatures; 2310 deMemset(&emptyDeviceFeatures, 0, sizeof(emptyDeviceFeatures)); 2311 2312 // Only non-core extensions will be used when creating the device. 2313 vector<const char*> coreExtensions; 2314 getCoreDeviceExtensions(context.getUsedApiVersion(), coreExtensions); 2315 vector<string> nonCoreExtensions(removeExtensions(context.getDeviceExtensions(), coreExtensions)); 2316 2317 vector<const char*> extensionNames; 2318 extensionNames.reserve(nonCoreExtensions.size()); 2319 for (const string& extension : nonCoreExtensions) 2320 extensionNames.push_back(extension.c_str()); 2321 2322 if (const void* featuresStruct = findStructureInChain(const_cast<const void*>(deviceFeatures2.pNext), getStructureType<VkPhysicalDeviceFragmentDensityMap2FeaturesEXT>())) 2323 { 2324 static const Feature features[] = 2325 { 2326 FEATURE_ITEM (VkPhysicalDeviceFragmentDensityMap2FeaturesEXT, fragmentDensityMapDeferred), 2327 }; 2328 auto* supportedFeatures = reinterpret_cast<const VkPhysicalDeviceFragmentDensityMap2FeaturesEXT*>(featuresStruct); 2329 checkFeatures(vkp, instance, instanceDriver, physicalDevice, 1, features, supportedFeatures, queueFamilyIndex, queueCount, queuePriority, numErrors, resultCollector, &extensionNames, emptyDeviceFeatures, isSubProcess); 2330 } 2331 2332 if (numErrors > 0) 2333 return tcu::TestStatus(resultCollector.getResult(), "Enabling unsupported features didn't return VK_ERROR_FEATURE_NOT_PRESENT."); 2334 else 2335 return tcu::TestStatus(resultCollector.getResult(), resultCollector.getMessage()); 2336} 2337 2338 2339tcu::TestStatus createDeviceWithUnsupportedFeaturesTestFragmentDensityMapOffsetFeaturesQCOM (Context& context) 2340{ 2341 const PlatformInterface& vkp = context.getPlatformInterface(); 2342 tcu::TestLog& log = context.getTestContext().getLog(); 2343 tcu::ResultCollector resultCollector (log); 2344 const CustomInstance instance (createCustomInstanceWithExtensions(context, context.getInstanceExtensions(), DE_NULL, true)); 2345 const InstanceDriver& instanceDriver (instance.getDriver()); 2346 const VkPhysicalDevice physicalDevice = chooseDevice(instanceDriver, instance, context.getTestContext().getCommandLine()); 2347 const deUint32 queueFamilyIndex = 0; 2348 const deUint32 queueCount = 1; 2349 const float queuePriority = 1.0f; 2350 const DeviceFeatures deviceFeaturesAll (context.getInstanceInterface(), context.getUsedApiVersion(), physicalDevice, context.getInstanceExtensions(), context.getDeviceExtensions(), DE_TRUE); 2351 const VkPhysicalDeviceFeatures2 deviceFeatures2 = deviceFeaturesAll.getCoreFeatures2(); 2352 int numErrors = 0; 2353 bool isSubProcess = context.getTestContext().getCommandLine().isSubProcess(); 2354 2355 2356 VkPhysicalDeviceFeatures emptyDeviceFeatures; 2357 deMemset(&emptyDeviceFeatures, 0, sizeof(emptyDeviceFeatures)); 2358 2359 // Only non-core extensions will be used when creating the device. 2360 vector<const char*> coreExtensions; 2361 getCoreDeviceExtensions(context.getUsedApiVersion(), coreExtensions); 2362 vector<string> nonCoreExtensions(removeExtensions(context.getDeviceExtensions(), coreExtensions)); 2363 2364 vector<const char*> extensionNames; 2365 extensionNames.reserve(nonCoreExtensions.size()); 2366 for (const string& extension : nonCoreExtensions) 2367 extensionNames.push_back(extension.c_str()); 2368 2369 if (const void* featuresStruct = findStructureInChain(const_cast<const void*>(deviceFeatures2.pNext), getStructureType<VkPhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM>())) 2370 { 2371 static const Feature features[] = 2372 { 2373 FEATURE_ITEM (VkPhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM, fragmentDensityMapOffset), 2374 }; 2375 auto* supportedFeatures = reinterpret_cast<const VkPhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM*>(featuresStruct); 2376 checkFeatures(vkp, instance, instanceDriver, physicalDevice, 1, features, supportedFeatures, queueFamilyIndex, queueCount, queuePriority, numErrors, resultCollector, &extensionNames, emptyDeviceFeatures, isSubProcess); 2377 } 2378 2379 if (numErrors > 0) 2380 return tcu::TestStatus(resultCollector.getResult(), "Enabling unsupported features didn't return VK_ERROR_FEATURE_NOT_PRESENT."); 2381 else 2382 return tcu::TestStatus(resultCollector.getResult(), resultCollector.getMessage()); 2383} 2384 2385 2386tcu::TestStatus createDeviceWithUnsupportedFeaturesTestScalarBlockLayoutFeatures (Context& context) 2387{ 2388 const PlatformInterface& vkp = context.getPlatformInterface(); 2389 tcu::TestLog& log = context.getTestContext().getLog(); 2390 tcu::ResultCollector resultCollector (log); 2391 const CustomInstance instance (createCustomInstanceWithExtensions(context, context.getInstanceExtensions(), DE_NULL, true)); 2392 const InstanceDriver& instanceDriver (instance.getDriver()); 2393 const VkPhysicalDevice physicalDevice = chooseDevice(instanceDriver, instance, context.getTestContext().getCommandLine()); 2394 const deUint32 queueFamilyIndex = 0; 2395 const deUint32 queueCount = 1; 2396 const float queuePriority = 1.0f; 2397 const DeviceFeatures deviceFeaturesAll (context.getInstanceInterface(), context.getUsedApiVersion(), physicalDevice, context.getInstanceExtensions(), context.getDeviceExtensions(), DE_TRUE); 2398 const VkPhysicalDeviceFeatures2 deviceFeatures2 = deviceFeaturesAll.getCoreFeatures2(); 2399 int numErrors = 0; 2400 bool isSubProcess = context.getTestContext().getCommandLine().isSubProcess(); 2401 2402 2403 VkPhysicalDeviceFeatures emptyDeviceFeatures; 2404 deMemset(&emptyDeviceFeatures, 0, sizeof(emptyDeviceFeatures)); 2405 2406 // Only non-core extensions will be used when creating the device. 2407 vector<const char*> coreExtensions; 2408 getCoreDeviceExtensions(context.getUsedApiVersion(), coreExtensions); 2409 vector<string> nonCoreExtensions(removeExtensions(context.getDeviceExtensions(), coreExtensions)); 2410 2411 vector<const char*> extensionNames; 2412 extensionNames.reserve(nonCoreExtensions.size()); 2413 for (const string& extension : nonCoreExtensions) 2414 extensionNames.push_back(extension.c_str()); 2415 2416 if (const void* featuresStruct = findStructureInChain(const_cast<const void*>(deviceFeatures2.pNext), getStructureType<VkPhysicalDeviceScalarBlockLayoutFeatures>())) 2417 { 2418 static const Feature features[] = 2419 { 2420 FEATURE_ITEM (VkPhysicalDeviceScalarBlockLayoutFeatures, scalarBlockLayout), 2421 }; 2422 auto* supportedFeatures = reinterpret_cast<const VkPhysicalDeviceScalarBlockLayoutFeatures*>(featuresStruct); 2423 checkFeatures(vkp, instance, instanceDriver, physicalDevice, 1, features, supportedFeatures, queueFamilyIndex, queueCount, queuePriority, numErrors, resultCollector, &extensionNames, emptyDeviceFeatures, isSubProcess); 2424 } 2425 2426 if (numErrors > 0) 2427 return tcu::TestStatus(resultCollector.getResult(), "Enabling unsupported features didn't return VK_ERROR_FEATURE_NOT_PRESENT."); 2428 else 2429 return tcu::TestStatus(resultCollector.getResult(), resultCollector.getMessage()); 2430} 2431 2432 2433tcu::TestStatus createDeviceWithUnsupportedFeaturesTestUniformBufferStandardLayoutFeatures (Context& context) 2434{ 2435 const PlatformInterface& vkp = context.getPlatformInterface(); 2436 tcu::TestLog& log = context.getTestContext().getLog(); 2437 tcu::ResultCollector resultCollector (log); 2438 const CustomInstance instance (createCustomInstanceWithExtensions(context, context.getInstanceExtensions(), DE_NULL, true)); 2439 const InstanceDriver& instanceDriver (instance.getDriver()); 2440 const VkPhysicalDevice physicalDevice = chooseDevice(instanceDriver, instance, context.getTestContext().getCommandLine()); 2441 const deUint32 queueFamilyIndex = 0; 2442 const deUint32 queueCount = 1; 2443 const float queuePriority = 1.0f; 2444 const DeviceFeatures deviceFeaturesAll (context.getInstanceInterface(), context.getUsedApiVersion(), physicalDevice, context.getInstanceExtensions(), context.getDeviceExtensions(), DE_TRUE); 2445 const VkPhysicalDeviceFeatures2 deviceFeatures2 = deviceFeaturesAll.getCoreFeatures2(); 2446 int numErrors = 0; 2447 bool isSubProcess = context.getTestContext().getCommandLine().isSubProcess(); 2448 2449 2450 VkPhysicalDeviceFeatures emptyDeviceFeatures; 2451 deMemset(&emptyDeviceFeatures, 0, sizeof(emptyDeviceFeatures)); 2452 2453 // Only non-core extensions will be used when creating the device. 2454 vector<const char*> coreExtensions; 2455 getCoreDeviceExtensions(context.getUsedApiVersion(), coreExtensions); 2456 vector<string> nonCoreExtensions(removeExtensions(context.getDeviceExtensions(), coreExtensions)); 2457 2458 vector<const char*> extensionNames; 2459 extensionNames.reserve(nonCoreExtensions.size()); 2460 for (const string& extension : nonCoreExtensions) 2461 extensionNames.push_back(extension.c_str()); 2462 2463 if (const void* featuresStruct = findStructureInChain(const_cast<const void*>(deviceFeatures2.pNext), getStructureType<VkPhysicalDeviceUniformBufferStandardLayoutFeatures>())) 2464 { 2465 static const Feature features[] = 2466 { 2467 FEATURE_ITEM (VkPhysicalDeviceUniformBufferStandardLayoutFeatures, uniformBufferStandardLayout), 2468 }; 2469 auto* supportedFeatures = reinterpret_cast<const VkPhysicalDeviceUniformBufferStandardLayoutFeatures*>(featuresStruct); 2470 checkFeatures(vkp, instance, instanceDriver, physicalDevice, 1, features, supportedFeatures, queueFamilyIndex, queueCount, queuePriority, numErrors, resultCollector, &extensionNames, emptyDeviceFeatures, isSubProcess); 2471 } 2472 2473 if (numErrors > 0) 2474 return tcu::TestStatus(resultCollector.getResult(), "Enabling unsupported features didn't return VK_ERROR_FEATURE_NOT_PRESENT."); 2475 else 2476 return tcu::TestStatus(resultCollector.getResult(), resultCollector.getMessage()); 2477} 2478 2479 2480tcu::TestStatus createDeviceWithUnsupportedFeaturesTestDepthClipEnableFeaturesEXT (Context& context) 2481{ 2482 const PlatformInterface& vkp = context.getPlatformInterface(); 2483 tcu::TestLog& log = context.getTestContext().getLog(); 2484 tcu::ResultCollector resultCollector (log); 2485 const CustomInstance instance (createCustomInstanceWithExtensions(context, context.getInstanceExtensions(), DE_NULL, true)); 2486 const InstanceDriver& instanceDriver (instance.getDriver()); 2487 const VkPhysicalDevice physicalDevice = chooseDevice(instanceDriver, instance, context.getTestContext().getCommandLine()); 2488 const deUint32 queueFamilyIndex = 0; 2489 const deUint32 queueCount = 1; 2490 const float queuePriority = 1.0f; 2491 const DeviceFeatures deviceFeaturesAll (context.getInstanceInterface(), context.getUsedApiVersion(), physicalDevice, context.getInstanceExtensions(), context.getDeviceExtensions(), DE_TRUE); 2492 const VkPhysicalDeviceFeatures2 deviceFeatures2 = deviceFeaturesAll.getCoreFeatures2(); 2493 int numErrors = 0; 2494 bool isSubProcess = context.getTestContext().getCommandLine().isSubProcess(); 2495 2496 2497 VkPhysicalDeviceFeatures emptyDeviceFeatures; 2498 deMemset(&emptyDeviceFeatures, 0, sizeof(emptyDeviceFeatures)); 2499 2500 // Only non-core extensions will be used when creating the device. 2501 vector<const char*> coreExtensions; 2502 getCoreDeviceExtensions(context.getUsedApiVersion(), coreExtensions); 2503 vector<string> nonCoreExtensions(removeExtensions(context.getDeviceExtensions(), coreExtensions)); 2504 2505 vector<const char*> extensionNames; 2506 extensionNames.reserve(nonCoreExtensions.size()); 2507 for (const string& extension : nonCoreExtensions) 2508 extensionNames.push_back(extension.c_str()); 2509 2510 if (const void* featuresStruct = findStructureInChain(const_cast<const void*>(deviceFeatures2.pNext), getStructureType<VkPhysicalDeviceDepthClipEnableFeaturesEXT>())) 2511 { 2512 static const Feature features[] = 2513 { 2514 FEATURE_ITEM (VkPhysicalDeviceDepthClipEnableFeaturesEXT, depthClipEnable), 2515 }; 2516 auto* supportedFeatures = reinterpret_cast<const VkPhysicalDeviceDepthClipEnableFeaturesEXT*>(featuresStruct); 2517 checkFeatures(vkp, instance, instanceDriver, physicalDevice, 1, features, supportedFeatures, queueFamilyIndex, queueCount, queuePriority, numErrors, resultCollector, &extensionNames, emptyDeviceFeatures, isSubProcess); 2518 } 2519 2520 if (numErrors > 0) 2521 return tcu::TestStatus(resultCollector.getResult(), "Enabling unsupported features didn't return VK_ERROR_FEATURE_NOT_PRESENT."); 2522 else 2523 return tcu::TestStatus(resultCollector.getResult(), resultCollector.getMessage()); 2524} 2525 2526 2527tcu::TestStatus createDeviceWithUnsupportedFeaturesTestMemoryPriorityFeaturesEXT (Context& context) 2528{ 2529 const PlatformInterface& vkp = context.getPlatformInterface(); 2530 tcu::TestLog& log = context.getTestContext().getLog(); 2531 tcu::ResultCollector resultCollector (log); 2532 const CustomInstance instance (createCustomInstanceWithExtensions(context, context.getInstanceExtensions(), DE_NULL, true)); 2533 const InstanceDriver& instanceDriver (instance.getDriver()); 2534 const VkPhysicalDevice physicalDevice = chooseDevice(instanceDriver, instance, context.getTestContext().getCommandLine()); 2535 const deUint32 queueFamilyIndex = 0; 2536 const deUint32 queueCount = 1; 2537 const float queuePriority = 1.0f; 2538 const DeviceFeatures deviceFeaturesAll (context.getInstanceInterface(), context.getUsedApiVersion(), physicalDevice, context.getInstanceExtensions(), context.getDeviceExtensions(), DE_TRUE); 2539 const VkPhysicalDeviceFeatures2 deviceFeatures2 = deviceFeaturesAll.getCoreFeatures2(); 2540 int numErrors = 0; 2541 bool isSubProcess = context.getTestContext().getCommandLine().isSubProcess(); 2542 2543 2544 VkPhysicalDeviceFeatures emptyDeviceFeatures; 2545 deMemset(&emptyDeviceFeatures, 0, sizeof(emptyDeviceFeatures)); 2546 2547 // Only non-core extensions will be used when creating the device. 2548 vector<const char*> coreExtensions; 2549 getCoreDeviceExtensions(context.getUsedApiVersion(), coreExtensions); 2550 vector<string> nonCoreExtensions(removeExtensions(context.getDeviceExtensions(), coreExtensions)); 2551 2552 vector<const char*> extensionNames; 2553 extensionNames.reserve(nonCoreExtensions.size()); 2554 for (const string& extension : nonCoreExtensions) 2555 extensionNames.push_back(extension.c_str()); 2556 2557 if (const void* featuresStruct = findStructureInChain(const_cast<const void*>(deviceFeatures2.pNext), getStructureType<VkPhysicalDeviceMemoryPriorityFeaturesEXT>())) 2558 { 2559 static const Feature features[] = 2560 { 2561 FEATURE_ITEM (VkPhysicalDeviceMemoryPriorityFeaturesEXT, memoryPriority), 2562 }; 2563 auto* supportedFeatures = reinterpret_cast<const VkPhysicalDeviceMemoryPriorityFeaturesEXT*>(featuresStruct); 2564 checkFeatures(vkp, instance, instanceDriver, physicalDevice, 1, features, supportedFeatures, queueFamilyIndex, queueCount, queuePriority, numErrors, resultCollector, &extensionNames, emptyDeviceFeatures, isSubProcess); 2565 } 2566 2567 if (numErrors > 0) 2568 return tcu::TestStatus(resultCollector.getResult(), "Enabling unsupported features didn't return VK_ERROR_FEATURE_NOT_PRESENT."); 2569 else 2570 return tcu::TestStatus(resultCollector.getResult(), resultCollector.getMessage()); 2571} 2572 2573 2574tcu::TestStatus createDeviceWithUnsupportedFeaturesTestPageableDeviceLocalMemoryFeaturesEXT (Context& context) 2575{ 2576 const PlatformInterface& vkp = context.getPlatformInterface(); 2577 tcu::TestLog& log = context.getTestContext().getLog(); 2578 tcu::ResultCollector resultCollector (log); 2579 const CustomInstance instance (createCustomInstanceWithExtensions(context, context.getInstanceExtensions(), DE_NULL, true)); 2580 const InstanceDriver& instanceDriver (instance.getDriver()); 2581 const VkPhysicalDevice physicalDevice = chooseDevice(instanceDriver, instance, context.getTestContext().getCommandLine()); 2582 const deUint32 queueFamilyIndex = 0; 2583 const deUint32 queueCount = 1; 2584 const float queuePriority = 1.0f; 2585 const DeviceFeatures deviceFeaturesAll (context.getInstanceInterface(), context.getUsedApiVersion(), physicalDevice, context.getInstanceExtensions(), context.getDeviceExtensions(), DE_TRUE); 2586 const VkPhysicalDeviceFeatures2 deviceFeatures2 = deviceFeaturesAll.getCoreFeatures2(); 2587 int numErrors = 0; 2588 bool isSubProcess = context.getTestContext().getCommandLine().isSubProcess(); 2589 2590 2591 VkPhysicalDeviceFeatures emptyDeviceFeatures; 2592 deMemset(&emptyDeviceFeatures, 0, sizeof(emptyDeviceFeatures)); 2593 2594 // Only non-core extensions will be used when creating the device. 2595 vector<const char*> coreExtensions; 2596 getCoreDeviceExtensions(context.getUsedApiVersion(), coreExtensions); 2597 vector<string> nonCoreExtensions(removeExtensions(context.getDeviceExtensions(), coreExtensions)); 2598 2599 vector<const char*> extensionNames; 2600 extensionNames.reserve(nonCoreExtensions.size()); 2601 for (const string& extension : nonCoreExtensions) 2602 extensionNames.push_back(extension.c_str()); 2603 2604 if (const void* featuresStruct = findStructureInChain(const_cast<const void*>(deviceFeatures2.pNext), getStructureType<VkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT>())) 2605 { 2606 static const Feature features[] = 2607 { 2608 FEATURE_ITEM (VkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT, pageableDeviceLocalMemory), 2609 }; 2610 auto* supportedFeatures = reinterpret_cast<const VkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT*>(featuresStruct); 2611 checkFeatures(vkp, instance, instanceDriver, physicalDevice, 1, features, supportedFeatures, queueFamilyIndex, queueCount, queuePriority, numErrors, resultCollector, &extensionNames, emptyDeviceFeatures, isSubProcess); 2612 } 2613 2614 if (numErrors > 0) 2615 return tcu::TestStatus(resultCollector.getResult(), "Enabling unsupported features didn't return VK_ERROR_FEATURE_NOT_PRESENT."); 2616 else 2617 return tcu::TestStatus(resultCollector.getResult(), resultCollector.getMessage()); 2618} 2619 2620 2621tcu::TestStatus createDeviceWithUnsupportedFeaturesTestBufferDeviceAddressFeatures (Context& context) 2622{ 2623 const PlatformInterface& vkp = context.getPlatformInterface(); 2624 tcu::TestLog& log = context.getTestContext().getLog(); 2625 tcu::ResultCollector resultCollector (log); 2626 const CustomInstance instance (createCustomInstanceWithExtensions(context, context.getInstanceExtensions(), DE_NULL, true)); 2627 const InstanceDriver& instanceDriver (instance.getDriver()); 2628 const VkPhysicalDevice physicalDevice = chooseDevice(instanceDriver, instance, context.getTestContext().getCommandLine()); 2629 const deUint32 queueFamilyIndex = 0; 2630 const deUint32 queueCount = 1; 2631 const float queuePriority = 1.0f; 2632 const DeviceFeatures deviceFeaturesAll (context.getInstanceInterface(), context.getUsedApiVersion(), physicalDevice, context.getInstanceExtensions(), context.getDeviceExtensions(), DE_TRUE); 2633 const VkPhysicalDeviceFeatures2 deviceFeatures2 = deviceFeaturesAll.getCoreFeatures2(); 2634 int numErrors = 0; 2635 bool isSubProcess = context.getTestContext().getCommandLine().isSubProcess(); 2636 2637 2638 VkPhysicalDeviceFeatures emptyDeviceFeatures; 2639 deMemset(&emptyDeviceFeatures, 0, sizeof(emptyDeviceFeatures)); 2640 2641 // Only non-core extensions will be used when creating the device. 2642 vector<const char*> coreExtensions; 2643 getCoreDeviceExtensions(context.getUsedApiVersion(), coreExtensions); 2644 vector<string> nonCoreExtensions(removeExtensions(context.getDeviceExtensions(), coreExtensions)); 2645 2646 vector<const char*> extensionNames; 2647 extensionNames.reserve(nonCoreExtensions.size()); 2648 for (const string& extension : nonCoreExtensions) 2649 extensionNames.push_back(extension.c_str()); 2650 2651 if (const void* featuresStruct = findStructureInChain(const_cast<const void*>(deviceFeatures2.pNext), getStructureType<VkPhysicalDeviceBufferDeviceAddressFeatures>())) 2652 { 2653 static const Feature features[] = 2654 { 2655 FEATURE_ITEM (VkPhysicalDeviceBufferDeviceAddressFeatures, bufferDeviceAddress), 2656 FEATURE_ITEM (VkPhysicalDeviceBufferDeviceAddressFeatures, bufferDeviceAddressCaptureReplay), 2657 FEATURE_ITEM (VkPhysicalDeviceBufferDeviceAddressFeatures, bufferDeviceAddressMultiDevice), 2658 }; 2659 auto* supportedFeatures = reinterpret_cast<const VkPhysicalDeviceBufferDeviceAddressFeatures*>(featuresStruct); 2660 checkFeatures(vkp, instance, instanceDriver, physicalDevice, 3, features, supportedFeatures, queueFamilyIndex, queueCount, queuePriority, numErrors, resultCollector, &extensionNames, emptyDeviceFeatures, isSubProcess); 2661 } 2662 2663 if (numErrors > 0) 2664 return tcu::TestStatus(resultCollector.getResult(), "Enabling unsupported features didn't return VK_ERROR_FEATURE_NOT_PRESENT."); 2665 else 2666 return tcu::TestStatus(resultCollector.getResult(), resultCollector.getMessage()); 2667} 2668 2669 2670tcu::TestStatus createDeviceWithUnsupportedFeaturesTestBufferDeviceAddressFeaturesEXT (Context& context) 2671{ 2672 const PlatformInterface& vkp = context.getPlatformInterface(); 2673 tcu::TestLog& log = context.getTestContext().getLog(); 2674 tcu::ResultCollector resultCollector (log); 2675 const CustomInstance instance (createCustomInstanceWithExtensions(context, context.getInstanceExtensions(), DE_NULL, true)); 2676 const InstanceDriver& instanceDriver (instance.getDriver()); 2677 const VkPhysicalDevice physicalDevice = chooseDevice(instanceDriver, instance, context.getTestContext().getCommandLine()); 2678 const deUint32 queueFamilyIndex = 0; 2679 const deUint32 queueCount = 1; 2680 const float queuePriority = 1.0f; 2681 const DeviceFeatures deviceFeaturesAll (context.getInstanceInterface(), context.getUsedApiVersion(), physicalDevice, context.getInstanceExtensions(), context.getDeviceExtensions(), DE_TRUE); 2682 const VkPhysicalDeviceFeatures2 deviceFeatures2 = deviceFeaturesAll.getCoreFeatures2(); 2683 int numErrors = 0; 2684 bool isSubProcess = context.getTestContext().getCommandLine().isSubProcess(); 2685 2686 2687 VkPhysicalDeviceFeatures emptyDeviceFeatures; 2688 deMemset(&emptyDeviceFeatures, 0, sizeof(emptyDeviceFeatures)); 2689 2690 // Only non-core extensions will be used when creating the device. 2691 vector<const char*> coreExtensions; 2692 getCoreDeviceExtensions(context.getUsedApiVersion(), coreExtensions); 2693 vector<string> nonCoreExtensions(removeExtensions(context.getDeviceExtensions(), coreExtensions)); 2694 2695 vector<const char*> extensionNames; 2696 extensionNames.reserve(nonCoreExtensions.size()); 2697 for (const string& extension : nonCoreExtensions) 2698 extensionNames.push_back(extension.c_str()); 2699 2700 if (const void* featuresStruct = findStructureInChain(const_cast<const void*>(deviceFeatures2.pNext), getStructureType<VkPhysicalDeviceBufferDeviceAddressFeaturesEXT>())) 2701 { 2702 static const Feature features[] = 2703 { 2704 FEATURE_ITEM (VkPhysicalDeviceBufferDeviceAddressFeaturesEXT, bufferDeviceAddress), 2705 FEATURE_ITEM (VkPhysicalDeviceBufferDeviceAddressFeaturesEXT, bufferDeviceAddressCaptureReplay), 2706 FEATURE_ITEM (VkPhysicalDeviceBufferDeviceAddressFeaturesEXT, bufferDeviceAddressMultiDevice), 2707 }; 2708 auto* supportedFeatures = reinterpret_cast<const VkPhysicalDeviceBufferDeviceAddressFeaturesEXT*>(featuresStruct); 2709 checkFeatures(vkp, instance, instanceDriver, physicalDevice, 3, features, supportedFeatures, queueFamilyIndex, queueCount, queuePriority, numErrors, resultCollector, &extensionNames, emptyDeviceFeatures, isSubProcess); 2710 } 2711 2712 if (numErrors > 0) 2713 return tcu::TestStatus(resultCollector.getResult(), "Enabling unsupported features didn't return VK_ERROR_FEATURE_NOT_PRESENT."); 2714 else 2715 return tcu::TestStatus(resultCollector.getResult(), resultCollector.getMessage()); 2716} 2717 2718 2719tcu::TestStatus createDeviceWithUnsupportedFeaturesTestImagelessFramebufferFeatures (Context& context) 2720{ 2721 const PlatformInterface& vkp = context.getPlatformInterface(); 2722 tcu::TestLog& log = context.getTestContext().getLog(); 2723 tcu::ResultCollector resultCollector (log); 2724 const CustomInstance instance (createCustomInstanceWithExtensions(context, context.getInstanceExtensions(), DE_NULL, true)); 2725 const InstanceDriver& instanceDriver (instance.getDriver()); 2726 const VkPhysicalDevice physicalDevice = chooseDevice(instanceDriver, instance, context.getTestContext().getCommandLine()); 2727 const deUint32 queueFamilyIndex = 0; 2728 const deUint32 queueCount = 1; 2729 const float queuePriority = 1.0f; 2730 const DeviceFeatures deviceFeaturesAll (context.getInstanceInterface(), context.getUsedApiVersion(), physicalDevice, context.getInstanceExtensions(), context.getDeviceExtensions(), DE_TRUE); 2731 const VkPhysicalDeviceFeatures2 deviceFeatures2 = deviceFeaturesAll.getCoreFeatures2(); 2732 int numErrors = 0; 2733 bool isSubProcess = context.getTestContext().getCommandLine().isSubProcess(); 2734 2735 2736 VkPhysicalDeviceFeatures emptyDeviceFeatures; 2737 deMemset(&emptyDeviceFeatures, 0, sizeof(emptyDeviceFeatures)); 2738 2739 // Only non-core extensions will be used when creating the device. 2740 vector<const char*> coreExtensions; 2741 getCoreDeviceExtensions(context.getUsedApiVersion(), coreExtensions); 2742 vector<string> nonCoreExtensions(removeExtensions(context.getDeviceExtensions(), coreExtensions)); 2743 2744 vector<const char*> extensionNames; 2745 extensionNames.reserve(nonCoreExtensions.size()); 2746 for (const string& extension : nonCoreExtensions) 2747 extensionNames.push_back(extension.c_str()); 2748 2749 if (const void* featuresStruct = findStructureInChain(const_cast<const void*>(deviceFeatures2.pNext), getStructureType<VkPhysicalDeviceImagelessFramebufferFeatures>())) 2750 { 2751 static const Feature features[] = 2752 { 2753 FEATURE_ITEM (VkPhysicalDeviceImagelessFramebufferFeatures, imagelessFramebuffer), 2754 }; 2755 auto* supportedFeatures = reinterpret_cast<const VkPhysicalDeviceImagelessFramebufferFeatures*>(featuresStruct); 2756 checkFeatures(vkp, instance, instanceDriver, physicalDevice, 1, features, supportedFeatures, queueFamilyIndex, queueCount, queuePriority, numErrors, resultCollector, &extensionNames, emptyDeviceFeatures, isSubProcess); 2757 } 2758 2759 if (numErrors > 0) 2760 return tcu::TestStatus(resultCollector.getResult(), "Enabling unsupported features didn't return VK_ERROR_FEATURE_NOT_PRESENT."); 2761 else 2762 return tcu::TestStatus(resultCollector.getResult(), resultCollector.getMessage()); 2763} 2764 2765 2766tcu::TestStatus createDeviceWithUnsupportedFeaturesTestTextureCompressionASTCHDRFeatures (Context& context) 2767{ 2768 const PlatformInterface& vkp = context.getPlatformInterface(); 2769 tcu::TestLog& log = context.getTestContext().getLog(); 2770 tcu::ResultCollector resultCollector (log); 2771 const CustomInstance instance (createCustomInstanceWithExtensions(context, context.getInstanceExtensions(), DE_NULL, true)); 2772 const InstanceDriver& instanceDriver (instance.getDriver()); 2773 const VkPhysicalDevice physicalDevice = chooseDevice(instanceDriver, instance, context.getTestContext().getCommandLine()); 2774 const deUint32 queueFamilyIndex = 0; 2775 const deUint32 queueCount = 1; 2776 const float queuePriority = 1.0f; 2777 const DeviceFeatures deviceFeaturesAll (context.getInstanceInterface(), context.getUsedApiVersion(), physicalDevice, context.getInstanceExtensions(), context.getDeviceExtensions(), DE_TRUE); 2778 const VkPhysicalDeviceFeatures2 deviceFeatures2 = deviceFeaturesAll.getCoreFeatures2(); 2779 int numErrors = 0; 2780 bool isSubProcess = context.getTestContext().getCommandLine().isSubProcess(); 2781 2782 2783 VkPhysicalDeviceFeatures emptyDeviceFeatures; 2784 deMemset(&emptyDeviceFeatures, 0, sizeof(emptyDeviceFeatures)); 2785 2786 // Only non-core extensions will be used when creating the device. 2787 vector<const char*> coreExtensions; 2788 getCoreDeviceExtensions(context.getUsedApiVersion(), coreExtensions); 2789 vector<string> nonCoreExtensions(removeExtensions(context.getDeviceExtensions(), coreExtensions)); 2790 2791 vector<const char*> extensionNames; 2792 extensionNames.reserve(nonCoreExtensions.size()); 2793 for (const string& extension : nonCoreExtensions) 2794 extensionNames.push_back(extension.c_str()); 2795 2796 if (const void* featuresStruct = findStructureInChain(const_cast<const void*>(deviceFeatures2.pNext), getStructureType<VkPhysicalDeviceTextureCompressionASTCHDRFeatures>())) 2797 { 2798 static const Feature features[] = 2799 { 2800 FEATURE_ITEM (VkPhysicalDeviceTextureCompressionASTCHDRFeatures, textureCompressionASTC_HDR), 2801 }; 2802 auto* supportedFeatures = reinterpret_cast<const VkPhysicalDeviceTextureCompressionASTCHDRFeatures*>(featuresStruct); 2803 checkFeatures(vkp, instance, instanceDriver, physicalDevice, 1, features, supportedFeatures, queueFamilyIndex, queueCount, queuePriority, numErrors, resultCollector, &extensionNames, emptyDeviceFeatures, isSubProcess); 2804 } 2805 2806 if (numErrors > 0) 2807 return tcu::TestStatus(resultCollector.getResult(), "Enabling unsupported features didn't return VK_ERROR_FEATURE_NOT_PRESENT."); 2808 else 2809 return tcu::TestStatus(resultCollector.getResult(), resultCollector.getMessage()); 2810} 2811 2812 2813tcu::TestStatus createDeviceWithUnsupportedFeaturesTestCooperativeMatrixFeaturesNV (Context& context) 2814{ 2815 const PlatformInterface& vkp = context.getPlatformInterface(); 2816 tcu::TestLog& log = context.getTestContext().getLog(); 2817 tcu::ResultCollector resultCollector (log); 2818 const CustomInstance instance (createCustomInstanceWithExtensions(context, context.getInstanceExtensions(), DE_NULL, true)); 2819 const InstanceDriver& instanceDriver (instance.getDriver()); 2820 const VkPhysicalDevice physicalDevice = chooseDevice(instanceDriver, instance, context.getTestContext().getCommandLine()); 2821 const deUint32 queueFamilyIndex = 0; 2822 const deUint32 queueCount = 1; 2823 const float queuePriority = 1.0f; 2824 const DeviceFeatures deviceFeaturesAll (context.getInstanceInterface(), context.getUsedApiVersion(), physicalDevice, context.getInstanceExtensions(), context.getDeviceExtensions(), DE_TRUE); 2825 const VkPhysicalDeviceFeatures2 deviceFeatures2 = deviceFeaturesAll.getCoreFeatures2(); 2826 int numErrors = 0; 2827 bool isSubProcess = context.getTestContext().getCommandLine().isSubProcess(); 2828 2829 2830 VkPhysicalDeviceFeatures emptyDeviceFeatures; 2831 deMemset(&emptyDeviceFeatures, 0, sizeof(emptyDeviceFeatures)); 2832 2833 // Only non-core extensions will be used when creating the device. 2834 vector<const char*> coreExtensions; 2835 getCoreDeviceExtensions(context.getUsedApiVersion(), coreExtensions); 2836 vector<string> nonCoreExtensions(removeExtensions(context.getDeviceExtensions(), coreExtensions)); 2837 2838 vector<const char*> extensionNames; 2839 extensionNames.reserve(nonCoreExtensions.size()); 2840 for (const string& extension : nonCoreExtensions) 2841 extensionNames.push_back(extension.c_str()); 2842 2843 if (const void* featuresStruct = findStructureInChain(const_cast<const void*>(deviceFeatures2.pNext), getStructureType<VkPhysicalDeviceCooperativeMatrixFeaturesNV>())) 2844 { 2845 static const Feature features[] = 2846 { 2847 FEATURE_ITEM (VkPhysicalDeviceCooperativeMatrixFeaturesNV, cooperativeMatrix), 2848 FEATURE_ITEM (VkPhysicalDeviceCooperativeMatrixFeaturesNV, cooperativeMatrixRobustBufferAccess), 2849 }; 2850 auto* supportedFeatures = reinterpret_cast<const VkPhysicalDeviceCooperativeMatrixFeaturesNV*>(featuresStruct); 2851 checkFeatures(vkp, instance, instanceDriver, physicalDevice, 2, features, supportedFeatures, queueFamilyIndex, queueCount, queuePriority, numErrors, resultCollector, &extensionNames, emptyDeviceFeatures, isSubProcess); 2852 } 2853 2854 if (numErrors > 0) 2855 return tcu::TestStatus(resultCollector.getResult(), "Enabling unsupported features didn't return VK_ERROR_FEATURE_NOT_PRESENT."); 2856 else 2857 return tcu::TestStatus(resultCollector.getResult(), resultCollector.getMessage()); 2858} 2859 2860 2861tcu::TestStatus createDeviceWithUnsupportedFeaturesTestYcbcrImageArraysFeaturesEXT (Context& context) 2862{ 2863 const PlatformInterface& vkp = context.getPlatformInterface(); 2864 tcu::TestLog& log = context.getTestContext().getLog(); 2865 tcu::ResultCollector resultCollector (log); 2866 const CustomInstance instance (createCustomInstanceWithExtensions(context, context.getInstanceExtensions(), DE_NULL, true)); 2867 const InstanceDriver& instanceDriver (instance.getDriver()); 2868 const VkPhysicalDevice physicalDevice = chooseDevice(instanceDriver, instance, context.getTestContext().getCommandLine()); 2869 const deUint32 queueFamilyIndex = 0; 2870 const deUint32 queueCount = 1; 2871 const float queuePriority = 1.0f; 2872 const DeviceFeatures deviceFeaturesAll (context.getInstanceInterface(), context.getUsedApiVersion(), physicalDevice, context.getInstanceExtensions(), context.getDeviceExtensions(), DE_TRUE); 2873 const VkPhysicalDeviceFeatures2 deviceFeatures2 = deviceFeaturesAll.getCoreFeatures2(); 2874 int numErrors = 0; 2875 bool isSubProcess = context.getTestContext().getCommandLine().isSubProcess(); 2876 2877 2878 VkPhysicalDeviceFeatures emptyDeviceFeatures; 2879 deMemset(&emptyDeviceFeatures, 0, sizeof(emptyDeviceFeatures)); 2880 2881 // Only non-core extensions will be used when creating the device. 2882 vector<const char*> coreExtensions; 2883 getCoreDeviceExtensions(context.getUsedApiVersion(), coreExtensions); 2884 vector<string> nonCoreExtensions(removeExtensions(context.getDeviceExtensions(), coreExtensions)); 2885 2886 vector<const char*> extensionNames; 2887 extensionNames.reserve(nonCoreExtensions.size()); 2888 for (const string& extension : nonCoreExtensions) 2889 extensionNames.push_back(extension.c_str()); 2890 2891 if (const void* featuresStruct = findStructureInChain(const_cast<const void*>(deviceFeatures2.pNext), getStructureType<VkPhysicalDeviceYcbcrImageArraysFeaturesEXT>())) 2892 { 2893 static const Feature features[] = 2894 { 2895 FEATURE_ITEM (VkPhysicalDeviceYcbcrImageArraysFeaturesEXT, ycbcrImageArrays), 2896 }; 2897 auto* supportedFeatures = reinterpret_cast<const VkPhysicalDeviceYcbcrImageArraysFeaturesEXT*>(featuresStruct); 2898 checkFeatures(vkp, instance, instanceDriver, physicalDevice, 1, features, supportedFeatures, queueFamilyIndex, queueCount, queuePriority, numErrors, resultCollector, &extensionNames, emptyDeviceFeatures, isSubProcess); 2899 } 2900 2901 if (numErrors > 0) 2902 return tcu::TestStatus(resultCollector.getResult(), "Enabling unsupported features didn't return VK_ERROR_FEATURE_NOT_PRESENT."); 2903 else 2904 return tcu::TestStatus(resultCollector.getResult(), resultCollector.getMessage()); 2905} 2906 2907 2908tcu::TestStatus createDeviceWithUnsupportedFeaturesTestPresentBarrierFeaturesNV (Context& context) 2909{ 2910 const PlatformInterface& vkp = context.getPlatformInterface(); 2911 tcu::TestLog& log = context.getTestContext().getLog(); 2912 tcu::ResultCollector resultCollector (log); 2913 const CustomInstance instance (createCustomInstanceWithExtensions(context, context.getInstanceExtensions(), DE_NULL, true)); 2914 const InstanceDriver& instanceDriver (instance.getDriver()); 2915 const VkPhysicalDevice physicalDevice = chooseDevice(instanceDriver, instance, context.getTestContext().getCommandLine()); 2916 const deUint32 queueFamilyIndex = 0; 2917 const deUint32 queueCount = 1; 2918 const float queuePriority = 1.0f; 2919 const DeviceFeatures deviceFeaturesAll (context.getInstanceInterface(), context.getUsedApiVersion(), physicalDevice, context.getInstanceExtensions(), context.getDeviceExtensions(), DE_TRUE); 2920 const VkPhysicalDeviceFeatures2 deviceFeatures2 = deviceFeaturesAll.getCoreFeatures2(); 2921 int numErrors = 0; 2922 bool isSubProcess = context.getTestContext().getCommandLine().isSubProcess(); 2923 2924 2925 VkPhysicalDeviceFeatures emptyDeviceFeatures; 2926 deMemset(&emptyDeviceFeatures, 0, sizeof(emptyDeviceFeatures)); 2927 2928 // Only non-core extensions will be used when creating the device. 2929 vector<const char*> coreExtensions; 2930 getCoreDeviceExtensions(context.getUsedApiVersion(), coreExtensions); 2931 vector<string> nonCoreExtensions(removeExtensions(context.getDeviceExtensions(), coreExtensions)); 2932 2933 vector<const char*> extensionNames; 2934 extensionNames.reserve(nonCoreExtensions.size()); 2935 for (const string& extension : nonCoreExtensions) 2936 extensionNames.push_back(extension.c_str()); 2937 2938 if (const void* featuresStruct = findStructureInChain(const_cast<const void*>(deviceFeatures2.pNext), getStructureType<VkPhysicalDevicePresentBarrierFeaturesNV>())) 2939 { 2940 static const Feature features[] = 2941 { 2942 FEATURE_ITEM (VkPhysicalDevicePresentBarrierFeaturesNV, presentBarrier), 2943 }; 2944 auto* supportedFeatures = reinterpret_cast<const VkPhysicalDevicePresentBarrierFeaturesNV*>(featuresStruct); 2945 checkFeatures(vkp, instance, instanceDriver, physicalDevice, 1, features, supportedFeatures, queueFamilyIndex, queueCount, queuePriority, numErrors, resultCollector, &extensionNames, emptyDeviceFeatures, isSubProcess); 2946 } 2947 2948 if (numErrors > 0) 2949 return tcu::TestStatus(resultCollector.getResult(), "Enabling unsupported features didn't return VK_ERROR_FEATURE_NOT_PRESENT."); 2950 else 2951 return tcu::TestStatus(resultCollector.getResult(), resultCollector.getMessage()); 2952} 2953 2954 2955tcu::TestStatus createDeviceWithUnsupportedFeaturesTestPerformanceQueryFeaturesKHR (Context& context) 2956{ 2957 const PlatformInterface& vkp = context.getPlatformInterface(); 2958 tcu::TestLog& log = context.getTestContext().getLog(); 2959 tcu::ResultCollector resultCollector (log); 2960 const CustomInstance instance (createCustomInstanceWithExtensions(context, context.getInstanceExtensions(), DE_NULL, true)); 2961 const InstanceDriver& instanceDriver (instance.getDriver()); 2962 const VkPhysicalDevice physicalDevice = chooseDevice(instanceDriver, instance, context.getTestContext().getCommandLine()); 2963 const deUint32 queueFamilyIndex = 0; 2964 const deUint32 queueCount = 1; 2965 const float queuePriority = 1.0f; 2966 const DeviceFeatures deviceFeaturesAll (context.getInstanceInterface(), context.getUsedApiVersion(), physicalDevice, context.getInstanceExtensions(), context.getDeviceExtensions(), DE_TRUE); 2967 const VkPhysicalDeviceFeatures2 deviceFeatures2 = deviceFeaturesAll.getCoreFeatures2(); 2968 int numErrors = 0; 2969 bool isSubProcess = context.getTestContext().getCommandLine().isSubProcess(); 2970 2971 2972 VkPhysicalDeviceFeatures emptyDeviceFeatures; 2973 deMemset(&emptyDeviceFeatures, 0, sizeof(emptyDeviceFeatures)); 2974 2975 // Only non-core extensions will be used when creating the device. 2976 vector<const char*> coreExtensions; 2977 getCoreDeviceExtensions(context.getUsedApiVersion(), coreExtensions); 2978 vector<string> nonCoreExtensions(removeExtensions(context.getDeviceExtensions(), coreExtensions)); 2979 2980 vector<const char*> extensionNames; 2981 extensionNames.reserve(nonCoreExtensions.size()); 2982 for (const string& extension : nonCoreExtensions) 2983 extensionNames.push_back(extension.c_str()); 2984 2985 if (const void* featuresStruct = findStructureInChain(const_cast<const void*>(deviceFeatures2.pNext), getStructureType<VkPhysicalDevicePerformanceQueryFeaturesKHR>())) 2986 { 2987 static const Feature features[] = 2988 { 2989 FEATURE_ITEM (VkPhysicalDevicePerformanceQueryFeaturesKHR, performanceCounterQueryPools), 2990 FEATURE_ITEM (VkPhysicalDevicePerformanceQueryFeaturesKHR, performanceCounterMultipleQueryPools), 2991 }; 2992 auto* supportedFeatures = reinterpret_cast<const VkPhysicalDevicePerformanceQueryFeaturesKHR*>(featuresStruct); 2993 checkFeatures(vkp, instance, instanceDriver, physicalDevice, 2, features, supportedFeatures, queueFamilyIndex, queueCount, queuePriority, numErrors, resultCollector, &extensionNames, emptyDeviceFeatures, isSubProcess); 2994 } 2995 2996 if (numErrors > 0) 2997 return tcu::TestStatus(resultCollector.getResult(), "Enabling unsupported features didn't return VK_ERROR_FEATURE_NOT_PRESENT."); 2998 else 2999 return tcu::TestStatus(resultCollector.getResult(), resultCollector.getMessage()); 3000} 3001 3002 3003tcu::TestStatus createDeviceWithUnsupportedFeaturesTestCoverageReductionModeFeaturesNV (Context& context) 3004{ 3005 const PlatformInterface& vkp = context.getPlatformInterface(); 3006 tcu::TestLog& log = context.getTestContext().getLog(); 3007 tcu::ResultCollector resultCollector (log); 3008 const CustomInstance instance (createCustomInstanceWithExtensions(context, context.getInstanceExtensions(), DE_NULL, true)); 3009 const InstanceDriver& instanceDriver (instance.getDriver()); 3010 const VkPhysicalDevice physicalDevice = chooseDevice(instanceDriver, instance, context.getTestContext().getCommandLine()); 3011 const deUint32 queueFamilyIndex = 0; 3012 const deUint32 queueCount = 1; 3013 const float queuePriority = 1.0f; 3014 const DeviceFeatures deviceFeaturesAll (context.getInstanceInterface(), context.getUsedApiVersion(), physicalDevice, context.getInstanceExtensions(), context.getDeviceExtensions(), DE_TRUE); 3015 const VkPhysicalDeviceFeatures2 deviceFeatures2 = deviceFeaturesAll.getCoreFeatures2(); 3016 int numErrors = 0; 3017 bool isSubProcess = context.getTestContext().getCommandLine().isSubProcess(); 3018 3019 3020 VkPhysicalDeviceFeatures emptyDeviceFeatures; 3021 deMemset(&emptyDeviceFeatures, 0, sizeof(emptyDeviceFeatures)); 3022 3023 // Only non-core extensions will be used when creating the device. 3024 vector<const char*> coreExtensions; 3025 getCoreDeviceExtensions(context.getUsedApiVersion(), coreExtensions); 3026 vector<string> nonCoreExtensions(removeExtensions(context.getDeviceExtensions(), coreExtensions)); 3027 3028 vector<const char*> extensionNames; 3029 extensionNames.reserve(nonCoreExtensions.size()); 3030 for (const string& extension : nonCoreExtensions) 3031 extensionNames.push_back(extension.c_str()); 3032 3033 if (const void* featuresStruct = findStructureInChain(const_cast<const void*>(deviceFeatures2.pNext), getStructureType<VkPhysicalDeviceCoverageReductionModeFeaturesNV>())) 3034 { 3035 static const Feature features[] = 3036 { 3037 FEATURE_ITEM (VkPhysicalDeviceCoverageReductionModeFeaturesNV, coverageReductionMode), 3038 }; 3039 auto* supportedFeatures = reinterpret_cast<const VkPhysicalDeviceCoverageReductionModeFeaturesNV*>(featuresStruct); 3040 checkFeatures(vkp, instance, instanceDriver, physicalDevice, 1, features, supportedFeatures, queueFamilyIndex, queueCount, queuePriority, numErrors, resultCollector, &extensionNames, emptyDeviceFeatures, isSubProcess); 3041 } 3042 3043 if (numErrors > 0) 3044 return tcu::TestStatus(resultCollector.getResult(), "Enabling unsupported features didn't return VK_ERROR_FEATURE_NOT_PRESENT."); 3045 else 3046 return tcu::TestStatus(resultCollector.getResult(), resultCollector.getMessage()); 3047} 3048 3049 3050tcu::TestStatus createDeviceWithUnsupportedFeaturesTestShaderIntegerFunctions2FeaturesINTEL (Context& context) 3051{ 3052 const PlatformInterface& vkp = context.getPlatformInterface(); 3053 tcu::TestLog& log = context.getTestContext().getLog(); 3054 tcu::ResultCollector resultCollector (log); 3055 const CustomInstance instance (createCustomInstanceWithExtensions(context, context.getInstanceExtensions(), DE_NULL, true)); 3056 const InstanceDriver& instanceDriver (instance.getDriver()); 3057 const VkPhysicalDevice physicalDevice = chooseDevice(instanceDriver, instance, context.getTestContext().getCommandLine()); 3058 const deUint32 queueFamilyIndex = 0; 3059 const deUint32 queueCount = 1; 3060 const float queuePriority = 1.0f; 3061 const DeviceFeatures deviceFeaturesAll (context.getInstanceInterface(), context.getUsedApiVersion(), physicalDevice, context.getInstanceExtensions(), context.getDeviceExtensions(), DE_TRUE); 3062 const VkPhysicalDeviceFeatures2 deviceFeatures2 = deviceFeaturesAll.getCoreFeatures2(); 3063 int numErrors = 0; 3064 bool isSubProcess = context.getTestContext().getCommandLine().isSubProcess(); 3065 3066 3067 VkPhysicalDeviceFeatures emptyDeviceFeatures; 3068 deMemset(&emptyDeviceFeatures, 0, sizeof(emptyDeviceFeatures)); 3069 3070 // Only non-core extensions will be used when creating the device. 3071 vector<const char*> coreExtensions; 3072 getCoreDeviceExtensions(context.getUsedApiVersion(), coreExtensions); 3073 vector<string> nonCoreExtensions(removeExtensions(context.getDeviceExtensions(), coreExtensions)); 3074 3075 vector<const char*> extensionNames; 3076 extensionNames.reserve(nonCoreExtensions.size()); 3077 for (const string& extension : nonCoreExtensions) 3078 extensionNames.push_back(extension.c_str()); 3079 3080 if (const void* featuresStruct = findStructureInChain(const_cast<const void*>(deviceFeatures2.pNext), getStructureType<VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL>())) 3081 { 3082 static const Feature features[] = 3083 { 3084 FEATURE_ITEM (VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL, shaderIntegerFunctions2), 3085 }; 3086 auto* supportedFeatures = reinterpret_cast<const VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL*>(featuresStruct); 3087 checkFeatures(vkp, instance, instanceDriver, physicalDevice, 1, features, supportedFeatures, queueFamilyIndex, queueCount, queuePriority, numErrors, resultCollector, &extensionNames, emptyDeviceFeatures, isSubProcess); 3088 } 3089 3090 if (numErrors > 0) 3091 return tcu::TestStatus(resultCollector.getResult(), "Enabling unsupported features didn't return VK_ERROR_FEATURE_NOT_PRESENT."); 3092 else 3093 return tcu::TestStatus(resultCollector.getResult(), resultCollector.getMessage()); 3094} 3095 3096 3097tcu::TestStatus createDeviceWithUnsupportedFeaturesTestShaderClockFeaturesKHR (Context& context) 3098{ 3099 const PlatformInterface& vkp = context.getPlatformInterface(); 3100 tcu::TestLog& log = context.getTestContext().getLog(); 3101 tcu::ResultCollector resultCollector (log); 3102 const CustomInstance instance (createCustomInstanceWithExtensions(context, context.getInstanceExtensions(), DE_NULL, true)); 3103 const InstanceDriver& instanceDriver (instance.getDriver()); 3104 const VkPhysicalDevice physicalDevice = chooseDevice(instanceDriver, instance, context.getTestContext().getCommandLine()); 3105 const deUint32 queueFamilyIndex = 0; 3106 const deUint32 queueCount = 1; 3107 const float queuePriority = 1.0f; 3108 const DeviceFeatures deviceFeaturesAll (context.getInstanceInterface(), context.getUsedApiVersion(), physicalDevice, context.getInstanceExtensions(), context.getDeviceExtensions(), DE_TRUE); 3109 const VkPhysicalDeviceFeatures2 deviceFeatures2 = deviceFeaturesAll.getCoreFeatures2(); 3110 int numErrors = 0; 3111 bool isSubProcess = context.getTestContext().getCommandLine().isSubProcess(); 3112 3113 3114 VkPhysicalDeviceFeatures emptyDeviceFeatures; 3115 deMemset(&emptyDeviceFeatures, 0, sizeof(emptyDeviceFeatures)); 3116 3117 // Only non-core extensions will be used when creating the device. 3118 vector<const char*> coreExtensions; 3119 getCoreDeviceExtensions(context.getUsedApiVersion(), coreExtensions); 3120 vector<string> nonCoreExtensions(removeExtensions(context.getDeviceExtensions(), coreExtensions)); 3121 3122 vector<const char*> extensionNames; 3123 extensionNames.reserve(nonCoreExtensions.size()); 3124 for (const string& extension : nonCoreExtensions) 3125 extensionNames.push_back(extension.c_str()); 3126 3127 if (const void* featuresStruct = findStructureInChain(const_cast<const void*>(deviceFeatures2.pNext), getStructureType<VkPhysicalDeviceShaderClockFeaturesKHR>())) 3128 { 3129 static const Feature features[] = 3130 { 3131 FEATURE_ITEM (VkPhysicalDeviceShaderClockFeaturesKHR, shaderSubgroupClock), 3132 FEATURE_ITEM (VkPhysicalDeviceShaderClockFeaturesKHR, shaderDeviceClock), 3133 }; 3134 auto* supportedFeatures = reinterpret_cast<const VkPhysicalDeviceShaderClockFeaturesKHR*>(featuresStruct); 3135 checkFeatures(vkp, instance, instanceDriver, physicalDevice, 2, features, supportedFeatures, queueFamilyIndex, queueCount, queuePriority, numErrors, resultCollector, &extensionNames, emptyDeviceFeatures, isSubProcess); 3136 } 3137 3138 if (numErrors > 0) 3139 return tcu::TestStatus(resultCollector.getResult(), "Enabling unsupported features didn't return VK_ERROR_FEATURE_NOT_PRESENT."); 3140 else 3141 return tcu::TestStatus(resultCollector.getResult(), resultCollector.getMessage()); 3142} 3143 3144 3145tcu::TestStatus createDeviceWithUnsupportedFeaturesTestIndexTypeUint8FeaturesEXT (Context& context) 3146{ 3147 const PlatformInterface& vkp = context.getPlatformInterface(); 3148 tcu::TestLog& log = context.getTestContext().getLog(); 3149 tcu::ResultCollector resultCollector (log); 3150 const CustomInstance instance (createCustomInstanceWithExtensions(context, context.getInstanceExtensions(), DE_NULL, true)); 3151 const InstanceDriver& instanceDriver (instance.getDriver()); 3152 const VkPhysicalDevice physicalDevice = chooseDevice(instanceDriver, instance, context.getTestContext().getCommandLine()); 3153 const deUint32 queueFamilyIndex = 0; 3154 const deUint32 queueCount = 1; 3155 const float queuePriority = 1.0f; 3156 const DeviceFeatures deviceFeaturesAll (context.getInstanceInterface(), context.getUsedApiVersion(), physicalDevice, context.getInstanceExtensions(), context.getDeviceExtensions(), DE_TRUE); 3157 const VkPhysicalDeviceFeatures2 deviceFeatures2 = deviceFeaturesAll.getCoreFeatures2(); 3158 int numErrors = 0; 3159 bool isSubProcess = context.getTestContext().getCommandLine().isSubProcess(); 3160 3161 3162 VkPhysicalDeviceFeatures emptyDeviceFeatures; 3163 deMemset(&emptyDeviceFeatures, 0, sizeof(emptyDeviceFeatures)); 3164 3165 // Only non-core extensions will be used when creating the device. 3166 vector<const char*> coreExtensions; 3167 getCoreDeviceExtensions(context.getUsedApiVersion(), coreExtensions); 3168 vector<string> nonCoreExtensions(removeExtensions(context.getDeviceExtensions(), coreExtensions)); 3169 3170 vector<const char*> extensionNames; 3171 extensionNames.reserve(nonCoreExtensions.size()); 3172 for (const string& extension : nonCoreExtensions) 3173 extensionNames.push_back(extension.c_str()); 3174 3175 if (const void* featuresStruct = findStructureInChain(const_cast<const void*>(deviceFeatures2.pNext), getStructureType<VkPhysicalDeviceIndexTypeUint8FeaturesEXT>())) 3176 { 3177 static const Feature features[] = 3178 { 3179 FEATURE_ITEM (VkPhysicalDeviceIndexTypeUint8FeaturesEXT, indexTypeUint8), 3180 }; 3181 auto* supportedFeatures = reinterpret_cast<const VkPhysicalDeviceIndexTypeUint8FeaturesEXT*>(featuresStruct); 3182 checkFeatures(vkp, instance, instanceDriver, physicalDevice, 1, features, supportedFeatures, queueFamilyIndex, queueCount, queuePriority, numErrors, resultCollector, &extensionNames, emptyDeviceFeatures, isSubProcess); 3183 } 3184 3185 if (numErrors > 0) 3186 return tcu::TestStatus(resultCollector.getResult(), "Enabling unsupported features didn't return VK_ERROR_FEATURE_NOT_PRESENT."); 3187 else 3188 return tcu::TestStatus(resultCollector.getResult(), resultCollector.getMessage()); 3189} 3190 3191 3192tcu::TestStatus createDeviceWithUnsupportedFeaturesTestShaderSMBuiltinsFeaturesNV (Context& context) 3193{ 3194 const PlatformInterface& vkp = context.getPlatformInterface(); 3195 tcu::TestLog& log = context.getTestContext().getLog(); 3196 tcu::ResultCollector resultCollector (log); 3197 const CustomInstance instance (createCustomInstanceWithExtensions(context, context.getInstanceExtensions(), DE_NULL, true)); 3198 const InstanceDriver& instanceDriver (instance.getDriver()); 3199 const VkPhysicalDevice physicalDevice = chooseDevice(instanceDriver, instance, context.getTestContext().getCommandLine()); 3200 const deUint32 queueFamilyIndex = 0; 3201 const deUint32 queueCount = 1; 3202 const float queuePriority = 1.0f; 3203 const DeviceFeatures deviceFeaturesAll (context.getInstanceInterface(), context.getUsedApiVersion(), physicalDevice, context.getInstanceExtensions(), context.getDeviceExtensions(), DE_TRUE); 3204 const VkPhysicalDeviceFeatures2 deviceFeatures2 = deviceFeaturesAll.getCoreFeatures2(); 3205 int numErrors = 0; 3206 bool isSubProcess = context.getTestContext().getCommandLine().isSubProcess(); 3207 3208 3209 VkPhysicalDeviceFeatures emptyDeviceFeatures; 3210 deMemset(&emptyDeviceFeatures, 0, sizeof(emptyDeviceFeatures)); 3211 3212 // Only non-core extensions will be used when creating the device. 3213 vector<const char*> coreExtensions; 3214 getCoreDeviceExtensions(context.getUsedApiVersion(), coreExtensions); 3215 vector<string> nonCoreExtensions(removeExtensions(context.getDeviceExtensions(), coreExtensions)); 3216 3217 vector<const char*> extensionNames; 3218 extensionNames.reserve(nonCoreExtensions.size()); 3219 for (const string& extension : nonCoreExtensions) 3220 extensionNames.push_back(extension.c_str()); 3221 3222 if (const void* featuresStruct = findStructureInChain(const_cast<const void*>(deviceFeatures2.pNext), getStructureType<VkPhysicalDeviceShaderSMBuiltinsFeaturesNV>())) 3223 { 3224 static const Feature features[] = 3225 { 3226 FEATURE_ITEM (VkPhysicalDeviceShaderSMBuiltinsFeaturesNV, shaderSMBuiltins), 3227 }; 3228 auto* supportedFeatures = reinterpret_cast<const VkPhysicalDeviceShaderSMBuiltinsFeaturesNV*>(featuresStruct); 3229 checkFeatures(vkp, instance, instanceDriver, physicalDevice, 1, features, supportedFeatures, queueFamilyIndex, queueCount, queuePriority, numErrors, resultCollector, &extensionNames, emptyDeviceFeatures, isSubProcess); 3230 } 3231 3232 if (numErrors > 0) 3233 return tcu::TestStatus(resultCollector.getResult(), "Enabling unsupported features didn't return VK_ERROR_FEATURE_NOT_PRESENT."); 3234 else 3235 return tcu::TestStatus(resultCollector.getResult(), resultCollector.getMessage()); 3236} 3237 3238 3239tcu::TestStatus createDeviceWithUnsupportedFeaturesTestFragmentShaderInterlockFeaturesEXT (Context& context) 3240{ 3241 const PlatformInterface& vkp = context.getPlatformInterface(); 3242 tcu::TestLog& log = context.getTestContext().getLog(); 3243 tcu::ResultCollector resultCollector (log); 3244 const CustomInstance instance (createCustomInstanceWithExtensions(context, context.getInstanceExtensions(), DE_NULL, true)); 3245 const InstanceDriver& instanceDriver (instance.getDriver()); 3246 const VkPhysicalDevice physicalDevice = chooseDevice(instanceDriver, instance, context.getTestContext().getCommandLine()); 3247 const deUint32 queueFamilyIndex = 0; 3248 const deUint32 queueCount = 1; 3249 const float queuePriority = 1.0f; 3250 const DeviceFeatures deviceFeaturesAll (context.getInstanceInterface(), context.getUsedApiVersion(), physicalDevice, context.getInstanceExtensions(), context.getDeviceExtensions(), DE_TRUE); 3251 const VkPhysicalDeviceFeatures2 deviceFeatures2 = deviceFeaturesAll.getCoreFeatures2(); 3252 int numErrors = 0; 3253 bool isSubProcess = context.getTestContext().getCommandLine().isSubProcess(); 3254 3255 3256 VkPhysicalDeviceFeatures emptyDeviceFeatures; 3257 deMemset(&emptyDeviceFeatures, 0, sizeof(emptyDeviceFeatures)); 3258 3259 // Only non-core extensions will be used when creating the device. 3260 vector<const char*> coreExtensions; 3261 getCoreDeviceExtensions(context.getUsedApiVersion(), coreExtensions); 3262 vector<string> nonCoreExtensions(removeExtensions(context.getDeviceExtensions(), coreExtensions)); 3263 3264 vector<const char*> extensionNames; 3265 extensionNames.reserve(nonCoreExtensions.size()); 3266 for (const string& extension : nonCoreExtensions) 3267 extensionNames.push_back(extension.c_str()); 3268 3269 if (const void* featuresStruct = findStructureInChain(const_cast<const void*>(deviceFeatures2.pNext), getStructureType<VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT>())) 3270 { 3271 static const Feature features[] = 3272 { 3273 FEATURE_ITEM (VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT, fragmentShaderSampleInterlock), 3274 FEATURE_ITEM (VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT, fragmentShaderPixelInterlock), 3275 FEATURE_ITEM (VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT, fragmentShaderShadingRateInterlock), 3276 }; 3277 auto* supportedFeatures = reinterpret_cast<const VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT*>(featuresStruct); 3278 checkFeatures(vkp, instance, instanceDriver, physicalDevice, 3, features, supportedFeatures, queueFamilyIndex, queueCount, queuePriority, numErrors, resultCollector, &extensionNames, emptyDeviceFeatures, isSubProcess); 3279 } 3280 3281 if (numErrors > 0) 3282 return tcu::TestStatus(resultCollector.getResult(), "Enabling unsupported features didn't return VK_ERROR_FEATURE_NOT_PRESENT."); 3283 else 3284 return tcu::TestStatus(resultCollector.getResult(), resultCollector.getMessage()); 3285} 3286 3287 3288tcu::TestStatus createDeviceWithUnsupportedFeaturesTestSeparateDepthStencilLayoutsFeatures (Context& context) 3289{ 3290 const PlatformInterface& vkp = context.getPlatformInterface(); 3291 tcu::TestLog& log = context.getTestContext().getLog(); 3292 tcu::ResultCollector resultCollector (log); 3293 const CustomInstance instance (createCustomInstanceWithExtensions(context, context.getInstanceExtensions(), DE_NULL, true)); 3294 const InstanceDriver& instanceDriver (instance.getDriver()); 3295 const VkPhysicalDevice physicalDevice = chooseDevice(instanceDriver, instance, context.getTestContext().getCommandLine()); 3296 const deUint32 queueFamilyIndex = 0; 3297 const deUint32 queueCount = 1; 3298 const float queuePriority = 1.0f; 3299 const DeviceFeatures deviceFeaturesAll (context.getInstanceInterface(), context.getUsedApiVersion(), physicalDevice, context.getInstanceExtensions(), context.getDeviceExtensions(), DE_TRUE); 3300 const VkPhysicalDeviceFeatures2 deviceFeatures2 = deviceFeaturesAll.getCoreFeatures2(); 3301 int numErrors = 0; 3302 bool isSubProcess = context.getTestContext().getCommandLine().isSubProcess(); 3303 3304 3305 VkPhysicalDeviceFeatures emptyDeviceFeatures; 3306 deMemset(&emptyDeviceFeatures, 0, sizeof(emptyDeviceFeatures)); 3307 3308 // Only non-core extensions will be used when creating the device. 3309 vector<const char*> coreExtensions; 3310 getCoreDeviceExtensions(context.getUsedApiVersion(), coreExtensions); 3311 vector<string> nonCoreExtensions(removeExtensions(context.getDeviceExtensions(), coreExtensions)); 3312 3313 vector<const char*> extensionNames; 3314 extensionNames.reserve(nonCoreExtensions.size()); 3315 for (const string& extension : nonCoreExtensions) 3316 extensionNames.push_back(extension.c_str()); 3317 3318 if (const void* featuresStruct = findStructureInChain(const_cast<const void*>(deviceFeatures2.pNext), getStructureType<VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures>())) 3319 { 3320 static const Feature features[] = 3321 { 3322 FEATURE_ITEM (VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures, separateDepthStencilLayouts), 3323 }; 3324 auto* supportedFeatures = reinterpret_cast<const VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures*>(featuresStruct); 3325 checkFeatures(vkp, instance, instanceDriver, physicalDevice, 1, features, supportedFeatures, queueFamilyIndex, queueCount, queuePriority, numErrors, resultCollector, &extensionNames, emptyDeviceFeatures, isSubProcess); 3326 } 3327 3328 if (numErrors > 0) 3329 return tcu::TestStatus(resultCollector.getResult(), "Enabling unsupported features didn't return VK_ERROR_FEATURE_NOT_PRESENT."); 3330 else 3331 return tcu::TestStatus(resultCollector.getResult(), resultCollector.getMessage()); 3332} 3333 3334 3335tcu::TestStatus createDeviceWithUnsupportedFeaturesTestPrimitiveTopologyListRestartFeaturesEXT (Context& context) 3336{ 3337 const PlatformInterface& vkp = context.getPlatformInterface(); 3338 tcu::TestLog& log = context.getTestContext().getLog(); 3339 tcu::ResultCollector resultCollector (log); 3340 const CustomInstance instance (createCustomInstanceWithExtensions(context, context.getInstanceExtensions(), DE_NULL, true)); 3341 const InstanceDriver& instanceDriver (instance.getDriver()); 3342 const VkPhysicalDevice physicalDevice = chooseDevice(instanceDriver, instance, context.getTestContext().getCommandLine()); 3343 const deUint32 queueFamilyIndex = 0; 3344 const deUint32 queueCount = 1; 3345 const float queuePriority = 1.0f; 3346 const DeviceFeatures deviceFeaturesAll (context.getInstanceInterface(), context.getUsedApiVersion(), physicalDevice, context.getInstanceExtensions(), context.getDeviceExtensions(), DE_TRUE); 3347 const VkPhysicalDeviceFeatures2 deviceFeatures2 = deviceFeaturesAll.getCoreFeatures2(); 3348 int numErrors = 0; 3349 bool isSubProcess = context.getTestContext().getCommandLine().isSubProcess(); 3350 3351 3352 VkPhysicalDeviceFeatures emptyDeviceFeatures; 3353 deMemset(&emptyDeviceFeatures, 0, sizeof(emptyDeviceFeatures)); 3354 3355 // Only non-core extensions will be used when creating the device. 3356 vector<const char*> coreExtensions; 3357 getCoreDeviceExtensions(context.getUsedApiVersion(), coreExtensions); 3358 vector<string> nonCoreExtensions(removeExtensions(context.getDeviceExtensions(), coreExtensions)); 3359 3360 vector<const char*> extensionNames; 3361 extensionNames.reserve(nonCoreExtensions.size()); 3362 for (const string& extension : nonCoreExtensions) 3363 extensionNames.push_back(extension.c_str()); 3364 3365 if (const void* featuresStruct = findStructureInChain(const_cast<const void*>(deviceFeatures2.pNext), getStructureType<VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT>())) 3366 { 3367 static const Feature features[] = 3368 { 3369 FEATURE_ITEM (VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT, primitiveTopologyListRestart), 3370 FEATURE_ITEM (VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT, primitiveTopologyPatchListRestart), 3371 }; 3372 auto* supportedFeatures = reinterpret_cast<const VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT*>(featuresStruct); 3373 checkFeatures(vkp, instance, instanceDriver, physicalDevice, 2, features, supportedFeatures, queueFamilyIndex, queueCount, queuePriority, numErrors, resultCollector, &extensionNames, emptyDeviceFeatures, isSubProcess); 3374 } 3375 3376 if (numErrors > 0) 3377 return tcu::TestStatus(resultCollector.getResult(), "Enabling unsupported features didn't return VK_ERROR_FEATURE_NOT_PRESENT."); 3378 else 3379 return tcu::TestStatus(resultCollector.getResult(), resultCollector.getMessage()); 3380} 3381 3382 3383tcu::TestStatus createDeviceWithUnsupportedFeaturesTestPipelineExecutablePropertiesFeaturesKHR (Context& context) 3384{ 3385 const PlatformInterface& vkp = context.getPlatformInterface(); 3386 tcu::TestLog& log = context.getTestContext().getLog(); 3387 tcu::ResultCollector resultCollector (log); 3388 const CustomInstance instance (createCustomInstanceWithExtensions(context, context.getInstanceExtensions(), DE_NULL, true)); 3389 const InstanceDriver& instanceDriver (instance.getDriver()); 3390 const VkPhysicalDevice physicalDevice = chooseDevice(instanceDriver, instance, context.getTestContext().getCommandLine()); 3391 const deUint32 queueFamilyIndex = 0; 3392 const deUint32 queueCount = 1; 3393 const float queuePriority = 1.0f; 3394 const DeviceFeatures deviceFeaturesAll (context.getInstanceInterface(), context.getUsedApiVersion(), physicalDevice, context.getInstanceExtensions(), context.getDeviceExtensions(), DE_TRUE); 3395 const VkPhysicalDeviceFeatures2 deviceFeatures2 = deviceFeaturesAll.getCoreFeatures2(); 3396 int numErrors = 0; 3397 bool isSubProcess = context.getTestContext().getCommandLine().isSubProcess(); 3398 3399 3400 VkPhysicalDeviceFeatures emptyDeviceFeatures; 3401 deMemset(&emptyDeviceFeatures, 0, sizeof(emptyDeviceFeatures)); 3402 3403 // Only non-core extensions will be used when creating the device. 3404 vector<const char*> coreExtensions; 3405 getCoreDeviceExtensions(context.getUsedApiVersion(), coreExtensions); 3406 vector<string> nonCoreExtensions(removeExtensions(context.getDeviceExtensions(), coreExtensions)); 3407 3408 vector<const char*> extensionNames; 3409 extensionNames.reserve(nonCoreExtensions.size()); 3410 for (const string& extension : nonCoreExtensions) 3411 extensionNames.push_back(extension.c_str()); 3412 3413 if (const void* featuresStruct = findStructureInChain(const_cast<const void*>(deviceFeatures2.pNext), getStructureType<VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR>())) 3414 { 3415 static const Feature features[] = 3416 { 3417 FEATURE_ITEM (VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR, pipelineExecutableInfo), 3418 }; 3419 auto* supportedFeatures = reinterpret_cast<const VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR*>(featuresStruct); 3420 checkFeatures(vkp, instance, instanceDriver, physicalDevice, 1, features, supportedFeatures, queueFamilyIndex, queueCount, queuePriority, numErrors, resultCollector, &extensionNames, emptyDeviceFeatures, isSubProcess); 3421 } 3422 3423 if (numErrors > 0) 3424 return tcu::TestStatus(resultCollector.getResult(), "Enabling unsupported features didn't return VK_ERROR_FEATURE_NOT_PRESENT."); 3425 else 3426 return tcu::TestStatus(resultCollector.getResult(), resultCollector.getMessage()); 3427} 3428 3429 3430tcu::TestStatus createDeviceWithUnsupportedFeaturesTestShaderDemoteToHelperInvocationFeatures (Context& context) 3431{ 3432 const PlatformInterface& vkp = context.getPlatformInterface(); 3433 tcu::TestLog& log = context.getTestContext().getLog(); 3434 tcu::ResultCollector resultCollector (log); 3435 const CustomInstance instance (createCustomInstanceWithExtensions(context, context.getInstanceExtensions(), DE_NULL, true)); 3436 const InstanceDriver& instanceDriver (instance.getDriver()); 3437 const VkPhysicalDevice physicalDevice = chooseDevice(instanceDriver, instance, context.getTestContext().getCommandLine()); 3438 const deUint32 queueFamilyIndex = 0; 3439 const deUint32 queueCount = 1; 3440 const float queuePriority = 1.0f; 3441 const DeviceFeatures deviceFeaturesAll (context.getInstanceInterface(), context.getUsedApiVersion(), physicalDevice, context.getInstanceExtensions(), context.getDeviceExtensions(), DE_TRUE); 3442 const VkPhysicalDeviceFeatures2 deviceFeatures2 = deviceFeaturesAll.getCoreFeatures2(); 3443 int numErrors = 0; 3444 bool isSubProcess = context.getTestContext().getCommandLine().isSubProcess(); 3445 3446 3447 VkPhysicalDeviceFeatures emptyDeviceFeatures; 3448 deMemset(&emptyDeviceFeatures, 0, sizeof(emptyDeviceFeatures)); 3449 3450 // Only non-core extensions will be used when creating the device. 3451 vector<const char*> coreExtensions; 3452 getCoreDeviceExtensions(context.getUsedApiVersion(), coreExtensions); 3453 vector<string> nonCoreExtensions(removeExtensions(context.getDeviceExtensions(), coreExtensions)); 3454 3455 vector<const char*> extensionNames; 3456 extensionNames.reserve(nonCoreExtensions.size()); 3457 for (const string& extension : nonCoreExtensions) 3458 extensionNames.push_back(extension.c_str()); 3459 3460 if (const void* featuresStruct = findStructureInChain(const_cast<const void*>(deviceFeatures2.pNext), getStructureType<VkPhysicalDeviceShaderDemoteToHelperInvocationFeatures>())) 3461 { 3462 static const Feature features[] = 3463 { 3464 FEATURE_ITEM (VkPhysicalDeviceShaderDemoteToHelperInvocationFeatures, shaderDemoteToHelperInvocation), 3465 }; 3466 auto* supportedFeatures = reinterpret_cast<const VkPhysicalDeviceShaderDemoteToHelperInvocationFeatures*>(featuresStruct); 3467 checkFeatures(vkp, instance, instanceDriver, physicalDevice, 1, features, supportedFeatures, queueFamilyIndex, queueCount, queuePriority, numErrors, resultCollector, &extensionNames, emptyDeviceFeatures, isSubProcess); 3468 } 3469 3470 if (numErrors > 0) 3471 return tcu::TestStatus(resultCollector.getResult(), "Enabling unsupported features didn't return VK_ERROR_FEATURE_NOT_PRESENT."); 3472 else 3473 return tcu::TestStatus(resultCollector.getResult(), resultCollector.getMessage()); 3474} 3475 3476 3477tcu::TestStatus createDeviceWithUnsupportedFeaturesTestTexelBufferAlignmentFeaturesEXT (Context& context) 3478{ 3479 const PlatformInterface& vkp = context.getPlatformInterface(); 3480 tcu::TestLog& log = context.getTestContext().getLog(); 3481 tcu::ResultCollector resultCollector (log); 3482 const CustomInstance instance (createCustomInstanceWithExtensions(context, context.getInstanceExtensions(), DE_NULL, true)); 3483 const InstanceDriver& instanceDriver (instance.getDriver()); 3484 const VkPhysicalDevice physicalDevice = chooseDevice(instanceDriver, instance, context.getTestContext().getCommandLine()); 3485 const deUint32 queueFamilyIndex = 0; 3486 const deUint32 queueCount = 1; 3487 const float queuePriority = 1.0f; 3488 const DeviceFeatures deviceFeaturesAll (context.getInstanceInterface(), context.getUsedApiVersion(), physicalDevice, context.getInstanceExtensions(), context.getDeviceExtensions(), DE_TRUE); 3489 const VkPhysicalDeviceFeatures2 deviceFeatures2 = deviceFeaturesAll.getCoreFeatures2(); 3490 int numErrors = 0; 3491 bool isSubProcess = context.getTestContext().getCommandLine().isSubProcess(); 3492 3493 3494 VkPhysicalDeviceFeatures emptyDeviceFeatures; 3495 deMemset(&emptyDeviceFeatures, 0, sizeof(emptyDeviceFeatures)); 3496 3497 // Only non-core extensions will be used when creating the device. 3498 vector<const char*> coreExtensions; 3499 getCoreDeviceExtensions(context.getUsedApiVersion(), coreExtensions); 3500 vector<string> nonCoreExtensions(removeExtensions(context.getDeviceExtensions(), coreExtensions)); 3501 3502 vector<const char*> extensionNames; 3503 extensionNames.reserve(nonCoreExtensions.size()); 3504 for (const string& extension : nonCoreExtensions) 3505 extensionNames.push_back(extension.c_str()); 3506 3507 if (const void* featuresStruct = findStructureInChain(const_cast<const void*>(deviceFeatures2.pNext), getStructureType<VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT>())) 3508 { 3509 static const Feature features[] = 3510 { 3511 FEATURE_ITEM (VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT, texelBufferAlignment), 3512 }; 3513 auto* supportedFeatures = reinterpret_cast<const VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT*>(featuresStruct); 3514 checkFeatures(vkp, instance, instanceDriver, physicalDevice, 1, features, supportedFeatures, queueFamilyIndex, queueCount, queuePriority, numErrors, resultCollector, &extensionNames, emptyDeviceFeatures, isSubProcess); 3515 } 3516 3517 if (numErrors > 0) 3518 return tcu::TestStatus(resultCollector.getResult(), "Enabling unsupported features didn't return VK_ERROR_FEATURE_NOT_PRESENT."); 3519 else 3520 return tcu::TestStatus(resultCollector.getResult(), resultCollector.getMessage()); 3521} 3522 3523 3524tcu::TestStatus createDeviceWithUnsupportedFeaturesTestSubgroupSizeControlFeatures (Context& context) 3525{ 3526 const PlatformInterface& vkp = context.getPlatformInterface(); 3527 tcu::TestLog& log = context.getTestContext().getLog(); 3528 tcu::ResultCollector resultCollector (log); 3529 const CustomInstance instance (createCustomInstanceWithExtensions(context, context.getInstanceExtensions(), DE_NULL, true)); 3530 const InstanceDriver& instanceDriver (instance.getDriver()); 3531 const VkPhysicalDevice physicalDevice = chooseDevice(instanceDriver, instance, context.getTestContext().getCommandLine()); 3532 const deUint32 queueFamilyIndex = 0; 3533 const deUint32 queueCount = 1; 3534 const float queuePriority = 1.0f; 3535 const DeviceFeatures deviceFeaturesAll (context.getInstanceInterface(), context.getUsedApiVersion(), physicalDevice, context.getInstanceExtensions(), context.getDeviceExtensions(), DE_TRUE); 3536 const VkPhysicalDeviceFeatures2 deviceFeatures2 = deviceFeaturesAll.getCoreFeatures2(); 3537 int numErrors = 0; 3538 bool isSubProcess = context.getTestContext().getCommandLine().isSubProcess(); 3539 3540 3541 VkPhysicalDeviceFeatures emptyDeviceFeatures; 3542 deMemset(&emptyDeviceFeatures, 0, sizeof(emptyDeviceFeatures)); 3543 3544 // Only non-core extensions will be used when creating the device. 3545 vector<const char*> coreExtensions; 3546 getCoreDeviceExtensions(context.getUsedApiVersion(), coreExtensions); 3547 vector<string> nonCoreExtensions(removeExtensions(context.getDeviceExtensions(), coreExtensions)); 3548 3549 vector<const char*> extensionNames; 3550 extensionNames.reserve(nonCoreExtensions.size()); 3551 for (const string& extension : nonCoreExtensions) 3552 extensionNames.push_back(extension.c_str()); 3553 3554 if (const void* featuresStruct = findStructureInChain(const_cast<const void*>(deviceFeatures2.pNext), getStructureType<VkPhysicalDeviceSubgroupSizeControlFeatures>())) 3555 { 3556 static const Feature features[] = 3557 { 3558 FEATURE_ITEM (VkPhysicalDeviceSubgroupSizeControlFeatures, subgroupSizeControl), 3559 FEATURE_ITEM (VkPhysicalDeviceSubgroupSizeControlFeatures, computeFullSubgroups), 3560 }; 3561 auto* supportedFeatures = reinterpret_cast<const VkPhysicalDeviceSubgroupSizeControlFeatures*>(featuresStruct); 3562 checkFeatures(vkp, instance, instanceDriver, physicalDevice, 2, features, supportedFeatures, queueFamilyIndex, queueCount, queuePriority, numErrors, resultCollector, &extensionNames, emptyDeviceFeatures, isSubProcess); 3563 } 3564 3565 if (numErrors > 0) 3566 return tcu::TestStatus(resultCollector.getResult(), "Enabling unsupported features didn't return VK_ERROR_FEATURE_NOT_PRESENT."); 3567 else 3568 return tcu::TestStatus(resultCollector.getResult(), resultCollector.getMessage()); 3569} 3570 3571 3572tcu::TestStatus createDeviceWithUnsupportedFeaturesTestLineRasterizationFeaturesEXT (Context& context) 3573{ 3574 const PlatformInterface& vkp = context.getPlatformInterface(); 3575 tcu::TestLog& log = context.getTestContext().getLog(); 3576 tcu::ResultCollector resultCollector (log); 3577 const CustomInstance instance (createCustomInstanceWithExtensions(context, context.getInstanceExtensions(), DE_NULL, true)); 3578 const InstanceDriver& instanceDriver (instance.getDriver()); 3579 const VkPhysicalDevice physicalDevice = chooseDevice(instanceDriver, instance, context.getTestContext().getCommandLine()); 3580 const deUint32 queueFamilyIndex = 0; 3581 const deUint32 queueCount = 1; 3582 const float queuePriority = 1.0f; 3583 const DeviceFeatures deviceFeaturesAll (context.getInstanceInterface(), context.getUsedApiVersion(), physicalDevice, context.getInstanceExtensions(), context.getDeviceExtensions(), DE_TRUE); 3584 const VkPhysicalDeviceFeatures2 deviceFeatures2 = deviceFeaturesAll.getCoreFeatures2(); 3585 int numErrors = 0; 3586 bool isSubProcess = context.getTestContext().getCommandLine().isSubProcess(); 3587 3588 3589 VkPhysicalDeviceFeatures emptyDeviceFeatures; 3590 deMemset(&emptyDeviceFeatures, 0, sizeof(emptyDeviceFeatures)); 3591 3592 // Only non-core extensions will be used when creating the device. 3593 vector<const char*> coreExtensions; 3594 getCoreDeviceExtensions(context.getUsedApiVersion(), coreExtensions); 3595 vector<string> nonCoreExtensions(removeExtensions(context.getDeviceExtensions(), coreExtensions)); 3596 3597 vector<const char*> extensionNames; 3598 extensionNames.reserve(nonCoreExtensions.size()); 3599 for (const string& extension : nonCoreExtensions) 3600 extensionNames.push_back(extension.c_str()); 3601 3602 if (const void* featuresStruct = findStructureInChain(const_cast<const void*>(deviceFeatures2.pNext), getStructureType<VkPhysicalDeviceLineRasterizationFeaturesEXT>())) 3603 { 3604 static const Feature features[] = 3605 { 3606 FEATURE_ITEM (VkPhysicalDeviceLineRasterizationFeaturesEXT, rectangularLines), 3607 FEATURE_ITEM (VkPhysicalDeviceLineRasterizationFeaturesEXT, bresenhamLines), 3608 FEATURE_ITEM (VkPhysicalDeviceLineRasterizationFeaturesEXT, smoothLines), 3609 FEATURE_ITEM (VkPhysicalDeviceLineRasterizationFeaturesEXT, stippledRectangularLines), 3610 FEATURE_ITEM (VkPhysicalDeviceLineRasterizationFeaturesEXT, stippledBresenhamLines), 3611 FEATURE_ITEM (VkPhysicalDeviceLineRasterizationFeaturesEXT, stippledSmoothLines), 3612 }; 3613 auto* supportedFeatures = reinterpret_cast<const VkPhysicalDeviceLineRasterizationFeaturesEXT*>(featuresStruct); 3614 checkFeatures(vkp, instance, instanceDriver, physicalDevice, 6, features, supportedFeatures, queueFamilyIndex, queueCount, queuePriority, numErrors, resultCollector, &extensionNames, emptyDeviceFeatures, isSubProcess); 3615 } 3616 3617 if (numErrors > 0) 3618 return tcu::TestStatus(resultCollector.getResult(), "Enabling unsupported features didn't return VK_ERROR_FEATURE_NOT_PRESENT."); 3619 else 3620 return tcu::TestStatus(resultCollector.getResult(), resultCollector.getMessage()); 3621} 3622 3623 3624tcu::TestStatus createDeviceWithUnsupportedFeaturesTestPipelineCreationCacheControlFeatures (Context& context) 3625{ 3626 const PlatformInterface& vkp = context.getPlatformInterface(); 3627 tcu::TestLog& log = context.getTestContext().getLog(); 3628 tcu::ResultCollector resultCollector (log); 3629 const CustomInstance instance (createCustomInstanceWithExtensions(context, context.getInstanceExtensions(), DE_NULL, true)); 3630 const InstanceDriver& instanceDriver (instance.getDriver()); 3631 const VkPhysicalDevice physicalDevice = chooseDevice(instanceDriver, instance, context.getTestContext().getCommandLine()); 3632 const deUint32 queueFamilyIndex = 0; 3633 const deUint32 queueCount = 1; 3634 const float queuePriority = 1.0f; 3635 const DeviceFeatures deviceFeaturesAll (context.getInstanceInterface(), context.getUsedApiVersion(), physicalDevice, context.getInstanceExtensions(), context.getDeviceExtensions(), DE_TRUE); 3636 const VkPhysicalDeviceFeatures2 deviceFeatures2 = deviceFeaturesAll.getCoreFeatures2(); 3637 int numErrors = 0; 3638 bool isSubProcess = context.getTestContext().getCommandLine().isSubProcess(); 3639 3640 3641 VkPhysicalDeviceFeatures emptyDeviceFeatures; 3642 deMemset(&emptyDeviceFeatures, 0, sizeof(emptyDeviceFeatures)); 3643 3644 // Only non-core extensions will be used when creating the device. 3645 vector<const char*> coreExtensions; 3646 getCoreDeviceExtensions(context.getUsedApiVersion(), coreExtensions); 3647 vector<string> nonCoreExtensions(removeExtensions(context.getDeviceExtensions(), coreExtensions)); 3648 3649 vector<const char*> extensionNames; 3650 extensionNames.reserve(nonCoreExtensions.size()); 3651 for (const string& extension : nonCoreExtensions) 3652 extensionNames.push_back(extension.c_str()); 3653 3654 if (const void* featuresStruct = findStructureInChain(const_cast<const void*>(deviceFeatures2.pNext), getStructureType<VkPhysicalDevicePipelineCreationCacheControlFeatures>())) 3655 { 3656 static const Feature features[] = 3657 { 3658 FEATURE_ITEM (VkPhysicalDevicePipelineCreationCacheControlFeatures, pipelineCreationCacheControl), 3659 }; 3660 auto* supportedFeatures = reinterpret_cast<const VkPhysicalDevicePipelineCreationCacheControlFeatures*>(featuresStruct); 3661 checkFeatures(vkp, instance, instanceDriver, physicalDevice, 1, features, supportedFeatures, queueFamilyIndex, queueCount, queuePriority, numErrors, resultCollector, &extensionNames, emptyDeviceFeatures, isSubProcess); 3662 } 3663 3664 if (numErrors > 0) 3665 return tcu::TestStatus(resultCollector.getResult(), "Enabling unsupported features didn't return VK_ERROR_FEATURE_NOT_PRESENT."); 3666 else 3667 return tcu::TestStatus(resultCollector.getResult(), resultCollector.getMessage()); 3668} 3669 3670 3671tcu::TestStatus createDeviceWithUnsupportedFeaturesTestVulkan11Features (Context& context) 3672{ 3673 const PlatformInterface& vkp = context.getPlatformInterface(); 3674 tcu::TestLog& log = context.getTestContext().getLog(); 3675 tcu::ResultCollector resultCollector (log); 3676 const CustomInstance instance (createCustomInstanceWithExtensions(context, context.getInstanceExtensions(), DE_NULL, true)); 3677 const InstanceDriver& instanceDriver (instance.getDriver()); 3678 const VkPhysicalDevice physicalDevice = chooseDevice(instanceDriver, instance, context.getTestContext().getCommandLine()); 3679 const deUint32 queueFamilyIndex = 0; 3680 const deUint32 queueCount = 1; 3681 const float queuePriority = 1.0f; 3682 const DeviceFeatures deviceFeaturesAll (context.getInstanceInterface(), context.getUsedApiVersion(), physicalDevice, context.getInstanceExtensions(), context.getDeviceExtensions(), DE_TRUE); 3683 const VkPhysicalDeviceFeatures2 deviceFeatures2 = deviceFeaturesAll.getCoreFeatures2(); 3684 int numErrors = 0; 3685 bool isSubProcess = context.getTestContext().getCommandLine().isSubProcess(); 3686 3687 3688 VkPhysicalDeviceFeatures emptyDeviceFeatures; 3689 deMemset(&emptyDeviceFeatures, 0, sizeof(emptyDeviceFeatures)); 3690 3691 // Only non-core extensions will be used when creating the device. 3692 vector<const char*> coreExtensions; 3693 getCoreDeviceExtensions(context.getUsedApiVersion(), coreExtensions); 3694 vector<string> nonCoreExtensions(removeExtensions(context.getDeviceExtensions(), coreExtensions)); 3695 3696 vector<const char*> extensionNames; 3697 extensionNames.reserve(nonCoreExtensions.size()); 3698 for (const string& extension : nonCoreExtensions) 3699 extensionNames.push_back(extension.c_str()); 3700 3701 if (const void* featuresStruct = findStructureInChain(const_cast<const void*>(deviceFeatures2.pNext), getStructureType<VkPhysicalDeviceVulkan11Features>())) 3702 { 3703 static const Feature features[] = 3704 { 3705 FEATURE_ITEM (VkPhysicalDeviceVulkan11Features, storageBuffer16BitAccess), 3706 FEATURE_ITEM (VkPhysicalDeviceVulkan11Features, uniformAndStorageBuffer16BitAccess), 3707 FEATURE_ITEM (VkPhysicalDeviceVulkan11Features, storagePushConstant16), 3708 FEATURE_ITEM (VkPhysicalDeviceVulkan11Features, storageInputOutput16), 3709 FEATURE_ITEM (VkPhysicalDeviceVulkan11Features, multiview), 3710 FEATURE_ITEM (VkPhysicalDeviceVulkan11Features, multiviewGeometryShader), 3711 FEATURE_ITEM (VkPhysicalDeviceVulkan11Features, multiviewTessellationShader), 3712 FEATURE_ITEM (VkPhysicalDeviceVulkan11Features, variablePointersStorageBuffer), 3713 FEATURE_ITEM (VkPhysicalDeviceVulkan11Features, variablePointers), 3714 FEATURE_ITEM (VkPhysicalDeviceVulkan11Features, protectedMemory), 3715 FEATURE_ITEM (VkPhysicalDeviceVulkan11Features, samplerYcbcrConversion), 3716 FEATURE_ITEM (VkPhysicalDeviceVulkan11Features, shaderDrawParameters), 3717 }; 3718 auto* supportedFeatures = reinterpret_cast<const VkPhysicalDeviceVulkan11Features*>(featuresStruct); 3719 checkFeatures(vkp, instance, instanceDriver, physicalDevice, 12, features, supportedFeatures, queueFamilyIndex, queueCount, queuePriority, numErrors, resultCollector, DE_NULL, emptyDeviceFeatures, isSubProcess); 3720 } 3721 3722 if (numErrors > 0) 3723 return tcu::TestStatus(resultCollector.getResult(), "Enabling unsupported features didn't return VK_ERROR_FEATURE_NOT_PRESENT."); 3724 else 3725 return tcu::TestStatus(resultCollector.getResult(), resultCollector.getMessage()); 3726} 3727 3728 3729tcu::TestStatus createDeviceWithUnsupportedFeaturesTestVulkan12Features (Context& context) 3730{ 3731 const PlatformInterface& vkp = context.getPlatformInterface(); 3732 tcu::TestLog& log = context.getTestContext().getLog(); 3733 tcu::ResultCollector resultCollector (log); 3734 const CustomInstance instance (createCustomInstanceWithExtensions(context, context.getInstanceExtensions(), DE_NULL, true)); 3735 const InstanceDriver& instanceDriver (instance.getDriver()); 3736 const VkPhysicalDevice physicalDevice = chooseDevice(instanceDriver, instance, context.getTestContext().getCommandLine()); 3737 const deUint32 queueFamilyIndex = 0; 3738 const deUint32 queueCount = 1; 3739 const float queuePriority = 1.0f; 3740 const DeviceFeatures deviceFeaturesAll (context.getInstanceInterface(), context.getUsedApiVersion(), physicalDevice, context.getInstanceExtensions(), context.getDeviceExtensions(), DE_TRUE); 3741 const VkPhysicalDeviceFeatures2 deviceFeatures2 = deviceFeaturesAll.getCoreFeatures2(); 3742 int numErrors = 0; 3743 bool isSubProcess = context.getTestContext().getCommandLine().isSubProcess(); 3744 3745 3746 VkPhysicalDeviceFeatures emptyDeviceFeatures; 3747 deMemset(&emptyDeviceFeatures, 0, sizeof(emptyDeviceFeatures)); 3748 3749 // Only non-core extensions will be used when creating the device. 3750 vector<const char*> coreExtensions; 3751 getCoreDeviceExtensions(context.getUsedApiVersion(), coreExtensions); 3752 vector<string> nonCoreExtensions(removeExtensions(context.getDeviceExtensions(), coreExtensions)); 3753 3754 vector<const char*> extensionNames; 3755 extensionNames.reserve(nonCoreExtensions.size()); 3756 for (const string& extension : nonCoreExtensions) 3757 extensionNames.push_back(extension.c_str()); 3758 3759 if (const void* featuresStruct = findStructureInChain(const_cast<const void*>(deviceFeatures2.pNext), getStructureType<VkPhysicalDeviceVulkan12Features>())) 3760 { 3761 static const Feature features[] = 3762 { 3763 FEATURE_ITEM (VkPhysicalDeviceVulkan12Features, samplerMirrorClampToEdge), 3764 FEATURE_ITEM (VkPhysicalDeviceVulkan12Features, drawIndirectCount), 3765 FEATURE_ITEM (VkPhysicalDeviceVulkan12Features, storageBuffer8BitAccess), 3766 FEATURE_ITEM (VkPhysicalDeviceVulkan12Features, uniformAndStorageBuffer8BitAccess), 3767 FEATURE_ITEM (VkPhysicalDeviceVulkan12Features, storagePushConstant8), 3768 FEATURE_ITEM (VkPhysicalDeviceVulkan12Features, shaderBufferInt64Atomics), 3769 FEATURE_ITEM (VkPhysicalDeviceVulkan12Features, shaderSharedInt64Atomics), 3770 FEATURE_ITEM (VkPhysicalDeviceVulkan12Features, shaderFloat16), 3771 FEATURE_ITEM (VkPhysicalDeviceVulkan12Features, shaderInt8), 3772 FEATURE_ITEM (VkPhysicalDeviceVulkan12Features, descriptorIndexing), 3773 FEATURE_ITEM (VkPhysicalDeviceVulkan12Features, shaderInputAttachmentArrayDynamicIndexing), 3774 FEATURE_ITEM (VkPhysicalDeviceVulkan12Features, shaderUniformTexelBufferArrayDynamicIndexing), 3775 FEATURE_ITEM (VkPhysicalDeviceVulkan12Features, shaderStorageTexelBufferArrayDynamicIndexing), 3776 FEATURE_ITEM (VkPhysicalDeviceVulkan12Features, shaderUniformBufferArrayNonUniformIndexing), 3777 FEATURE_ITEM (VkPhysicalDeviceVulkan12Features, shaderSampledImageArrayNonUniformIndexing), 3778 FEATURE_ITEM (VkPhysicalDeviceVulkan12Features, shaderStorageBufferArrayNonUniformIndexing), 3779 FEATURE_ITEM (VkPhysicalDeviceVulkan12Features, shaderStorageImageArrayNonUniformIndexing), 3780 FEATURE_ITEM (VkPhysicalDeviceVulkan12Features, shaderInputAttachmentArrayNonUniformIndexing), 3781 FEATURE_ITEM (VkPhysicalDeviceVulkan12Features, shaderUniformTexelBufferArrayNonUniformIndexing), 3782 FEATURE_ITEM (VkPhysicalDeviceVulkan12Features, shaderStorageTexelBufferArrayNonUniformIndexing), 3783 FEATURE_ITEM (VkPhysicalDeviceVulkan12Features, descriptorBindingUniformBufferUpdateAfterBind), 3784 FEATURE_ITEM (VkPhysicalDeviceVulkan12Features, descriptorBindingSampledImageUpdateAfterBind), 3785 FEATURE_ITEM (VkPhysicalDeviceVulkan12Features, descriptorBindingStorageImageUpdateAfterBind), 3786 FEATURE_ITEM (VkPhysicalDeviceVulkan12Features, descriptorBindingStorageBufferUpdateAfterBind), 3787 FEATURE_ITEM (VkPhysicalDeviceVulkan12Features, descriptorBindingUniformTexelBufferUpdateAfterBind), 3788 FEATURE_ITEM (VkPhysicalDeviceVulkan12Features, descriptorBindingStorageTexelBufferUpdateAfterBind), 3789 FEATURE_ITEM (VkPhysicalDeviceVulkan12Features, descriptorBindingUpdateUnusedWhilePending), 3790 FEATURE_ITEM (VkPhysicalDeviceVulkan12Features, descriptorBindingPartiallyBound), 3791 FEATURE_ITEM (VkPhysicalDeviceVulkan12Features, descriptorBindingVariableDescriptorCount), 3792 FEATURE_ITEM (VkPhysicalDeviceVulkan12Features, runtimeDescriptorArray), 3793 FEATURE_ITEM (VkPhysicalDeviceVulkan12Features, samplerFilterMinmax), 3794 FEATURE_ITEM (VkPhysicalDeviceVulkan12Features, scalarBlockLayout), 3795 FEATURE_ITEM (VkPhysicalDeviceVulkan12Features, imagelessFramebuffer), 3796 FEATURE_ITEM (VkPhysicalDeviceVulkan12Features, uniformBufferStandardLayout), 3797 FEATURE_ITEM (VkPhysicalDeviceVulkan12Features, shaderSubgroupExtendedTypes), 3798 FEATURE_ITEM (VkPhysicalDeviceVulkan12Features, separateDepthStencilLayouts), 3799 FEATURE_ITEM (VkPhysicalDeviceVulkan12Features, hostQueryReset), 3800 FEATURE_ITEM (VkPhysicalDeviceVulkan12Features, timelineSemaphore), 3801 FEATURE_ITEM (VkPhysicalDeviceVulkan12Features, bufferDeviceAddress), 3802 FEATURE_ITEM (VkPhysicalDeviceVulkan12Features, bufferDeviceAddressCaptureReplay), 3803 FEATURE_ITEM (VkPhysicalDeviceVulkan12Features, bufferDeviceAddressMultiDevice), 3804 FEATURE_ITEM (VkPhysicalDeviceVulkan12Features, vulkanMemoryModel), 3805 FEATURE_ITEM (VkPhysicalDeviceVulkan12Features, vulkanMemoryModelDeviceScope), 3806 FEATURE_ITEM (VkPhysicalDeviceVulkan12Features, vulkanMemoryModelAvailabilityVisibilityChains), 3807 FEATURE_ITEM (VkPhysicalDeviceVulkan12Features, shaderOutputViewportIndex), 3808 FEATURE_ITEM (VkPhysicalDeviceVulkan12Features, shaderOutputLayer), 3809 FEATURE_ITEM (VkPhysicalDeviceVulkan12Features, subgroupBroadcastDynamicId), 3810 }; 3811 auto* supportedFeatures = reinterpret_cast<const VkPhysicalDeviceVulkan12Features*>(featuresStruct); 3812 checkFeatures(vkp, instance, instanceDriver, physicalDevice, 47, features, supportedFeatures, queueFamilyIndex, queueCount, queuePriority, numErrors, resultCollector, DE_NULL, emptyDeviceFeatures, isSubProcess); 3813 } 3814 3815 if (numErrors > 0) 3816 return tcu::TestStatus(resultCollector.getResult(), "Enabling unsupported features didn't return VK_ERROR_FEATURE_NOT_PRESENT."); 3817 else 3818 return tcu::TestStatus(resultCollector.getResult(), resultCollector.getMessage()); 3819} 3820 3821 3822tcu::TestStatus createDeviceWithUnsupportedFeaturesTestVulkan13Features (Context& context) 3823{ 3824 const PlatformInterface& vkp = context.getPlatformInterface(); 3825 tcu::TestLog& log = context.getTestContext().getLog(); 3826 tcu::ResultCollector resultCollector (log); 3827 const CustomInstance instance (createCustomInstanceWithExtensions(context, context.getInstanceExtensions(), DE_NULL, true)); 3828 const InstanceDriver& instanceDriver (instance.getDriver()); 3829 const VkPhysicalDevice physicalDevice = chooseDevice(instanceDriver, instance, context.getTestContext().getCommandLine()); 3830 const deUint32 queueFamilyIndex = 0; 3831 const deUint32 queueCount = 1; 3832 const float queuePriority = 1.0f; 3833 const DeviceFeatures deviceFeaturesAll (context.getInstanceInterface(), context.getUsedApiVersion(), physicalDevice, context.getInstanceExtensions(), context.getDeviceExtensions(), DE_TRUE); 3834 const VkPhysicalDeviceFeatures2 deviceFeatures2 = deviceFeaturesAll.getCoreFeatures2(); 3835 int numErrors = 0; 3836 bool isSubProcess = context.getTestContext().getCommandLine().isSubProcess(); 3837 3838 3839 VkPhysicalDeviceFeatures emptyDeviceFeatures; 3840 deMemset(&emptyDeviceFeatures, 0, sizeof(emptyDeviceFeatures)); 3841 3842 // Only non-core extensions will be used when creating the device. 3843 vector<const char*> coreExtensions; 3844 getCoreDeviceExtensions(context.getUsedApiVersion(), coreExtensions); 3845 vector<string> nonCoreExtensions(removeExtensions(context.getDeviceExtensions(), coreExtensions)); 3846 3847 vector<const char*> extensionNames; 3848 extensionNames.reserve(nonCoreExtensions.size()); 3849 for (const string& extension : nonCoreExtensions) 3850 extensionNames.push_back(extension.c_str()); 3851 3852 if (const void* featuresStruct = findStructureInChain(const_cast<const void*>(deviceFeatures2.pNext), getStructureType<VkPhysicalDeviceVulkan13Features>())) 3853 { 3854 static const Feature features[] = 3855 { 3856 FEATURE_ITEM (VkPhysicalDeviceVulkan13Features, robustImageAccess), 3857 FEATURE_ITEM (VkPhysicalDeviceVulkan13Features, inlineUniformBlock), 3858 FEATURE_ITEM (VkPhysicalDeviceVulkan13Features, descriptorBindingInlineUniformBlockUpdateAfterBind), 3859 FEATURE_ITEM (VkPhysicalDeviceVulkan13Features, pipelineCreationCacheControl), 3860 FEATURE_ITEM (VkPhysicalDeviceVulkan13Features, privateData), 3861 FEATURE_ITEM (VkPhysicalDeviceVulkan13Features, shaderDemoteToHelperInvocation), 3862 FEATURE_ITEM (VkPhysicalDeviceVulkan13Features, shaderTerminateInvocation), 3863 FEATURE_ITEM (VkPhysicalDeviceVulkan13Features, subgroupSizeControl), 3864 FEATURE_ITEM (VkPhysicalDeviceVulkan13Features, computeFullSubgroups), 3865 FEATURE_ITEM (VkPhysicalDeviceVulkan13Features, synchronization2), 3866 FEATURE_ITEM (VkPhysicalDeviceVulkan13Features, textureCompressionASTC_HDR), 3867 FEATURE_ITEM (VkPhysicalDeviceVulkan13Features, shaderZeroInitializeWorkgroupMemory), 3868 FEATURE_ITEM (VkPhysicalDeviceVulkan13Features, dynamicRendering), 3869 FEATURE_ITEM (VkPhysicalDeviceVulkan13Features, shaderIntegerDotProduct), 3870 FEATURE_ITEM (VkPhysicalDeviceVulkan13Features, maintenance4), 3871 }; 3872 auto* supportedFeatures = reinterpret_cast<const VkPhysicalDeviceVulkan13Features*>(featuresStruct); 3873 checkFeatures(vkp, instance, instanceDriver, physicalDevice, 15, features, supportedFeatures, queueFamilyIndex, queueCount, queuePriority, numErrors, resultCollector, DE_NULL, emptyDeviceFeatures, isSubProcess); 3874 } 3875 3876 if (numErrors > 0) 3877 return tcu::TestStatus(resultCollector.getResult(), "Enabling unsupported features didn't return VK_ERROR_FEATURE_NOT_PRESENT."); 3878 else 3879 return tcu::TestStatus(resultCollector.getResult(), resultCollector.getMessage()); 3880} 3881 3882 3883tcu::TestStatus createDeviceWithUnsupportedFeaturesTestCoherentMemoryFeaturesAMD (Context& context) 3884{ 3885 const PlatformInterface& vkp = context.getPlatformInterface(); 3886 tcu::TestLog& log = context.getTestContext().getLog(); 3887 tcu::ResultCollector resultCollector (log); 3888 const CustomInstance instance (createCustomInstanceWithExtensions(context, context.getInstanceExtensions(), DE_NULL, true)); 3889 const InstanceDriver& instanceDriver (instance.getDriver()); 3890 const VkPhysicalDevice physicalDevice = chooseDevice(instanceDriver, instance, context.getTestContext().getCommandLine()); 3891 const deUint32 queueFamilyIndex = 0; 3892 const deUint32 queueCount = 1; 3893 const float queuePriority = 1.0f; 3894 const DeviceFeatures deviceFeaturesAll (context.getInstanceInterface(), context.getUsedApiVersion(), physicalDevice, context.getInstanceExtensions(), context.getDeviceExtensions(), DE_TRUE); 3895 const VkPhysicalDeviceFeatures2 deviceFeatures2 = deviceFeaturesAll.getCoreFeatures2(); 3896 int numErrors = 0; 3897 bool isSubProcess = context.getTestContext().getCommandLine().isSubProcess(); 3898 3899 3900 VkPhysicalDeviceFeatures emptyDeviceFeatures; 3901 deMemset(&emptyDeviceFeatures, 0, sizeof(emptyDeviceFeatures)); 3902 3903 // Only non-core extensions will be used when creating the device. 3904 vector<const char*> coreExtensions; 3905 getCoreDeviceExtensions(context.getUsedApiVersion(), coreExtensions); 3906 vector<string> nonCoreExtensions(removeExtensions(context.getDeviceExtensions(), coreExtensions)); 3907 3908 vector<const char*> extensionNames; 3909 extensionNames.reserve(nonCoreExtensions.size()); 3910 for (const string& extension : nonCoreExtensions) 3911 extensionNames.push_back(extension.c_str()); 3912 3913 if (const void* featuresStruct = findStructureInChain(const_cast<const void*>(deviceFeatures2.pNext), getStructureType<VkPhysicalDeviceCoherentMemoryFeaturesAMD>())) 3914 { 3915 static const Feature features[] = 3916 { 3917 FEATURE_ITEM (VkPhysicalDeviceCoherentMemoryFeaturesAMD, deviceCoherentMemory), 3918 }; 3919 auto* supportedFeatures = reinterpret_cast<const VkPhysicalDeviceCoherentMemoryFeaturesAMD*>(featuresStruct); 3920 checkFeatures(vkp, instance, instanceDriver, physicalDevice, 1, features, supportedFeatures, queueFamilyIndex, queueCount, queuePriority, numErrors, resultCollector, &extensionNames, emptyDeviceFeatures, isSubProcess); 3921 } 3922 3923 if (numErrors > 0) 3924 return tcu::TestStatus(resultCollector.getResult(), "Enabling unsupported features didn't return VK_ERROR_FEATURE_NOT_PRESENT."); 3925 else 3926 return tcu::TestStatus(resultCollector.getResult(), resultCollector.getMessage()); 3927} 3928 3929 3930tcu::TestStatus createDeviceWithUnsupportedFeaturesTestCustomBorderColorFeaturesEXT (Context& context) 3931{ 3932 const PlatformInterface& vkp = context.getPlatformInterface(); 3933 tcu::TestLog& log = context.getTestContext().getLog(); 3934 tcu::ResultCollector resultCollector (log); 3935 const CustomInstance instance (createCustomInstanceWithExtensions(context, context.getInstanceExtensions(), DE_NULL, true)); 3936 const InstanceDriver& instanceDriver (instance.getDriver()); 3937 const VkPhysicalDevice physicalDevice = chooseDevice(instanceDriver, instance, context.getTestContext().getCommandLine()); 3938 const deUint32 queueFamilyIndex = 0; 3939 const deUint32 queueCount = 1; 3940 const float queuePriority = 1.0f; 3941 const DeviceFeatures deviceFeaturesAll (context.getInstanceInterface(), context.getUsedApiVersion(), physicalDevice, context.getInstanceExtensions(), context.getDeviceExtensions(), DE_TRUE); 3942 const VkPhysicalDeviceFeatures2 deviceFeatures2 = deviceFeaturesAll.getCoreFeatures2(); 3943 int numErrors = 0; 3944 bool isSubProcess = context.getTestContext().getCommandLine().isSubProcess(); 3945 3946 3947 VkPhysicalDeviceFeatures emptyDeviceFeatures; 3948 deMemset(&emptyDeviceFeatures, 0, sizeof(emptyDeviceFeatures)); 3949 3950 // Only non-core extensions will be used when creating the device. 3951 vector<const char*> coreExtensions; 3952 getCoreDeviceExtensions(context.getUsedApiVersion(), coreExtensions); 3953 vector<string> nonCoreExtensions(removeExtensions(context.getDeviceExtensions(), coreExtensions)); 3954 3955 vector<const char*> extensionNames; 3956 extensionNames.reserve(nonCoreExtensions.size()); 3957 for (const string& extension : nonCoreExtensions) 3958 extensionNames.push_back(extension.c_str()); 3959 3960 if (const void* featuresStruct = findStructureInChain(const_cast<const void*>(deviceFeatures2.pNext), getStructureType<VkPhysicalDeviceCustomBorderColorFeaturesEXT>())) 3961 { 3962 static const Feature features[] = 3963 { 3964 FEATURE_ITEM (VkPhysicalDeviceCustomBorderColorFeaturesEXT, customBorderColors), 3965 FEATURE_ITEM (VkPhysicalDeviceCustomBorderColorFeaturesEXT, customBorderColorWithoutFormat), 3966 }; 3967 auto* supportedFeatures = reinterpret_cast<const VkPhysicalDeviceCustomBorderColorFeaturesEXT*>(featuresStruct); 3968 checkFeatures(vkp, instance, instanceDriver, physicalDevice, 2, features, supportedFeatures, queueFamilyIndex, queueCount, queuePriority, numErrors, resultCollector, &extensionNames, emptyDeviceFeatures, isSubProcess); 3969 } 3970 3971 if (numErrors > 0) 3972 return tcu::TestStatus(resultCollector.getResult(), "Enabling unsupported features didn't return VK_ERROR_FEATURE_NOT_PRESENT."); 3973 else 3974 return tcu::TestStatus(resultCollector.getResult(), resultCollector.getMessage()); 3975} 3976 3977 3978tcu::TestStatus createDeviceWithUnsupportedFeaturesTestBorderColorSwizzleFeaturesEXT (Context& context) 3979{ 3980 const PlatformInterface& vkp = context.getPlatformInterface(); 3981 tcu::TestLog& log = context.getTestContext().getLog(); 3982 tcu::ResultCollector resultCollector (log); 3983 const CustomInstance instance (createCustomInstanceWithExtensions(context, context.getInstanceExtensions(), DE_NULL, true)); 3984 const InstanceDriver& instanceDriver (instance.getDriver()); 3985 const VkPhysicalDevice physicalDevice = chooseDevice(instanceDriver, instance, context.getTestContext().getCommandLine()); 3986 const deUint32 queueFamilyIndex = 0; 3987 const deUint32 queueCount = 1; 3988 const float queuePriority = 1.0f; 3989 const DeviceFeatures deviceFeaturesAll (context.getInstanceInterface(), context.getUsedApiVersion(), physicalDevice, context.getInstanceExtensions(), context.getDeviceExtensions(), DE_TRUE); 3990 const VkPhysicalDeviceFeatures2 deviceFeatures2 = deviceFeaturesAll.getCoreFeatures2(); 3991 int numErrors = 0; 3992 bool isSubProcess = context.getTestContext().getCommandLine().isSubProcess(); 3993 3994 3995 VkPhysicalDeviceFeatures emptyDeviceFeatures; 3996 deMemset(&emptyDeviceFeatures, 0, sizeof(emptyDeviceFeatures)); 3997 3998 // Only non-core extensions will be used when creating the device. 3999 vector<const char*> coreExtensions; 4000 getCoreDeviceExtensions(context.getUsedApiVersion(), coreExtensions); 4001 vector<string> nonCoreExtensions(removeExtensions(context.getDeviceExtensions(), coreExtensions)); 4002 4003 vector<const char*> extensionNames; 4004 extensionNames.reserve(nonCoreExtensions.size()); 4005 for (const string& extension : nonCoreExtensions) 4006 extensionNames.push_back(extension.c_str()); 4007 4008 if (const void* featuresStruct = findStructureInChain(const_cast<const void*>(deviceFeatures2.pNext), getStructureType<VkPhysicalDeviceBorderColorSwizzleFeaturesEXT>())) 4009 { 4010 static const Feature features[] = 4011 { 4012 FEATURE_ITEM (VkPhysicalDeviceBorderColorSwizzleFeaturesEXT, borderColorSwizzle), 4013 FEATURE_ITEM (VkPhysicalDeviceBorderColorSwizzleFeaturesEXT, borderColorSwizzleFromImage), 4014 }; 4015 auto* supportedFeatures = reinterpret_cast<const VkPhysicalDeviceBorderColorSwizzleFeaturesEXT*>(featuresStruct); 4016 checkFeatures(vkp, instance, instanceDriver, physicalDevice, 2, features, supportedFeatures, queueFamilyIndex, queueCount, queuePriority, numErrors, resultCollector, &extensionNames, emptyDeviceFeatures, isSubProcess); 4017 } 4018 4019 if (numErrors > 0) 4020 return tcu::TestStatus(resultCollector.getResult(), "Enabling unsupported features didn't return VK_ERROR_FEATURE_NOT_PRESENT."); 4021 else 4022 return tcu::TestStatus(resultCollector.getResult(), resultCollector.getMessage()); 4023} 4024 4025 4026tcu::TestStatus createDeviceWithUnsupportedFeaturesTestExtendedDynamicStateFeaturesEXT (Context& context) 4027{ 4028 const PlatformInterface& vkp = context.getPlatformInterface(); 4029 tcu::TestLog& log = context.getTestContext().getLog(); 4030 tcu::ResultCollector resultCollector (log); 4031 const CustomInstance instance (createCustomInstanceWithExtensions(context, context.getInstanceExtensions(), DE_NULL, true)); 4032 const InstanceDriver& instanceDriver (instance.getDriver()); 4033 const VkPhysicalDevice physicalDevice = chooseDevice(instanceDriver, instance, context.getTestContext().getCommandLine()); 4034 const deUint32 queueFamilyIndex = 0; 4035 const deUint32 queueCount = 1; 4036 const float queuePriority = 1.0f; 4037 const DeviceFeatures deviceFeaturesAll (context.getInstanceInterface(), context.getUsedApiVersion(), physicalDevice, context.getInstanceExtensions(), context.getDeviceExtensions(), DE_TRUE); 4038 const VkPhysicalDeviceFeatures2 deviceFeatures2 = deviceFeaturesAll.getCoreFeatures2(); 4039 int numErrors = 0; 4040 bool isSubProcess = context.getTestContext().getCommandLine().isSubProcess(); 4041 4042 4043 VkPhysicalDeviceFeatures emptyDeviceFeatures; 4044 deMemset(&emptyDeviceFeatures, 0, sizeof(emptyDeviceFeatures)); 4045 4046 // Only non-core extensions will be used when creating the device. 4047 vector<const char*> coreExtensions; 4048 getCoreDeviceExtensions(context.getUsedApiVersion(), coreExtensions); 4049 vector<string> nonCoreExtensions(removeExtensions(context.getDeviceExtensions(), coreExtensions)); 4050 4051 vector<const char*> extensionNames; 4052 extensionNames.reserve(nonCoreExtensions.size()); 4053 for (const string& extension : nonCoreExtensions) 4054 extensionNames.push_back(extension.c_str()); 4055 4056 if (const void* featuresStruct = findStructureInChain(const_cast<const void*>(deviceFeatures2.pNext), getStructureType<VkPhysicalDeviceExtendedDynamicStateFeaturesEXT>())) 4057 { 4058 static const Feature features[] = 4059 { 4060 FEATURE_ITEM (VkPhysicalDeviceExtendedDynamicStateFeaturesEXT, extendedDynamicState), 4061 }; 4062 auto* supportedFeatures = reinterpret_cast<const VkPhysicalDeviceExtendedDynamicStateFeaturesEXT*>(featuresStruct); 4063 checkFeatures(vkp, instance, instanceDriver, physicalDevice, 1, features, supportedFeatures, queueFamilyIndex, queueCount, queuePriority, numErrors, resultCollector, &extensionNames, emptyDeviceFeatures, isSubProcess); 4064 } 4065 4066 if (numErrors > 0) 4067 return tcu::TestStatus(resultCollector.getResult(), "Enabling unsupported features didn't return VK_ERROR_FEATURE_NOT_PRESENT."); 4068 else 4069 return tcu::TestStatus(resultCollector.getResult(), resultCollector.getMessage()); 4070} 4071 4072 4073tcu::TestStatus createDeviceWithUnsupportedFeaturesTestExtendedDynamicState2FeaturesEXT (Context& context) 4074{ 4075 const PlatformInterface& vkp = context.getPlatformInterface(); 4076 tcu::TestLog& log = context.getTestContext().getLog(); 4077 tcu::ResultCollector resultCollector (log); 4078 const CustomInstance instance (createCustomInstanceWithExtensions(context, context.getInstanceExtensions(), DE_NULL, true)); 4079 const InstanceDriver& instanceDriver (instance.getDriver()); 4080 const VkPhysicalDevice physicalDevice = chooseDevice(instanceDriver, instance, context.getTestContext().getCommandLine()); 4081 const deUint32 queueFamilyIndex = 0; 4082 const deUint32 queueCount = 1; 4083 const float queuePriority = 1.0f; 4084 const DeviceFeatures deviceFeaturesAll (context.getInstanceInterface(), context.getUsedApiVersion(), physicalDevice, context.getInstanceExtensions(), context.getDeviceExtensions(), DE_TRUE); 4085 const VkPhysicalDeviceFeatures2 deviceFeatures2 = deviceFeaturesAll.getCoreFeatures2(); 4086 int numErrors = 0; 4087 bool isSubProcess = context.getTestContext().getCommandLine().isSubProcess(); 4088 4089 4090 VkPhysicalDeviceFeatures emptyDeviceFeatures; 4091 deMemset(&emptyDeviceFeatures, 0, sizeof(emptyDeviceFeatures)); 4092 4093 // Only non-core extensions will be used when creating the device. 4094 vector<const char*> coreExtensions; 4095 getCoreDeviceExtensions(context.getUsedApiVersion(), coreExtensions); 4096 vector<string> nonCoreExtensions(removeExtensions(context.getDeviceExtensions(), coreExtensions)); 4097 4098 vector<const char*> extensionNames; 4099 extensionNames.reserve(nonCoreExtensions.size()); 4100 for (const string& extension : nonCoreExtensions) 4101 extensionNames.push_back(extension.c_str()); 4102 4103 if (const void* featuresStruct = findStructureInChain(const_cast<const void*>(deviceFeatures2.pNext), getStructureType<VkPhysicalDeviceExtendedDynamicState2FeaturesEXT>())) 4104 { 4105 static const Feature features[] = 4106 { 4107 FEATURE_ITEM (VkPhysicalDeviceExtendedDynamicState2FeaturesEXT, extendedDynamicState2), 4108 FEATURE_ITEM (VkPhysicalDeviceExtendedDynamicState2FeaturesEXT, extendedDynamicState2LogicOp), 4109 FEATURE_ITEM (VkPhysicalDeviceExtendedDynamicState2FeaturesEXT, extendedDynamicState2PatchControlPoints), 4110 }; 4111 auto* supportedFeatures = reinterpret_cast<const VkPhysicalDeviceExtendedDynamicState2FeaturesEXT*>(featuresStruct); 4112 checkFeatures(vkp, instance, instanceDriver, physicalDevice, 3, features, supportedFeatures, queueFamilyIndex, queueCount, queuePriority, numErrors, resultCollector, &extensionNames, emptyDeviceFeatures, isSubProcess); 4113 } 4114 4115 if (numErrors > 0) 4116 return tcu::TestStatus(resultCollector.getResult(), "Enabling unsupported features didn't return VK_ERROR_FEATURE_NOT_PRESENT."); 4117 else 4118 return tcu::TestStatus(resultCollector.getResult(), resultCollector.getMessage()); 4119} 4120 4121 4122tcu::TestStatus createDeviceWithUnsupportedFeaturesTestExtendedDynamicState3FeaturesEXT (Context& context) 4123{ 4124 const PlatformInterface& vkp = context.getPlatformInterface(); 4125 tcu::TestLog& log = context.getTestContext().getLog(); 4126 tcu::ResultCollector resultCollector (log); 4127 const CustomInstance instance (createCustomInstanceWithExtensions(context, context.getInstanceExtensions(), DE_NULL, true)); 4128 const InstanceDriver& instanceDriver (instance.getDriver()); 4129 const VkPhysicalDevice physicalDevice = chooseDevice(instanceDriver, instance, context.getTestContext().getCommandLine()); 4130 const deUint32 queueFamilyIndex = 0; 4131 const deUint32 queueCount = 1; 4132 const float queuePriority = 1.0f; 4133 const DeviceFeatures deviceFeaturesAll (context.getInstanceInterface(), context.getUsedApiVersion(), physicalDevice, context.getInstanceExtensions(), context.getDeviceExtensions(), DE_TRUE); 4134 const VkPhysicalDeviceFeatures2 deviceFeatures2 = deviceFeaturesAll.getCoreFeatures2(); 4135 int numErrors = 0; 4136 bool isSubProcess = context.getTestContext().getCommandLine().isSubProcess(); 4137 4138 4139 VkPhysicalDeviceFeatures emptyDeviceFeatures; 4140 deMemset(&emptyDeviceFeatures, 0, sizeof(emptyDeviceFeatures)); 4141 4142 // Only non-core extensions will be used when creating the device. 4143 vector<const char*> coreExtensions; 4144 getCoreDeviceExtensions(context.getUsedApiVersion(), coreExtensions); 4145 vector<string> nonCoreExtensions(removeExtensions(context.getDeviceExtensions(), coreExtensions)); 4146 4147 vector<const char*> extensionNames; 4148 extensionNames.reserve(nonCoreExtensions.size()); 4149 for (const string& extension : nonCoreExtensions) 4150 extensionNames.push_back(extension.c_str()); 4151 4152 if (const void* featuresStruct = findStructureInChain(const_cast<const void*>(deviceFeatures2.pNext), getStructureType<VkPhysicalDeviceExtendedDynamicState3FeaturesEXT>())) 4153 { 4154 static const Feature features[] = 4155 { 4156 FEATURE_ITEM (VkPhysicalDeviceExtendedDynamicState3FeaturesEXT, extendedDynamicState3TessellationDomainOrigin), 4157 FEATURE_ITEM (VkPhysicalDeviceExtendedDynamicState3FeaturesEXT, extendedDynamicState3DepthClampEnable), 4158 FEATURE_ITEM (VkPhysicalDeviceExtendedDynamicState3FeaturesEXT, extendedDynamicState3PolygonMode), 4159 FEATURE_ITEM (VkPhysicalDeviceExtendedDynamicState3FeaturesEXT, extendedDynamicState3RasterizationSamples), 4160 FEATURE_ITEM (VkPhysicalDeviceExtendedDynamicState3FeaturesEXT, extendedDynamicState3SampleMask), 4161 FEATURE_ITEM (VkPhysicalDeviceExtendedDynamicState3FeaturesEXT, extendedDynamicState3AlphaToCoverageEnable), 4162 FEATURE_ITEM (VkPhysicalDeviceExtendedDynamicState3FeaturesEXT, extendedDynamicState3AlphaToOneEnable), 4163 FEATURE_ITEM (VkPhysicalDeviceExtendedDynamicState3FeaturesEXT, extendedDynamicState3LogicOpEnable), 4164 FEATURE_ITEM (VkPhysicalDeviceExtendedDynamicState3FeaturesEXT, extendedDynamicState3ColorBlendEnable), 4165 FEATURE_ITEM (VkPhysicalDeviceExtendedDynamicState3FeaturesEXT, extendedDynamicState3ColorBlendEquation), 4166 FEATURE_ITEM (VkPhysicalDeviceExtendedDynamicState3FeaturesEXT, extendedDynamicState3ColorWriteMask), 4167 FEATURE_ITEM (VkPhysicalDeviceExtendedDynamicState3FeaturesEXT, extendedDynamicState3RasterizationStream), 4168 FEATURE_ITEM (VkPhysicalDeviceExtendedDynamicState3FeaturesEXT, extendedDynamicState3ConservativeRasterizationMode), 4169 FEATURE_ITEM (VkPhysicalDeviceExtendedDynamicState3FeaturesEXT, extendedDynamicState3ExtraPrimitiveOverestimationSize), 4170 FEATURE_ITEM (VkPhysicalDeviceExtendedDynamicState3FeaturesEXT, extendedDynamicState3DepthClipEnable), 4171 FEATURE_ITEM (VkPhysicalDeviceExtendedDynamicState3FeaturesEXT, extendedDynamicState3SampleLocationsEnable), 4172 FEATURE_ITEM (VkPhysicalDeviceExtendedDynamicState3FeaturesEXT, extendedDynamicState3ColorBlendAdvanced), 4173 FEATURE_ITEM (VkPhysicalDeviceExtendedDynamicState3FeaturesEXT, extendedDynamicState3ProvokingVertexMode), 4174 FEATURE_ITEM (VkPhysicalDeviceExtendedDynamicState3FeaturesEXT, extendedDynamicState3LineRasterizationMode), 4175 FEATURE_ITEM (VkPhysicalDeviceExtendedDynamicState3FeaturesEXT, extendedDynamicState3LineStippleEnable), 4176 FEATURE_ITEM (VkPhysicalDeviceExtendedDynamicState3FeaturesEXT, extendedDynamicState3DepthClipNegativeOneToOne), 4177 FEATURE_ITEM (VkPhysicalDeviceExtendedDynamicState3FeaturesEXT, extendedDynamicState3ViewportWScalingEnable), 4178 FEATURE_ITEM (VkPhysicalDeviceExtendedDynamicState3FeaturesEXT, extendedDynamicState3ViewportSwizzle), 4179 FEATURE_ITEM (VkPhysicalDeviceExtendedDynamicState3FeaturesEXT, extendedDynamicState3CoverageToColorEnable), 4180 FEATURE_ITEM (VkPhysicalDeviceExtendedDynamicState3FeaturesEXT, extendedDynamicState3CoverageToColorLocation), 4181 FEATURE_ITEM (VkPhysicalDeviceExtendedDynamicState3FeaturesEXT, extendedDynamicState3CoverageModulationMode), 4182 FEATURE_ITEM (VkPhysicalDeviceExtendedDynamicState3FeaturesEXT, extendedDynamicState3CoverageModulationTableEnable), 4183 FEATURE_ITEM (VkPhysicalDeviceExtendedDynamicState3FeaturesEXT, extendedDynamicState3CoverageModulationTable), 4184 FEATURE_ITEM (VkPhysicalDeviceExtendedDynamicState3FeaturesEXT, extendedDynamicState3CoverageReductionMode), 4185 FEATURE_ITEM (VkPhysicalDeviceExtendedDynamicState3FeaturesEXT, extendedDynamicState3RepresentativeFragmentTestEnable), 4186 FEATURE_ITEM (VkPhysicalDeviceExtendedDynamicState3FeaturesEXT, extendedDynamicState3ShadingRateImageEnable), 4187 }; 4188 auto* supportedFeatures = reinterpret_cast<const VkPhysicalDeviceExtendedDynamicState3FeaturesEXT*>(featuresStruct); 4189 checkFeatures(vkp, instance, instanceDriver, physicalDevice, 31, features, supportedFeatures, queueFamilyIndex, queueCount, queuePriority, numErrors, resultCollector, &extensionNames, emptyDeviceFeatures, isSubProcess); 4190 } 4191 4192 if (numErrors > 0) 4193 return tcu::TestStatus(resultCollector.getResult(), "Enabling unsupported features didn't return VK_ERROR_FEATURE_NOT_PRESENT."); 4194 else 4195 return tcu::TestStatus(resultCollector.getResult(), resultCollector.getMessage()); 4196} 4197 4198 4199tcu::TestStatus createDeviceWithUnsupportedFeaturesTestDiagnosticsConfigFeaturesNV (Context& context) 4200{ 4201 const PlatformInterface& vkp = context.getPlatformInterface(); 4202 tcu::TestLog& log = context.getTestContext().getLog(); 4203 tcu::ResultCollector resultCollector (log); 4204 const CustomInstance instance (createCustomInstanceWithExtensions(context, context.getInstanceExtensions(), DE_NULL, true)); 4205 const InstanceDriver& instanceDriver (instance.getDriver()); 4206 const VkPhysicalDevice physicalDevice = chooseDevice(instanceDriver, instance, context.getTestContext().getCommandLine()); 4207 const deUint32 queueFamilyIndex = 0; 4208 const deUint32 queueCount = 1; 4209 const float queuePriority = 1.0f; 4210 const DeviceFeatures deviceFeaturesAll (context.getInstanceInterface(), context.getUsedApiVersion(), physicalDevice, context.getInstanceExtensions(), context.getDeviceExtensions(), DE_TRUE); 4211 const VkPhysicalDeviceFeatures2 deviceFeatures2 = deviceFeaturesAll.getCoreFeatures2(); 4212 int numErrors = 0; 4213 bool isSubProcess = context.getTestContext().getCommandLine().isSubProcess(); 4214 4215 4216 VkPhysicalDeviceFeatures emptyDeviceFeatures; 4217 deMemset(&emptyDeviceFeatures, 0, sizeof(emptyDeviceFeatures)); 4218 4219 // Only non-core extensions will be used when creating the device. 4220 vector<const char*> coreExtensions; 4221 getCoreDeviceExtensions(context.getUsedApiVersion(), coreExtensions); 4222 vector<string> nonCoreExtensions(removeExtensions(context.getDeviceExtensions(), coreExtensions)); 4223 4224 vector<const char*> extensionNames; 4225 extensionNames.reserve(nonCoreExtensions.size()); 4226 for (const string& extension : nonCoreExtensions) 4227 extensionNames.push_back(extension.c_str()); 4228 4229 if (const void* featuresStruct = findStructureInChain(const_cast<const void*>(deviceFeatures2.pNext), getStructureType<VkPhysicalDeviceDiagnosticsConfigFeaturesNV>())) 4230 { 4231 static const Feature features[] = 4232 { 4233 FEATURE_ITEM (VkPhysicalDeviceDiagnosticsConfigFeaturesNV, diagnosticsConfig), 4234 }; 4235 auto* supportedFeatures = reinterpret_cast<const VkPhysicalDeviceDiagnosticsConfigFeaturesNV*>(featuresStruct); 4236 checkFeatures(vkp, instance, instanceDriver, physicalDevice, 1, features, supportedFeatures, queueFamilyIndex, queueCount, queuePriority, numErrors, resultCollector, &extensionNames, emptyDeviceFeatures, isSubProcess); 4237 } 4238 4239 if (numErrors > 0) 4240 return tcu::TestStatus(resultCollector.getResult(), "Enabling unsupported features didn't return VK_ERROR_FEATURE_NOT_PRESENT."); 4241 else 4242 return tcu::TestStatus(resultCollector.getResult(), resultCollector.getMessage()); 4243} 4244 4245 4246tcu::TestStatus createDeviceWithUnsupportedFeaturesTestZeroInitializeWorkgroupMemoryFeatures (Context& context) 4247{ 4248 const PlatformInterface& vkp = context.getPlatformInterface(); 4249 tcu::TestLog& log = context.getTestContext().getLog(); 4250 tcu::ResultCollector resultCollector (log); 4251 const CustomInstance instance (createCustomInstanceWithExtensions(context, context.getInstanceExtensions(), DE_NULL, true)); 4252 const InstanceDriver& instanceDriver (instance.getDriver()); 4253 const VkPhysicalDevice physicalDevice = chooseDevice(instanceDriver, instance, context.getTestContext().getCommandLine()); 4254 const deUint32 queueFamilyIndex = 0; 4255 const deUint32 queueCount = 1; 4256 const float queuePriority = 1.0f; 4257 const DeviceFeatures deviceFeaturesAll (context.getInstanceInterface(), context.getUsedApiVersion(), physicalDevice, context.getInstanceExtensions(), context.getDeviceExtensions(), DE_TRUE); 4258 const VkPhysicalDeviceFeatures2 deviceFeatures2 = deviceFeaturesAll.getCoreFeatures2(); 4259 int numErrors = 0; 4260 bool isSubProcess = context.getTestContext().getCommandLine().isSubProcess(); 4261 4262 4263 VkPhysicalDeviceFeatures emptyDeviceFeatures; 4264 deMemset(&emptyDeviceFeatures, 0, sizeof(emptyDeviceFeatures)); 4265 4266 // Only non-core extensions will be used when creating the device. 4267 vector<const char*> coreExtensions; 4268 getCoreDeviceExtensions(context.getUsedApiVersion(), coreExtensions); 4269 vector<string> nonCoreExtensions(removeExtensions(context.getDeviceExtensions(), coreExtensions)); 4270 4271 vector<const char*> extensionNames; 4272 extensionNames.reserve(nonCoreExtensions.size()); 4273 for (const string& extension : nonCoreExtensions) 4274 extensionNames.push_back(extension.c_str()); 4275 4276 if (const void* featuresStruct = findStructureInChain(const_cast<const void*>(deviceFeatures2.pNext), getStructureType<VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeatures>())) 4277 { 4278 static const Feature features[] = 4279 { 4280 FEATURE_ITEM (VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeatures, shaderZeroInitializeWorkgroupMemory), 4281 }; 4282 auto* supportedFeatures = reinterpret_cast<const VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeatures*>(featuresStruct); 4283 checkFeatures(vkp, instance, instanceDriver, physicalDevice, 1, features, supportedFeatures, queueFamilyIndex, queueCount, queuePriority, numErrors, resultCollector, &extensionNames, emptyDeviceFeatures, isSubProcess); 4284 } 4285 4286 if (numErrors > 0) 4287 return tcu::TestStatus(resultCollector.getResult(), "Enabling unsupported features didn't return VK_ERROR_FEATURE_NOT_PRESENT."); 4288 else 4289 return tcu::TestStatus(resultCollector.getResult(), resultCollector.getMessage()); 4290} 4291 4292 4293tcu::TestStatus createDeviceWithUnsupportedFeaturesTestShaderSubgroupUniformControlFlowFeaturesKHR (Context& context) 4294{ 4295 const PlatformInterface& vkp = context.getPlatformInterface(); 4296 tcu::TestLog& log = context.getTestContext().getLog(); 4297 tcu::ResultCollector resultCollector (log); 4298 const CustomInstance instance (createCustomInstanceWithExtensions(context, context.getInstanceExtensions(), DE_NULL, true)); 4299 const InstanceDriver& instanceDriver (instance.getDriver()); 4300 const VkPhysicalDevice physicalDevice = chooseDevice(instanceDriver, instance, context.getTestContext().getCommandLine()); 4301 const deUint32 queueFamilyIndex = 0; 4302 const deUint32 queueCount = 1; 4303 const float queuePriority = 1.0f; 4304 const DeviceFeatures deviceFeaturesAll (context.getInstanceInterface(), context.getUsedApiVersion(), physicalDevice, context.getInstanceExtensions(), context.getDeviceExtensions(), DE_TRUE); 4305 const VkPhysicalDeviceFeatures2 deviceFeatures2 = deviceFeaturesAll.getCoreFeatures2(); 4306 int numErrors = 0; 4307 bool isSubProcess = context.getTestContext().getCommandLine().isSubProcess(); 4308 4309 4310 VkPhysicalDeviceFeatures emptyDeviceFeatures; 4311 deMemset(&emptyDeviceFeatures, 0, sizeof(emptyDeviceFeatures)); 4312 4313 // Only non-core extensions will be used when creating the device. 4314 vector<const char*> coreExtensions; 4315 getCoreDeviceExtensions(context.getUsedApiVersion(), coreExtensions); 4316 vector<string> nonCoreExtensions(removeExtensions(context.getDeviceExtensions(), coreExtensions)); 4317 4318 vector<const char*> extensionNames; 4319 extensionNames.reserve(nonCoreExtensions.size()); 4320 for (const string& extension : nonCoreExtensions) 4321 extensionNames.push_back(extension.c_str()); 4322 4323 if (const void* featuresStruct = findStructureInChain(const_cast<const void*>(deviceFeatures2.pNext), getStructureType<VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR>())) 4324 { 4325 static const Feature features[] = 4326 { 4327 FEATURE_ITEM (VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR, shaderSubgroupUniformControlFlow), 4328 }; 4329 auto* supportedFeatures = reinterpret_cast<const VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR*>(featuresStruct); 4330 checkFeatures(vkp, instance, instanceDriver, physicalDevice, 1, features, supportedFeatures, queueFamilyIndex, queueCount, queuePriority, numErrors, resultCollector, &extensionNames, emptyDeviceFeatures, isSubProcess); 4331 } 4332 4333 if (numErrors > 0) 4334 return tcu::TestStatus(resultCollector.getResult(), "Enabling unsupported features didn't return VK_ERROR_FEATURE_NOT_PRESENT."); 4335 else 4336 return tcu::TestStatus(resultCollector.getResult(), resultCollector.getMessage()); 4337} 4338 4339 4340tcu::TestStatus createDeviceWithUnsupportedFeaturesTestRobustness2FeaturesEXT (Context& context) 4341{ 4342 const PlatformInterface& vkp = context.getPlatformInterface(); 4343 tcu::TestLog& log = context.getTestContext().getLog(); 4344 tcu::ResultCollector resultCollector (log); 4345 const CustomInstance instance (createCustomInstanceWithExtensions(context, context.getInstanceExtensions(), DE_NULL, true)); 4346 const InstanceDriver& instanceDriver (instance.getDriver()); 4347 const VkPhysicalDevice physicalDevice = chooseDevice(instanceDriver, instance, context.getTestContext().getCommandLine()); 4348 const deUint32 queueFamilyIndex = 0; 4349 const deUint32 queueCount = 1; 4350 const float queuePriority = 1.0f; 4351 const DeviceFeatures deviceFeaturesAll (context.getInstanceInterface(), context.getUsedApiVersion(), physicalDevice, context.getInstanceExtensions(), context.getDeviceExtensions(), DE_TRUE); 4352 const VkPhysicalDeviceFeatures2 deviceFeatures2 = deviceFeaturesAll.getCoreFeatures2(); 4353 int numErrors = 0; 4354 bool isSubProcess = context.getTestContext().getCommandLine().isSubProcess(); 4355 4356 4357 VkPhysicalDeviceFeatures emptyDeviceFeatures; 4358 deMemset(&emptyDeviceFeatures, 0, sizeof(emptyDeviceFeatures)); 4359 4360 // Only non-core extensions will be used when creating the device. 4361 vector<const char*> coreExtensions; 4362 getCoreDeviceExtensions(context.getUsedApiVersion(), coreExtensions); 4363 vector<string> nonCoreExtensions(removeExtensions(context.getDeviceExtensions(), coreExtensions)); 4364 4365 vector<const char*> extensionNames; 4366 extensionNames.reserve(nonCoreExtensions.size()); 4367 for (const string& extension : nonCoreExtensions) 4368 extensionNames.push_back(extension.c_str()); 4369 4370 if (const void* featuresStruct = findStructureInChain(const_cast<const void*>(deviceFeatures2.pNext), getStructureType<VkPhysicalDeviceRobustness2FeaturesEXT>())) 4371 { 4372 static const Feature features[] = 4373 { 4374 FEATURE_ITEM (VkPhysicalDeviceRobustness2FeaturesEXT, robustBufferAccess2), 4375 FEATURE_ITEM (VkPhysicalDeviceRobustness2FeaturesEXT, robustImageAccess2), 4376 FEATURE_ITEM (VkPhysicalDeviceRobustness2FeaturesEXT, nullDescriptor), 4377 }; 4378 auto* supportedFeatures = reinterpret_cast<const VkPhysicalDeviceRobustness2FeaturesEXT*>(featuresStruct); 4379 checkFeatures(vkp, instance, instanceDriver, physicalDevice, 3, features, supportedFeatures, queueFamilyIndex, queueCount, queuePriority, numErrors, resultCollector, &extensionNames, emptyDeviceFeatures, isSubProcess); 4380 } 4381 4382 if (numErrors > 0) 4383 return tcu::TestStatus(resultCollector.getResult(), "Enabling unsupported features didn't return VK_ERROR_FEATURE_NOT_PRESENT."); 4384 else 4385 return tcu::TestStatus(resultCollector.getResult(), resultCollector.getMessage()); 4386} 4387 4388 4389tcu::TestStatus createDeviceWithUnsupportedFeaturesTestImageRobustnessFeatures (Context& context) 4390{ 4391 const PlatformInterface& vkp = context.getPlatformInterface(); 4392 tcu::TestLog& log = context.getTestContext().getLog(); 4393 tcu::ResultCollector resultCollector (log); 4394 const CustomInstance instance (createCustomInstanceWithExtensions(context, context.getInstanceExtensions(), DE_NULL, true)); 4395 const InstanceDriver& instanceDriver (instance.getDriver()); 4396 const VkPhysicalDevice physicalDevice = chooseDevice(instanceDriver, instance, context.getTestContext().getCommandLine()); 4397 const deUint32 queueFamilyIndex = 0; 4398 const deUint32 queueCount = 1; 4399 const float queuePriority = 1.0f; 4400 const DeviceFeatures deviceFeaturesAll (context.getInstanceInterface(), context.getUsedApiVersion(), physicalDevice, context.getInstanceExtensions(), context.getDeviceExtensions(), DE_TRUE); 4401 const VkPhysicalDeviceFeatures2 deviceFeatures2 = deviceFeaturesAll.getCoreFeatures2(); 4402 int numErrors = 0; 4403 bool isSubProcess = context.getTestContext().getCommandLine().isSubProcess(); 4404 4405 4406 VkPhysicalDeviceFeatures emptyDeviceFeatures; 4407 deMemset(&emptyDeviceFeatures, 0, sizeof(emptyDeviceFeatures)); 4408 4409 // Only non-core extensions will be used when creating the device. 4410 vector<const char*> coreExtensions; 4411 getCoreDeviceExtensions(context.getUsedApiVersion(), coreExtensions); 4412 vector<string> nonCoreExtensions(removeExtensions(context.getDeviceExtensions(), coreExtensions)); 4413 4414 vector<const char*> extensionNames; 4415 extensionNames.reserve(nonCoreExtensions.size()); 4416 for (const string& extension : nonCoreExtensions) 4417 extensionNames.push_back(extension.c_str()); 4418 4419 if (const void* featuresStruct = findStructureInChain(const_cast<const void*>(deviceFeatures2.pNext), getStructureType<VkPhysicalDeviceImageRobustnessFeatures>())) 4420 { 4421 static const Feature features[] = 4422 { 4423 FEATURE_ITEM (VkPhysicalDeviceImageRobustnessFeatures, robustImageAccess), 4424 }; 4425 auto* supportedFeatures = reinterpret_cast<const VkPhysicalDeviceImageRobustnessFeatures*>(featuresStruct); 4426 checkFeatures(vkp, instance, instanceDriver, physicalDevice, 1, features, supportedFeatures, queueFamilyIndex, queueCount, queuePriority, numErrors, resultCollector, &extensionNames, emptyDeviceFeatures, isSubProcess); 4427 } 4428 4429 if (numErrors > 0) 4430 return tcu::TestStatus(resultCollector.getResult(), "Enabling unsupported features didn't return VK_ERROR_FEATURE_NOT_PRESENT."); 4431 else 4432 return tcu::TestStatus(resultCollector.getResult(), resultCollector.getMessage()); 4433} 4434 4435 4436tcu::TestStatus createDeviceWithUnsupportedFeaturesTestWorkgroupMemoryExplicitLayoutFeaturesKHR (Context& context) 4437{ 4438 const PlatformInterface& vkp = context.getPlatformInterface(); 4439 tcu::TestLog& log = context.getTestContext().getLog(); 4440 tcu::ResultCollector resultCollector (log); 4441 const CustomInstance instance (createCustomInstanceWithExtensions(context, context.getInstanceExtensions(), DE_NULL, true)); 4442 const InstanceDriver& instanceDriver (instance.getDriver()); 4443 const VkPhysicalDevice physicalDevice = chooseDevice(instanceDriver, instance, context.getTestContext().getCommandLine()); 4444 const deUint32 queueFamilyIndex = 0; 4445 const deUint32 queueCount = 1; 4446 const float queuePriority = 1.0f; 4447 const DeviceFeatures deviceFeaturesAll (context.getInstanceInterface(), context.getUsedApiVersion(), physicalDevice, context.getInstanceExtensions(), context.getDeviceExtensions(), DE_TRUE); 4448 const VkPhysicalDeviceFeatures2 deviceFeatures2 = deviceFeaturesAll.getCoreFeatures2(); 4449 int numErrors = 0; 4450 bool isSubProcess = context.getTestContext().getCommandLine().isSubProcess(); 4451 4452 4453 VkPhysicalDeviceFeatures emptyDeviceFeatures; 4454 deMemset(&emptyDeviceFeatures, 0, sizeof(emptyDeviceFeatures)); 4455 4456 // Only non-core extensions will be used when creating the device. 4457 vector<const char*> coreExtensions; 4458 getCoreDeviceExtensions(context.getUsedApiVersion(), coreExtensions); 4459 vector<string> nonCoreExtensions(removeExtensions(context.getDeviceExtensions(), coreExtensions)); 4460 4461 vector<const char*> extensionNames; 4462 extensionNames.reserve(nonCoreExtensions.size()); 4463 for (const string& extension : nonCoreExtensions) 4464 extensionNames.push_back(extension.c_str()); 4465 4466 if (const void* featuresStruct = findStructureInChain(const_cast<const void*>(deviceFeatures2.pNext), getStructureType<VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR>())) 4467 { 4468 static const Feature features[] = 4469 { 4470 FEATURE_ITEM (VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR, workgroupMemoryExplicitLayout), 4471 FEATURE_ITEM (VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR, workgroupMemoryExplicitLayoutScalarBlockLayout), 4472 FEATURE_ITEM (VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR, workgroupMemoryExplicitLayout8BitAccess), 4473 FEATURE_ITEM (VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR, workgroupMemoryExplicitLayout16BitAccess), 4474 }; 4475 auto* supportedFeatures = reinterpret_cast<const VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR*>(featuresStruct); 4476 checkFeatures(vkp, instance, instanceDriver, physicalDevice, 4, features, supportedFeatures, queueFamilyIndex, queueCount, queuePriority, numErrors, resultCollector, &extensionNames, emptyDeviceFeatures, isSubProcess); 4477 } 4478 4479 if (numErrors > 0) 4480 return tcu::TestStatus(resultCollector.getResult(), "Enabling unsupported features didn't return VK_ERROR_FEATURE_NOT_PRESENT."); 4481 else 4482 return tcu::TestStatus(resultCollector.getResult(), resultCollector.getMessage()); 4483} 4484 4485 4486tcu::TestStatus createDeviceWithUnsupportedFeaturesTestPortabilitySubsetFeaturesKHR (Context& context) 4487{ 4488 const PlatformInterface& vkp = context.getPlatformInterface(); 4489 tcu::TestLog& log = context.getTestContext().getLog(); 4490 tcu::ResultCollector resultCollector (log); 4491 const CustomInstance instance (createCustomInstanceWithExtensions(context, context.getInstanceExtensions(), DE_NULL, true)); 4492 const InstanceDriver& instanceDriver (instance.getDriver()); 4493 const VkPhysicalDevice physicalDevice = chooseDevice(instanceDriver, instance, context.getTestContext().getCommandLine()); 4494 const deUint32 queueFamilyIndex = 0; 4495 const deUint32 queueCount = 1; 4496 const float queuePriority = 1.0f; 4497 const DeviceFeatures deviceFeaturesAll (context.getInstanceInterface(), context.getUsedApiVersion(), physicalDevice, context.getInstanceExtensions(), context.getDeviceExtensions(), DE_TRUE); 4498 const VkPhysicalDeviceFeatures2 deviceFeatures2 = deviceFeaturesAll.getCoreFeatures2(); 4499 int numErrors = 0; 4500 bool isSubProcess = context.getTestContext().getCommandLine().isSubProcess(); 4501 4502 4503 VkPhysicalDeviceFeatures emptyDeviceFeatures; 4504 deMemset(&emptyDeviceFeatures, 0, sizeof(emptyDeviceFeatures)); 4505 4506 // Only non-core extensions will be used when creating the device. 4507 vector<const char*> coreExtensions; 4508 getCoreDeviceExtensions(context.getUsedApiVersion(), coreExtensions); 4509 vector<string> nonCoreExtensions(removeExtensions(context.getDeviceExtensions(), coreExtensions)); 4510 4511 vector<const char*> extensionNames; 4512 extensionNames.reserve(nonCoreExtensions.size()); 4513 for (const string& extension : nonCoreExtensions) 4514 extensionNames.push_back(extension.c_str()); 4515 4516 if (const void* featuresStruct = findStructureInChain(const_cast<const void*>(deviceFeatures2.pNext), getStructureType<VkPhysicalDevicePortabilitySubsetFeaturesKHR>())) 4517 { 4518 static const Feature features[] = 4519 { 4520 FEATURE_ITEM (VkPhysicalDevicePortabilitySubsetFeaturesKHR, constantAlphaColorBlendFactors), 4521 FEATURE_ITEM (VkPhysicalDevicePortabilitySubsetFeaturesKHR, events), 4522 FEATURE_ITEM (VkPhysicalDevicePortabilitySubsetFeaturesKHR, imageViewFormatReinterpretation), 4523 FEATURE_ITEM (VkPhysicalDevicePortabilitySubsetFeaturesKHR, imageViewFormatSwizzle), 4524 FEATURE_ITEM (VkPhysicalDevicePortabilitySubsetFeaturesKHR, imageView2DOn3DImage), 4525 FEATURE_ITEM (VkPhysicalDevicePortabilitySubsetFeaturesKHR, multisampleArrayImage), 4526 FEATURE_ITEM (VkPhysicalDevicePortabilitySubsetFeaturesKHR, mutableComparisonSamplers), 4527 FEATURE_ITEM (VkPhysicalDevicePortabilitySubsetFeaturesKHR, pointPolygons), 4528 FEATURE_ITEM (VkPhysicalDevicePortabilitySubsetFeaturesKHR, samplerMipLodBias), 4529 FEATURE_ITEM (VkPhysicalDevicePortabilitySubsetFeaturesKHR, separateStencilMaskRef), 4530 FEATURE_ITEM (VkPhysicalDevicePortabilitySubsetFeaturesKHR, shaderSampleRateInterpolationFunctions), 4531 FEATURE_ITEM (VkPhysicalDevicePortabilitySubsetFeaturesKHR, tessellationIsolines), 4532 FEATURE_ITEM (VkPhysicalDevicePortabilitySubsetFeaturesKHR, tessellationPointMode), 4533 FEATURE_ITEM (VkPhysicalDevicePortabilitySubsetFeaturesKHR, triangleFans), 4534 FEATURE_ITEM (VkPhysicalDevicePortabilitySubsetFeaturesKHR, vertexAttributeAccessBeyondStride), 4535 }; 4536 auto* supportedFeatures = reinterpret_cast<const VkPhysicalDevicePortabilitySubsetFeaturesKHR*>(featuresStruct); 4537 checkFeatures(vkp, instance, instanceDriver, physicalDevice, 15, features, supportedFeatures, queueFamilyIndex, queueCount, queuePriority, numErrors, resultCollector, &extensionNames, emptyDeviceFeatures, isSubProcess); 4538 } 4539 4540 if (numErrors > 0) 4541 return tcu::TestStatus(resultCollector.getResult(), "Enabling unsupported features didn't return VK_ERROR_FEATURE_NOT_PRESENT."); 4542 else 4543 return tcu::TestStatus(resultCollector.getResult(), resultCollector.getMessage()); 4544} 4545 4546 4547tcu::TestStatus createDeviceWithUnsupportedFeaturesTest4444FormatsFeaturesEXT (Context& context) 4548{ 4549 const PlatformInterface& vkp = context.getPlatformInterface(); 4550 tcu::TestLog& log = context.getTestContext().getLog(); 4551 tcu::ResultCollector resultCollector (log); 4552 const CustomInstance instance (createCustomInstanceWithExtensions(context, context.getInstanceExtensions(), DE_NULL, true)); 4553 const InstanceDriver& instanceDriver (instance.getDriver()); 4554 const VkPhysicalDevice physicalDevice = chooseDevice(instanceDriver, instance, context.getTestContext().getCommandLine()); 4555 const deUint32 queueFamilyIndex = 0; 4556 const deUint32 queueCount = 1; 4557 const float queuePriority = 1.0f; 4558 const DeviceFeatures deviceFeaturesAll (context.getInstanceInterface(), context.getUsedApiVersion(), physicalDevice, context.getInstanceExtensions(), context.getDeviceExtensions(), DE_TRUE); 4559 const VkPhysicalDeviceFeatures2 deviceFeatures2 = deviceFeaturesAll.getCoreFeatures2(); 4560 int numErrors = 0; 4561 bool isSubProcess = context.getTestContext().getCommandLine().isSubProcess(); 4562 4563 4564 VkPhysicalDeviceFeatures emptyDeviceFeatures; 4565 deMemset(&emptyDeviceFeatures, 0, sizeof(emptyDeviceFeatures)); 4566 4567 // Only non-core extensions will be used when creating the device. 4568 vector<const char*> coreExtensions; 4569 getCoreDeviceExtensions(context.getUsedApiVersion(), coreExtensions); 4570 vector<string> nonCoreExtensions(removeExtensions(context.getDeviceExtensions(), coreExtensions)); 4571 4572 vector<const char*> extensionNames; 4573 extensionNames.reserve(nonCoreExtensions.size()); 4574 for (const string& extension : nonCoreExtensions) 4575 extensionNames.push_back(extension.c_str()); 4576 4577 if (const void* featuresStruct = findStructureInChain(const_cast<const void*>(deviceFeatures2.pNext), getStructureType<VkPhysicalDevice4444FormatsFeaturesEXT>())) 4578 { 4579 static const Feature features[] = 4580 { 4581 FEATURE_ITEM (VkPhysicalDevice4444FormatsFeaturesEXT, formatA4R4G4B4), 4582 FEATURE_ITEM (VkPhysicalDevice4444FormatsFeaturesEXT, formatA4B4G4R4), 4583 }; 4584 auto* supportedFeatures = reinterpret_cast<const VkPhysicalDevice4444FormatsFeaturesEXT*>(featuresStruct); 4585 checkFeatures(vkp, instance, instanceDriver, physicalDevice, 2, features, supportedFeatures, queueFamilyIndex, queueCount, queuePriority, numErrors, resultCollector, &extensionNames, emptyDeviceFeatures, isSubProcess); 4586 } 4587 4588 if (numErrors > 0) 4589 return tcu::TestStatus(resultCollector.getResult(), "Enabling unsupported features didn't return VK_ERROR_FEATURE_NOT_PRESENT."); 4590 else 4591 return tcu::TestStatus(resultCollector.getResult(), resultCollector.getMessage()); 4592} 4593 4594 4595tcu::TestStatus createDeviceWithUnsupportedFeaturesTestSubpassShadingFeaturesHUAWEI (Context& context) 4596{ 4597 const PlatformInterface& vkp = context.getPlatformInterface(); 4598 tcu::TestLog& log = context.getTestContext().getLog(); 4599 tcu::ResultCollector resultCollector (log); 4600 const CustomInstance instance (createCustomInstanceWithExtensions(context, context.getInstanceExtensions(), DE_NULL, true)); 4601 const InstanceDriver& instanceDriver (instance.getDriver()); 4602 const VkPhysicalDevice physicalDevice = chooseDevice(instanceDriver, instance, context.getTestContext().getCommandLine()); 4603 const deUint32 queueFamilyIndex = 0; 4604 const deUint32 queueCount = 1; 4605 const float queuePriority = 1.0f; 4606 const DeviceFeatures deviceFeaturesAll (context.getInstanceInterface(), context.getUsedApiVersion(), physicalDevice, context.getInstanceExtensions(), context.getDeviceExtensions(), DE_TRUE); 4607 const VkPhysicalDeviceFeatures2 deviceFeatures2 = deviceFeaturesAll.getCoreFeatures2(); 4608 int numErrors = 0; 4609 bool isSubProcess = context.getTestContext().getCommandLine().isSubProcess(); 4610 4611 4612 VkPhysicalDeviceFeatures emptyDeviceFeatures; 4613 deMemset(&emptyDeviceFeatures, 0, sizeof(emptyDeviceFeatures)); 4614 4615 // Only non-core extensions will be used when creating the device. 4616 vector<const char*> coreExtensions; 4617 getCoreDeviceExtensions(context.getUsedApiVersion(), coreExtensions); 4618 vector<string> nonCoreExtensions(removeExtensions(context.getDeviceExtensions(), coreExtensions)); 4619 4620 vector<const char*> extensionNames; 4621 extensionNames.reserve(nonCoreExtensions.size()); 4622 for (const string& extension : nonCoreExtensions) 4623 extensionNames.push_back(extension.c_str()); 4624 4625 if (const void* featuresStruct = findStructureInChain(const_cast<const void*>(deviceFeatures2.pNext), getStructureType<VkPhysicalDeviceSubpassShadingFeaturesHUAWEI>())) 4626 { 4627 static const Feature features[] = 4628 { 4629 FEATURE_ITEM (VkPhysicalDeviceSubpassShadingFeaturesHUAWEI, subpassShading), 4630 }; 4631 auto* supportedFeatures = reinterpret_cast<const VkPhysicalDeviceSubpassShadingFeaturesHUAWEI*>(featuresStruct); 4632 checkFeatures(vkp, instance, instanceDriver, physicalDevice, 1, features, supportedFeatures, queueFamilyIndex, queueCount, queuePriority, numErrors, resultCollector, &extensionNames, emptyDeviceFeatures, isSubProcess); 4633 } 4634 4635 if (numErrors > 0) 4636 return tcu::TestStatus(resultCollector.getResult(), "Enabling unsupported features didn't return VK_ERROR_FEATURE_NOT_PRESENT."); 4637 else 4638 return tcu::TestStatus(resultCollector.getResult(), resultCollector.getMessage()); 4639} 4640 4641 4642tcu::TestStatus createDeviceWithUnsupportedFeaturesTestShaderImageAtomicInt64FeaturesEXT (Context& context) 4643{ 4644 const PlatformInterface& vkp = context.getPlatformInterface(); 4645 tcu::TestLog& log = context.getTestContext().getLog(); 4646 tcu::ResultCollector resultCollector (log); 4647 const CustomInstance instance (createCustomInstanceWithExtensions(context, context.getInstanceExtensions(), DE_NULL, true)); 4648 const InstanceDriver& instanceDriver (instance.getDriver()); 4649 const VkPhysicalDevice physicalDevice = chooseDevice(instanceDriver, instance, context.getTestContext().getCommandLine()); 4650 const deUint32 queueFamilyIndex = 0; 4651 const deUint32 queueCount = 1; 4652 const float queuePriority = 1.0f; 4653 const DeviceFeatures deviceFeaturesAll (context.getInstanceInterface(), context.getUsedApiVersion(), physicalDevice, context.getInstanceExtensions(), context.getDeviceExtensions(), DE_TRUE); 4654 const VkPhysicalDeviceFeatures2 deviceFeatures2 = deviceFeaturesAll.getCoreFeatures2(); 4655 int numErrors = 0; 4656 bool isSubProcess = context.getTestContext().getCommandLine().isSubProcess(); 4657 4658 4659 VkPhysicalDeviceFeatures emptyDeviceFeatures; 4660 deMemset(&emptyDeviceFeatures, 0, sizeof(emptyDeviceFeatures)); 4661 4662 // Only non-core extensions will be used when creating the device. 4663 vector<const char*> coreExtensions; 4664 getCoreDeviceExtensions(context.getUsedApiVersion(), coreExtensions); 4665 vector<string> nonCoreExtensions(removeExtensions(context.getDeviceExtensions(), coreExtensions)); 4666 4667 vector<const char*> extensionNames; 4668 extensionNames.reserve(nonCoreExtensions.size()); 4669 for (const string& extension : nonCoreExtensions) 4670 extensionNames.push_back(extension.c_str()); 4671 4672 if (const void* featuresStruct = findStructureInChain(const_cast<const void*>(deviceFeatures2.pNext), getStructureType<VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT>())) 4673 { 4674 static const Feature features[] = 4675 { 4676 FEATURE_ITEM (VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT, shaderImageInt64Atomics), 4677 FEATURE_ITEM (VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT, sparseImageInt64Atomics), 4678 }; 4679 auto* supportedFeatures = reinterpret_cast<const VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT*>(featuresStruct); 4680 checkFeatures(vkp, instance, instanceDriver, physicalDevice, 2, features, supportedFeatures, queueFamilyIndex, queueCount, queuePriority, numErrors, resultCollector, &extensionNames, emptyDeviceFeatures, isSubProcess); 4681 } 4682 4683 if (numErrors > 0) 4684 return tcu::TestStatus(resultCollector.getResult(), "Enabling unsupported features didn't return VK_ERROR_FEATURE_NOT_PRESENT."); 4685 else 4686 return tcu::TestStatus(resultCollector.getResult(), resultCollector.getMessage()); 4687} 4688 4689 4690tcu::TestStatus createDeviceWithUnsupportedFeaturesTestFragmentShadingRateFeaturesKHR (Context& context) 4691{ 4692 const PlatformInterface& vkp = context.getPlatformInterface(); 4693 tcu::TestLog& log = context.getTestContext().getLog(); 4694 tcu::ResultCollector resultCollector (log); 4695 const CustomInstance instance (createCustomInstanceWithExtensions(context, context.getInstanceExtensions(), DE_NULL, true)); 4696 const InstanceDriver& instanceDriver (instance.getDriver()); 4697 const VkPhysicalDevice physicalDevice = chooseDevice(instanceDriver, instance, context.getTestContext().getCommandLine()); 4698 const deUint32 queueFamilyIndex = 0; 4699 const deUint32 queueCount = 1; 4700 const float queuePriority = 1.0f; 4701 const DeviceFeatures deviceFeaturesAll (context.getInstanceInterface(), context.getUsedApiVersion(), physicalDevice, context.getInstanceExtensions(), context.getDeviceExtensions(), DE_TRUE); 4702 const VkPhysicalDeviceFeatures2 deviceFeatures2 = deviceFeaturesAll.getCoreFeatures2(); 4703 int numErrors = 0; 4704 bool isSubProcess = context.getTestContext().getCommandLine().isSubProcess(); 4705 4706 4707 VkPhysicalDeviceFeatures emptyDeviceFeatures; 4708 deMemset(&emptyDeviceFeatures, 0, sizeof(emptyDeviceFeatures)); 4709 4710 // Only non-core extensions will be used when creating the device. 4711 vector<const char*> coreExtensions; 4712 getCoreDeviceExtensions(context.getUsedApiVersion(), coreExtensions); 4713 vector<string> nonCoreExtensions(removeExtensions(context.getDeviceExtensions(), coreExtensions)); 4714 4715 vector<const char*> extensionNames; 4716 extensionNames.reserve(nonCoreExtensions.size()); 4717 for (const string& extension : nonCoreExtensions) 4718 extensionNames.push_back(extension.c_str()); 4719 4720 if (const void* featuresStruct = findStructureInChain(const_cast<const void*>(deviceFeatures2.pNext), getStructureType<VkPhysicalDeviceFragmentShadingRateFeaturesKHR>())) 4721 { 4722 static const Feature features[] = 4723 { 4724 FEATURE_ITEM (VkPhysicalDeviceFragmentShadingRateFeaturesKHR, pipelineFragmentShadingRate), 4725 FEATURE_ITEM (VkPhysicalDeviceFragmentShadingRateFeaturesKHR, primitiveFragmentShadingRate), 4726 FEATURE_ITEM (VkPhysicalDeviceFragmentShadingRateFeaturesKHR, attachmentFragmentShadingRate), 4727 }; 4728 auto* supportedFeatures = reinterpret_cast<const VkPhysicalDeviceFragmentShadingRateFeaturesKHR*>(featuresStruct); 4729 checkFeatures(vkp, instance, instanceDriver, physicalDevice, 3, features, supportedFeatures, queueFamilyIndex, queueCount, queuePriority, numErrors, resultCollector, &extensionNames, emptyDeviceFeatures, isSubProcess); 4730 } 4731 4732 if (numErrors > 0) 4733 return tcu::TestStatus(resultCollector.getResult(), "Enabling unsupported features didn't return VK_ERROR_FEATURE_NOT_PRESENT."); 4734 else 4735 return tcu::TestStatus(resultCollector.getResult(), resultCollector.getMessage()); 4736} 4737 4738 4739tcu::TestStatus createDeviceWithUnsupportedFeaturesTestShaderTerminateInvocationFeatures (Context& context) 4740{ 4741 const PlatformInterface& vkp = context.getPlatformInterface(); 4742 tcu::TestLog& log = context.getTestContext().getLog(); 4743 tcu::ResultCollector resultCollector (log); 4744 const CustomInstance instance (createCustomInstanceWithExtensions(context, context.getInstanceExtensions(), DE_NULL, true)); 4745 const InstanceDriver& instanceDriver (instance.getDriver()); 4746 const VkPhysicalDevice physicalDevice = chooseDevice(instanceDriver, instance, context.getTestContext().getCommandLine()); 4747 const deUint32 queueFamilyIndex = 0; 4748 const deUint32 queueCount = 1; 4749 const float queuePriority = 1.0f; 4750 const DeviceFeatures deviceFeaturesAll (context.getInstanceInterface(), context.getUsedApiVersion(), physicalDevice, context.getInstanceExtensions(), context.getDeviceExtensions(), DE_TRUE); 4751 const VkPhysicalDeviceFeatures2 deviceFeatures2 = deviceFeaturesAll.getCoreFeatures2(); 4752 int numErrors = 0; 4753 bool isSubProcess = context.getTestContext().getCommandLine().isSubProcess(); 4754 4755 4756 VkPhysicalDeviceFeatures emptyDeviceFeatures; 4757 deMemset(&emptyDeviceFeatures, 0, sizeof(emptyDeviceFeatures)); 4758 4759 // Only non-core extensions will be used when creating the device. 4760 vector<const char*> coreExtensions; 4761 getCoreDeviceExtensions(context.getUsedApiVersion(), coreExtensions); 4762 vector<string> nonCoreExtensions(removeExtensions(context.getDeviceExtensions(), coreExtensions)); 4763 4764 vector<const char*> extensionNames; 4765 extensionNames.reserve(nonCoreExtensions.size()); 4766 for (const string& extension : nonCoreExtensions) 4767 extensionNames.push_back(extension.c_str()); 4768 4769 if (const void* featuresStruct = findStructureInChain(const_cast<const void*>(deviceFeatures2.pNext), getStructureType<VkPhysicalDeviceShaderTerminateInvocationFeatures>())) 4770 { 4771 static const Feature features[] = 4772 { 4773 FEATURE_ITEM (VkPhysicalDeviceShaderTerminateInvocationFeatures, shaderTerminateInvocation), 4774 }; 4775 auto* supportedFeatures = reinterpret_cast<const VkPhysicalDeviceShaderTerminateInvocationFeatures*>(featuresStruct); 4776 checkFeatures(vkp, instance, instanceDriver, physicalDevice, 1, features, supportedFeatures, queueFamilyIndex, queueCount, queuePriority, numErrors, resultCollector, &extensionNames, emptyDeviceFeatures, isSubProcess); 4777 } 4778 4779 if (numErrors > 0) 4780 return tcu::TestStatus(resultCollector.getResult(), "Enabling unsupported features didn't return VK_ERROR_FEATURE_NOT_PRESENT."); 4781 else 4782 return tcu::TestStatus(resultCollector.getResult(), resultCollector.getMessage()); 4783} 4784 4785 4786tcu::TestStatus createDeviceWithUnsupportedFeaturesTestFragmentShadingRateEnumsFeaturesNV (Context& context) 4787{ 4788 const PlatformInterface& vkp = context.getPlatformInterface(); 4789 tcu::TestLog& log = context.getTestContext().getLog(); 4790 tcu::ResultCollector resultCollector (log); 4791 const CustomInstance instance (createCustomInstanceWithExtensions(context, context.getInstanceExtensions(), DE_NULL, true)); 4792 const InstanceDriver& instanceDriver (instance.getDriver()); 4793 const VkPhysicalDevice physicalDevice = chooseDevice(instanceDriver, instance, context.getTestContext().getCommandLine()); 4794 const deUint32 queueFamilyIndex = 0; 4795 const deUint32 queueCount = 1; 4796 const float queuePriority = 1.0f; 4797 const DeviceFeatures deviceFeaturesAll (context.getInstanceInterface(), context.getUsedApiVersion(), physicalDevice, context.getInstanceExtensions(), context.getDeviceExtensions(), DE_TRUE); 4798 const VkPhysicalDeviceFeatures2 deviceFeatures2 = deviceFeaturesAll.getCoreFeatures2(); 4799 int numErrors = 0; 4800 bool isSubProcess = context.getTestContext().getCommandLine().isSubProcess(); 4801 4802 4803 VkPhysicalDeviceFeatures emptyDeviceFeatures; 4804 deMemset(&emptyDeviceFeatures, 0, sizeof(emptyDeviceFeatures)); 4805 4806 // Only non-core extensions will be used when creating the device. 4807 vector<const char*> coreExtensions; 4808 getCoreDeviceExtensions(context.getUsedApiVersion(), coreExtensions); 4809 vector<string> nonCoreExtensions(removeExtensions(context.getDeviceExtensions(), coreExtensions)); 4810 4811 vector<const char*> extensionNames; 4812 extensionNames.reserve(nonCoreExtensions.size()); 4813 for (const string& extension : nonCoreExtensions) 4814 extensionNames.push_back(extension.c_str()); 4815 4816 if (const void* featuresStruct = findStructureInChain(const_cast<const void*>(deviceFeatures2.pNext), getStructureType<VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV>())) 4817 { 4818 static const Feature features[] = 4819 { 4820 FEATURE_ITEM (VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV, fragmentShadingRateEnums), 4821 FEATURE_ITEM (VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV, supersampleFragmentShadingRates), 4822 FEATURE_ITEM (VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV, noInvocationFragmentShadingRates), 4823 }; 4824 auto* supportedFeatures = reinterpret_cast<const VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV*>(featuresStruct); 4825 checkFeatures(vkp, instance, instanceDriver, physicalDevice, 3, features, supportedFeatures, queueFamilyIndex, queueCount, queuePriority, numErrors, resultCollector, &extensionNames, emptyDeviceFeatures, isSubProcess); 4826 } 4827 4828 if (numErrors > 0) 4829 return tcu::TestStatus(resultCollector.getResult(), "Enabling unsupported features didn't return VK_ERROR_FEATURE_NOT_PRESENT."); 4830 else 4831 return tcu::TestStatus(resultCollector.getResult(), resultCollector.getMessage()); 4832} 4833 4834 4835tcu::TestStatus createDeviceWithUnsupportedFeaturesTestImage2DViewOf3DFeaturesEXT (Context& context) 4836{ 4837 const PlatformInterface& vkp = context.getPlatformInterface(); 4838 tcu::TestLog& log = context.getTestContext().getLog(); 4839 tcu::ResultCollector resultCollector (log); 4840 const CustomInstance instance (createCustomInstanceWithExtensions(context, context.getInstanceExtensions(), DE_NULL, true)); 4841 const InstanceDriver& instanceDriver (instance.getDriver()); 4842 const VkPhysicalDevice physicalDevice = chooseDevice(instanceDriver, instance, context.getTestContext().getCommandLine()); 4843 const deUint32 queueFamilyIndex = 0; 4844 const deUint32 queueCount = 1; 4845 const float queuePriority = 1.0f; 4846 const DeviceFeatures deviceFeaturesAll (context.getInstanceInterface(), context.getUsedApiVersion(), physicalDevice, context.getInstanceExtensions(), context.getDeviceExtensions(), DE_TRUE); 4847 const VkPhysicalDeviceFeatures2 deviceFeatures2 = deviceFeaturesAll.getCoreFeatures2(); 4848 int numErrors = 0; 4849 bool isSubProcess = context.getTestContext().getCommandLine().isSubProcess(); 4850 4851 4852 VkPhysicalDeviceFeatures emptyDeviceFeatures; 4853 deMemset(&emptyDeviceFeatures, 0, sizeof(emptyDeviceFeatures)); 4854 4855 // Only non-core extensions will be used when creating the device. 4856 vector<const char*> coreExtensions; 4857 getCoreDeviceExtensions(context.getUsedApiVersion(), coreExtensions); 4858 vector<string> nonCoreExtensions(removeExtensions(context.getDeviceExtensions(), coreExtensions)); 4859 4860 vector<const char*> extensionNames; 4861 extensionNames.reserve(nonCoreExtensions.size()); 4862 for (const string& extension : nonCoreExtensions) 4863 extensionNames.push_back(extension.c_str()); 4864 4865 if (const void* featuresStruct = findStructureInChain(const_cast<const void*>(deviceFeatures2.pNext), getStructureType<VkPhysicalDeviceImage2DViewOf3DFeaturesEXT>())) 4866 { 4867 static const Feature features[] = 4868 { 4869 FEATURE_ITEM (VkPhysicalDeviceImage2DViewOf3DFeaturesEXT, image2DViewOf3D), 4870 FEATURE_ITEM (VkPhysicalDeviceImage2DViewOf3DFeaturesEXT, sampler2DViewOf3D), 4871 }; 4872 auto* supportedFeatures = reinterpret_cast<const VkPhysicalDeviceImage2DViewOf3DFeaturesEXT*>(featuresStruct); 4873 checkFeatures(vkp, instance, instanceDriver, physicalDevice, 2, features, supportedFeatures, queueFamilyIndex, queueCount, queuePriority, numErrors, resultCollector, &extensionNames, emptyDeviceFeatures, isSubProcess); 4874 } 4875 4876 if (numErrors > 0) 4877 return tcu::TestStatus(resultCollector.getResult(), "Enabling unsupported features didn't return VK_ERROR_FEATURE_NOT_PRESENT."); 4878 else 4879 return tcu::TestStatus(resultCollector.getResult(), resultCollector.getMessage()); 4880} 4881 4882 4883tcu::TestStatus createDeviceWithUnsupportedFeaturesTestMutableDescriptorTypeFeaturesEXT (Context& context) 4884{ 4885 const PlatformInterface& vkp = context.getPlatformInterface(); 4886 tcu::TestLog& log = context.getTestContext().getLog(); 4887 tcu::ResultCollector resultCollector (log); 4888 const CustomInstance instance (createCustomInstanceWithExtensions(context, context.getInstanceExtensions(), DE_NULL, true)); 4889 const InstanceDriver& instanceDriver (instance.getDriver()); 4890 const VkPhysicalDevice physicalDevice = chooseDevice(instanceDriver, instance, context.getTestContext().getCommandLine()); 4891 const deUint32 queueFamilyIndex = 0; 4892 const deUint32 queueCount = 1; 4893 const float queuePriority = 1.0f; 4894 const DeviceFeatures deviceFeaturesAll (context.getInstanceInterface(), context.getUsedApiVersion(), physicalDevice, context.getInstanceExtensions(), context.getDeviceExtensions(), DE_TRUE); 4895 const VkPhysicalDeviceFeatures2 deviceFeatures2 = deviceFeaturesAll.getCoreFeatures2(); 4896 int numErrors = 0; 4897 bool isSubProcess = context.getTestContext().getCommandLine().isSubProcess(); 4898 4899 4900 VkPhysicalDeviceFeatures emptyDeviceFeatures; 4901 deMemset(&emptyDeviceFeatures, 0, sizeof(emptyDeviceFeatures)); 4902 4903 // Only non-core extensions will be used when creating the device. 4904 vector<const char*> coreExtensions; 4905 getCoreDeviceExtensions(context.getUsedApiVersion(), coreExtensions); 4906 vector<string> nonCoreExtensions(removeExtensions(context.getDeviceExtensions(), coreExtensions)); 4907 4908 vector<const char*> extensionNames; 4909 extensionNames.reserve(nonCoreExtensions.size()); 4910 for (const string& extension : nonCoreExtensions) 4911 extensionNames.push_back(extension.c_str()); 4912 4913 if (const void* featuresStruct = findStructureInChain(const_cast<const void*>(deviceFeatures2.pNext), getStructureType<VkPhysicalDeviceMutableDescriptorTypeFeaturesEXT>())) 4914 { 4915 static const Feature features[] = 4916 { 4917 FEATURE_ITEM (VkPhysicalDeviceMutableDescriptorTypeFeaturesEXT, mutableDescriptorType), 4918 }; 4919 auto* supportedFeatures = reinterpret_cast<const VkPhysicalDeviceMutableDescriptorTypeFeaturesEXT*>(featuresStruct); 4920 checkFeatures(vkp, instance, instanceDriver, physicalDevice, 1, features, supportedFeatures, queueFamilyIndex, queueCount, queuePriority, numErrors, resultCollector, &extensionNames, emptyDeviceFeatures, isSubProcess); 4921 } 4922 4923 if (numErrors > 0) 4924 return tcu::TestStatus(resultCollector.getResult(), "Enabling unsupported features didn't return VK_ERROR_FEATURE_NOT_PRESENT."); 4925 else 4926 return tcu::TestStatus(resultCollector.getResult(), resultCollector.getMessage()); 4927} 4928 4929 4930tcu::TestStatus createDeviceWithUnsupportedFeaturesTestDepthClipControlFeaturesEXT (Context& context) 4931{ 4932 const PlatformInterface& vkp = context.getPlatformInterface(); 4933 tcu::TestLog& log = context.getTestContext().getLog(); 4934 tcu::ResultCollector resultCollector (log); 4935 const CustomInstance instance (createCustomInstanceWithExtensions(context, context.getInstanceExtensions(), DE_NULL, true)); 4936 const InstanceDriver& instanceDriver (instance.getDriver()); 4937 const VkPhysicalDevice physicalDevice = chooseDevice(instanceDriver, instance, context.getTestContext().getCommandLine()); 4938 const deUint32 queueFamilyIndex = 0; 4939 const deUint32 queueCount = 1; 4940 const float queuePriority = 1.0f; 4941 const DeviceFeatures deviceFeaturesAll (context.getInstanceInterface(), context.getUsedApiVersion(), physicalDevice, context.getInstanceExtensions(), context.getDeviceExtensions(), DE_TRUE); 4942 const VkPhysicalDeviceFeatures2 deviceFeatures2 = deviceFeaturesAll.getCoreFeatures2(); 4943 int numErrors = 0; 4944 bool isSubProcess = context.getTestContext().getCommandLine().isSubProcess(); 4945 4946 4947 VkPhysicalDeviceFeatures emptyDeviceFeatures; 4948 deMemset(&emptyDeviceFeatures, 0, sizeof(emptyDeviceFeatures)); 4949 4950 // Only non-core extensions will be used when creating the device. 4951 vector<const char*> coreExtensions; 4952 getCoreDeviceExtensions(context.getUsedApiVersion(), coreExtensions); 4953 vector<string> nonCoreExtensions(removeExtensions(context.getDeviceExtensions(), coreExtensions)); 4954 4955 vector<const char*> extensionNames; 4956 extensionNames.reserve(nonCoreExtensions.size()); 4957 for (const string& extension : nonCoreExtensions) 4958 extensionNames.push_back(extension.c_str()); 4959 4960 if (const void* featuresStruct = findStructureInChain(const_cast<const void*>(deviceFeatures2.pNext), getStructureType<VkPhysicalDeviceDepthClipControlFeaturesEXT>())) 4961 { 4962 static const Feature features[] = 4963 { 4964 FEATURE_ITEM (VkPhysicalDeviceDepthClipControlFeaturesEXT, depthClipControl), 4965 }; 4966 auto* supportedFeatures = reinterpret_cast<const VkPhysicalDeviceDepthClipControlFeaturesEXT*>(featuresStruct); 4967 checkFeatures(vkp, instance, instanceDriver, physicalDevice, 1, features, supportedFeatures, queueFamilyIndex, queueCount, queuePriority, numErrors, resultCollector, &extensionNames, emptyDeviceFeatures, isSubProcess); 4968 } 4969 4970 if (numErrors > 0) 4971 return tcu::TestStatus(resultCollector.getResult(), "Enabling unsupported features didn't return VK_ERROR_FEATURE_NOT_PRESENT."); 4972 else 4973 return tcu::TestStatus(resultCollector.getResult(), resultCollector.getMessage()); 4974} 4975 4976 4977tcu::TestStatus createDeviceWithUnsupportedFeaturesTestVertexInputDynamicStateFeaturesEXT (Context& context) 4978{ 4979 const PlatformInterface& vkp = context.getPlatformInterface(); 4980 tcu::TestLog& log = context.getTestContext().getLog(); 4981 tcu::ResultCollector resultCollector (log); 4982 const CustomInstance instance (createCustomInstanceWithExtensions(context, context.getInstanceExtensions(), DE_NULL, true)); 4983 const InstanceDriver& instanceDriver (instance.getDriver()); 4984 const VkPhysicalDevice physicalDevice = chooseDevice(instanceDriver, instance, context.getTestContext().getCommandLine()); 4985 const deUint32 queueFamilyIndex = 0; 4986 const deUint32 queueCount = 1; 4987 const float queuePriority = 1.0f; 4988 const DeviceFeatures deviceFeaturesAll (context.getInstanceInterface(), context.getUsedApiVersion(), physicalDevice, context.getInstanceExtensions(), context.getDeviceExtensions(), DE_TRUE); 4989 const VkPhysicalDeviceFeatures2 deviceFeatures2 = deviceFeaturesAll.getCoreFeatures2(); 4990 int numErrors = 0; 4991 bool isSubProcess = context.getTestContext().getCommandLine().isSubProcess(); 4992 4993 4994 VkPhysicalDeviceFeatures emptyDeviceFeatures; 4995 deMemset(&emptyDeviceFeatures, 0, sizeof(emptyDeviceFeatures)); 4996 4997 // Only non-core extensions will be used when creating the device. 4998 vector<const char*> coreExtensions; 4999 getCoreDeviceExtensions(context.getUsedApiVersion(), coreExtensions); 5000 vector<string> nonCoreExtensions(removeExtensions(context.getDeviceExtensions(), coreExtensions)); 5001 5002 vector<const char*> extensionNames; 5003 extensionNames.reserve(nonCoreExtensions.size()); 5004 for (const string& extension : nonCoreExtensions) 5005 extensionNames.push_back(extension.c_str()); 5006 5007 if (const void* featuresStruct = findStructureInChain(const_cast<const void*>(deviceFeatures2.pNext), getStructureType<VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT>())) 5008 { 5009 static const Feature features[] = 5010 { 5011 FEATURE_ITEM (VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT, vertexInputDynamicState), 5012 }; 5013 auto* supportedFeatures = reinterpret_cast<const VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT*>(featuresStruct); 5014 checkFeatures(vkp, instance, instanceDriver, physicalDevice, 1, features, supportedFeatures, queueFamilyIndex, queueCount, queuePriority, numErrors, resultCollector, &extensionNames, emptyDeviceFeatures, isSubProcess); 5015 } 5016 5017 if (numErrors > 0) 5018 return tcu::TestStatus(resultCollector.getResult(), "Enabling unsupported features didn't return VK_ERROR_FEATURE_NOT_PRESENT."); 5019 else 5020 return tcu::TestStatus(resultCollector.getResult(), resultCollector.getMessage()); 5021} 5022 5023 5024tcu::TestStatus createDeviceWithUnsupportedFeaturesTestExternalMemoryRDMAFeaturesNV (Context& context) 5025{ 5026 const PlatformInterface& vkp = context.getPlatformInterface(); 5027 tcu::TestLog& log = context.getTestContext().getLog(); 5028 tcu::ResultCollector resultCollector (log); 5029 const CustomInstance instance (createCustomInstanceWithExtensions(context, context.getInstanceExtensions(), DE_NULL, true)); 5030 const InstanceDriver& instanceDriver (instance.getDriver()); 5031 const VkPhysicalDevice physicalDevice = chooseDevice(instanceDriver, instance, context.getTestContext().getCommandLine()); 5032 const deUint32 queueFamilyIndex = 0; 5033 const deUint32 queueCount = 1; 5034 const float queuePriority = 1.0f; 5035 const DeviceFeatures deviceFeaturesAll (context.getInstanceInterface(), context.getUsedApiVersion(), physicalDevice, context.getInstanceExtensions(), context.getDeviceExtensions(), DE_TRUE); 5036 const VkPhysicalDeviceFeatures2 deviceFeatures2 = deviceFeaturesAll.getCoreFeatures2(); 5037 int numErrors = 0; 5038 bool isSubProcess = context.getTestContext().getCommandLine().isSubProcess(); 5039 5040 5041 VkPhysicalDeviceFeatures emptyDeviceFeatures; 5042 deMemset(&emptyDeviceFeatures, 0, sizeof(emptyDeviceFeatures)); 5043 5044 // Only non-core extensions will be used when creating the device. 5045 vector<const char*> coreExtensions; 5046 getCoreDeviceExtensions(context.getUsedApiVersion(), coreExtensions); 5047 vector<string> nonCoreExtensions(removeExtensions(context.getDeviceExtensions(), coreExtensions)); 5048 5049 vector<const char*> extensionNames; 5050 extensionNames.reserve(nonCoreExtensions.size()); 5051 for (const string& extension : nonCoreExtensions) 5052 extensionNames.push_back(extension.c_str()); 5053 5054 if (const void* featuresStruct = findStructureInChain(const_cast<const void*>(deviceFeatures2.pNext), getStructureType<VkPhysicalDeviceExternalMemoryRDMAFeaturesNV>())) 5055 { 5056 static const Feature features[] = 5057 { 5058 FEATURE_ITEM (VkPhysicalDeviceExternalMemoryRDMAFeaturesNV, externalMemoryRDMA), 5059 }; 5060 auto* supportedFeatures = reinterpret_cast<const VkPhysicalDeviceExternalMemoryRDMAFeaturesNV*>(featuresStruct); 5061 checkFeatures(vkp, instance, instanceDriver, physicalDevice, 1, features, supportedFeatures, queueFamilyIndex, queueCount, queuePriority, numErrors, resultCollector, &extensionNames, emptyDeviceFeatures, isSubProcess); 5062 } 5063 5064 if (numErrors > 0) 5065 return tcu::TestStatus(resultCollector.getResult(), "Enabling unsupported features didn't return VK_ERROR_FEATURE_NOT_PRESENT."); 5066 else 5067 return tcu::TestStatus(resultCollector.getResult(), resultCollector.getMessage()); 5068} 5069 5070 5071tcu::TestStatus createDeviceWithUnsupportedFeaturesTestColorWriteEnableFeaturesEXT (Context& context) 5072{ 5073 const PlatformInterface& vkp = context.getPlatformInterface(); 5074 tcu::TestLog& log = context.getTestContext().getLog(); 5075 tcu::ResultCollector resultCollector (log); 5076 const CustomInstance instance (createCustomInstanceWithExtensions(context, context.getInstanceExtensions(), DE_NULL, true)); 5077 const InstanceDriver& instanceDriver (instance.getDriver()); 5078 const VkPhysicalDevice physicalDevice = chooseDevice(instanceDriver, instance, context.getTestContext().getCommandLine()); 5079 const deUint32 queueFamilyIndex = 0; 5080 const deUint32 queueCount = 1; 5081 const float queuePriority = 1.0f; 5082 const DeviceFeatures deviceFeaturesAll (context.getInstanceInterface(), context.getUsedApiVersion(), physicalDevice, context.getInstanceExtensions(), context.getDeviceExtensions(), DE_TRUE); 5083 const VkPhysicalDeviceFeatures2 deviceFeatures2 = deviceFeaturesAll.getCoreFeatures2(); 5084 int numErrors = 0; 5085 bool isSubProcess = context.getTestContext().getCommandLine().isSubProcess(); 5086 5087 5088 VkPhysicalDeviceFeatures emptyDeviceFeatures; 5089 deMemset(&emptyDeviceFeatures, 0, sizeof(emptyDeviceFeatures)); 5090 5091 // Only non-core extensions will be used when creating the device. 5092 vector<const char*> coreExtensions; 5093 getCoreDeviceExtensions(context.getUsedApiVersion(), coreExtensions); 5094 vector<string> nonCoreExtensions(removeExtensions(context.getDeviceExtensions(), coreExtensions)); 5095 5096 vector<const char*> extensionNames; 5097 extensionNames.reserve(nonCoreExtensions.size()); 5098 for (const string& extension : nonCoreExtensions) 5099 extensionNames.push_back(extension.c_str()); 5100 5101 if (const void* featuresStruct = findStructureInChain(const_cast<const void*>(deviceFeatures2.pNext), getStructureType<VkPhysicalDeviceColorWriteEnableFeaturesEXT>())) 5102 { 5103 static const Feature features[] = 5104 { 5105 FEATURE_ITEM (VkPhysicalDeviceColorWriteEnableFeaturesEXT, colorWriteEnable), 5106 }; 5107 auto* supportedFeatures = reinterpret_cast<const VkPhysicalDeviceColorWriteEnableFeaturesEXT*>(featuresStruct); 5108 checkFeatures(vkp, instance, instanceDriver, physicalDevice, 1, features, supportedFeatures, queueFamilyIndex, queueCount, queuePriority, numErrors, resultCollector, &extensionNames, emptyDeviceFeatures, isSubProcess); 5109 } 5110 5111 if (numErrors > 0) 5112 return tcu::TestStatus(resultCollector.getResult(), "Enabling unsupported features didn't return VK_ERROR_FEATURE_NOT_PRESENT."); 5113 else 5114 return tcu::TestStatus(resultCollector.getResult(), resultCollector.getMessage()); 5115} 5116 5117 5118tcu::TestStatus createDeviceWithUnsupportedFeaturesTestSynchronization2Features (Context& context) 5119{ 5120 const PlatformInterface& vkp = context.getPlatformInterface(); 5121 tcu::TestLog& log = context.getTestContext().getLog(); 5122 tcu::ResultCollector resultCollector (log); 5123 const CustomInstance instance (createCustomInstanceWithExtensions(context, context.getInstanceExtensions(), DE_NULL, true)); 5124 const InstanceDriver& instanceDriver (instance.getDriver()); 5125 const VkPhysicalDevice physicalDevice = chooseDevice(instanceDriver, instance, context.getTestContext().getCommandLine()); 5126 const deUint32 queueFamilyIndex = 0; 5127 const deUint32 queueCount = 1; 5128 const float queuePriority = 1.0f; 5129 const DeviceFeatures deviceFeaturesAll (context.getInstanceInterface(), context.getUsedApiVersion(), physicalDevice, context.getInstanceExtensions(), context.getDeviceExtensions(), DE_TRUE); 5130 const VkPhysicalDeviceFeatures2 deviceFeatures2 = deviceFeaturesAll.getCoreFeatures2(); 5131 int numErrors = 0; 5132 bool isSubProcess = context.getTestContext().getCommandLine().isSubProcess(); 5133 5134 5135 VkPhysicalDeviceFeatures emptyDeviceFeatures; 5136 deMemset(&emptyDeviceFeatures, 0, sizeof(emptyDeviceFeatures)); 5137 5138 // Only non-core extensions will be used when creating the device. 5139 vector<const char*> coreExtensions; 5140 getCoreDeviceExtensions(context.getUsedApiVersion(), coreExtensions); 5141 vector<string> nonCoreExtensions(removeExtensions(context.getDeviceExtensions(), coreExtensions)); 5142 5143 vector<const char*> extensionNames; 5144 extensionNames.reserve(nonCoreExtensions.size()); 5145 for (const string& extension : nonCoreExtensions) 5146 extensionNames.push_back(extension.c_str()); 5147 5148 if (const void* featuresStruct = findStructureInChain(const_cast<const void*>(deviceFeatures2.pNext), getStructureType<VkPhysicalDeviceSynchronization2Features>())) 5149 { 5150 static const Feature features[] = 5151 { 5152 FEATURE_ITEM (VkPhysicalDeviceSynchronization2Features, synchronization2), 5153 }; 5154 auto* supportedFeatures = reinterpret_cast<const VkPhysicalDeviceSynchronization2Features*>(featuresStruct); 5155 checkFeatures(vkp, instance, instanceDriver, physicalDevice, 1, features, supportedFeatures, queueFamilyIndex, queueCount, queuePriority, numErrors, resultCollector, &extensionNames, emptyDeviceFeatures, isSubProcess); 5156 } 5157 5158 if (numErrors > 0) 5159 return tcu::TestStatus(resultCollector.getResult(), "Enabling unsupported features didn't return VK_ERROR_FEATURE_NOT_PRESENT."); 5160 else 5161 return tcu::TestStatus(resultCollector.getResult(), resultCollector.getMessage()); 5162} 5163 5164 5165tcu::TestStatus createDeviceWithUnsupportedFeaturesTestPrimitivesGeneratedQueryFeaturesEXT (Context& context) 5166{ 5167 const PlatformInterface& vkp = context.getPlatformInterface(); 5168 tcu::TestLog& log = context.getTestContext().getLog(); 5169 tcu::ResultCollector resultCollector (log); 5170 const CustomInstance instance (createCustomInstanceWithExtensions(context, context.getInstanceExtensions(), DE_NULL, true)); 5171 const InstanceDriver& instanceDriver (instance.getDriver()); 5172 const VkPhysicalDevice physicalDevice = chooseDevice(instanceDriver, instance, context.getTestContext().getCommandLine()); 5173 const deUint32 queueFamilyIndex = 0; 5174 const deUint32 queueCount = 1; 5175 const float queuePriority = 1.0f; 5176 const DeviceFeatures deviceFeaturesAll (context.getInstanceInterface(), context.getUsedApiVersion(), physicalDevice, context.getInstanceExtensions(), context.getDeviceExtensions(), DE_TRUE); 5177 const VkPhysicalDeviceFeatures2 deviceFeatures2 = deviceFeaturesAll.getCoreFeatures2(); 5178 int numErrors = 0; 5179 bool isSubProcess = context.getTestContext().getCommandLine().isSubProcess(); 5180 5181 5182 VkPhysicalDeviceFeatures emptyDeviceFeatures; 5183 deMemset(&emptyDeviceFeatures, 0, sizeof(emptyDeviceFeatures)); 5184 5185 // Only non-core extensions will be used when creating the device. 5186 vector<const char*> coreExtensions; 5187 getCoreDeviceExtensions(context.getUsedApiVersion(), coreExtensions); 5188 vector<string> nonCoreExtensions(removeExtensions(context.getDeviceExtensions(), coreExtensions)); 5189 5190 vector<const char*> extensionNames; 5191 extensionNames.reserve(nonCoreExtensions.size()); 5192 for (const string& extension : nonCoreExtensions) 5193 extensionNames.push_back(extension.c_str()); 5194 5195 if (const void* featuresStruct = findStructureInChain(const_cast<const void*>(deviceFeatures2.pNext), getStructureType<VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT>())) 5196 { 5197 static const Feature features[] = 5198 { 5199 FEATURE_ITEM (VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT, primitivesGeneratedQuery), 5200 FEATURE_ITEM (VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT, primitivesGeneratedQueryWithRasterizerDiscard), 5201 FEATURE_ITEM (VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT, primitivesGeneratedQueryWithNonZeroStreams), 5202 }; 5203 auto* supportedFeatures = reinterpret_cast<const VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT*>(featuresStruct); 5204 checkFeatures(vkp, instance, instanceDriver, physicalDevice, 3, features, supportedFeatures, queueFamilyIndex, queueCount, queuePriority, numErrors, resultCollector, &extensionNames, emptyDeviceFeatures, isSubProcess); 5205 } 5206 5207 if (numErrors > 0) 5208 return tcu::TestStatus(resultCollector.getResult(), "Enabling unsupported features didn't return VK_ERROR_FEATURE_NOT_PRESENT."); 5209 else 5210 return tcu::TestStatus(resultCollector.getResult(), resultCollector.getMessage()); 5211} 5212 5213 5214tcu::TestStatus createDeviceWithUnsupportedFeaturesTestLegacyDitheringFeaturesEXT (Context& context) 5215{ 5216 const PlatformInterface& vkp = context.getPlatformInterface(); 5217 tcu::TestLog& log = context.getTestContext().getLog(); 5218 tcu::ResultCollector resultCollector (log); 5219 const CustomInstance instance (createCustomInstanceWithExtensions(context, context.getInstanceExtensions(), DE_NULL, true)); 5220 const InstanceDriver& instanceDriver (instance.getDriver()); 5221 const VkPhysicalDevice physicalDevice = chooseDevice(instanceDriver, instance, context.getTestContext().getCommandLine()); 5222 const deUint32 queueFamilyIndex = 0; 5223 const deUint32 queueCount = 1; 5224 const float queuePriority = 1.0f; 5225 const DeviceFeatures deviceFeaturesAll (context.getInstanceInterface(), context.getUsedApiVersion(), physicalDevice, context.getInstanceExtensions(), context.getDeviceExtensions(), DE_TRUE); 5226 const VkPhysicalDeviceFeatures2 deviceFeatures2 = deviceFeaturesAll.getCoreFeatures2(); 5227 int numErrors = 0; 5228 bool isSubProcess = context.getTestContext().getCommandLine().isSubProcess(); 5229 5230 5231 VkPhysicalDeviceFeatures emptyDeviceFeatures; 5232 deMemset(&emptyDeviceFeatures, 0, sizeof(emptyDeviceFeatures)); 5233 5234 // Only non-core extensions will be used when creating the device. 5235 vector<const char*> coreExtensions; 5236 getCoreDeviceExtensions(context.getUsedApiVersion(), coreExtensions); 5237 vector<string> nonCoreExtensions(removeExtensions(context.getDeviceExtensions(), coreExtensions)); 5238 5239 vector<const char*> extensionNames; 5240 extensionNames.reserve(nonCoreExtensions.size()); 5241 for (const string& extension : nonCoreExtensions) 5242 extensionNames.push_back(extension.c_str()); 5243 5244 if (const void* featuresStruct = findStructureInChain(const_cast<const void*>(deviceFeatures2.pNext), getStructureType<VkPhysicalDeviceLegacyDitheringFeaturesEXT>())) 5245 { 5246 static const Feature features[] = 5247 { 5248 FEATURE_ITEM (VkPhysicalDeviceLegacyDitheringFeaturesEXT, legacyDithering), 5249 }; 5250 auto* supportedFeatures = reinterpret_cast<const VkPhysicalDeviceLegacyDitheringFeaturesEXT*>(featuresStruct); 5251 checkFeatures(vkp, instance, instanceDriver, physicalDevice, 1, features, supportedFeatures, queueFamilyIndex, queueCount, queuePriority, numErrors, resultCollector, &extensionNames, emptyDeviceFeatures, isSubProcess); 5252 } 5253 5254 if (numErrors > 0) 5255 return tcu::TestStatus(resultCollector.getResult(), "Enabling unsupported features didn't return VK_ERROR_FEATURE_NOT_PRESENT."); 5256 else 5257 return tcu::TestStatus(resultCollector.getResult(), resultCollector.getMessage()); 5258} 5259 5260 5261tcu::TestStatus createDeviceWithUnsupportedFeaturesTestMultisampledRenderToSingleSampledFeaturesEXT (Context& context) 5262{ 5263 const PlatformInterface& vkp = context.getPlatformInterface(); 5264 tcu::TestLog& log = context.getTestContext().getLog(); 5265 tcu::ResultCollector resultCollector (log); 5266 const CustomInstance instance (createCustomInstanceWithExtensions(context, context.getInstanceExtensions(), DE_NULL, true)); 5267 const InstanceDriver& instanceDriver (instance.getDriver()); 5268 const VkPhysicalDevice physicalDevice = chooseDevice(instanceDriver, instance, context.getTestContext().getCommandLine()); 5269 const deUint32 queueFamilyIndex = 0; 5270 const deUint32 queueCount = 1; 5271 const float queuePriority = 1.0f; 5272 const DeviceFeatures deviceFeaturesAll (context.getInstanceInterface(), context.getUsedApiVersion(), physicalDevice, context.getInstanceExtensions(), context.getDeviceExtensions(), DE_TRUE); 5273 const VkPhysicalDeviceFeatures2 deviceFeatures2 = deviceFeaturesAll.getCoreFeatures2(); 5274 int numErrors = 0; 5275 bool isSubProcess = context.getTestContext().getCommandLine().isSubProcess(); 5276 5277 5278 VkPhysicalDeviceFeatures emptyDeviceFeatures; 5279 deMemset(&emptyDeviceFeatures, 0, sizeof(emptyDeviceFeatures)); 5280 5281 // Only non-core extensions will be used when creating the device. 5282 vector<const char*> coreExtensions; 5283 getCoreDeviceExtensions(context.getUsedApiVersion(), coreExtensions); 5284 vector<string> nonCoreExtensions(removeExtensions(context.getDeviceExtensions(), coreExtensions)); 5285 5286 vector<const char*> extensionNames; 5287 extensionNames.reserve(nonCoreExtensions.size()); 5288 for (const string& extension : nonCoreExtensions) 5289 extensionNames.push_back(extension.c_str()); 5290 5291 if (const void* featuresStruct = findStructureInChain(const_cast<const void*>(deviceFeatures2.pNext), getStructureType<VkPhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT>())) 5292 { 5293 static const Feature features[] = 5294 { 5295 FEATURE_ITEM (VkPhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT, multisampledRenderToSingleSampled), 5296 }; 5297 auto* supportedFeatures = reinterpret_cast<const VkPhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT*>(featuresStruct); 5298 checkFeatures(vkp, instance, instanceDriver, physicalDevice, 1, features, supportedFeatures, queueFamilyIndex, queueCount, queuePriority, numErrors, resultCollector, &extensionNames, emptyDeviceFeatures, isSubProcess); 5299 } 5300 5301 if (numErrors > 0) 5302 return tcu::TestStatus(resultCollector.getResult(), "Enabling unsupported features didn't return VK_ERROR_FEATURE_NOT_PRESENT."); 5303 else 5304 return tcu::TestStatus(resultCollector.getResult(), resultCollector.getMessage()); 5305} 5306 5307 5308tcu::TestStatus createDeviceWithUnsupportedFeaturesTestPipelineProtectedAccessFeaturesEXT (Context& context) 5309{ 5310 const PlatformInterface& vkp = context.getPlatformInterface(); 5311 tcu::TestLog& log = context.getTestContext().getLog(); 5312 tcu::ResultCollector resultCollector (log); 5313 const CustomInstance instance (createCustomInstanceWithExtensions(context, context.getInstanceExtensions(), DE_NULL, true)); 5314 const InstanceDriver& instanceDriver (instance.getDriver()); 5315 const VkPhysicalDevice physicalDevice = chooseDevice(instanceDriver, instance, context.getTestContext().getCommandLine()); 5316 const deUint32 queueFamilyIndex = 0; 5317 const deUint32 queueCount = 1; 5318 const float queuePriority = 1.0f; 5319 const DeviceFeatures deviceFeaturesAll (context.getInstanceInterface(), context.getUsedApiVersion(), physicalDevice, context.getInstanceExtensions(), context.getDeviceExtensions(), DE_TRUE); 5320 const VkPhysicalDeviceFeatures2 deviceFeatures2 = deviceFeaturesAll.getCoreFeatures2(); 5321 int numErrors = 0; 5322 bool isSubProcess = context.getTestContext().getCommandLine().isSubProcess(); 5323 5324 5325 VkPhysicalDeviceFeatures emptyDeviceFeatures; 5326 deMemset(&emptyDeviceFeatures, 0, sizeof(emptyDeviceFeatures)); 5327 5328 // Only non-core extensions will be used when creating the device. 5329 vector<const char*> coreExtensions; 5330 getCoreDeviceExtensions(context.getUsedApiVersion(), coreExtensions); 5331 vector<string> nonCoreExtensions(removeExtensions(context.getDeviceExtensions(), coreExtensions)); 5332 5333 vector<const char*> extensionNames; 5334 extensionNames.reserve(nonCoreExtensions.size()); 5335 for (const string& extension : nonCoreExtensions) 5336 extensionNames.push_back(extension.c_str()); 5337 5338 if (const void* featuresStruct = findStructureInChain(const_cast<const void*>(deviceFeatures2.pNext), getStructureType<VkPhysicalDevicePipelineProtectedAccessFeaturesEXT>())) 5339 { 5340 static const Feature features[] = 5341 { 5342 FEATURE_ITEM (VkPhysicalDevicePipelineProtectedAccessFeaturesEXT, pipelineProtectedAccess), 5343 }; 5344 auto* supportedFeatures = reinterpret_cast<const VkPhysicalDevicePipelineProtectedAccessFeaturesEXT*>(featuresStruct); 5345 checkFeatures(vkp, instance, instanceDriver, physicalDevice, 1, features, supportedFeatures, queueFamilyIndex, queueCount, queuePriority, numErrors, resultCollector, &extensionNames, emptyDeviceFeatures, isSubProcess); 5346 } 5347 5348 if (numErrors > 0) 5349 return tcu::TestStatus(resultCollector.getResult(), "Enabling unsupported features didn't return VK_ERROR_FEATURE_NOT_PRESENT."); 5350 else 5351 return tcu::TestStatus(resultCollector.getResult(), resultCollector.getMessage()); 5352} 5353 5354 5355tcu::TestStatus createDeviceWithUnsupportedFeaturesTestInheritedViewportScissorFeaturesNV (Context& context) 5356{ 5357 const PlatformInterface& vkp = context.getPlatformInterface(); 5358 tcu::TestLog& log = context.getTestContext().getLog(); 5359 tcu::ResultCollector resultCollector (log); 5360 const CustomInstance instance (createCustomInstanceWithExtensions(context, context.getInstanceExtensions(), DE_NULL, true)); 5361 const InstanceDriver& instanceDriver (instance.getDriver()); 5362 const VkPhysicalDevice physicalDevice = chooseDevice(instanceDriver, instance, context.getTestContext().getCommandLine()); 5363 const deUint32 queueFamilyIndex = 0; 5364 const deUint32 queueCount = 1; 5365 const float queuePriority = 1.0f; 5366 const DeviceFeatures deviceFeaturesAll (context.getInstanceInterface(), context.getUsedApiVersion(), physicalDevice, context.getInstanceExtensions(), context.getDeviceExtensions(), DE_TRUE); 5367 const VkPhysicalDeviceFeatures2 deviceFeatures2 = deviceFeaturesAll.getCoreFeatures2(); 5368 int numErrors = 0; 5369 bool isSubProcess = context.getTestContext().getCommandLine().isSubProcess(); 5370 5371 5372 VkPhysicalDeviceFeatures emptyDeviceFeatures; 5373 deMemset(&emptyDeviceFeatures, 0, sizeof(emptyDeviceFeatures)); 5374 5375 // Only non-core extensions will be used when creating the device. 5376 vector<const char*> coreExtensions; 5377 getCoreDeviceExtensions(context.getUsedApiVersion(), coreExtensions); 5378 vector<string> nonCoreExtensions(removeExtensions(context.getDeviceExtensions(), coreExtensions)); 5379 5380 vector<const char*> extensionNames; 5381 extensionNames.reserve(nonCoreExtensions.size()); 5382 for (const string& extension : nonCoreExtensions) 5383 extensionNames.push_back(extension.c_str()); 5384 5385 if (const void* featuresStruct = findStructureInChain(const_cast<const void*>(deviceFeatures2.pNext), getStructureType<VkPhysicalDeviceInheritedViewportScissorFeaturesNV>())) 5386 { 5387 static const Feature features[] = 5388 { 5389 FEATURE_ITEM (VkPhysicalDeviceInheritedViewportScissorFeaturesNV, inheritedViewportScissor2D), 5390 }; 5391 auto* supportedFeatures = reinterpret_cast<const VkPhysicalDeviceInheritedViewportScissorFeaturesNV*>(featuresStruct); 5392 checkFeatures(vkp, instance, instanceDriver, physicalDevice, 1, features, supportedFeatures, queueFamilyIndex, queueCount, queuePriority, numErrors, resultCollector, &extensionNames, emptyDeviceFeatures, isSubProcess); 5393 } 5394 5395 if (numErrors > 0) 5396 return tcu::TestStatus(resultCollector.getResult(), "Enabling unsupported features didn't return VK_ERROR_FEATURE_NOT_PRESENT."); 5397 else 5398 return tcu::TestStatus(resultCollector.getResult(), resultCollector.getMessage()); 5399} 5400 5401 5402tcu::TestStatus createDeviceWithUnsupportedFeaturesTestYcbcr2Plane444FormatsFeaturesEXT (Context& context) 5403{ 5404 const PlatformInterface& vkp = context.getPlatformInterface(); 5405 tcu::TestLog& log = context.getTestContext().getLog(); 5406 tcu::ResultCollector resultCollector (log); 5407 const CustomInstance instance (createCustomInstanceWithExtensions(context, context.getInstanceExtensions(), DE_NULL, true)); 5408 const InstanceDriver& instanceDriver (instance.getDriver()); 5409 const VkPhysicalDevice physicalDevice = chooseDevice(instanceDriver, instance, context.getTestContext().getCommandLine()); 5410 const deUint32 queueFamilyIndex = 0; 5411 const deUint32 queueCount = 1; 5412 const float queuePriority = 1.0f; 5413 const DeviceFeatures deviceFeaturesAll (context.getInstanceInterface(), context.getUsedApiVersion(), physicalDevice, context.getInstanceExtensions(), context.getDeviceExtensions(), DE_TRUE); 5414 const VkPhysicalDeviceFeatures2 deviceFeatures2 = deviceFeaturesAll.getCoreFeatures2(); 5415 int numErrors = 0; 5416 bool isSubProcess = context.getTestContext().getCommandLine().isSubProcess(); 5417 5418 5419 VkPhysicalDeviceFeatures emptyDeviceFeatures; 5420 deMemset(&emptyDeviceFeatures, 0, sizeof(emptyDeviceFeatures)); 5421 5422 // Only non-core extensions will be used when creating the device. 5423 vector<const char*> coreExtensions; 5424 getCoreDeviceExtensions(context.getUsedApiVersion(), coreExtensions); 5425 vector<string> nonCoreExtensions(removeExtensions(context.getDeviceExtensions(), coreExtensions)); 5426 5427 vector<const char*> extensionNames; 5428 extensionNames.reserve(nonCoreExtensions.size()); 5429 for (const string& extension : nonCoreExtensions) 5430 extensionNames.push_back(extension.c_str()); 5431 5432 if (const void* featuresStruct = findStructureInChain(const_cast<const void*>(deviceFeatures2.pNext), getStructureType<VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT>())) 5433 { 5434 static const Feature features[] = 5435 { 5436 FEATURE_ITEM (VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT, ycbcr2plane444Formats), 5437 }; 5438 auto* supportedFeatures = reinterpret_cast<const VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT*>(featuresStruct); 5439 checkFeatures(vkp, instance, instanceDriver, physicalDevice, 1, features, supportedFeatures, queueFamilyIndex, queueCount, queuePriority, numErrors, resultCollector, &extensionNames, emptyDeviceFeatures, isSubProcess); 5440 } 5441 5442 if (numErrors > 0) 5443 return tcu::TestStatus(resultCollector.getResult(), "Enabling unsupported features didn't return VK_ERROR_FEATURE_NOT_PRESENT."); 5444 else 5445 return tcu::TestStatus(resultCollector.getResult(), resultCollector.getMessage()); 5446} 5447 5448 5449tcu::TestStatus createDeviceWithUnsupportedFeaturesTestProvokingVertexFeaturesEXT (Context& context) 5450{ 5451 const PlatformInterface& vkp = context.getPlatformInterface(); 5452 tcu::TestLog& log = context.getTestContext().getLog(); 5453 tcu::ResultCollector resultCollector (log); 5454 const CustomInstance instance (createCustomInstanceWithExtensions(context, context.getInstanceExtensions(), DE_NULL, true)); 5455 const InstanceDriver& instanceDriver (instance.getDriver()); 5456 const VkPhysicalDevice physicalDevice = chooseDevice(instanceDriver, instance, context.getTestContext().getCommandLine()); 5457 const deUint32 queueFamilyIndex = 0; 5458 const deUint32 queueCount = 1; 5459 const float queuePriority = 1.0f; 5460 const DeviceFeatures deviceFeaturesAll (context.getInstanceInterface(), context.getUsedApiVersion(), physicalDevice, context.getInstanceExtensions(), context.getDeviceExtensions(), DE_TRUE); 5461 const VkPhysicalDeviceFeatures2 deviceFeatures2 = deviceFeaturesAll.getCoreFeatures2(); 5462 int numErrors = 0; 5463 bool isSubProcess = context.getTestContext().getCommandLine().isSubProcess(); 5464 5465 5466 VkPhysicalDeviceFeatures emptyDeviceFeatures; 5467 deMemset(&emptyDeviceFeatures, 0, sizeof(emptyDeviceFeatures)); 5468 5469 // Only non-core extensions will be used when creating the device. 5470 vector<const char*> coreExtensions; 5471 getCoreDeviceExtensions(context.getUsedApiVersion(), coreExtensions); 5472 vector<string> nonCoreExtensions(removeExtensions(context.getDeviceExtensions(), coreExtensions)); 5473 5474 vector<const char*> extensionNames; 5475 extensionNames.reserve(nonCoreExtensions.size()); 5476 for (const string& extension : nonCoreExtensions) 5477 extensionNames.push_back(extension.c_str()); 5478 5479 if (const void* featuresStruct = findStructureInChain(const_cast<const void*>(deviceFeatures2.pNext), getStructureType<VkPhysicalDeviceProvokingVertexFeaturesEXT>())) 5480 { 5481 static const Feature features[] = 5482 { 5483 FEATURE_ITEM (VkPhysicalDeviceProvokingVertexFeaturesEXT, provokingVertexLast), 5484 FEATURE_ITEM (VkPhysicalDeviceProvokingVertexFeaturesEXT, transformFeedbackPreservesProvokingVertex), 5485 }; 5486 auto* supportedFeatures = reinterpret_cast<const VkPhysicalDeviceProvokingVertexFeaturesEXT*>(featuresStruct); 5487 checkFeatures(vkp, instance, instanceDriver, physicalDevice, 2, features, supportedFeatures, queueFamilyIndex, queueCount, queuePriority, numErrors, resultCollector, &extensionNames, emptyDeviceFeatures, isSubProcess); 5488 } 5489 5490 if (numErrors > 0) 5491 return tcu::TestStatus(resultCollector.getResult(), "Enabling unsupported features didn't return VK_ERROR_FEATURE_NOT_PRESENT."); 5492 else 5493 return tcu::TestStatus(resultCollector.getResult(), resultCollector.getMessage()); 5494} 5495 5496 5497tcu::TestStatus createDeviceWithUnsupportedFeaturesTestDescriptorBufferFeaturesEXT (Context& context) 5498{ 5499 const PlatformInterface& vkp = context.getPlatformInterface(); 5500 tcu::TestLog& log = context.getTestContext().getLog(); 5501 tcu::ResultCollector resultCollector (log); 5502 const CustomInstance instance (createCustomInstanceWithExtensions(context, context.getInstanceExtensions(), DE_NULL, true)); 5503 const InstanceDriver& instanceDriver (instance.getDriver()); 5504 const VkPhysicalDevice physicalDevice = chooseDevice(instanceDriver, instance, context.getTestContext().getCommandLine()); 5505 const deUint32 queueFamilyIndex = 0; 5506 const deUint32 queueCount = 1; 5507 const float queuePriority = 1.0f; 5508 const DeviceFeatures deviceFeaturesAll (context.getInstanceInterface(), context.getUsedApiVersion(), physicalDevice, context.getInstanceExtensions(), context.getDeviceExtensions(), DE_TRUE); 5509 const VkPhysicalDeviceFeatures2 deviceFeatures2 = deviceFeaturesAll.getCoreFeatures2(); 5510 int numErrors = 0; 5511 bool isSubProcess = context.getTestContext().getCommandLine().isSubProcess(); 5512 5513 5514 VkPhysicalDeviceFeatures emptyDeviceFeatures; 5515 deMemset(&emptyDeviceFeatures, 0, sizeof(emptyDeviceFeatures)); 5516 5517 // Only non-core extensions will be used when creating the device. 5518 vector<const char*> coreExtensions; 5519 getCoreDeviceExtensions(context.getUsedApiVersion(), coreExtensions); 5520 vector<string> nonCoreExtensions(removeExtensions(context.getDeviceExtensions(), coreExtensions)); 5521 5522 vector<const char*> extensionNames; 5523 extensionNames.reserve(nonCoreExtensions.size()); 5524 for (const string& extension : nonCoreExtensions) 5525 extensionNames.push_back(extension.c_str()); 5526 5527 if (const void* featuresStruct = findStructureInChain(const_cast<const void*>(deviceFeatures2.pNext), getStructureType<VkPhysicalDeviceDescriptorBufferFeaturesEXT>())) 5528 { 5529 static const Feature features[] = 5530 { 5531 FEATURE_ITEM (VkPhysicalDeviceDescriptorBufferFeaturesEXT, descriptorBuffer), 5532 FEATURE_ITEM (VkPhysicalDeviceDescriptorBufferFeaturesEXT, descriptorBufferCaptureReplay), 5533 FEATURE_ITEM (VkPhysicalDeviceDescriptorBufferFeaturesEXT, descriptorBufferImageLayoutIgnored), 5534 FEATURE_ITEM (VkPhysicalDeviceDescriptorBufferFeaturesEXT, descriptorBufferPushDescriptors), 5535 }; 5536 auto* supportedFeatures = reinterpret_cast<const VkPhysicalDeviceDescriptorBufferFeaturesEXT*>(featuresStruct); 5537 checkFeatures(vkp, instance, instanceDriver, physicalDevice, 4, features, supportedFeatures, queueFamilyIndex, queueCount, queuePriority, numErrors, resultCollector, &extensionNames, emptyDeviceFeatures, isSubProcess); 5538 } 5539 5540 if (numErrors > 0) 5541 return tcu::TestStatus(resultCollector.getResult(), "Enabling unsupported features didn't return VK_ERROR_FEATURE_NOT_PRESENT."); 5542 else 5543 return tcu::TestStatus(resultCollector.getResult(), resultCollector.getMessage()); 5544} 5545 5546 5547tcu::TestStatus createDeviceWithUnsupportedFeaturesTestShaderIntegerDotProductFeatures (Context& context) 5548{ 5549 const PlatformInterface& vkp = context.getPlatformInterface(); 5550 tcu::TestLog& log = context.getTestContext().getLog(); 5551 tcu::ResultCollector resultCollector (log); 5552 const CustomInstance instance (createCustomInstanceWithExtensions(context, context.getInstanceExtensions(), DE_NULL, true)); 5553 const InstanceDriver& instanceDriver (instance.getDriver()); 5554 const VkPhysicalDevice physicalDevice = chooseDevice(instanceDriver, instance, context.getTestContext().getCommandLine()); 5555 const deUint32 queueFamilyIndex = 0; 5556 const deUint32 queueCount = 1; 5557 const float queuePriority = 1.0f; 5558 const DeviceFeatures deviceFeaturesAll (context.getInstanceInterface(), context.getUsedApiVersion(), physicalDevice, context.getInstanceExtensions(), context.getDeviceExtensions(), DE_TRUE); 5559 const VkPhysicalDeviceFeatures2 deviceFeatures2 = deviceFeaturesAll.getCoreFeatures2(); 5560 int numErrors = 0; 5561 bool isSubProcess = context.getTestContext().getCommandLine().isSubProcess(); 5562 5563 5564 VkPhysicalDeviceFeatures emptyDeviceFeatures; 5565 deMemset(&emptyDeviceFeatures, 0, sizeof(emptyDeviceFeatures)); 5566 5567 // Only non-core extensions will be used when creating the device. 5568 vector<const char*> coreExtensions; 5569 getCoreDeviceExtensions(context.getUsedApiVersion(), coreExtensions); 5570 vector<string> nonCoreExtensions(removeExtensions(context.getDeviceExtensions(), coreExtensions)); 5571 5572 vector<const char*> extensionNames; 5573 extensionNames.reserve(nonCoreExtensions.size()); 5574 for (const string& extension : nonCoreExtensions) 5575 extensionNames.push_back(extension.c_str()); 5576 5577 if (const void* featuresStruct = findStructureInChain(const_cast<const void*>(deviceFeatures2.pNext), getStructureType<VkPhysicalDeviceShaderIntegerDotProductFeatures>())) 5578 { 5579 static const Feature features[] = 5580 { 5581 FEATURE_ITEM (VkPhysicalDeviceShaderIntegerDotProductFeatures, shaderIntegerDotProduct), 5582 }; 5583 auto* supportedFeatures = reinterpret_cast<const VkPhysicalDeviceShaderIntegerDotProductFeatures*>(featuresStruct); 5584 checkFeatures(vkp, instance, instanceDriver, physicalDevice, 1, features, supportedFeatures, queueFamilyIndex, queueCount, queuePriority, numErrors, resultCollector, &extensionNames, emptyDeviceFeatures, isSubProcess); 5585 } 5586 5587 if (numErrors > 0) 5588 return tcu::TestStatus(resultCollector.getResult(), "Enabling unsupported features didn't return VK_ERROR_FEATURE_NOT_PRESENT."); 5589 else 5590 return tcu::TestStatus(resultCollector.getResult(), resultCollector.getMessage()); 5591} 5592 5593 5594tcu::TestStatus createDeviceWithUnsupportedFeaturesTestFragmentShaderBarycentricFeaturesKHR (Context& context) 5595{ 5596 const PlatformInterface& vkp = context.getPlatformInterface(); 5597 tcu::TestLog& log = context.getTestContext().getLog(); 5598 tcu::ResultCollector resultCollector (log); 5599 const CustomInstance instance (createCustomInstanceWithExtensions(context, context.getInstanceExtensions(), DE_NULL, true)); 5600 const InstanceDriver& instanceDriver (instance.getDriver()); 5601 const VkPhysicalDevice physicalDevice = chooseDevice(instanceDriver, instance, context.getTestContext().getCommandLine()); 5602 const deUint32 queueFamilyIndex = 0; 5603 const deUint32 queueCount = 1; 5604 const float queuePriority = 1.0f; 5605 const DeviceFeatures deviceFeaturesAll (context.getInstanceInterface(), context.getUsedApiVersion(), physicalDevice, context.getInstanceExtensions(), context.getDeviceExtensions(), DE_TRUE); 5606 const VkPhysicalDeviceFeatures2 deviceFeatures2 = deviceFeaturesAll.getCoreFeatures2(); 5607 int numErrors = 0; 5608 bool isSubProcess = context.getTestContext().getCommandLine().isSubProcess(); 5609 5610 5611 VkPhysicalDeviceFeatures emptyDeviceFeatures; 5612 deMemset(&emptyDeviceFeatures, 0, sizeof(emptyDeviceFeatures)); 5613 5614 // Only non-core extensions will be used when creating the device. 5615 vector<const char*> coreExtensions; 5616 getCoreDeviceExtensions(context.getUsedApiVersion(), coreExtensions); 5617 vector<string> nonCoreExtensions(removeExtensions(context.getDeviceExtensions(), coreExtensions)); 5618 5619 vector<const char*> extensionNames; 5620 extensionNames.reserve(nonCoreExtensions.size()); 5621 for (const string& extension : nonCoreExtensions) 5622 extensionNames.push_back(extension.c_str()); 5623 5624 if (const void* featuresStruct = findStructureInChain(const_cast<const void*>(deviceFeatures2.pNext), getStructureType<VkPhysicalDeviceFragmentShaderBarycentricFeaturesKHR>())) 5625 { 5626 static const Feature features[] = 5627 { 5628 FEATURE_ITEM (VkPhysicalDeviceFragmentShaderBarycentricFeaturesKHR, fragmentShaderBarycentric), 5629 }; 5630 auto* supportedFeatures = reinterpret_cast<const VkPhysicalDeviceFragmentShaderBarycentricFeaturesKHR*>(featuresStruct); 5631 checkFeatures(vkp, instance, instanceDriver, physicalDevice, 1, features, supportedFeatures, queueFamilyIndex, queueCount, queuePriority, numErrors, resultCollector, &extensionNames, emptyDeviceFeatures, isSubProcess); 5632 } 5633 5634 if (numErrors > 0) 5635 return tcu::TestStatus(resultCollector.getResult(), "Enabling unsupported features didn't return VK_ERROR_FEATURE_NOT_PRESENT."); 5636 else 5637 return tcu::TestStatus(resultCollector.getResult(), resultCollector.getMessage()); 5638} 5639 5640 5641tcu::TestStatus createDeviceWithUnsupportedFeaturesTestRayTracingMotionBlurFeaturesNV (Context& context) 5642{ 5643 const PlatformInterface& vkp = context.getPlatformInterface(); 5644 tcu::TestLog& log = context.getTestContext().getLog(); 5645 tcu::ResultCollector resultCollector (log); 5646 const CustomInstance instance (createCustomInstanceWithExtensions(context, context.getInstanceExtensions(), DE_NULL, true)); 5647 const InstanceDriver& instanceDriver (instance.getDriver()); 5648 const VkPhysicalDevice physicalDevice = chooseDevice(instanceDriver, instance, context.getTestContext().getCommandLine()); 5649 const deUint32 queueFamilyIndex = 0; 5650 const deUint32 queueCount = 1; 5651 const float queuePriority = 1.0f; 5652 const DeviceFeatures deviceFeaturesAll (context.getInstanceInterface(), context.getUsedApiVersion(), physicalDevice, context.getInstanceExtensions(), context.getDeviceExtensions(), DE_TRUE); 5653 const VkPhysicalDeviceFeatures2 deviceFeatures2 = deviceFeaturesAll.getCoreFeatures2(); 5654 int numErrors = 0; 5655 bool isSubProcess = context.getTestContext().getCommandLine().isSubProcess(); 5656 5657 5658 VkPhysicalDeviceFeatures emptyDeviceFeatures; 5659 deMemset(&emptyDeviceFeatures, 0, sizeof(emptyDeviceFeatures)); 5660 5661 // Only non-core extensions will be used when creating the device. 5662 vector<const char*> coreExtensions; 5663 getCoreDeviceExtensions(context.getUsedApiVersion(), coreExtensions); 5664 vector<string> nonCoreExtensions(removeExtensions(context.getDeviceExtensions(), coreExtensions)); 5665 5666 vector<const char*> extensionNames; 5667 extensionNames.reserve(nonCoreExtensions.size()); 5668 for (const string& extension : nonCoreExtensions) 5669 extensionNames.push_back(extension.c_str()); 5670 5671 if (const void* featuresStruct = findStructureInChain(const_cast<const void*>(deviceFeatures2.pNext), getStructureType<VkPhysicalDeviceRayTracingMotionBlurFeaturesNV>())) 5672 { 5673 static const Feature features[] = 5674 { 5675 FEATURE_ITEM (VkPhysicalDeviceRayTracingMotionBlurFeaturesNV, rayTracingMotionBlur), 5676 FEATURE_ITEM (VkPhysicalDeviceRayTracingMotionBlurFeaturesNV, rayTracingMotionBlurPipelineTraceRaysIndirect), 5677 }; 5678 auto* supportedFeatures = reinterpret_cast<const VkPhysicalDeviceRayTracingMotionBlurFeaturesNV*>(featuresStruct); 5679 checkFeatures(vkp, instance, instanceDriver, physicalDevice, 2, features, supportedFeatures, queueFamilyIndex, queueCount, queuePriority, numErrors, resultCollector, &extensionNames, emptyDeviceFeatures, isSubProcess); 5680 } 5681 5682 if (numErrors > 0) 5683 return tcu::TestStatus(resultCollector.getResult(), "Enabling unsupported features didn't return VK_ERROR_FEATURE_NOT_PRESENT."); 5684 else 5685 return tcu::TestStatus(resultCollector.getResult(), resultCollector.getMessage()); 5686} 5687 5688 5689tcu::TestStatus createDeviceWithUnsupportedFeaturesTestRGBA10X6FormatsFeaturesEXT (Context& context) 5690{ 5691 const PlatformInterface& vkp = context.getPlatformInterface(); 5692 tcu::TestLog& log = context.getTestContext().getLog(); 5693 tcu::ResultCollector resultCollector (log); 5694 const CustomInstance instance (createCustomInstanceWithExtensions(context, context.getInstanceExtensions(), DE_NULL, true)); 5695 const InstanceDriver& instanceDriver (instance.getDriver()); 5696 const VkPhysicalDevice physicalDevice = chooseDevice(instanceDriver, instance, context.getTestContext().getCommandLine()); 5697 const deUint32 queueFamilyIndex = 0; 5698 const deUint32 queueCount = 1; 5699 const float queuePriority = 1.0f; 5700 const DeviceFeatures deviceFeaturesAll (context.getInstanceInterface(), context.getUsedApiVersion(), physicalDevice, context.getInstanceExtensions(), context.getDeviceExtensions(), DE_TRUE); 5701 const VkPhysicalDeviceFeatures2 deviceFeatures2 = deviceFeaturesAll.getCoreFeatures2(); 5702 int numErrors = 0; 5703 bool isSubProcess = context.getTestContext().getCommandLine().isSubProcess(); 5704 5705 5706 VkPhysicalDeviceFeatures emptyDeviceFeatures; 5707 deMemset(&emptyDeviceFeatures, 0, sizeof(emptyDeviceFeatures)); 5708 5709 // Only non-core extensions will be used when creating the device. 5710 vector<const char*> coreExtensions; 5711 getCoreDeviceExtensions(context.getUsedApiVersion(), coreExtensions); 5712 vector<string> nonCoreExtensions(removeExtensions(context.getDeviceExtensions(), coreExtensions)); 5713 5714 vector<const char*> extensionNames; 5715 extensionNames.reserve(nonCoreExtensions.size()); 5716 for (const string& extension : nonCoreExtensions) 5717 extensionNames.push_back(extension.c_str()); 5718 5719 if (const void* featuresStruct = findStructureInChain(const_cast<const void*>(deviceFeatures2.pNext), getStructureType<VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT>())) 5720 { 5721 static const Feature features[] = 5722 { 5723 FEATURE_ITEM (VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT, formatRgba10x6WithoutYCbCrSampler), 5724 }; 5725 auto* supportedFeatures = reinterpret_cast<const VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT*>(featuresStruct); 5726 checkFeatures(vkp, instance, instanceDriver, physicalDevice, 1, features, supportedFeatures, queueFamilyIndex, queueCount, queuePriority, numErrors, resultCollector, &extensionNames, emptyDeviceFeatures, isSubProcess); 5727 } 5728 5729 if (numErrors > 0) 5730 return tcu::TestStatus(resultCollector.getResult(), "Enabling unsupported features didn't return VK_ERROR_FEATURE_NOT_PRESENT."); 5731 else 5732 return tcu::TestStatus(resultCollector.getResult(), resultCollector.getMessage()); 5733} 5734 5735 5736tcu::TestStatus createDeviceWithUnsupportedFeaturesTestDynamicRenderingFeatures (Context& context) 5737{ 5738 const PlatformInterface& vkp = context.getPlatformInterface(); 5739 tcu::TestLog& log = context.getTestContext().getLog(); 5740 tcu::ResultCollector resultCollector (log); 5741 const CustomInstance instance (createCustomInstanceWithExtensions(context, context.getInstanceExtensions(), DE_NULL, true)); 5742 const InstanceDriver& instanceDriver (instance.getDriver()); 5743 const VkPhysicalDevice physicalDevice = chooseDevice(instanceDriver, instance, context.getTestContext().getCommandLine()); 5744 const deUint32 queueFamilyIndex = 0; 5745 const deUint32 queueCount = 1; 5746 const float queuePriority = 1.0f; 5747 const DeviceFeatures deviceFeaturesAll (context.getInstanceInterface(), context.getUsedApiVersion(), physicalDevice, context.getInstanceExtensions(), context.getDeviceExtensions(), DE_TRUE); 5748 const VkPhysicalDeviceFeatures2 deviceFeatures2 = deviceFeaturesAll.getCoreFeatures2(); 5749 int numErrors = 0; 5750 bool isSubProcess = context.getTestContext().getCommandLine().isSubProcess(); 5751 5752 5753 VkPhysicalDeviceFeatures emptyDeviceFeatures; 5754 deMemset(&emptyDeviceFeatures, 0, sizeof(emptyDeviceFeatures)); 5755 5756 // Only non-core extensions will be used when creating the device. 5757 vector<const char*> coreExtensions; 5758 getCoreDeviceExtensions(context.getUsedApiVersion(), coreExtensions); 5759 vector<string> nonCoreExtensions(removeExtensions(context.getDeviceExtensions(), coreExtensions)); 5760 5761 vector<const char*> extensionNames; 5762 extensionNames.reserve(nonCoreExtensions.size()); 5763 for (const string& extension : nonCoreExtensions) 5764 extensionNames.push_back(extension.c_str()); 5765 5766 if (const void* featuresStruct = findStructureInChain(const_cast<const void*>(deviceFeatures2.pNext), getStructureType<VkPhysicalDeviceDynamicRenderingFeatures>())) 5767 { 5768 static const Feature features[] = 5769 { 5770 FEATURE_ITEM (VkPhysicalDeviceDynamicRenderingFeatures, dynamicRendering), 5771 }; 5772 auto* supportedFeatures = reinterpret_cast<const VkPhysicalDeviceDynamicRenderingFeatures*>(featuresStruct); 5773 checkFeatures(vkp, instance, instanceDriver, physicalDevice, 1, features, supportedFeatures, queueFamilyIndex, queueCount, queuePriority, numErrors, resultCollector, &extensionNames, emptyDeviceFeatures, isSubProcess); 5774 } 5775 5776 if (numErrors > 0) 5777 return tcu::TestStatus(resultCollector.getResult(), "Enabling unsupported features didn't return VK_ERROR_FEATURE_NOT_PRESENT."); 5778 else 5779 return tcu::TestStatus(resultCollector.getResult(), resultCollector.getMessage()); 5780} 5781 5782 5783tcu::TestStatus createDeviceWithUnsupportedFeaturesTestImageViewMinLodFeaturesEXT (Context& context) 5784{ 5785 const PlatformInterface& vkp = context.getPlatformInterface(); 5786 tcu::TestLog& log = context.getTestContext().getLog(); 5787 tcu::ResultCollector resultCollector (log); 5788 const CustomInstance instance (createCustomInstanceWithExtensions(context, context.getInstanceExtensions(), DE_NULL, true)); 5789 const InstanceDriver& instanceDriver (instance.getDriver()); 5790 const VkPhysicalDevice physicalDevice = chooseDevice(instanceDriver, instance, context.getTestContext().getCommandLine()); 5791 const deUint32 queueFamilyIndex = 0; 5792 const deUint32 queueCount = 1; 5793 const float queuePriority = 1.0f; 5794 const DeviceFeatures deviceFeaturesAll (context.getInstanceInterface(), context.getUsedApiVersion(), physicalDevice, context.getInstanceExtensions(), context.getDeviceExtensions(), DE_TRUE); 5795 const VkPhysicalDeviceFeatures2 deviceFeatures2 = deviceFeaturesAll.getCoreFeatures2(); 5796 int numErrors = 0; 5797 bool isSubProcess = context.getTestContext().getCommandLine().isSubProcess(); 5798 5799 5800 VkPhysicalDeviceFeatures emptyDeviceFeatures; 5801 deMemset(&emptyDeviceFeatures, 0, sizeof(emptyDeviceFeatures)); 5802 5803 // Only non-core extensions will be used when creating the device. 5804 vector<const char*> coreExtensions; 5805 getCoreDeviceExtensions(context.getUsedApiVersion(), coreExtensions); 5806 vector<string> nonCoreExtensions(removeExtensions(context.getDeviceExtensions(), coreExtensions)); 5807 5808 vector<const char*> extensionNames; 5809 extensionNames.reserve(nonCoreExtensions.size()); 5810 for (const string& extension : nonCoreExtensions) 5811 extensionNames.push_back(extension.c_str()); 5812 5813 if (const void* featuresStruct = findStructureInChain(const_cast<const void*>(deviceFeatures2.pNext), getStructureType<VkPhysicalDeviceImageViewMinLodFeaturesEXT>())) 5814 { 5815 static const Feature features[] = 5816 { 5817 FEATURE_ITEM (VkPhysicalDeviceImageViewMinLodFeaturesEXT, minLod), 5818 }; 5819 auto* supportedFeatures = reinterpret_cast<const VkPhysicalDeviceImageViewMinLodFeaturesEXT*>(featuresStruct); 5820 checkFeatures(vkp, instance, instanceDriver, physicalDevice, 1, features, supportedFeatures, queueFamilyIndex, queueCount, queuePriority, numErrors, resultCollector, &extensionNames, emptyDeviceFeatures, isSubProcess); 5821 } 5822 5823 if (numErrors > 0) 5824 return tcu::TestStatus(resultCollector.getResult(), "Enabling unsupported features didn't return VK_ERROR_FEATURE_NOT_PRESENT."); 5825 else 5826 return tcu::TestStatus(resultCollector.getResult(), resultCollector.getMessage()); 5827} 5828 5829 5830tcu::TestStatus createDeviceWithUnsupportedFeaturesTestRasterizationOrderAttachmentAccessFeaturesEXT (Context& context) 5831{ 5832 const PlatformInterface& vkp = context.getPlatformInterface(); 5833 tcu::TestLog& log = context.getTestContext().getLog(); 5834 tcu::ResultCollector resultCollector (log); 5835 const CustomInstance instance (createCustomInstanceWithExtensions(context, context.getInstanceExtensions(), DE_NULL, true)); 5836 const InstanceDriver& instanceDriver (instance.getDriver()); 5837 const VkPhysicalDevice physicalDevice = chooseDevice(instanceDriver, instance, context.getTestContext().getCommandLine()); 5838 const deUint32 queueFamilyIndex = 0; 5839 const deUint32 queueCount = 1; 5840 const float queuePriority = 1.0f; 5841 const DeviceFeatures deviceFeaturesAll (context.getInstanceInterface(), context.getUsedApiVersion(), physicalDevice, context.getInstanceExtensions(), context.getDeviceExtensions(), DE_TRUE); 5842 const VkPhysicalDeviceFeatures2 deviceFeatures2 = deviceFeaturesAll.getCoreFeatures2(); 5843 int numErrors = 0; 5844 bool isSubProcess = context.getTestContext().getCommandLine().isSubProcess(); 5845 5846 5847 VkPhysicalDeviceFeatures emptyDeviceFeatures; 5848 deMemset(&emptyDeviceFeatures, 0, sizeof(emptyDeviceFeatures)); 5849 5850 // Only non-core extensions will be used when creating the device. 5851 vector<const char*> coreExtensions; 5852 getCoreDeviceExtensions(context.getUsedApiVersion(), coreExtensions); 5853 vector<string> nonCoreExtensions(removeExtensions(context.getDeviceExtensions(), coreExtensions)); 5854 5855 vector<const char*> extensionNames; 5856 extensionNames.reserve(nonCoreExtensions.size()); 5857 for (const string& extension : nonCoreExtensions) 5858 extensionNames.push_back(extension.c_str()); 5859 5860 if (const void* featuresStruct = findStructureInChain(const_cast<const void*>(deviceFeatures2.pNext), getStructureType<VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT>())) 5861 { 5862 static const Feature features[] = 5863 { 5864 FEATURE_ITEM (VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT, rasterizationOrderColorAttachmentAccess), 5865 FEATURE_ITEM (VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT, rasterizationOrderDepthAttachmentAccess), 5866 FEATURE_ITEM (VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT, rasterizationOrderStencilAttachmentAccess), 5867 }; 5868 auto* supportedFeatures = reinterpret_cast<const VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT*>(featuresStruct); 5869 checkFeatures(vkp, instance, instanceDriver, physicalDevice, 3, features, supportedFeatures, queueFamilyIndex, queueCount, queuePriority, numErrors, resultCollector, &extensionNames, emptyDeviceFeatures, isSubProcess); 5870 } 5871 5872 if (numErrors > 0) 5873 return tcu::TestStatus(resultCollector.getResult(), "Enabling unsupported features didn't return VK_ERROR_FEATURE_NOT_PRESENT."); 5874 else 5875 return tcu::TestStatus(resultCollector.getResult(), resultCollector.getMessage()); 5876} 5877 5878 5879tcu::TestStatus createDeviceWithUnsupportedFeaturesTestLinearColorAttachmentFeaturesNV (Context& context) 5880{ 5881 const PlatformInterface& vkp = context.getPlatformInterface(); 5882 tcu::TestLog& log = context.getTestContext().getLog(); 5883 tcu::ResultCollector resultCollector (log); 5884 const CustomInstance instance (createCustomInstanceWithExtensions(context, context.getInstanceExtensions(), DE_NULL, true)); 5885 const InstanceDriver& instanceDriver (instance.getDriver()); 5886 const VkPhysicalDevice physicalDevice = chooseDevice(instanceDriver, instance, context.getTestContext().getCommandLine()); 5887 const deUint32 queueFamilyIndex = 0; 5888 const deUint32 queueCount = 1; 5889 const float queuePriority = 1.0f; 5890 const DeviceFeatures deviceFeaturesAll (context.getInstanceInterface(), context.getUsedApiVersion(), physicalDevice, context.getInstanceExtensions(), context.getDeviceExtensions(), DE_TRUE); 5891 const VkPhysicalDeviceFeatures2 deviceFeatures2 = deviceFeaturesAll.getCoreFeatures2(); 5892 int numErrors = 0; 5893 bool isSubProcess = context.getTestContext().getCommandLine().isSubProcess(); 5894 5895 5896 VkPhysicalDeviceFeatures emptyDeviceFeatures; 5897 deMemset(&emptyDeviceFeatures, 0, sizeof(emptyDeviceFeatures)); 5898 5899 // Only non-core extensions will be used when creating the device. 5900 vector<const char*> coreExtensions; 5901 getCoreDeviceExtensions(context.getUsedApiVersion(), coreExtensions); 5902 vector<string> nonCoreExtensions(removeExtensions(context.getDeviceExtensions(), coreExtensions)); 5903 5904 vector<const char*> extensionNames; 5905 extensionNames.reserve(nonCoreExtensions.size()); 5906 for (const string& extension : nonCoreExtensions) 5907 extensionNames.push_back(extension.c_str()); 5908 5909 if (const void* featuresStruct = findStructureInChain(const_cast<const void*>(deviceFeatures2.pNext), getStructureType<VkPhysicalDeviceLinearColorAttachmentFeaturesNV>())) 5910 { 5911 static const Feature features[] = 5912 { 5913 FEATURE_ITEM (VkPhysicalDeviceLinearColorAttachmentFeaturesNV, linearColorAttachment), 5914 }; 5915 auto* supportedFeatures = reinterpret_cast<const VkPhysicalDeviceLinearColorAttachmentFeaturesNV*>(featuresStruct); 5916 checkFeatures(vkp, instance, instanceDriver, physicalDevice, 1, features, supportedFeatures, queueFamilyIndex, queueCount, queuePriority, numErrors, resultCollector, &extensionNames, emptyDeviceFeatures, isSubProcess); 5917 } 5918 5919 if (numErrors > 0) 5920 return tcu::TestStatus(resultCollector.getResult(), "Enabling unsupported features didn't return VK_ERROR_FEATURE_NOT_PRESENT."); 5921 else 5922 return tcu::TestStatus(resultCollector.getResult(), resultCollector.getMessage()); 5923} 5924 5925 5926tcu::TestStatus createDeviceWithUnsupportedFeaturesTestGraphicsPipelineLibraryFeaturesEXT (Context& context) 5927{ 5928 const PlatformInterface& vkp = context.getPlatformInterface(); 5929 tcu::TestLog& log = context.getTestContext().getLog(); 5930 tcu::ResultCollector resultCollector (log); 5931 const CustomInstance instance (createCustomInstanceWithExtensions(context, context.getInstanceExtensions(), DE_NULL, true)); 5932 const InstanceDriver& instanceDriver (instance.getDriver()); 5933 const VkPhysicalDevice physicalDevice = chooseDevice(instanceDriver, instance, context.getTestContext().getCommandLine()); 5934 const deUint32 queueFamilyIndex = 0; 5935 const deUint32 queueCount = 1; 5936 const float queuePriority = 1.0f; 5937 const DeviceFeatures deviceFeaturesAll (context.getInstanceInterface(), context.getUsedApiVersion(), physicalDevice, context.getInstanceExtensions(), context.getDeviceExtensions(), DE_TRUE); 5938 const VkPhysicalDeviceFeatures2 deviceFeatures2 = deviceFeaturesAll.getCoreFeatures2(); 5939 int numErrors = 0; 5940 bool isSubProcess = context.getTestContext().getCommandLine().isSubProcess(); 5941 5942 5943 VkPhysicalDeviceFeatures emptyDeviceFeatures; 5944 deMemset(&emptyDeviceFeatures, 0, sizeof(emptyDeviceFeatures)); 5945 5946 // Only non-core extensions will be used when creating the device. 5947 vector<const char*> coreExtensions; 5948 getCoreDeviceExtensions(context.getUsedApiVersion(), coreExtensions); 5949 vector<string> nonCoreExtensions(removeExtensions(context.getDeviceExtensions(), coreExtensions)); 5950 5951 vector<const char*> extensionNames; 5952 extensionNames.reserve(nonCoreExtensions.size()); 5953 for (const string& extension : nonCoreExtensions) 5954 extensionNames.push_back(extension.c_str()); 5955 5956 if (const void* featuresStruct = findStructureInChain(const_cast<const void*>(deviceFeatures2.pNext), getStructureType<VkPhysicalDeviceGraphicsPipelineLibraryFeaturesEXT>())) 5957 { 5958 static const Feature features[] = 5959 { 5960 FEATURE_ITEM (VkPhysicalDeviceGraphicsPipelineLibraryFeaturesEXT, graphicsPipelineLibrary), 5961 }; 5962 auto* supportedFeatures = reinterpret_cast<const VkPhysicalDeviceGraphicsPipelineLibraryFeaturesEXT*>(featuresStruct); 5963 checkFeatures(vkp, instance, instanceDriver, physicalDevice, 1, features, supportedFeatures, queueFamilyIndex, queueCount, queuePriority, numErrors, resultCollector, &extensionNames, emptyDeviceFeatures, isSubProcess); 5964 } 5965 5966 if (numErrors > 0) 5967 return tcu::TestStatus(resultCollector.getResult(), "Enabling unsupported features didn't return VK_ERROR_FEATURE_NOT_PRESENT."); 5968 else 5969 return tcu::TestStatus(resultCollector.getResult(), resultCollector.getMessage()); 5970} 5971 5972 5973tcu::TestStatus createDeviceWithUnsupportedFeaturesTestDescriptorSetHostMappingFeaturesVALVE (Context& context) 5974{ 5975 const PlatformInterface& vkp = context.getPlatformInterface(); 5976 tcu::TestLog& log = context.getTestContext().getLog(); 5977 tcu::ResultCollector resultCollector (log); 5978 const CustomInstance instance (createCustomInstanceWithExtensions(context, context.getInstanceExtensions(), DE_NULL, true)); 5979 const InstanceDriver& instanceDriver (instance.getDriver()); 5980 const VkPhysicalDevice physicalDevice = chooseDevice(instanceDriver, instance, context.getTestContext().getCommandLine()); 5981 const deUint32 queueFamilyIndex = 0; 5982 const deUint32 queueCount = 1; 5983 const float queuePriority = 1.0f; 5984 const DeviceFeatures deviceFeaturesAll (context.getInstanceInterface(), context.getUsedApiVersion(), physicalDevice, context.getInstanceExtensions(), context.getDeviceExtensions(), DE_TRUE); 5985 const VkPhysicalDeviceFeatures2 deviceFeatures2 = deviceFeaturesAll.getCoreFeatures2(); 5986 int numErrors = 0; 5987 bool isSubProcess = context.getTestContext().getCommandLine().isSubProcess(); 5988 5989 5990 VkPhysicalDeviceFeatures emptyDeviceFeatures; 5991 deMemset(&emptyDeviceFeatures, 0, sizeof(emptyDeviceFeatures)); 5992 5993 // Only non-core extensions will be used when creating the device. 5994 vector<const char*> coreExtensions; 5995 getCoreDeviceExtensions(context.getUsedApiVersion(), coreExtensions); 5996 vector<string> nonCoreExtensions(removeExtensions(context.getDeviceExtensions(), coreExtensions)); 5997 5998 vector<const char*> extensionNames; 5999 extensionNames.reserve(nonCoreExtensions.size()); 6000 for (const string& extension : nonCoreExtensions) 6001 extensionNames.push_back(extension.c_str()); 6002 6003 if (const void* featuresStruct = findStructureInChain(const_cast<const void*>(deviceFeatures2.pNext), getStructureType<VkPhysicalDeviceDescriptorSetHostMappingFeaturesVALVE>())) 6004 { 6005 static const Feature features[] = 6006 { 6007 FEATURE_ITEM (VkPhysicalDeviceDescriptorSetHostMappingFeaturesVALVE, descriptorSetHostMapping), 6008 }; 6009 auto* supportedFeatures = reinterpret_cast<const VkPhysicalDeviceDescriptorSetHostMappingFeaturesVALVE*>(featuresStruct); 6010 checkFeatures(vkp, instance, instanceDriver, physicalDevice, 1, features, supportedFeatures, queueFamilyIndex, queueCount, queuePriority, numErrors, resultCollector, &extensionNames, emptyDeviceFeatures, isSubProcess); 6011 } 6012 6013 if (numErrors > 0) 6014 return tcu::TestStatus(resultCollector.getResult(), "Enabling unsupported features didn't return VK_ERROR_FEATURE_NOT_PRESENT."); 6015 else 6016 return tcu::TestStatus(resultCollector.getResult(), resultCollector.getMessage()); 6017} 6018 6019 6020tcu::TestStatus createDeviceWithUnsupportedFeaturesTestShaderModuleIdentifierFeaturesEXT (Context& context) 6021{ 6022 const PlatformInterface& vkp = context.getPlatformInterface(); 6023 tcu::TestLog& log = context.getTestContext().getLog(); 6024 tcu::ResultCollector resultCollector (log); 6025 const CustomInstance instance (createCustomInstanceWithExtensions(context, context.getInstanceExtensions(), DE_NULL, true)); 6026 const InstanceDriver& instanceDriver (instance.getDriver()); 6027 const VkPhysicalDevice physicalDevice = chooseDevice(instanceDriver, instance, context.getTestContext().getCommandLine()); 6028 const deUint32 queueFamilyIndex = 0; 6029 const deUint32 queueCount = 1; 6030 const float queuePriority = 1.0f; 6031 const DeviceFeatures deviceFeaturesAll (context.getInstanceInterface(), context.getUsedApiVersion(), physicalDevice, context.getInstanceExtensions(), context.getDeviceExtensions(), DE_TRUE); 6032 const VkPhysicalDeviceFeatures2 deviceFeatures2 = deviceFeaturesAll.getCoreFeatures2(); 6033 int numErrors = 0; 6034 bool isSubProcess = context.getTestContext().getCommandLine().isSubProcess(); 6035 6036 6037 VkPhysicalDeviceFeatures emptyDeviceFeatures; 6038 deMemset(&emptyDeviceFeatures, 0, sizeof(emptyDeviceFeatures)); 6039 6040 // Only non-core extensions will be used when creating the device. 6041 vector<const char*> coreExtensions; 6042 getCoreDeviceExtensions(context.getUsedApiVersion(), coreExtensions); 6043 vector<string> nonCoreExtensions(removeExtensions(context.getDeviceExtensions(), coreExtensions)); 6044 6045 vector<const char*> extensionNames; 6046 extensionNames.reserve(nonCoreExtensions.size()); 6047 for (const string& extension : nonCoreExtensions) 6048 extensionNames.push_back(extension.c_str()); 6049 6050 if (const void* featuresStruct = findStructureInChain(const_cast<const void*>(deviceFeatures2.pNext), getStructureType<VkPhysicalDeviceShaderModuleIdentifierFeaturesEXT>())) 6051 { 6052 static const Feature features[] = 6053 { 6054 FEATURE_ITEM (VkPhysicalDeviceShaderModuleIdentifierFeaturesEXT, shaderModuleIdentifier), 6055 }; 6056 auto* supportedFeatures = reinterpret_cast<const VkPhysicalDeviceShaderModuleIdentifierFeaturesEXT*>(featuresStruct); 6057 checkFeatures(vkp, instance, instanceDriver, physicalDevice, 1, features, supportedFeatures, queueFamilyIndex, queueCount, queuePriority, numErrors, resultCollector, &extensionNames, emptyDeviceFeatures, isSubProcess); 6058 } 6059 6060 if (numErrors > 0) 6061 return tcu::TestStatus(resultCollector.getResult(), "Enabling unsupported features didn't return VK_ERROR_FEATURE_NOT_PRESENT."); 6062 else 6063 return tcu::TestStatus(resultCollector.getResult(), resultCollector.getMessage()); 6064} 6065 6066 6067tcu::TestStatus createDeviceWithUnsupportedFeaturesTestImageCompressionControlFeaturesEXT (Context& context) 6068{ 6069 const PlatformInterface& vkp = context.getPlatformInterface(); 6070 tcu::TestLog& log = context.getTestContext().getLog(); 6071 tcu::ResultCollector resultCollector (log); 6072 const CustomInstance instance (createCustomInstanceWithExtensions(context, context.getInstanceExtensions(), DE_NULL, true)); 6073 const InstanceDriver& instanceDriver (instance.getDriver()); 6074 const VkPhysicalDevice physicalDevice = chooseDevice(instanceDriver, instance, context.getTestContext().getCommandLine()); 6075 const deUint32 queueFamilyIndex = 0; 6076 const deUint32 queueCount = 1; 6077 const float queuePriority = 1.0f; 6078 const DeviceFeatures deviceFeaturesAll (context.getInstanceInterface(), context.getUsedApiVersion(), physicalDevice, context.getInstanceExtensions(), context.getDeviceExtensions(), DE_TRUE); 6079 const VkPhysicalDeviceFeatures2 deviceFeatures2 = deviceFeaturesAll.getCoreFeatures2(); 6080 int numErrors = 0; 6081 bool isSubProcess = context.getTestContext().getCommandLine().isSubProcess(); 6082 6083 6084 VkPhysicalDeviceFeatures emptyDeviceFeatures; 6085 deMemset(&emptyDeviceFeatures, 0, sizeof(emptyDeviceFeatures)); 6086 6087 // Only non-core extensions will be used when creating the device. 6088 vector<const char*> coreExtensions; 6089 getCoreDeviceExtensions(context.getUsedApiVersion(), coreExtensions); 6090 vector<string> nonCoreExtensions(removeExtensions(context.getDeviceExtensions(), coreExtensions)); 6091 6092 vector<const char*> extensionNames; 6093 extensionNames.reserve(nonCoreExtensions.size()); 6094 for (const string& extension : nonCoreExtensions) 6095 extensionNames.push_back(extension.c_str()); 6096 6097 if (const void* featuresStruct = findStructureInChain(const_cast<const void*>(deviceFeatures2.pNext), getStructureType<VkPhysicalDeviceImageCompressionControlFeaturesEXT>())) 6098 { 6099 static const Feature features[] = 6100 { 6101 FEATURE_ITEM (VkPhysicalDeviceImageCompressionControlFeaturesEXT, imageCompressionControl), 6102 }; 6103 auto* supportedFeatures = reinterpret_cast<const VkPhysicalDeviceImageCompressionControlFeaturesEXT*>(featuresStruct); 6104 checkFeatures(vkp, instance, instanceDriver, physicalDevice, 1, features, supportedFeatures, queueFamilyIndex, queueCount, queuePriority, numErrors, resultCollector, &extensionNames, emptyDeviceFeatures, isSubProcess); 6105 } 6106 6107 if (numErrors > 0) 6108 return tcu::TestStatus(resultCollector.getResult(), "Enabling unsupported features didn't return VK_ERROR_FEATURE_NOT_PRESENT."); 6109 else 6110 return tcu::TestStatus(resultCollector.getResult(), resultCollector.getMessage()); 6111} 6112 6113 6114tcu::TestStatus createDeviceWithUnsupportedFeaturesTestImageCompressionControlSwapchainFeaturesEXT (Context& context) 6115{ 6116 const PlatformInterface& vkp = context.getPlatformInterface(); 6117 tcu::TestLog& log = context.getTestContext().getLog(); 6118 tcu::ResultCollector resultCollector (log); 6119 const CustomInstance instance (createCustomInstanceWithExtensions(context, context.getInstanceExtensions(), DE_NULL, true)); 6120 const InstanceDriver& instanceDriver (instance.getDriver()); 6121 const VkPhysicalDevice physicalDevice = chooseDevice(instanceDriver, instance, context.getTestContext().getCommandLine()); 6122 const deUint32 queueFamilyIndex = 0; 6123 const deUint32 queueCount = 1; 6124 const float queuePriority = 1.0f; 6125 const DeviceFeatures deviceFeaturesAll (context.getInstanceInterface(), context.getUsedApiVersion(), physicalDevice, context.getInstanceExtensions(), context.getDeviceExtensions(), DE_TRUE); 6126 const VkPhysicalDeviceFeatures2 deviceFeatures2 = deviceFeaturesAll.getCoreFeatures2(); 6127 int numErrors = 0; 6128 bool isSubProcess = context.getTestContext().getCommandLine().isSubProcess(); 6129 6130 6131 VkPhysicalDeviceFeatures emptyDeviceFeatures; 6132 deMemset(&emptyDeviceFeatures, 0, sizeof(emptyDeviceFeatures)); 6133 6134 // Only non-core extensions will be used when creating the device. 6135 vector<const char*> coreExtensions; 6136 getCoreDeviceExtensions(context.getUsedApiVersion(), coreExtensions); 6137 vector<string> nonCoreExtensions(removeExtensions(context.getDeviceExtensions(), coreExtensions)); 6138 6139 vector<const char*> extensionNames; 6140 extensionNames.reserve(nonCoreExtensions.size()); 6141 for (const string& extension : nonCoreExtensions) 6142 extensionNames.push_back(extension.c_str()); 6143 6144 if (const void* featuresStruct = findStructureInChain(const_cast<const void*>(deviceFeatures2.pNext), getStructureType<VkPhysicalDeviceImageCompressionControlSwapchainFeaturesEXT>())) 6145 { 6146 static const Feature features[] = 6147 { 6148 FEATURE_ITEM (VkPhysicalDeviceImageCompressionControlSwapchainFeaturesEXT, imageCompressionControlSwapchain), 6149 }; 6150 auto* supportedFeatures = reinterpret_cast<const VkPhysicalDeviceImageCompressionControlSwapchainFeaturesEXT*>(featuresStruct); 6151 checkFeatures(vkp, instance, instanceDriver, physicalDevice, 1, features, supportedFeatures, queueFamilyIndex, queueCount, queuePriority, numErrors, resultCollector, &extensionNames, emptyDeviceFeatures, isSubProcess); 6152 } 6153 6154 if (numErrors > 0) 6155 return tcu::TestStatus(resultCollector.getResult(), "Enabling unsupported features didn't return VK_ERROR_FEATURE_NOT_PRESENT."); 6156 else 6157 return tcu::TestStatus(resultCollector.getResult(), resultCollector.getMessage()); 6158} 6159 6160 6161tcu::TestStatus createDeviceWithUnsupportedFeaturesTestSubpassMergeFeedbackFeaturesEXT (Context& context) 6162{ 6163 const PlatformInterface& vkp = context.getPlatformInterface(); 6164 tcu::TestLog& log = context.getTestContext().getLog(); 6165 tcu::ResultCollector resultCollector (log); 6166 const CustomInstance instance (createCustomInstanceWithExtensions(context, context.getInstanceExtensions(), DE_NULL, true)); 6167 const InstanceDriver& instanceDriver (instance.getDriver()); 6168 const VkPhysicalDevice physicalDevice = chooseDevice(instanceDriver, instance, context.getTestContext().getCommandLine()); 6169 const deUint32 queueFamilyIndex = 0; 6170 const deUint32 queueCount = 1; 6171 const float queuePriority = 1.0f; 6172 const DeviceFeatures deviceFeaturesAll (context.getInstanceInterface(), context.getUsedApiVersion(), physicalDevice, context.getInstanceExtensions(), context.getDeviceExtensions(), DE_TRUE); 6173 const VkPhysicalDeviceFeatures2 deviceFeatures2 = deviceFeaturesAll.getCoreFeatures2(); 6174 int numErrors = 0; 6175 bool isSubProcess = context.getTestContext().getCommandLine().isSubProcess(); 6176 6177 6178 VkPhysicalDeviceFeatures emptyDeviceFeatures; 6179 deMemset(&emptyDeviceFeatures, 0, sizeof(emptyDeviceFeatures)); 6180 6181 // Only non-core extensions will be used when creating the device. 6182 vector<const char*> coreExtensions; 6183 getCoreDeviceExtensions(context.getUsedApiVersion(), coreExtensions); 6184 vector<string> nonCoreExtensions(removeExtensions(context.getDeviceExtensions(), coreExtensions)); 6185 6186 vector<const char*> extensionNames; 6187 extensionNames.reserve(nonCoreExtensions.size()); 6188 for (const string& extension : nonCoreExtensions) 6189 extensionNames.push_back(extension.c_str()); 6190 6191 if (const void* featuresStruct = findStructureInChain(const_cast<const void*>(deviceFeatures2.pNext), getStructureType<VkPhysicalDeviceSubpassMergeFeedbackFeaturesEXT>())) 6192 { 6193 static const Feature features[] = 6194 { 6195 FEATURE_ITEM (VkPhysicalDeviceSubpassMergeFeedbackFeaturesEXT, subpassMergeFeedback), 6196 }; 6197 auto* supportedFeatures = reinterpret_cast<const VkPhysicalDeviceSubpassMergeFeedbackFeaturesEXT*>(featuresStruct); 6198 checkFeatures(vkp, instance, instanceDriver, physicalDevice, 1, features, supportedFeatures, queueFamilyIndex, queueCount, queuePriority, numErrors, resultCollector, &extensionNames, emptyDeviceFeatures, isSubProcess); 6199 } 6200 6201 if (numErrors > 0) 6202 return tcu::TestStatus(resultCollector.getResult(), "Enabling unsupported features didn't return VK_ERROR_FEATURE_NOT_PRESENT."); 6203 else 6204 return tcu::TestStatus(resultCollector.getResult(), resultCollector.getMessage()); 6205} 6206 6207 6208tcu::TestStatus createDeviceWithUnsupportedFeaturesTestOpacityMicromapFeaturesEXT (Context& context) 6209{ 6210 const PlatformInterface& vkp = context.getPlatformInterface(); 6211 tcu::TestLog& log = context.getTestContext().getLog(); 6212 tcu::ResultCollector resultCollector (log); 6213 const CustomInstance instance (createCustomInstanceWithExtensions(context, context.getInstanceExtensions(), DE_NULL, true)); 6214 const InstanceDriver& instanceDriver (instance.getDriver()); 6215 const VkPhysicalDevice physicalDevice = chooseDevice(instanceDriver, instance, context.getTestContext().getCommandLine()); 6216 const deUint32 queueFamilyIndex = 0; 6217 const deUint32 queueCount = 1; 6218 const float queuePriority = 1.0f; 6219 const DeviceFeatures deviceFeaturesAll (context.getInstanceInterface(), context.getUsedApiVersion(), physicalDevice, context.getInstanceExtensions(), context.getDeviceExtensions(), DE_TRUE); 6220 const VkPhysicalDeviceFeatures2 deviceFeatures2 = deviceFeaturesAll.getCoreFeatures2(); 6221 int numErrors = 0; 6222 bool isSubProcess = context.getTestContext().getCommandLine().isSubProcess(); 6223 6224 6225 VkPhysicalDeviceFeatures emptyDeviceFeatures; 6226 deMemset(&emptyDeviceFeatures, 0, sizeof(emptyDeviceFeatures)); 6227 6228 // Only non-core extensions will be used when creating the device. 6229 vector<const char*> coreExtensions; 6230 getCoreDeviceExtensions(context.getUsedApiVersion(), coreExtensions); 6231 vector<string> nonCoreExtensions(removeExtensions(context.getDeviceExtensions(), coreExtensions)); 6232 6233 vector<const char*> extensionNames; 6234 extensionNames.reserve(nonCoreExtensions.size()); 6235 for (const string& extension : nonCoreExtensions) 6236 extensionNames.push_back(extension.c_str()); 6237 6238 if (const void* featuresStruct = findStructureInChain(const_cast<const void*>(deviceFeatures2.pNext), getStructureType<VkPhysicalDeviceOpacityMicromapFeaturesEXT>())) 6239 { 6240 static const Feature features[] = 6241 { 6242 FEATURE_ITEM (VkPhysicalDeviceOpacityMicromapFeaturesEXT, micromap), 6243 FEATURE_ITEM (VkPhysicalDeviceOpacityMicromapFeaturesEXT, micromapCaptureReplay), 6244 FEATURE_ITEM (VkPhysicalDeviceOpacityMicromapFeaturesEXT, micromapHostCommands), 6245 }; 6246 auto* supportedFeatures = reinterpret_cast<const VkPhysicalDeviceOpacityMicromapFeaturesEXT*>(featuresStruct); 6247 checkFeatures(vkp, instance, instanceDriver, physicalDevice, 3, features, supportedFeatures, queueFamilyIndex, queueCount, queuePriority, numErrors, resultCollector, &extensionNames, emptyDeviceFeatures, isSubProcess); 6248 } 6249 6250 if (numErrors > 0) 6251 return tcu::TestStatus(resultCollector.getResult(), "Enabling unsupported features didn't return VK_ERROR_FEATURE_NOT_PRESENT."); 6252 else 6253 return tcu::TestStatus(resultCollector.getResult(), resultCollector.getMessage()); 6254} 6255 6256 6257tcu::TestStatus createDeviceWithUnsupportedFeaturesTestPipelinePropertiesFeaturesEXT (Context& context) 6258{ 6259 const PlatformInterface& vkp = context.getPlatformInterface(); 6260 tcu::TestLog& log = context.getTestContext().getLog(); 6261 tcu::ResultCollector resultCollector (log); 6262 const CustomInstance instance (createCustomInstanceWithExtensions(context, context.getInstanceExtensions(), DE_NULL, true)); 6263 const InstanceDriver& instanceDriver (instance.getDriver()); 6264 const VkPhysicalDevice physicalDevice = chooseDevice(instanceDriver, instance, context.getTestContext().getCommandLine()); 6265 const deUint32 queueFamilyIndex = 0; 6266 const deUint32 queueCount = 1; 6267 const float queuePriority = 1.0f; 6268 const DeviceFeatures deviceFeaturesAll (context.getInstanceInterface(), context.getUsedApiVersion(), physicalDevice, context.getInstanceExtensions(), context.getDeviceExtensions(), DE_TRUE); 6269 const VkPhysicalDeviceFeatures2 deviceFeatures2 = deviceFeaturesAll.getCoreFeatures2(); 6270 int numErrors = 0; 6271 bool isSubProcess = context.getTestContext().getCommandLine().isSubProcess(); 6272 6273 6274 VkPhysicalDeviceFeatures emptyDeviceFeatures; 6275 deMemset(&emptyDeviceFeatures, 0, sizeof(emptyDeviceFeatures)); 6276 6277 // Only non-core extensions will be used when creating the device. 6278 vector<const char*> coreExtensions; 6279 getCoreDeviceExtensions(context.getUsedApiVersion(), coreExtensions); 6280 vector<string> nonCoreExtensions(removeExtensions(context.getDeviceExtensions(), coreExtensions)); 6281 6282 vector<const char*> extensionNames; 6283 extensionNames.reserve(nonCoreExtensions.size()); 6284 for (const string& extension : nonCoreExtensions) 6285 extensionNames.push_back(extension.c_str()); 6286 6287 if (const void* featuresStruct = findStructureInChain(const_cast<const void*>(deviceFeatures2.pNext), getStructureType<VkPhysicalDevicePipelinePropertiesFeaturesEXT>())) 6288 { 6289 static const Feature features[] = 6290 { 6291 FEATURE_ITEM (VkPhysicalDevicePipelinePropertiesFeaturesEXT, pipelinePropertiesIdentifier), 6292 }; 6293 auto* supportedFeatures = reinterpret_cast<const VkPhysicalDevicePipelinePropertiesFeaturesEXT*>(featuresStruct); 6294 checkFeatures(vkp, instance, instanceDriver, physicalDevice, 1, features, supportedFeatures, queueFamilyIndex, queueCount, queuePriority, numErrors, resultCollector, &extensionNames, emptyDeviceFeatures, isSubProcess); 6295 } 6296 6297 if (numErrors > 0) 6298 return tcu::TestStatus(resultCollector.getResult(), "Enabling unsupported features didn't return VK_ERROR_FEATURE_NOT_PRESENT."); 6299 else 6300 return tcu::TestStatus(resultCollector.getResult(), resultCollector.getMessage()); 6301} 6302 6303 6304tcu::TestStatus createDeviceWithUnsupportedFeaturesTestShaderEarlyAndLateFragmentTestsFeaturesAMD (Context& context) 6305{ 6306 const PlatformInterface& vkp = context.getPlatformInterface(); 6307 tcu::TestLog& log = context.getTestContext().getLog(); 6308 tcu::ResultCollector resultCollector (log); 6309 const CustomInstance instance (createCustomInstanceWithExtensions(context, context.getInstanceExtensions(), DE_NULL, true)); 6310 const InstanceDriver& instanceDriver (instance.getDriver()); 6311 const VkPhysicalDevice physicalDevice = chooseDevice(instanceDriver, instance, context.getTestContext().getCommandLine()); 6312 const deUint32 queueFamilyIndex = 0; 6313 const deUint32 queueCount = 1; 6314 const float queuePriority = 1.0f; 6315 const DeviceFeatures deviceFeaturesAll (context.getInstanceInterface(), context.getUsedApiVersion(), physicalDevice, context.getInstanceExtensions(), context.getDeviceExtensions(), DE_TRUE); 6316 const VkPhysicalDeviceFeatures2 deviceFeatures2 = deviceFeaturesAll.getCoreFeatures2(); 6317 int numErrors = 0; 6318 bool isSubProcess = context.getTestContext().getCommandLine().isSubProcess(); 6319 6320 6321 VkPhysicalDeviceFeatures emptyDeviceFeatures; 6322 deMemset(&emptyDeviceFeatures, 0, sizeof(emptyDeviceFeatures)); 6323 6324 // Only non-core extensions will be used when creating the device. 6325 vector<const char*> coreExtensions; 6326 getCoreDeviceExtensions(context.getUsedApiVersion(), coreExtensions); 6327 vector<string> nonCoreExtensions(removeExtensions(context.getDeviceExtensions(), coreExtensions)); 6328 6329 vector<const char*> extensionNames; 6330 extensionNames.reserve(nonCoreExtensions.size()); 6331 for (const string& extension : nonCoreExtensions) 6332 extensionNames.push_back(extension.c_str()); 6333 6334 if (const void* featuresStruct = findStructureInChain(const_cast<const void*>(deviceFeatures2.pNext), getStructureType<VkPhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD>())) 6335 { 6336 static const Feature features[] = 6337 { 6338 FEATURE_ITEM (VkPhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD, shaderEarlyAndLateFragmentTests), 6339 }; 6340 auto* supportedFeatures = reinterpret_cast<const VkPhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD*>(featuresStruct); 6341 checkFeatures(vkp, instance, instanceDriver, physicalDevice, 1, features, supportedFeatures, queueFamilyIndex, queueCount, queuePriority, numErrors, resultCollector, &extensionNames, emptyDeviceFeatures, isSubProcess); 6342 } 6343 6344 if (numErrors > 0) 6345 return tcu::TestStatus(resultCollector.getResult(), "Enabling unsupported features didn't return VK_ERROR_FEATURE_NOT_PRESENT."); 6346 else 6347 return tcu::TestStatus(resultCollector.getResult(), resultCollector.getMessage()); 6348} 6349 6350 6351tcu::TestStatus createDeviceWithUnsupportedFeaturesTestNonSeamlessCubeMapFeaturesEXT (Context& context) 6352{ 6353 const PlatformInterface& vkp = context.getPlatformInterface(); 6354 tcu::TestLog& log = context.getTestContext().getLog(); 6355 tcu::ResultCollector resultCollector (log); 6356 const CustomInstance instance (createCustomInstanceWithExtensions(context, context.getInstanceExtensions(), DE_NULL, true)); 6357 const InstanceDriver& instanceDriver (instance.getDriver()); 6358 const VkPhysicalDevice physicalDevice = chooseDevice(instanceDriver, instance, context.getTestContext().getCommandLine()); 6359 const deUint32 queueFamilyIndex = 0; 6360 const deUint32 queueCount = 1; 6361 const float queuePriority = 1.0f; 6362 const DeviceFeatures deviceFeaturesAll (context.getInstanceInterface(), context.getUsedApiVersion(), physicalDevice, context.getInstanceExtensions(), context.getDeviceExtensions(), DE_TRUE); 6363 const VkPhysicalDeviceFeatures2 deviceFeatures2 = deviceFeaturesAll.getCoreFeatures2(); 6364 int numErrors = 0; 6365 bool isSubProcess = context.getTestContext().getCommandLine().isSubProcess(); 6366 6367 6368 VkPhysicalDeviceFeatures emptyDeviceFeatures; 6369 deMemset(&emptyDeviceFeatures, 0, sizeof(emptyDeviceFeatures)); 6370 6371 // Only non-core extensions will be used when creating the device. 6372 vector<const char*> coreExtensions; 6373 getCoreDeviceExtensions(context.getUsedApiVersion(), coreExtensions); 6374 vector<string> nonCoreExtensions(removeExtensions(context.getDeviceExtensions(), coreExtensions)); 6375 6376 vector<const char*> extensionNames; 6377 extensionNames.reserve(nonCoreExtensions.size()); 6378 for (const string& extension : nonCoreExtensions) 6379 extensionNames.push_back(extension.c_str()); 6380 6381 if (const void* featuresStruct = findStructureInChain(const_cast<const void*>(deviceFeatures2.pNext), getStructureType<VkPhysicalDeviceNonSeamlessCubeMapFeaturesEXT>())) 6382 { 6383 static const Feature features[] = 6384 { 6385 FEATURE_ITEM (VkPhysicalDeviceNonSeamlessCubeMapFeaturesEXT, nonSeamlessCubeMap), 6386 }; 6387 auto* supportedFeatures = reinterpret_cast<const VkPhysicalDeviceNonSeamlessCubeMapFeaturesEXT*>(featuresStruct); 6388 checkFeatures(vkp, instance, instanceDriver, physicalDevice, 1, features, supportedFeatures, queueFamilyIndex, queueCount, queuePriority, numErrors, resultCollector, &extensionNames, emptyDeviceFeatures, isSubProcess); 6389 } 6390 6391 if (numErrors > 0) 6392 return tcu::TestStatus(resultCollector.getResult(), "Enabling unsupported features didn't return VK_ERROR_FEATURE_NOT_PRESENT."); 6393 else 6394 return tcu::TestStatus(resultCollector.getResult(), resultCollector.getMessage()); 6395} 6396 6397 6398tcu::TestStatus createDeviceWithUnsupportedFeaturesTestPipelineRobustnessFeaturesEXT (Context& context) 6399{ 6400 const PlatformInterface& vkp = context.getPlatformInterface(); 6401 tcu::TestLog& log = context.getTestContext().getLog(); 6402 tcu::ResultCollector resultCollector (log); 6403 const CustomInstance instance (createCustomInstanceWithExtensions(context, context.getInstanceExtensions(), DE_NULL, true)); 6404 const InstanceDriver& instanceDriver (instance.getDriver()); 6405 const VkPhysicalDevice physicalDevice = chooseDevice(instanceDriver, instance, context.getTestContext().getCommandLine()); 6406 const deUint32 queueFamilyIndex = 0; 6407 const deUint32 queueCount = 1; 6408 const float queuePriority = 1.0f; 6409 const DeviceFeatures deviceFeaturesAll (context.getInstanceInterface(), context.getUsedApiVersion(), physicalDevice, context.getInstanceExtensions(), context.getDeviceExtensions(), DE_TRUE); 6410 const VkPhysicalDeviceFeatures2 deviceFeatures2 = deviceFeaturesAll.getCoreFeatures2(); 6411 int numErrors = 0; 6412 bool isSubProcess = context.getTestContext().getCommandLine().isSubProcess(); 6413 6414 6415 VkPhysicalDeviceFeatures emptyDeviceFeatures; 6416 deMemset(&emptyDeviceFeatures, 0, sizeof(emptyDeviceFeatures)); 6417 6418 // Only non-core extensions will be used when creating the device. 6419 vector<const char*> coreExtensions; 6420 getCoreDeviceExtensions(context.getUsedApiVersion(), coreExtensions); 6421 vector<string> nonCoreExtensions(removeExtensions(context.getDeviceExtensions(), coreExtensions)); 6422 6423 vector<const char*> extensionNames; 6424 extensionNames.reserve(nonCoreExtensions.size()); 6425 for (const string& extension : nonCoreExtensions) 6426 extensionNames.push_back(extension.c_str()); 6427 6428 if (const void* featuresStruct = findStructureInChain(const_cast<const void*>(deviceFeatures2.pNext), getStructureType<VkPhysicalDevicePipelineRobustnessFeaturesEXT>())) 6429 { 6430 static const Feature features[] = 6431 { 6432 FEATURE_ITEM (VkPhysicalDevicePipelineRobustnessFeaturesEXT, pipelineRobustness), 6433 }; 6434 auto* supportedFeatures = reinterpret_cast<const VkPhysicalDevicePipelineRobustnessFeaturesEXT*>(featuresStruct); 6435 checkFeatures(vkp, instance, instanceDriver, physicalDevice, 1, features, supportedFeatures, queueFamilyIndex, queueCount, queuePriority, numErrors, resultCollector, &extensionNames, emptyDeviceFeatures, isSubProcess); 6436 } 6437 6438 if (numErrors > 0) 6439 return tcu::TestStatus(resultCollector.getResult(), "Enabling unsupported features didn't return VK_ERROR_FEATURE_NOT_PRESENT."); 6440 else 6441 return tcu::TestStatus(resultCollector.getResult(), resultCollector.getMessage()); 6442} 6443 6444 6445tcu::TestStatus createDeviceWithUnsupportedFeaturesTestImageProcessingFeaturesQCOM (Context& context) 6446{ 6447 const PlatformInterface& vkp = context.getPlatformInterface(); 6448 tcu::TestLog& log = context.getTestContext().getLog(); 6449 tcu::ResultCollector resultCollector (log); 6450 const CustomInstance instance (createCustomInstanceWithExtensions(context, context.getInstanceExtensions(), DE_NULL, true)); 6451 const InstanceDriver& instanceDriver (instance.getDriver()); 6452 const VkPhysicalDevice physicalDevice = chooseDevice(instanceDriver, instance, context.getTestContext().getCommandLine()); 6453 const deUint32 queueFamilyIndex = 0; 6454 const deUint32 queueCount = 1; 6455 const float queuePriority = 1.0f; 6456 const DeviceFeatures deviceFeaturesAll (context.getInstanceInterface(), context.getUsedApiVersion(), physicalDevice, context.getInstanceExtensions(), context.getDeviceExtensions(), DE_TRUE); 6457 const VkPhysicalDeviceFeatures2 deviceFeatures2 = deviceFeaturesAll.getCoreFeatures2(); 6458 int numErrors = 0; 6459 bool isSubProcess = context.getTestContext().getCommandLine().isSubProcess(); 6460 6461 6462 VkPhysicalDeviceFeatures emptyDeviceFeatures; 6463 deMemset(&emptyDeviceFeatures, 0, sizeof(emptyDeviceFeatures)); 6464 6465 // Only non-core extensions will be used when creating the device. 6466 vector<const char*> coreExtensions; 6467 getCoreDeviceExtensions(context.getUsedApiVersion(), coreExtensions); 6468 vector<string> nonCoreExtensions(removeExtensions(context.getDeviceExtensions(), coreExtensions)); 6469 6470 vector<const char*> extensionNames; 6471 extensionNames.reserve(nonCoreExtensions.size()); 6472 for (const string& extension : nonCoreExtensions) 6473 extensionNames.push_back(extension.c_str()); 6474 6475 if (const void* featuresStruct = findStructureInChain(const_cast<const void*>(deviceFeatures2.pNext), getStructureType<VkPhysicalDeviceImageProcessingFeaturesQCOM>())) 6476 { 6477 static const Feature features[] = 6478 { 6479 FEATURE_ITEM (VkPhysicalDeviceImageProcessingFeaturesQCOM, textureSampleWeighted), 6480 FEATURE_ITEM (VkPhysicalDeviceImageProcessingFeaturesQCOM, textureBoxFilter), 6481 FEATURE_ITEM (VkPhysicalDeviceImageProcessingFeaturesQCOM, textureBlockMatch), 6482 }; 6483 auto* supportedFeatures = reinterpret_cast<const VkPhysicalDeviceImageProcessingFeaturesQCOM*>(featuresStruct); 6484 checkFeatures(vkp, instance, instanceDriver, physicalDevice, 3, features, supportedFeatures, queueFamilyIndex, queueCount, queuePriority, numErrors, resultCollector, &extensionNames, emptyDeviceFeatures, isSubProcess); 6485 } 6486 6487 if (numErrors > 0) 6488 return tcu::TestStatus(resultCollector.getResult(), "Enabling unsupported features didn't return VK_ERROR_FEATURE_NOT_PRESENT."); 6489 else 6490 return tcu::TestStatus(resultCollector.getResult(), resultCollector.getMessage()); 6491} 6492 6493 6494tcu::TestStatus createDeviceWithUnsupportedFeaturesTestTilePropertiesFeaturesQCOM (Context& context) 6495{ 6496 const PlatformInterface& vkp = context.getPlatformInterface(); 6497 tcu::TestLog& log = context.getTestContext().getLog(); 6498 tcu::ResultCollector resultCollector (log); 6499 const CustomInstance instance (createCustomInstanceWithExtensions(context, context.getInstanceExtensions(), DE_NULL, true)); 6500 const InstanceDriver& instanceDriver (instance.getDriver()); 6501 const VkPhysicalDevice physicalDevice = chooseDevice(instanceDriver, instance, context.getTestContext().getCommandLine()); 6502 const deUint32 queueFamilyIndex = 0; 6503 const deUint32 queueCount = 1; 6504 const float queuePriority = 1.0f; 6505 const DeviceFeatures deviceFeaturesAll (context.getInstanceInterface(), context.getUsedApiVersion(), physicalDevice, context.getInstanceExtensions(), context.getDeviceExtensions(), DE_TRUE); 6506 const VkPhysicalDeviceFeatures2 deviceFeatures2 = deviceFeaturesAll.getCoreFeatures2(); 6507 int numErrors = 0; 6508 bool isSubProcess = context.getTestContext().getCommandLine().isSubProcess(); 6509 6510 6511 VkPhysicalDeviceFeatures emptyDeviceFeatures; 6512 deMemset(&emptyDeviceFeatures, 0, sizeof(emptyDeviceFeatures)); 6513 6514 // Only non-core extensions will be used when creating the device. 6515 vector<const char*> coreExtensions; 6516 getCoreDeviceExtensions(context.getUsedApiVersion(), coreExtensions); 6517 vector<string> nonCoreExtensions(removeExtensions(context.getDeviceExtensions(), coreExtensions)); 6518 6519 vector<const char*> extensionNames; 6520 extensionNames.reserve(nonCoreExtensions.size()); 6521 for (const string& extension : nonCoreExtensions) 6522 extensionNames.push_back(extension.c_str()); 6523 6524 if (const void* featuresStruct = findStructureInChain(const_cast<const void*>(deviceFeatures2.pNext), getStructureType<VkPhysicalDeviceTilePropertiesFeaturesQCOM>())) 6525 { 6526 static const Feature features[] = 6527 { 6528 FEATURE_ITEM (VkPhysicalDeviceTilePropertiesFeaturesQCOM, tileProperties), 6529 }; 6530 auto* supportedFeatures = reinterpret_cast<const VkPhysicalDeviceTilePropertiesFeaturesQCOM*>(featuresStruct); 6531 checkFeatures(vkp, instance, instanceDriver, physicalDevice, 1, features, supportedFeatures, queueFamilyIndex, queueCount, queuePriority, numErrors, resultCollector, &extensionNames, emptyDeviceFeatures, isSubProcess); 6532 } 6533 6534 if (numErrors > 0) 6535 return tcu::TestStatus(resultCollector.getResult(), "Enabling unsupported features didn't return VK_ERROR_FEATURE_NOT_PRESENT."); 6536 else 6537 return tcu::TestStatus(resultCollector.getResult(), resultCollector.getMessage()); 6538} 6539 6540 6541tcu::TestStatus createDeviceWithUnsupportedFeaturesTestAmigoProfilingFeaturesSEC (Context& context) 6542{ 6543 const PlatformInterface& vkp = context.getPlatformInterface(); 6544 tcu::TestLog& log = context.getTestContext().getLog(); 6545 tcu::ResultCollector resultCollector (log); 6546 const CustomInstance instance (createCustomInstanceWithExtensions(context, context.getInstanceExtensions(), DE_NULL, true)); 6547 const InstanceDriver& instanceDriver (instance.getDriver()); 6548 const VkPhysicalDevice physicalDevice = chooseDevice(instanceDriver, instance, context.getTestContext().getCommandLine()); 6549 const deUint32 queueFamilyIndex = 0; 6550 const deUint32 queueCount = 1; 6551 const float queuePriority = 1.0f; 6552 const DeviceFeatures deviceFeaturesAll (context.getInstanceInterface(), context.getUsedApiVersion(), physicalDevice, context.getInstanceExtensions(), context.getDeviceExtensions(), DE_TRUE); 6553 const VkPhysicalDeviceFeatures2 deviceFeatures2 = deviceFeaturesAll.getCoreFeatures2(); 6554 int numErrors = 0; 6555 bool isSubProcess = context.getTestContext().getCommandLine().isSubProcess(); 6556 6557 6558 VkPhysicalDeviceFeatures emptyDeviceFeatures; 6559 deMemset(&emptyDeviceFeatures, 0, sizeof(emptyDeviceFeatures)); 6560 6561 // Only non-core extensions will be used when creating the device. 6562 vector<const char*> coreExtensions; 6563 getCoreDeviceExtensions(context.getUsedApiVersion(), coreExtensions); 6564 vector<string> nonCoreExtensions(removeExtensions(context.getDeviceExtensions(), coreExtensions)); 6565 6566 vector<const char*> extensionNames; 6567 extensionNames.reserve(nonCoreExtensions.size()); 6568 for (const string& extension : nonCoreExtensions) 6569 extensionNames.push_back(extension.c_str()); 6570 6571 if (const void* featuresStruct = findStructureInChain(const_cast<const void*>(deviceFeatures2.pNext), getStructureType<VkPhysicalDeviceAmigoProfilingFeaturesSEC>())) 6572 { 6573 static const Feature features[] = 6574 { 6575 FEATURE_ITEM (VkPhysicalDeviceAmigoProfilingFeaturesSEC, amigoProfiling), 6576 }; 6577 auto* supportedFeatures = reinterpret_cast<const VkPhysicalDeviceAmigoProfilingFeaturesSEC*>(featuresStruct); 6578 checkFeatures(vkp, instance, instanceDriver, physicalDevice, 1, features, supportedFeatures, queueFamilyIndex, queueCount, queuePriority, numErrors, resultCollector, &extensionNames, emptyDeviceFeatures, isSubProcess); 6579 } 6580 6581 if (numErrors > 0) 6582 return tcu::TestStatus(resultCollector.getResult(), "Enabling unsupported features didn't return VK_ERROR_FEATURE_NOT_PRESENT."); 6583 else 6584 return tcu::TestStatus(resultCollector.getResult(), resultCollector.getMessage()); 6585} 6586 6587 6588tcu::TestStatus createDeviceWithUnsupportedFeaturesTestAttachmentFeedbackLoopLayoutFeaturesEXT (Context& context) 6589{ 6590 const PlatformInterface& vkp = context.getPlatformInterface(); 6591 tcu::TestLog& log = context.getTestContext().getLog(); 6592 tcu::ResultCollector resultCollector (log); 6593 const CustomInstance instance (createCustomInstanceWithExtensions(context, context.getInstanceExtensions(), DE_NULL, true)); 6594 const InstanceDriver& instanceDriver (instance.getDriver()); 6595 const VkPhysicalDevice physicalDevice = chooseDevice(instanceDriver, instance, context.getTestContext().getCommandLine()); 6596 const deUint32 queueFamilyIndex = 0; 6597 const deUint32 queueCount = 1; 6598 const float queuePriority = 1.0f; 6599 const DeviceFeatures deviceFeaturesAll (context.getInstanceInterface(), context.getUsedApiVersion(), physicalDevice, context.getInstanceExtensions(), context.getDeviceExtensions(), DE_TRUE); 6600 const VkPhysicalDeviceFeatures2 deviceFeatures2 = deviceFeaturesAll.getCoreFeatures2(); 6601 int numErrors = 0; 6602 bool isSubProcess = context.getTestContext().getCommandLine().isSubProcess(); 6603 6604 6605 VkPhysicalDeviceFeatures emptyDeviceFeatures; 6606 deMemset(&emptyDeviceFeatures, 0, sizeof(emptyDeviceFeatures)); 6607 6608 // Only non-core extensions will be used when creating the device. 6609 vector<const char*> coreExtensions; 6610 getCoreDeviceExtensions(context.getUsedApiVersion(), coreExtensions); 6611 vector<string> nonCoreExtensions(removeExtensions(context.getDeviceExtensions(), coreExtensions)); 6612 6613 vector<const char*> extensionNames; 6614 extensionNames.reserve(nonCoreExtensions.size()); 6615 for (const string& extension : nonCoreExtensions) 6616 extensionNames.push_back(extension.c_str()); 6617 6618 if (const void* featuresStruct = findStructureInChain(const_cast<const void*>(deviceFeatures2.pNext), getStructureType<VkPhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT>())) 6619 { 6620 static const Feature features[] = 6621 { 6622 FEATURE_ITEM (VkPhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT, attachmentFeedbackLoopLayout), 6623 }; 6624 auto* supportedFeatures = reinterpret_cast<const VkPhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT*>(featuresStruct); 6625 checkFeatures(vkp, instance, instanceDriver, physicalDevice, 1, features, supportedFeatures, queueFamilyIndex, queueCount, queuePriority, numErrors, resultCollector, &extensionNames, emptyDeviceFeatures, isSubProcess); 6626 } 6627 6628 if (numErrors > 0) 6629 return tcu::TestStatus(resultCollector.getResult(), "Enabling unsupported features didn't return VK_ERROR_FEATURE_NOT_PRESENT."); 6630 else 6631 return tcu::TestStatus(resultCollector.getResult(), resultCollector.getMessage()); 6632} 6633 6634 6635tcu::TestStatus createDeviceWithUnsupportedFeaturesTestDepthClampZeroOneFeaturesEXT (Context& context) 6636{ 6637 const PlatformInterface& vkp = context.getPlatformInterface(); 6638 tcu::TestLog& log = context.getTestContext().getLog(); 6639 tcu::ResultCollector resultCollector (log); 6640 const CustomInstance instance (createCustomInstanceWithExtensions(context, context.getInstanceExtensions(), DE_NULL, true)); 6641 const InstanceDriver& instanceDriver (instance.getDriver()); 6642 const VkPhysicalDevice physicalDevice = chooseDevice(instanceDriver, instance, context.getTestContext().getCommandLine()); 6643 const deUint32 queueFamilyIndex = 0; 6644 const deUint32 queueCount = 1; 6645 const float queuePriority = 1.0f; 6646 const DeviceFeatures deviceFeaturesAll (context.getInstanceInterface(), context.getUsedApiVersion(), physicalDevice, context.getInstanceExtensions(), context.getDeviceExtensions(), DE_TRUE); 6647 const VkPhysicalDeviceFeatures2 deviceFeatures2 = deviceFeaturesAll.getCoreFeatures2(); 6648 int numErrors = 0; 6649 bool isSubProcess = context.getTestContext().getCommandLine().isSubProcess(); 6650 6651 6652 VkPhysicalDeviceFeatures emptyDeviceFeatures; 6653 deMemset(&emptyDeviceFeatures, 0, sizeof(emptyDeviceFeatures)); 6654 6655 // Only non-core extensions will be used when creating the device. 6656 vector<const char*> coreExtensions; 6657 getCoreDeviceExtensions(context.getUsedApiVersion(), coreExtensions); 6658 vector<string> nonCoreExtensions(removeExtensions(context.getDeviceExtensions(), coreExtensions)); 6659 6660 vector<const char*> extensionNames; 6661 extensionNames.reserve(nonCoreExtensions.size()); 6662 for (const string& extension : nonCoreExtensions) 6663 extensionNames.push_back(extension.c_str()); 6664 6665 if (const void* featuresStruct = findStructureInChain(const_cast<const void*>(deviceFeatures2.pNext), getStructureType<VkPhysicalDeviceDepthClampZeroOneFeaturesEXT>())) 6666 { 6667 static const Feature features[] = 6668 { 6669 FEATURE_ITEM (VkPhysicalDeviceDepthClampZeroOneFeaturesEXT, depthClampZeroOne), 6670 }; 6671 auto* supportedFeatures = reinterpret_cast<const VkPhysicalDeviceDepthClampZeroOneFeaturesEXT*>(featuresStruct); 6672 checkFeatures(vkp, instance, instanceDriver, physicalDevice, 1, features, supportedFeatures, queueFamilyIndex, queueCount, queuePriority, numErrors, resultCollector, &extensionNames, emptyDeviceFeatures, isSubProcess); 6673 } 6674 6675 if (numErrors > 0) 6676 return tcu::TestStatus(resultCollector.getResult(), "Enabling unsupported features didn't return VK_ERROR_FEATURE_NOT_PRESENT."); 6677 else 6678 return tcu::TestStatus(resultCollector.getResult(), resultCollector.getMessage()); 6679} 6680 6681 6682tcu::TestStatus createDeviceWithUnsupportedFeaturesTestAddressBindingReportFeaturesEXT (Context& context) 6683{ 6684 const PlatformInterface& vkp = context.getPlatformInterface(); 6685 tcu::TestLog& log = context.getTestContext().getLog(); 6686 tcu::ResultCollector resultCollector (log); 6687 const CustomInstance instance (createCustomInstanceWithExtensions(context, context.getInstanceExtensions(), DE_NULL, true)); 6688 const InstanceDriver& instanceDriver (instance.getDriver()); 6689 const VkPhysicalDevice physicalDevice = chooseDevice(instanceDriver, instance, context.getTestContext().getCommandLine()); 6690 const deUint32 queueFamilyIndex = 0; 6691 const deUint32 queueCount = 1; 6692 const float queuePriority = 1.0f; 6693 const DeviceFeatures deviceFeaturesAll (context.getInstanceInterface(), context.getUsedApiVersion(), physicalDevice, context.getInstanceExtensions(), context.getDeviceExtensions(), DE_TRUE); 6694 const VkPhysicalDeviceFeatures2 deviceFeatures2 = deviceFeaturesAll.getCoreFeatures2(); 6695 int numErrors = 0; 6696 bool isSubProcess = context.getTestContext().getCommandLine().isSubProcess(); 6697 6698 6699 VkPhysicalDeviceFeatures emptyDeviceFeatures; 6700 deMemset(&emptyDeviceFeatures, 0, sizeof(emptyDeviceFeatures)); 6701 6702 // Only non-core extensions will be used when creating the device. 6703 vector<const char*> coreExtensions; 6704 getCoreDeviceExtensions(context.getUsedApiVersion(), coreExtensions); 6705 vector<string> nonCoreExtensions(removeExtensions(context.getDeviceExtensions(), coreExtensions)); 6706 6707 vector<const char*> extensionNames; 6708 extensionNames.reserve(nonCoreExtensions.size()); 6709 for (const string& extension : nonCoreExtensions) 6710 extensionNames.push_back(extension.c_str()); 6711 6712 if (const void* featuresStruct = findStructureInChain(const_cast<const void*>(deviceFeatures2.pNext), getStructureType<VkPhysicalDeviceAddressBindingReportFeaturesEXT>())) 6713 { 6714 static const Feature features[] = 6715 { 6716 FEATURE_ITEM (VkPhysicalDeviceAddressBindingReportFeaturesEXT, reportAddressBinding), 6717 }; 6718 auto* supportedFeatures = reinterpret_cast<const VkPhysicalDeviceAddressBindingReportFeaturesEXT*>(featuresStruct); 6719 checkFeatures(vkp, instance, instanceDriver, physicalDevice, 1, features, supportedFeatures, queueFamilyIndex, queueCount, queuePriority, numErrors, resultCollector, &extensionNames, emptyDeviceFeatures, isSubProcess); 6720 } 6721 6722 if (numErrors > 0) 6723 return tcu::TestStatus(resultCollector.getResult(), "Enabling unsupported features didn't return VK_ERROR_FEATURE_NOT_PRESENT."); 6724 else 6725 return tcu::TestStatus(resultCollector.getResult(), resultCollector.getMessage()); 6726} 6727 6728 6729tcu::TestStatus createDeviceWithUnsupportedFeaturesTestOpticalFlowFeaturesNV (Context& context) 6730{ 6731 const PlatformInterface& vkp = context.getPlatformInterface(); 6732 tcu::TestLog& log = context.getTestContext().getLog(); 6733 tcu::ResultCollector resultCollector (log); 6734 const CustomInstance instance (createCustomInstanceWithExtensions(context, context.getInstanceExtensions(), DE_NULL, true)); 6735 const InstanceDriver& instanceDriver (instance.getDriver()); 6736 const VkPhysicalDevice physicalDevice = chooseDevice(instanceDriver, instance, context.getTestContext().getCommandLine()); 6737 const deUint32 queueFamilyIndex = 0; 6738 const deUint32 queueCount = 1; 6739 const float queuePriority = 1.0f; 6740 const DeviceFeatures deviceFeaturesAll (context.getInstanceInterface(), context.getUsedApiVersion(), physicalDevice, context.getInstanceExtensions(), context.getDeviceExtensions(), DE_TRUE); 6741 const VkPhysicalDeviceFeatures2 deviceFeatures2 = deviceFeaturesAll.getCoreFeatures2(); 6742 int numErrors = 0; 6743 bool isSubProcess = context.getTestContext().getCommandLine().isSubProcess(); 6744 6745 6746 VkPhysicalDeviceFeatures emptyDeviceFeatures; 6747 deMemset(&emptyDeviceFeatures, 0, sizeof(emptyDeviceFeatures)); 6748 6749 // Only non-core extensions will be used when creating the device. 6750 vector<const char*> coreExtensions; 6751 getCoreDeviceExtensions(context.getUsedApiVersion(), coreExtensions); 6752 vector<string> nonCoreExtensions(removeExtensions(context.getDeviceExtensions(), coreExtensions)); 6753 6754 vector<const char*> extensionNames; 6755 extensionNames.reserve(nonCoreExtensions.size()); 6756 for (const string& extension : nonCoreExtensions) 6757 extensionNames.push_back(extension.c_str()); 6758 6759 if (const void* featuresStruct = findStructureInChain(const_cast<const void*>(deviceFeatures2.pNext), getStructureType<VkPhysicalDeviceOpticalFlowFeaturesNV>())) 6760 { 6761 static const Feature features[] = 6762 { 6763 FEATURE_ITEM (VkPhysicalDeviceOpticalFlowFeaturesNV, opticalFlow), 6764 }; 6765 auto* supportedFeatures = reinterpret_cast<const VkPhysicalDeviceOpticalFlowFeaturesNV*>(featuresStruct); 6766 checkFeatures(vkp, instance, instanceDriver, physicalDevice, 1, features, supportedFeatures, queueFamilyIndex, queueCount, queuePriority, numErrors, resultCollector, &extensionNames, emptyDeviceFeatures, isSubProcess); 6767 } 6768 6769 if (numErrors > 0) 6770 return tcu::TestStatus(resultCollector.getResult(), "Enabling unsupported features didn't return VK_ERROR_FEATURE_NOT_PRESENT."); 6771 else 6772 return tcu::TestStatus(resultCollector.getResult(), resultCollector.getMessage()); 6773} 6774 6775 6776tcu::TestStatus createDeviceWithUnsupportedFeaturesTestFaultFeaturesEXT (Context& context) 6777{ 6778 const PlatformInterface& vkp = context.getPlatformInterface(); 6779 tcu::TestLog& log = context.getTestContext().getLog(); 6780 tcu::ResultCollector resultCollector (log); 6781 const CustomInstance instance (createCustomInstanceWithExtensions(context, context.getInstanceExtensions(), DE_NULL, true)); 6782 const InstanceDriver& instanceDriver (instance.getDriver()); 6783 const VkPhysicalDevice physicalDevice = chooseDevice(instanceDriver, instance, context.getTestContext().getCommandLine()); 6784 const deUint32 queueFamilyIndex = 0; 6785 const deUint32 queueCount = 1; 6786 const float queuePriority = 1.0f; 6787 const DeviceFeatures deviceFeaturesAll (context.getInstanceInterface(), context.getUsedApiVersion(), physicalDevice, context.getInstanceExtensions(), context.getDeviceExtensions(), DE_TRUE); 6788 const VkPhysicalDeviceFeatures2 deviceFeatures2 = deviceFeaturesAll.getCoreFeatures2(); 6789 int numErrors = 0; 6790 bool isSubProcess = context.getTestContext().getCommandLine().isSubProcess(); 6791 6792 6793 VkPhysicalDeviceFeatures emptyDeviceFeatures; 6794 deMemset(&emptyDeviceFeatures, 0, sizeof(emptyDeviceFeatures)); 6795 6796 // Only non-core extensions will be used when creating the device. 6797 vector<const char*> coreExtensions; 6798 getCoreDeviceExtensions(context.getUsedApiVersion(), coreExtensions); 6799 vector<string> nonCoreExtensions(removeExtensions(context.getDeviceExtensions(), coreExtensions)); 6800 6801 vector<const char*> extensionNames; 6802 extensionNames.reserve(nonCoreExtensions.size()); 6803 for (const string& extension : nonCoreExtensions) 6804 extensionNames.push_back(extension.c_str()); 6805 6806 if (const void* featuresStruct = findStructureInChain(const_cast<const void*>(deviceFeatures2.pNext), getStructureType<VkPhysicalDeviceFaultFeaturesEXT>())) 6807 { 6808 static const Feature features[] = 6809 { 6810 FEATURE_ITEM (VkPhysicalDeviceFaultFeaturesEXT, deviceFault), 6811 FEATURE_ITEM (VkPhysicalDeviceFaultFeaturesEXT, deviceFaultVendorBinary), 6812 }; 6813 auto* supportedFeatures = reinterpret_cast<const VkPhysicalDeviceFaultFeaturesEXT*>(featuresStruct); 6814 checkFeatures(vkp, instance, instanceDriver, physicalDevice, 2, features, supportedFeatures, queueFamilyIndex, queueCount, queuePriority, numErrors, resultCollector, &extensionNames, emptyDeviceFeatures, isSubProcess); 6815 } 6816 6817 if (numErrors > 0) 6818 return tcu::TestStatus(resultCollector.getResult(), "Enabling unsupported features didn't return VK_ERROR_FEATURE_NOT_PRESENT."); 6819 else 6820 return tcu::TestStatus(resultCollector.getResult(), resultCollector.getMessage()); 6821} 6822 6823 6824tcu::TestStatus createDeviceWithUnsupportedFeaturesTestShaderCoreBuiltinsFeaturesARM (Context& context) 6825{ 6826 const PlatformInterface& vkp = context.getPlatformInterface(); 6827 tcu::TestLog& log = context.getTestContext().getLog(); 6828 tcu::ResultCollector resultCollector (log); 6829 const CustomInstance instance (createCustomInstanceWithExtensions(context, context.getInstanceExtensions(), DE_NULL, true)); 6830 const InstanceDriver& instanceDriver (instance.getDriver()); 6831 const VkPhysicalDevice physicalDevice = chooseDevice(instanceDriver, instance, context.getTestContext().getCommandLine()); 6832 const deUint32 queueFamilyIndex = 0; 6833 const deUint32 queueCount = 1; 6834 const float queuePriority = 1.0f; 6835 const DeviceFeatures deviceFeaturesAll (context.getInstanceInterface(), context.getUsedApiVersion(), physicalDevice, context.getInstanceExtensions(), context.getDeviceExtensions(), DE_TRUE); 6836 const VkPhysicalDeviceFeatures2 deviceFeatures2 = deviceFeaturesAll.getCoreFeatures2(); 6837 int numErrors = 0; 6838 bool isSubProcess = context.getTestContext().getCommandLine().isSubProcess(); 6839 6840 6841 VkPhysicalDeviceFeatures emptyDeviceFeatures; 6842 deMemset(&emptyDeviceFeatures, 0, sizeof(emptyDeviceFeatures)); 6843 6844 // Only non-core extensions will be used when creating the device. 6845 vector<const char*> coreExtensions; 6846 getCoreDeviceExtensions(context.getUsedApiVersion(), coreExtensions); 6847 vector<string> nonCoreExtensions(removeExtensions(context.getDeviceExtensions(), coreExtensions)); 6848 6849 vector<const char*> extensionNames; 6850 extensionNames.reserve(nonCoreExtensions.size()); 6851 for (const string& extension : nonCoreExtensions) 6852 extensionNames.push_back(extension.c_str()); 6853 6854 if (const void* featuresStruct = findStructureInChain(const_cast<const void*>(deviceFeatures2.pNext), getStructureType<VkPhysicalDeviceShaderCoreBuiltinsFeaturesARM>())) 6855 { 6856 static const Feature features[] = 6857 { 6858 FEATURE_ITEM (VkPhysicalDeviceShaderCoreBuiltinsFeaturesARM, shaderCoreBuiltins), 6859 }; 6860 auto* supportedFeatures = reinterpret_cast<const VkPhysicalDeviceShaderCoreBuiltinsFeaturesARM*>(featuresStruct); 6861 checkFeatures(vkp, instance, instanceDriver, physicalDevice, 1, features, supportedFeatures, queueFamilyIndex, queueCount, queuePriority, numErrors, resultCollector, &extensionNames, emptyDeviceFeatures, isSubProcess); 6862 } 6863 6864 if (numErrors > 0) 6865 return tcu::TestStatus(resultCollector.getResult(), "Enabling unsupported features didn't return VK_ERROR_FEATURE_NOT_PRESENT."); 6866 else 6867 return tcu::TestStatus(resultCollector.getResult(), resultCollector.getMessage()); 6868} 6869 6870 6871tcu::TestStatus createDeviceWithUnsupportedFeaturesTestSwapchainMaintenance1FeaturesEXT (Context& context) 6872{ 6873 const PlatformInterface& vkp = context.getPlatformInterface(); 6874 tcu::TestLog& log = context.getTestContext().getLog(); 6875 tcu::ResultCollector resultCollector (log); 6876 const CustomInstance instance (createCustomInstanceWithExtensions(context, context.getInstanceExtensions(), DE_NULL, true)); 6877 const InstanceDriver& instanceDriver (instance.getDriver()); 6878 const VkPhysicalDevice physicalDevice = chooseDevice(instanceDriver, instance, context.getTestContext().getCommandLine()); 6879 const deUint32 queueFamilyIndex = 0; 6880 const deUint32 queueCount = 1; 6881 const float queuePriority = 1.0f; 6882 const DeviceFeatures deviceFeaturesAll (context.getInstanceInterface(), context.getUsedApiVersion(), physicalDevice, context.getInstanceExtensions(), context.getDeviceExtensions(), DE_TRUE); 6883 const VkPhysicalDeviceFeatures2 deviceFeatures2 = deviceFeaturesAll.getCoreFeatures2(); 6884 int numErrors = 0; 6885 bool isSubProcess = context.getTestContext().getCommandLine().isSubProcess(); 6886 6887 6888 VkPhysicalDeviceFeatures emptyDeviceFeatures; 6889 deMemset(&emptyDeviceFeatures, 0, sizeof(emptyDeviceFeatures)); 6890 6891 // Only non-core extensions will be used when creating the device. 6892 vector<const char*> coreExtensions; 6893 getCoreDeviceExtensions(context.getUsedApiVersion(), coreExtensions); 6894 vector<string> nonCoreExtensions(removeExtensions(context.getDeviceExtensions(), coreExtensions)); 6895 6896 vector<const char*> extensionNames; 6897 extensionNames.reserve(nonCoreExtensions.size()); 6898 for (const string& extension : nonCoreExtensions) 6899 extensionNames.push_back(extension.c_str()); 6900 6901 if (const void* featuresStruct = findStructureInChain(const_cast<const void*>(deviceFeatures2.pNext), getStructureType<VkPhysicalDeviceSwapchainMaintenance1FeaturesEXT>())) 6902 { 6903 static const Feature features[] = 6904 { 6905 FEATURE_ITEM (VkPhysicalDeviceSwapchainMaintenance1FeaturesEXT, swapchainMaintenance1), 6906 }; 6907 auto* supportedFeatures = reinterpret_cast<const VkPhysicalDeviceSwapchainMaintenance1FeaturesEXT*>(featuresStruct); 6908 checkFeatures(vkp, instance, instanceDriver, physicalDevice, 1, features, supportedFeatures, queueFamilyIndex, queueCount, queuePriority, numErrors, resultCollector, &extensionNames, emptyDeviceFeatures, isSubProcess); 6909 } 6910 6911 if (numErrors > 0) 6912 return tcu::TestStatus(resultCollector.getResult(), "Enabling unsupported features didn't return VK_ERROR_FEATURE_NOT_PRESENT."); 6913 else 6914 return tcu::TestStatus(resultCollector.getResult(), resultCollector.getMessage()); 6915} 6916 6917 6918tcu::TestStatus createDeviceWithUnsupportedFeaturesTestRayTracingInvocationReorderFeaturesNV (Context& context) 6919{ 6920 const PlatformInterface& vkp = context.getPlatformInterface(); 6921 tcu::TestLog& log = context.getTestContext().getLog(); 6922 tcu::ResultCollector resultCollector (log); 6923 const CustomInstance instance (createCustomInstanceWithExtensions(context, context.getInstanceExtensions(), DE_NULL, true)); 6924 const InstanceDriver& instanceDriver (instance.getDriver()); 6925 const VkPhysicalDevice physicalDevice = chooseDevice(instanceDriver, instance, context.getTestContext().getCommandLine()); 6926 const deUint32 queueFamilyIndex = 0; 6927 const deUint32 queueCount = 1; 6928 const float queuePriority = 1.0f; 6929 const DeviceFeatures deviceFeaturesAll (context.getInstanceInterface(), context.getUsedApiVersion(), physicalDevice, context.getInstanceExtensions(), context.getDeviceExtensions(), DE_TRUE); 6930 const VkPhysicalDeviceFeatures2 deviceFeatures2 = deviceFeaturesAll.getCoreFeatures2(); 6931 int numErrors = 0; 6932 bool isSubProcess = context.getTestContext().getCommandLine().isSubProcess(); 6933 6934 6935 VkPhysicalDeviceFeatures emptyDeviceFeatures; 6936 deMemset(&emptyDeviceFeatures, 0, sizeof(emptyDeviceFeatures)); 6937 6938 // Only non-core extensions will be used when creating the device. 6939 vector<const char*> coreExtensions; 6940 getCoreDeviceExtensions(context.getUsedApiVersion(), coreExtensions); 6941 vector<string> nonCoreExtensions(removeExtensions(context.getDeviceExtensions(), coreExtensions)); 6942 6943 vector<const char*> extensionNames; 6944 extensionNames.reserve(nonCoreExtensions.size()); 6945 for (const string& extension : nonCoreExtensions) 6946 extensionNames.push_back(extension.c_str()); 6947 6948 if (const void* featuresStruct = findStructureInChain(const_cast<const void*>(deviceFeatures2.pNext), getStructureType<VkPhysicalDeviceRayTracingInvocationReorderFeaturesNV>())) 6949 { 6950 static const Feature features[] = 6951 { 6952 FEATURE_ITEM (VkPhysicalDeviceRayTracingInvocationReorderFeaturesNV, rayTracingInvocationReorder), 6953 }; 6954 auto* supportedFeatures = reinterpret_cast<const VkPhysicalDeviceRayTracingInvocationReorderFeaturesNV*>(featuresStruct); 6955 checkFeatures(vkp, instance, instanceDriver, physicalDevice, 1, features, supportedFeatures, queueFamilyIndex, queueCount, queuePriority, numErrors, resultCollector, &extensionNames, emptyDeviceFeatures, isSubProcess); 6956 } 6957 6958 if (numErrors > 0) 6959 return tcu::TestStatus(resultCollector.getResult(), "Enabling unsupported features didn't return VK_ERROR_FEATURE_NOT_PRESENT."); 6960 else 6961 return tcu::TestStatus(resultCollector.getResult(), resultCollector.getMessage()); 6962} 6963 6964 6965tcu::TestStatus createDeviceWithUnsupportedFeaturesTestMultiviewPerViewViewportsFeaturesQCOM (Context& context) 6966{ 6967 const PlatformInterface& vkp = context.getPlatformInterface(); 6968 tcu::TestLog& log = context.getTestContext().getLog(); 6969 tcu::ResultCollector resultCollector (log); 6970 const CustomInstance instance (createCustomInstanceWithExtensions(context, context.getInstanceExtensions(), DE_NULL, true)); 6971 const InstanceDriver& instanceDriver (instance.getDriver()); 6972 const VkPhysicalDevice physicalDevice = chooseDevice(instanceDriver, instance, context.getTestContext().getCommandLine()); 6973 const deUint32 queueFamilyIndex = 0; 6974 const deUint32 queueCount = 1; 6975 const float queuePriority = 1.0f; 6976 const DeviceFeatures deviceFeaturesAll (context.getInstanceInterface(), context.getUsedApiVersion(), physicalDevice, context.getInstanceExtensions(), context.getDeviceExtensions(), DE_TRUE); 6977 const VkPhysicalDeviceFeatures2 deviceFeatures2 = deviceFeaturesAll.getCoreFeatures2(); 6978 int numErrors = 0; 6979 bool isSubProcess = context.getTestContext().getCommandLine().isSubProcess(); 6980 6981 6982 VkPhysicalDeviceFeatures emptyDeviceFeatures; 6983 deMemset(&emptyDeviceFeatures, 0, sizeof(emptyDeviceFeatures)); 6984 6985 // Only non-core extensions will be used when creating the device. 6986 vector<const char*> coreExtensions; 6987 getCoreDeviceExtensions(context.getUsedApiVersion(), coreExtensions); 6988 vector<string> nonCoreExtensions(removeExtensions(context.getDeviceExtensions(), coreExtensions)); 6989 6990 vector<const char*> extensionNames; 6991 extensionNames.reserve(nonCoreExtensions.size()); 6992 for (const string& extension : nonCoreExtensions) 6993 extensionNames.push_back(extension.c_str()); 6994 6995 if (const void* featuresStruct = findStructureInChain(const_cast<const void*>(deviceFeatures2.pNext), getStructureType<VkPhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM>())) 6996 { 6997 static const Feature features[] = 6998 { 6999 FEATURE_ITEM (VkPhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM, multiviewPerViewViewports), 7000 }; 7001 auto* supportedFeatures = reinterpret_cast<const VkPhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM*>(featuresStruct); 7002 checkFeatures(vkp, instance, instanceDriver, physicalDevice, 1, features, supportedFeatures, queueFamilyIndex, queueCount, queuePriority, numErrors, resultCollector, &extensionNames, emptyDeviceFeatures, isSubProcess); 7003 } 7004 7005 if (numErrors > 0) 7006 return tcu::TestStatus(resultCollector.getResult(), "Enabling unsupported features didn't return VK_ERROR_FEATURE_NOT_PRESENT."); 7007 else 7008 return tcu::TestStatus(resultCollector.getResult(), resultCollector.getMessage()); 7009} 7010 7011 7012void addSeparateUnsupportedFeatureTests (tcu::TestCaseGroup* testGroup) 7013{ 7014 7015 addFunctionCase(testGroup, "device_generated_commands_features_nv", "createDeviceWithUnsupportedFeaturesTestDeviceGeneratedCommandsFeaturesNV", createDeviceWithUnsupportedFeaturesTestDeviceGeneratedCommandsFeaturesNV); 7016 addFunctionCase(testGroup, "private_data_features", "createDeviceWithUnsupportedFeaturesTestPrivateDataFeatures", createDeviceWithUnsupportedFeaturesTestPrivateDataFeatures); 7017 addFunctionCase(testGroup, "variable_pointers_features", "createDeviceWithUnsupportedFeaturesTestVariablePointersFeatures", createDeviceWithUnsupportedFeaturesTestVariablePointersFeatures); 7018 addFunctionCase(testGroup, "multiview_features", "createDeviceWithUnsupportedFeaturesTestMultiviewFeatures", createDeviceWithUnsupportedFeaturesTestMultiviewFeatures); 7019 addFunctionCase(testGroup, "present_id_features_khr", "createDeviceWithUnsupportedFeaturesTestPresentIdFeaturesKHR", createDeviceWithUnsupportedFeaturesTestPresentIdFeaturesKHR); 7020 addFunctionCase(testGroup, "present_wait_features_khr", "createDeviceWithUnsupportedFeaturesTestPresentWaitFeaturesKHR", createDeviceWithUnsupportedFeaturesTestPresentWaitFeaturesKHR); 7021 addFunctionCase(testGroup, "16_bit_storage_features", "createDeviceWithUnsupportedFeaturesTest16BitStorageFeatures", createDeviceWithUnsupportedFeaturesTest16BitStorageFeatures); 7022 addFunctionCase(testGroup, "shader_subgroup_extended_types_features", "createDeviceWithUnsupportedFeaturesTestShaderSubgroupExtendedTypesFeatures", createDeviceWithUnsupportedFeaturesTestShaderSubgroupExtendedTypesFeatures); 7023 addFunctionCase(testGroup, "sampler_ycbcr_conversion_features", "createDeviceWithUnsupportedFeaturesTestSamplerYcbcrConversionFeatures", createDeviceWithUnsupportedFeaturesTestSamplerYcbcrConversionFeatures); 7024 addFunctionCase(testGroup, "protected_memory_features", "createDeviceWithUnsupportedFeaturesTestProtectedMemoryFeatures", createDeviceWithUnsupportedFeaturesTestProtectedMemoryFeatures); 7025 addFunctionCase(testGroup, "blend_operation_advanced_features_ext", "createDeviceWithUnsupportedFeaturesTestBlendOperationAdvancedFeaturesEXT", createDeviceWithUnsupportedFeaturesTestBlendOperationAdvancedFeaturesEXT); 7026 addFunctionCase(testGroup, "multi_draw_features_ext", "createDeviceWithUnsupportedFeaturesTestMultiDrawFeaturesEXT", createDeviceWithUnsupportedFeaturesTestMultiDrawFeaturesEXT); 7027 addFunctionCase(testGroup, "inline_uniform_block_features", "createDeviceWithUnsupportedFeaturesTestInlineUniformBlockFeatures", createDeviceWithUnsupportedFeaturesTestInlineUniformBlockFeatures); 7028 addFunctionCase(testGroup, "maintenance4_features", "createDeviceWithUnsupportedFeaturesTestMaintenance4Features", createDeviceWithUnsupportedFeaturesTestMaintenance4Features); 7029 addFunctionCase(testGroup, "shader_draw_parameters_features", "createDeviceWithUnsupportedFeaturesTestShaderDrawParametersFeatures", createDeviceWithUnsupportedFeaturesTestShaderDrawParametersFeatures); 7030 addFunctionCase(testGroup, "shader_float16_int8_features", "createDeviceWithUnsupportedFeaturesTestShaderFloat16Int8Features", createDeviceWithUnsupportedFeaturesTestShaderFloat16Int8Features); 7031 addFunctionCase(testGroup, "host_query_reset_features", "createDeviceWithUnsupportedFeaturesTestHostQueryResetFeatures", createDeviceWithUnsupportedFeaturesTestHostQueryResetFeatures); 7032 addFunctionCase(testGroup, "global_priority_query_features_khr", "createDeviceWithUnsupportedFeaturesTestGlobalPriorityQueryFeaturesKHR", createDeviceWithUnsupportedFeaturesTestGlobalPriorityQueryFeaturesKHR); 7033 addFunctionCase(testGroup, "device_memory_report_features_ext", "createDeviceWithUnsupportedFeaturesTestDeviceMemoryReportFeaturesEXT", createDeviceWithUnsupportedFeaturesTestDeviceMemoryReportFeaturesEXT); 7034 addFunctionCase(testGroup, "descriptor_indexing_features", "createDeviceWithUnsupportedFeaturesTestDescriptorIndexingFeatures", createDeviceWithUnsupportedFeaturesTestDescriptorIndexingFeatures); 7035 addFunctionCase(testGroup, "timeline_semaphore_features", "createDeviceWithUnsupportedFeaturesTestTimelineSemaphoreFeatures", createDeviceWithUnsupportedFeaturesTestTimelineSemaphoreFeatures); 7036 addFunctionCase(testGroup, "8_bit_storage_features", "createDeviceWithUnsupportedFeaturesTest8BitStorageFeatures", createDeviceWithUnsupportedFeaturesTest8BitStorageFeatures); 7037 addFunctionCase(testGroup, "conditional_rendering_features_ext", "createDeviceWithUnsupportedFeaturesTestConditionalRenderingFeaturesEXT", createDeviceWithUnsupportedFeaturesTestConditionalRenderingFeaturesEXT); 7038 addFunctionCase(testGroup, "vulkan_memory_model_features", "createDeviceWithUnsupportedFeaturesTestVulkanMemoryModelFeatures", createDeviceWithUnsupportedFeaturesTestVulkanMemoryModelFeatures); 7039 addFunctionCase(testGroup, "shader_atomic_int64_features", "createDeviceWithUnsupportedFeaturesTestShaderAtomicInt64Features", createDeviceWithUnsupportedFeaturesTestShaderAtomicInt64Features); 7040 addFunctionCase(testGroup, "shader_atomic_float_features_ext", "createDeviceWithUnsupportedFeaturesTestShaderAtomicFloatFeaturesEXT", createDeviceWithUnsupportedFeaturesTestShaderAtomicFloatFeaturesEXT); 7041 addFunctionCase(testGroup, "shader_atomic_float2_features_ext", "createDeviceWithUnsupportedFeaturesTestShaderAtomicFloat2FeaturesEXT", createDeviceWithUnsupportedFeaturesTestShaderAtomicFloat2FeaturesEXT); 7042 addFunctionCase(testGroup, "vertex_attribute_divisor_features_ext", "createDeviceWithUnsupportedFeaturesTestVertexAttributeDivisorFeaturesEXT", createDeviceWithUnsupportedFeaturesTestVertexAttributeDivisorFeaturesEXT); 7043 addFunctionCase(testGroup, "astc_decode_features_ext", "createDeviceWithUnsupportedFeaturesTestASTCDecodeFeaturesEXT", createDeviceWithUnsupportedFeaturesTestASTCDecodeFeaturesEXT); 7044 addFunctionCase(testGroup, "transform_feedback_features_ext", "createDeviceWithUnsupportedFeaturesTestTransformFeedbackFeaturesEXT", createDeviceWithUnsupportedFeaturesTestTransformFeedbackFeaturesEXT); 7045 addFunctionCase(testGroup, "representative_fragment_test_features_nv", "createDeviceWithUnsupportedFeaturesTestRepresentativeFragmentTestFeaturesNV", createDeviceWithUnsupportedFeaturesTestRepresentativeFragmentTestFeaturesNV); 7046 addFunctionCase(testGroup, "exclusive_scissor_features_nv", "createDeviceWithUnsupportedFeaturesTestExclusiveScissorFeaturesNV", createDeviceWithUnsupportedFeaturesTestExclusiveScissorFeaturesNV); 7047 addFunctionCase(testGroup, "corner_sampled_image_features_nv", "createDeviceWithUnsupportedFeaturesTestCornerSampledImageFeaturesNV", createDeviceWithUnsupportedFeaturesTestCornerSampledImageFeaturesNV); 7048 addFunctionCase(testGroup, "compute_shader_derivatives_features_nv", "createDeviceWithUnsupportedFeaturesTestComputeShaderDerivativesFeaturesNV", createDeviceWithUnsupportedFeaturesTestComputeShaderDerivativesFeaturesNV); 7049 addFunctionCase(testGroup, "shader_image_footprint_features_nv", "createDeviceWithUnsupportedFeaturesTestShaderImageFootprintFeaturesNV", createDeviceWithUnsupportedFeaturesTestShaderImageFootprintFeaturesNV); 7050 addFunctionCase(testGroup, "dedicated_allocation_image_aliasing_features_nv", "createDeviceWithUnsupportedFeaturesTestDedicatedAllocationImageAliasingFeaturesNV", createDeviceWithUnsupportedFeaturesTestDedicatedAllocationImageAliasingFeaturesNV); 7051 addFunctionCase(testGroup, "copy_memory_indirect_features_nv", "createDeviceWithUnsupportedFeaturesTestCopyMemoryIndirectFeaturesNV", createDeviceWithUnsupportedFeaturesTestCopyMemoryIndirectFeaturesNV); 7052 addFunctionCase(testGroup, "memory_decompression_features_nv", "createDeviceWithUnsupportedFeaturesTestMemoryDecompressionFeaturesNV", createDeviceWithUnsupportedFeaturesTestMemoryDecompressionFeaturesNV); 7053 addFunctionCase(testGroup, "shading_rate_image_features_nv", "createDeviceWithUnsupportedFeaturesTestShadingRateImageFeaturesNV", createDeviceWithUnsupportedFeaturesTestShadingRateImageFeaturesNV); 7054 addFunctionCase(testGroup, "invocation_mask_features_huawei", "createDeviceWithUnsupportedFeaturesTestInvocationMaskFeaturesHUAWEI", createDeviceWithUnsupportedFeaturesTestInvocationMaskFeaturesHUAWEI); 7055 addFunctionCase(testGroup, "mesh_shader_features_nv", "createDeviceWithUnsupportedFeaturesTestMeshShaderFeaturesNV", createDeviceWithUnsupportedFeaturesTestMeshShaderFeaturesNV); 7056 addFunctionCase(testGroup, "mesh_shader_features_ext", "createDeviceWithUnsupportedFeaturesTestMeshShaderFeaturesEXT", createDeviceWithUnsupportedFeaturesTestMeshShaderFeaturesEXT); 7057 addFunctionCase(testGroup, "acceleration_structure_features_khr", "createDeviceWithUnsupportedFeaturesTestAccelerationStructureFeaturesKHR", createDeviceWithUnsupportedFeaturesTestAccelerationStructureFeaturesKHR); 7058 addFunctionCase(testGroup, "ray_tracing_pipeline_features_khr", "createDeviceWithUnsupportedFeaturesTestRayTracingPipelineFeaturesKHR", createDeviceWithUnsupportedFeaturesTestRayTracingPipelineFeaturesKHR); 7059 addFunctionCase(testGroup, "ray_query_features_khr", "createDeviceWithUnsupportedFeaturesTestRayQueryFeaturesKHR", createDeviceWithUnsupportedFeaturesTestRayQueryFeaturesKHR); 7060 addFunctionCase(testGroup, "ray_tracing_maintenance1_features_khr", "createDeviceWithUnsupportedFeaturesTestRayTracingMaintenance1FeaturesKHR", createDeviceWithUnsupportedFeaturesTestRayTracingMaintenance1FeaturesKHR); 7061 addFunctionCase(testGroup, "fragment_density_map_features_ext", "createDeviceWithUnsupportedFeaturesTestFragmentDensityMapFeaturesEXT", createDeviceWithUnsupportedFeaturesTestFragmentDensityMapFeaturesEXT); 7062 addFunctionCase(testGroup, "fragment_density_map2_features_ext", "createDeviceWithUnsupportedFeaturesTestFragmentDensityMap2FeaturesEXT", createDeviceWithUnsupportedFeaturesTestFragmentDensityMap2FeaturesEXT); 7063 addFunctionCase(testGroup, "fragment_density_map_offset_features_qcom", "createDeviceWithUnsupportedFeaturesTestFragmentDensityMapOffsetFeaturesQCOM", createDeviceWithUnsupportedFeaturesTestFragmentDensityMapOffsetFeaturesQCOM); 7064 addFunctionCase(testGroup, "scalar_block_layout_features", "createDeviceWithUnsupportedFeaturesTestScalarBlockLayoutFeatures", createDeviceWithUnsupportedFeaturesTestScalarBlockLayoutFeatures); 7065 addFunctionCase(testGroup, "uniform_buffer_standard_layout_features", "createDeviceWithUnsupportedFeaturesTestUniformBufferStandardLayoutFeatures", createDeviceWithUnsupportedFeaturesTestUniformBufferStandardLayoutFeatures); 7066 addFunctionCase(testGroup, "depth_clip_enable_features_ext", "createDeviceWithUnsupportedFeaturesTestDepthClipEnableFeaturesEXT", createDeviceWithUnsupportedFeaturesTestDepthClipEnableFeaturesEXT); 7067 addFunctionCase(testGroup, "memory_priority_features_ext", "createDeviceWithUnsupportedFeaturesTestMemoryPriorityFeaturesEXT", createDeviceWithUnsupportedFeaturesTestMemoryPriorityFeaturesEXT); 7068 addFunctionCase(testGroup, "pageable_device_local_memory_features_ext", "createDeviceWithUnsupportedFeaturesTestPageableDeviceLocalMemoryFeaturesEXT", createDeviceWithUnsupportedFeaturesTestPageableDeviceLocalMemoryFeaturesEXT); 7069 addFunctionCase(testGroup, "buffer_device_address_features", "createDeviceWithUnsupportedFeaturesTestBufferDeviceAddressFeatures", createDeviceWithUnsupportedFeaturesTestBufferDeviceAddressFeatures); 7070 addFunctionCase(testGroup, "buffer_device_address_features_ext", "createDeviceWithUnsupportedFeaturesTestBufferDeviceAddressFeaturesEXT", createDeviceWithUnsupportedFeaturesTestBufferDeviceAddressFeaturesEXT); 7071 addFunctionCase(testGroup, "imageless_framebuffer_features", "createDeviceWithUnsupportedFeaturesTestImagelessFramebufferFeatures", createDeviceWithUnsupportedFeaturesTestImagelessFramebufferFeatures); 7072 addFunctionCase(testGroup, "texture_compression_astchdr_features", "createDeviceWithUnsupportedFeaturesTestTextureCompressionASTCHDRFeatures", createDeviceWithUnsupportedFeaturesTestTextureCompressionASTCHDRFeatures); 7073 addFunctionCase(testGroup, "cooperative_matrix_features_nv", "createDeviceWithUnsupportedFeaturesTestCooperativeMatrixFeaturesNV", createDeviceWithUnsupportedFeaturesTestCooperativeMatrixFeaturesNV); 7074 addFunctionCase(testGroup, "ycbcr_image_arrays_features_ext", "createDeviceWithUnsupportedFeaturesTestYcbcrImageArraysFeaturesEXT", createDeviceWithUnsupportedFeaturesTestYcbcrImageArraysFeaturesEXT); 7075 addFunctionCase(testGroup, "present_barrier_features_nv", "createDeviceWithUnsupportedFeaturesTestPresentBarrierFeaturesNV", createDeviceWithUnsupportedFeaturesTestPresentBarrierFeaturesNV); 7076 addFunctionCase(testGroup, "performance_query_features_khr", "createDeviceWithUnsupportedFeaturesTestPerformanceQueryFeaturesKHR", createDeviceWithUnsupportedFeaturesTestPerformanceQueryFeaturesKHR); 7077 addFunctionCase(testGroup, "coverage_reduction_mode_features_nv", "createDeviceWithUnsupportedFeaturesTestCoverageReductionModeFeaturesNV", createDeviceWithUnsupportedFeaturesTestCoverageReductionModeFeaturesNV); 7078 addFunctionCase(testGroup, "shader_integer_functions2_features_intel", "createDeviceWithUnsupportedFeaturesTestShaderIntegerFunctions2FeaturesINTEL", createDeviceWithUnsupportedFeaturesTestShaderIntegerFunctions2FeaturesINTEL); 7079 addFunctionCase(testGroup, "shader_clock_features_khr", "createDeviceWithUnsupportedFeaturesTestShaderClockFeaturesKHR", createDeviceWithUnsupportedFeaturesTestShaderClockFeaturesKHR); 7080 addFunctionCase(testGroup, "index_type_uint8_features_ext", "createDeviceWithUnsupportedFeaturesTestIndexTypeUint8FeaturesEXT", createDeviceWithUnsupportedFeaturesTestIndexTypeUint8FeaturesEXT); 7081 addFunctionCase(testGroup, "shader_sm_builtins_features_nv", "createDeviceWithUnsupportedFeaturesTestShaderSMBuiltinsFeaturesNV", createDeviceWithUnsupportedFeaturesTestShaderSMBuiltinsFeaturesNV); 7082 addFunctionCase(testGroup, "fragment_shader_interlock_features_ext", "createDeviceWithUnsupportedFeaturesTestFragmentShaderInterlockFeaturesEXT", createDeviceWithUnsupportedFeaturesTestFragmentShaderInterlockFeaturesEXT); 7083 addFunctionCase(testGroup, "separate_depth_stencil_layouts_features", "createDeviceWithUnsupportedFeaturesTestSeparateDepthStencilLayoutsFeatures", createDeviceWithUnsupportedFeaturesTestSeparateDepthStencilLayoutsFeatures); 7084 addFunctionCase(testGroup, "primitive_topology_list_restart_features_ext", "createDeviceWithUnsupportedFeaturesTestPrimitiveTopologyListRestartFeaturesEXT", createDeviceWithUnsupportedFeaturesTestPrimitiveTopologyListRestartFeaturesEXT); 7085 addFunctionCase(testGroup, "pipeline_executable_properties_features_khr", "createDeviceWithUnsupportedFeaturesTestPipelineExecutablePropertiesFeaturesKHR", createDeviceWithUnsupportedFeaturesTestPipelineExecutablePropertiesFeaturesKHR); 7086 addFunctionCase(testGroup, "shader_demote_to_helper_invocation_features", "createDeviceWithUnsupportedFeaturesTestShaderDemoteToHelperInvocationFeatures", createDeviceWithUnsupportedFeaturesTestShaderDemoteToHelperInvocationFeatures); 7087 addFunctionCase(testGroup, "texel_buffer_alignment_features_ext", "createDeviceWithUnsupportedFeaturesTestTexelBufferAlignmentFeaturesEXT", createDeviceWithUnsupportedFeaturesTestTexelBufferAlignmentFeaturesEXT); 7088 addFunctionCase(testGroup, "subgroup_size_control_features", "createDeviceWithUnsupportedFeaturesTestSubgroupSizeControlFeatures", createDeviceWithUnsupportedFeaturesTestSubgroupSizeControlFeatures); 7089 addFunctionCase(testGroup, "line_rasterization_features_ext", "createDeviceWithUnsupportedFeaturesTestLineRasterizationFeaturesEXT", createDeviceWithUnsupportedFeaturesTestLineRasterizationFeaturesEXT); 7090 addFunctionCase(testGroup, "pipeline_creation_cache_control_features", "createDeviceWithUnsupportedFeaturesTestPipelineCreationCacheControlFeatures", createDeviceWithUnsupportedFeaturesTestPipelineCreationCacheControlFeatures); 7091 addFunctionCase(testGroup, "vulkan11_features", "createDeviceWithUnsupportedFeaturesTestVulkan11Features", createDeviceWithUnsupportedFeaturesTestVulkan11Features); 7092 addFunctionCase(testGroup, "vulkan12_features", "createDeviceWithUnsupportedFeaturesTestVulkan12Features", createDeviceWithUnsupportedFeaturesTestVulkan12Features); 7093 addFunctionCase(testGroup, "vulkan13_features", "createDeviceWithUnsupportedFeaturesTestVulkan13Features", createDeviceWithUnsupportedFeaturesTestVulkan13Features); 7094 addFunctionCase(testGroup, "coherent_memory_features_amd", "createDeviceWithUnsupportedFeaturesTestCoherentMemoryFeaturesAMD", createDeviceWithUnsupportedFeaturesTestCoherentMemoryFeaturesAMD); 7095 addFunctionCase(testGroup, "custom_border_color_features_ext", "createDeviceWithUnsupportedFeaturesTestCustomBorderColorFeaturesEXT", createDeviceWithUnsupportedFeaturesTestCustomBorderColorFeaturesEXT); 7096 addFunctionCase(testGroup, "border_color_swizzle_features_ext", "createDeviceWithUnsupportedFeaturesTestBorderColorSwizzleFeaturesEXT", createDeviceWithUnsupportedFeaturesTestBorderColorSwizzleFeaturesEXT); 7097 addFunctionCase(testGroup, "extended_dynamic_state_features_ext", "createDeviceWithUnsupportedFeaturesTestExtendedDynamicStateFeaturesEXT", createDeviceWithUnsupportedFeaturesTestExtendedDynamicStateFeaturesEXT); 7098 addFunctionCase(testGroup, "extended_dynamic_state2_features_ext", "createDeviceWithUnsupportedFeaturesTestExtendedDynamicState2FeaturesEXT", createDeviceWithUnsupportedFeaturesTestExtendedDynamicState2FeaturesEXT); 7099 addFunctionCase(testGroup, "extended_dynamic_state3_features_ext", "createDeviceWithUnsupportedFeaturesTestExtendedDynamicState3FeaturesEXT", createDeviceWithUnsupportedFeaturesTestExtendedDynamicState3FeaturesEXT); 7100 addFunctionCase(testGroup, "diagnostics_config_features_nv", "createDeviceWithUnsupportedFeaturesTestDiagnosticsConfigFeaturesNV", createDeviceWithUnsupportedFeaturesTestDiagnosticsConfigFeaturesNV); 7101 addFunctionCase(testGroup, "zero_initialize_workgroup_memory_features", "createDeviceWithUnsupportedFeaturesTestZeroInitializeWorkgroupMemoryFeatures", createDeviceWithUnsupportedFeaturesTestZeroInitializeWorkgroupMemoryFeatures); 7102 addFunctionCase(testGroup, "shader_subgroup_uniform_control_flow_features_khr", "createDeviceWithUnsupportedFeaturesTestShaderSubgroupUniformControlFlowFeaturesKHR", createDeviceWithUnsupportedFeaturesTestShaderSubgroupUniformControlFlowFeaturesKHR); 7103 addFunctionCase(testGroup, "robustness2_features_ext", "createDeviceWithUnsupportedFeaturesTestRobustness2FeaturesEXT", createDeviceWithUnsupportedFeaturesTestRobustness2FeaturesEXT); 7104 addFunctionCase(testGroup, "image_robustness_features", "createDeviceWithUnsupportedFeaturesTestImageRobustnessFeatures", createDeviceWithUnsupportedFeaturesTestImageRobustnessFeatures); 7105 addFunctionCase(testGroup, "workgroup_memory_explicit_layout_features_khr", "createDeviceWithUnsupportedFeaturesTestWorkgroupMemoryExplicitLayoutFeaturesKHR", createDeviceWithUnsupportedFeaturesTestWorkgroupMemoryExplicitLayoutFeaturesKHR); 7106 addFunctionCase(testGroup, "portability_subset_features_khr", "createDeviceWithUnsupportedFeaturesTestPortabilitySubsetFeaturesKHR", createDeviceWithUnsupportedFeaturesTestPortabilitySubsetFeaturesKHR); 7107 addFunctionCase(testGroup, "4444_formats_features_ext", "createDeviceWithUnsupportedFeaturesTest4444FormatsFeaturesEXT", createDeviceWithUnsupportedFeaturesTest4444FormatsFeaturesEXT); 7108 addFunctionCase(testGroup, "subpass_shading_features_huawei", "createDeviceWithUnsupportedFeaturesTestSubpassShadingFeaturesHUAWEI", createDeviceWithUnsupportedFeaturesTestSubpassShadingFeaturesHUAWEI); 7109 addFunctionCase(testGroup, "shader_image_atomic_int64_features_ext", "createDeviceWithUnsupportedFeaturesTestShaderImageAtomicInt64FeaturesEXT", createDeviceWithUnsupportedFeaturesTestShaderImageAtomicInt64FeaturesEXT); 7110 addFunctionCase(testGroup, "fragment_shading_rate_features_khr", "createDeviceWithUnsupportedFeaturesTestFragmentShadingRateFeaturesKHR", createDeviceWithUnsupportedFeaturesTestFragmentShadingRateFeaturesKHR); 7111 addFunctionCase(testGroup, "shader_terminate_invocation_features", "createDeviceWithUnsupportedFeaturesTestShaderTerminateInvocationFeatures", createDeviceWithUnsupportedFeaturesTestShaderTerminateInvocationFeatures); 7112 addFunctionCase(testGroup, "fragment_shading_rate_enums_features_nv", "createDeviceWithUnsupportedFeaturesTestFragmentShadingRateEnumsFeaturesNV", createDeviceWithUnsupportedFeaturesTestFragmentShadingRateEnumsFeaturesNV); 7113 addFunctionCase(testGroup, "image2_d_view_of3_d_features_ext", "createDeviceWithUnsupportedFeaturesTestImage2DViewOf3DFeaturesEXT", createDeviceWithUnsupportedFeaturesTestImage2DViewOf3DFeaturesEXT); 7114 addFunctionCase(testGroup, "mutable_descriptor_type_features_ext", "createDeviceWithUnsupportedFeaturesTestMutableDescriptorTypeFeaturesEXT", createDeviceWithUnsupportedFeaturesTestMutableDescriptorTypeFeaturesEXT); 7115 addFunctionCase(testGroup, "depth_clip_control_features_ext", "createDeviceWithUnsupportedFeaturesTestDepthClipControlFeaturesEXT", createDeviceWithUnsupportedFeaturesTestDepthClipControlFeaturesEXT); 7116 addFunctionCase(testGroup, "vertex_input_dynamic_state_features_ext", "createDeviceWithUnsupportedFeaturesTestVertexInputDynamicStateFeaturesEXT", createDeviceWithUnsupportedFeaturesTestVertexInputDynamicStateFeaturesEXT); 7117 addFunctionCase(testGroup, "external_memory_rdma_features_nv", "createDeviceWithUnsupportedFeaturesTestExternalMemoryRDMAFeaturesNV", createDeviceWithUnsupportedFeaturesTestExternalMemoryRDMAFeaturesNV); 7118 addFunctionCase(testGroup, "color_write_enable_features_ext", "createDeviceWithUnsupportedFeaturesTestColorWriteEnableFeaturesEXT", createDeviceWithUnsupportedFeaturesTestColorWriteEnableFeaturesEXT); 7119 addFunctionCase(testGroup, "synchronization2_features", "createDeviceWithUnsupportedFeaturesTestSynchronization2Features", createDeviceWithUnsupportedFeaturesTestSynchronization2Features); 7120 addFunctionCase(testGroup, "primitives_generated_query_features_ext", "createDeviceWithUnsupportedFeaturesTestPrimitivesGeneratedQueryFeaturesEXT", createDeviceWithUnsupportedFeaturesTestPrimitivesGeneratedQueryFeaturesEXT); 7121 addFunctionCase(testGroup, "legacy_dithering_features_ext", "createDeviceWithUnsupportedFeaturesTestLegacyDitheringFeaturesEXT", createDeviceWithUnsupportedFeaturesTestLegacyDitheringFeaturesEXT); 7122 addFunctionCase(testGroup, "multisampled_render_to_single_sampled_features_ext", "createDeviceWithUnsupportedFeaturesTestMultisampledRenderToSingleSampledFeaturesEXT", createDeviceWithUnsupportedFeaturesTestMultisampledRenderToSingleSampledFeaturesEXT); 7123 addFunctionCase(testGroup, "pipeline_protected_access_features_ext", "createDeviceWithUnsupportedFeaturesTestPipelineProtectedAccessFeaturesEXT", createDeviceWithUnsupportedFeaturesTestPipelineProtectedAccessFeaturesEXT); 7124 addFunctionCase(testGroup, "inherited_viewport_scissor_features_nv", "createDeviceWithUnsupportedFeaturesTestInheritedViewportScissorFeaturesNV", createDeviceWithUnsupportedFeaturesTestInheritedViewportScissorFeaturesNV); 7125 addFunctionCase(testGroup, "ycbcr2_plane444_formats_features_ext", "createDeviceWithUnsupportedFeaturesTestYcbcr2Plane444FormatsFeaturesEXT", createDeviceWithUnsupportedFeaturesTestYcbcr2Plane444FormatsFeaturesEXT); 7126 addFunctionCase(testGroup, "provoking_vertex_features_ext", "createDeviceWithUnsupportedFeaturesTestProvokingVertexFeaturesEXT", createDeviceWithUnsupportedFeaturesTestProvokingVertexFeaturesEXT); 7127 addFunctionCase(testGroup, "descriptor_buffer_features_ext", "createDeviceWithUnsupportedFeaturesTestDescriptorBufferFeaturesEXT", createDeviceWithUnsupportedFeaturesTestDescriptorBufferFeaturesEXT); 7128 addFunctionCase(testGroup, "shader_integer_dot_product_features", "createDeviceWithUnsupportedFeaturesTestShaderIntegerDotProductFeatures", createDeviceWithUnsupportedFeaturesTestShaderIntegerDotProductFeatures); 7129 addFunctionCase(testGroup, "fragment_shader_barycentric_features_khr", "createDeviceWithUnsupportedFeaturesTestFragmentShaderBarycentricFeaturesKHR", createDeviceWithUnsupportedFeaturesTestFragmentShaderBarycentricFeaturesKHR); 7130 addFunctionCase(testGroup, "ray_tracing_motion_blur_features_nv", "createDeviceWithUnsupportedFeaturesTestRayTracingMotionBlurFeaturesNV", createDeviceWithUnsupportedFeaturesTestRayTracingMotionBlurFeaturesNV); 7131 addFunctionCase(testGroup, "rgba10_x6_formats_features_ext", "createDeviceWithUnsupportedFeaturesTestRGBA10X6FormatsFeaturesEXT", createDeviceWithUnsupportedFeaturesTestRGBA10X6FormatsFeaturesEXT); 7132 addFunctionCase(testGroup, "dynamic_rendering_features", "createDeviceWithUnsupportedFeaturesTestDynamicRenderingFeatures", createDeviceWithUnsupportedFeaturesTestDynamicRenderingFeatures); 7133 addFunctionCase(testGroup, "image_view_min_lod_features_ext", "createDeviceWithUnsupportedFeaturesTestImageViewMinLodFeaturesEXT", createDeviceWithUnsupportedFeaturesTestImageViewMinLodFeaturesEXT); 7134 addFunctionCase(testGroup, "rasterization_order_attachment_access_features_ext", "createDeviceWithUnsupportedFeaturesTestRasterizationOrderAttachmentAccessFeaturesEXT", createDeviceWithUnsupportedFeaturesTestRasterizationOrderAttachmentAccessFeaturesEXT); 7135 addFunctionCase(testGroup, "linear_color_attachment_features_nv", "createDeviceWithUnsupportedFeaturesTestLinearColorAttachmentFeaturesNV", createDeviceWithUnsupportedFeaturesTestLinearColorAttachmentFeaturesNV); 7136 addFunctionCase(testGroup, "graphics_pipeline_library_features_ext", "createDeviceWithUnsupportedFeaturesTestGraphicsPipelineLibraryFeaturesEXT", createDeviceWithUnsupportedFeaturesTestGraphicsPipelineLibraryFeaturesEXT); 7137 addFunctionCase(testGroup, "descriptor_set_host_mapping_features_valve", "createDeviceWithUnsupportedFeaturesTestDescriptorSetHostMappingFeaturesVALVE", createDeviceWithUnsupportedFeaturesTestDescriptorSetHostMappingFeaturesVALVE); 7138 addFunctionCase(testGroup, "shader_module_identifier_features_ext", "createDeviceWithUnsupportedFeaturesTestShaderModuleIdentifierFeaturesEXT", createDeviceWithUnsupportedFeaturesTestShaderModuleIdentifierFeaturesEXT); 7139 addFunctionCase(testGroup, "image_compression_control_features_ext", "createDeviceWithUnsupportedFeaturesTestImageCompressionControlFeaturesEXT", createDeviceWithUnsupportedFeaturesTestImageCompressionControlFeaturesEXT); 7140 addFunctionCase(testGroup, "image_compression_control_swapchain_features_ext", "createDeviceWithUnsupportedFeaturesTestImageCompressionControlSwapchainFeaturesEXT", createDeviceWithUnsupportedFeaturesTestImageCompressionControlSwapchainFeaturesEXT); 7141 addFunctionCase(testGroup, "subpass_merge_feedback_features_ext", "createDeviceWithUnsupportedFeaturesTestSubpassMergeFeedbackFeaturesEXT", createDeviceWithUnsupportedFeaturesTestSubpassMergeFeedbackFeaturesEXT); 7142 addFunctionCase(testGroup, "opacity_micromap_features_ext", "createDeviceWithUnsupportedFeaturesTestOpacityMicromapFeaturesEXT", createDeviceWithUnsupportedFeaturesTestOpacityMicromapFeaturesEXT); 7143 addFunctionCase(testGroup, "pipeline_properties_features_ext", "createDeviceWithUnsupportedFeaturesTestPipelinePropertiesFeaturesEXT", createDeviceWithUnsupportedFeaturesTestPipelinePropertiesFeaturesEXT); 7144 addFunctionCase(testGroup, "shader_early_and_late_fragment_tests_features_amd", "createDeviceWithUnsupportedFeaturesTestShaderEarlyAndLateFragmentTestsFeaturesAMD", createDeviceWithUnsupportedFeaturesTestShaderEarlyAndLateFragmentTestsFeaturesAMD); 7145 addFunctionCase(testGroup, "non_seamless_cube_map_features_ext", "createDeviceWithUnsupportedFeaturesTestNonSeamlessCubeMapFeaturesEXT", createDeviceWithUnsupportedFeaturesTestNonSeamlessCubeMapFeaturesEXT); 7146 addFunctionCase(testGroup, "pipeline_robustness_features_ext", "createDeviceWithUnsupportedFeaturesTestPipelineRobustnessFeaturesEXT", createDeviceWithUnsupportedFeaturesTestPipelineRobustnessFeaturesEXT); 7147 addFunctionCase(testGroup, "image_processing_features_qcom", "createDeviceWithUnsupportedFeaturesTestImageProcessingFeaturesQCOM", createDeviceWithUnsupportedFeaturesTestImageProcessingFeaturesQCOM); 7148 addFunctionCase(testGroup, "tile_properties_features_qcom", "createDeviceWithUnsupportedFeaturesTestTilePropertiesFeaturesQCOM", createDeviceWithUnsupportedFeaturesTestTilePropertiesFeaturesQCOM); 7149 addFunctionCase(testGroup, "amigo_profiling_features_sec", "createDeviceWithUnsupportedFeaturesTestAmigoProfilingFeaturesSEC", createDeviceWithUnsupportedFeaturesTestAmigoProfilingFeaturesSEC); 7150 addFunctionCase(testGroup, "attachment_feedback_loop_layout_features_ext", "createDeviceWithUnsupportedFeaturesTestAttachmentFeedbackLoopLayoutFeaturesEXT", createDeviceWithUnsupportedFeaturesTestAttachmentFeedbackLoopLayoutFeaturesEXT); 7151 addFunctionCase(testGroup, "depth_clamp_zero_one_features_ext", "createDeviceWithUnsupportedFeaturesTestDepthClampZeroOneFeaturesEXT", createDeviceWithUnsupportedFeaturesTestDepthClampZeroOneFeaturesEXT); 7152 addFunctionCase(testGroup, "address_binding_report_features_ext", "createDeviceWithUnsupportedFeaturesTestAddressBindingReportFeaturesEXT", createDeviceWithUnsupportedFeaturesTestAddressBindingReportFeaturesEXT); 7153 addFunctionCase(testGroup, "optical_flow_features_nv", "createDeviceWithUnsupportedFeaturesTestOpticalFlowFeaturesNV", createDeviceWithUnsupportedFeaturesTestOpticalFlowFeaturesNV); 7154 addFunctionCase(testGroup, "fault_features_ext", "createDeviceWithUnsupportedFeaturesTestFaultFeaturesEXT", createDeviceWithUnsupportedFeaturesTestFaultFeaturesEXT); 7155 addFunctionCase(testGroup, "shader_core_builtins_features_arm", "createDeviceWithUnsupportedFeaturesTestShaderCoreBuiltinsFeaturesARM", createDeviceWithUnsupportedFeaturesTestShaderCoreBuiltinsFeaturesARM); 7156 addFunctionCase(testGroup, "swapchain_maintenance1_features_ext", "createDeviceWithUnsupportedFeaturesTestSwapchainMaintenance1FeaturesEXT", createDeviceWithUnsupportedFeaturesTestSwapchainMaintenance1FeaturesEXT); 7157 addFunctionCase(testGroup, "ray_tracing_invocation_reorder_features_nv", "createDeviceWithUnsupportedFeaturesTestRayTracingInvocationReorderFeaturesNV", createDeviceWithUnsupportedFeaturesTestRayTracingInvocationReorderFeaturesNV); 7158 addFunctionCase(testGroup, "multiview_per_view_viewports_features_qcom", "createDeviceWithUnsupportedFeaturesTestMultiviewPerViewViewportsFeaturesQCOM", createDeviceWithUnsupportedFeaturesTestMultiviewPerViewViewportsFeaturesQCOM); 7159} 7160 7161