deviceToolPropertiesEXTArray.resize(toolCountSecondCall);
- result = context.getInstanceInterface().getPhysicalDeviceToolPropertiesEXT(context.getPhysicalDevice(), &toolCountSecondCall, &deviceToolPropertiesEXTArray[0]);
+ for (size_t toolNdx = 0; toolNdx < deviceToolPropertiesEXTArray.size(); ++toolNdx)
+ {
+ deviceToolPropertiesEXTArray[toolNdx].sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TOOL_PROPERTIES_EXT;
+ }
+
+ result = context.getInstanceInterface().getPhysicalDeviceToolProperties(context.getPhysicalDevice(), &toolCountSecondCall, &deviceToolPropertiesEXTArray[0]);
if (result != VK_SUCCESS)
{
tcu::TestStatus validateToolsProperties (Context& context)
{
+ tcu::TestLog& testLog = context.getTestContext().getLog();
+
+ bool result = true;
deUint32 toolCount = 0;
- VK_CHECK(context.getInstanceInterface().getPhysicalDeviceToolPropertiesEXT(context.getPhysicalDevice(), &toolCount, DE_NULL));
+ VK_CHECK(context.getInstanceInterface().getPhysicalDeviceToolProperties(context.getPhysicalDevice(), &toolCount, DE_NULL));
if (toolCount > 0)
{
deviceToolPropertiesEXTArray[toolNdx].sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TOOL_PROPERTIES_EXT;
}
- VK_CHECK(context.getInstanceInterface().getPhysicalDeviceToolPropertiesEXT(context.getPhysicalDevice(), &toolCount, &deviceToolPropertiesEXTArray[0]));
+ VK_CHECK(context.getInstanceInterface().getPhysicalDeviceToolProperties(context.getPhysicalDevice(), &toolCount, &deviceToolPropertiesEXTArray[0]));
- if (checkToolsProperties(context, deviceToolPropertiesEXTArray) == false)
- return tcu::TestStatus::fail("Fail");
- }
-
- return tcu::TestStatus::pass("Pass");
- }
-
- tcu::TestStatus validateInstanceLayers (Context& context)
- {
- const std::vector<const char*> layers = getValidationLayers(context.getPlatformInterface());
- bool qualityWarning = false;
-
- {
- deUint32 toolCount = 0;
- CustomInstance instance (createCustomInstance(context, true));
- VkPhysicalDevice physicalDevice = chooseDevice(instance.getDriver(), instance, context.getTestContext().getCommandLine());
-
- VK_CHECK(instance.getDriver().getPhysicalDeviceToolProperties(physicalDevice, &toolCount, DE_NULL));
-
- if (toolCount < layers.size())
- qualityWarning = true;
-
- if (toolCount > 0)
+ for (deUint32 i = 0; i < toolCount; ++i)
{
- std::vector<VkPhysicalDeviceToolPropertiesEXT> deviceToolPropertiesEXTArray(toolCount);
-
- for (size_t toolNdx = 0; toolNdx < deviceToolPropertiesEXTArray.size(); ++toolNdx)
- {
- deviceToolPropertiesEXTArray[toolNdx].sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TOOL_PROPERTIES_EXT;
- }
-
- VK_CHECK(context.getInstanceInterface().getPhysicalDeviceToolProperties(physicalDevice, &toolCount, &deviceToolPropertiesEXTArray[0]));
-
- if (checkToolsProperties(context, deviceToolPropertiesEXTArray) == false)
- return tcu::TestStatus::fail("Fail");
-
- for (size_t layerNdx = 0; layerNdx < layers.size(); ++layerNdx)
+ size_t nameSize = strnlen(deviceToolPropertiesEXTArray[i].name, VK_MAX_EXTENSION_NAME_SIZE);
+ size_t versionSize = strnlen(deviceToolPropertiesEXTArray[i].version, VK_MAX_EXTENSION_NAME_SIZE);
+ size_t descSize = strnlen(deviceToolPropertiesEXTArray[i].description, VK_MAX_DESCRIPTION_SIZE);
+ size_t layerSize = strnlen(deviceToolPropertiesEXTArray[i].layer, VK_MAX_EXTENSION_NAME_SIZE);
+
+ result = result && (deviceToolPropertiesEXTArray[i].sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TOOL_PROPERTIES_EXT);
+ result = result && validateToolPurposeFlagBits(deviceToolPropertiesEXTArray[i].purposes);
+ result = result && ((nameSize > 0) && (nameSize < VK_MAX_EXTENSION_NAME_SIZE));
+ result = result && ((versionSize > 0) && (versionSize < VK_MAX_EXTENSION_NAME_SIZE));
+ result = result && ((descSize > 0) && (descSize < VK_MAX_DESCRIPTION_SIZE));
+ result = result && ((layerSize == 0) || (layerSize < VK_MAX_EXTENSION_NAME_SIZE));
+
+ if (result == false)
{
- deUint32 count = 0u;
-
- for (deUint32 toolNdx = 0; toolNdx < toolCount; ++toolNdx)
+ testLog << tcu::TestLog::Message << "Tool validation failed" << tcu::TestLog::EndMessage;
+ testLog << tcu::TestLog::Message << "Tool name: " << deviceToolPropertiesEXTArray[i].name << tcu::TestLog::EndMessage;
+ testLog << tcu::TestLog::Message << "Version: " << deviceToolPropertiesEXTArray[i].version << tcu::TestLog::EndMessage;
+ testLog << tcu::TestLog::Message << "Description: " << deviceToolPropertiesEXTArray[i].description << tcu::TestLog::EndMessage;
- testLog << tcu::TestLog::Message << "Purposes: " << getToolPurposeFlagsEXTStr(deviceToolPropertiesEXTArray[i].purposes) << tcu::TestLog::EndMessage;
++ testLog << tcu::TestLog::Message << "Purposes: " << getToolPurposeFlagsStr(deviceToolPropertiesEXTArray[i].purposes) << tcu::TestLog::EndMessage;
+ if (layerSize > 0)
{
- if (strcmp(layers[layerNdx], deviceToolPropertiesEXTArray[toolNdx].layer) == 0)
- count++;
- }
-
- if (count != 1)
- {
- qualityWarning = true;
- break;
+ testLog << tcu::TestLog::Message << "Corresponding Layer: " << deviceToolPropertiesEXTArray[i].layer << tcu::TestLog::EndMessage;
}
+ break;
}
}
}