| /*------------------------------------------------------------------------- |
| * Vulkan Conformance Tests |
| * ------------------------ |
| * |
| * Copyright (c) 2021 The Khronos Group Inc. |
| * Copyright (c) 2016 The Android Open Source Project |
| * |
| * Licensed under the Apache License, Version 2.0 (the "License"); |
| * you may not use this file except in compliance with the License. |
| * You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| * |
| *//*! |
| * \file |
| * \brief VK_KHR_format_feature_flags2 Tests. |
| *//*--------------------------------------------------------------------*/ |
| |
| #include "vktApiFormatPropertiesExtendedKHRtests.hpp" |
| #include "vktTestCase.hpp" |
| #include "vktTestCaseUtil.hpp" |
| #include "vktTestGroupUtil.hpp" |
| #include "vkStrUtil.hpp" |
| |
| namespace |
| { |
| using namespace vk; |
| using namespace vkt; |
| |
| void checkSupport (Context& context, const VkFormat format) |
| { |
| DE_UNREF(format); |
| context.requireDeviceFunctionality(VK_KHR_FORMAT_FEATURE_FLAGS_2_EXTENSION_NAME); |
| context.requireInstanceFunctionality(VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME); |
| } |
| |
| tcu::TestStatus test (Context& context, const VkFormat format) |
| { |
| const VkFormatPropertiesExtendedKHR formatProperties (context.getFormatProperties(format)); |
| const VkFormatPropertiesExtendedKHR requiredProperties (context.getRequiredFormatProperties(format)); |
| |
| bool allPass = true; |
| allPass = allPass && ((formatProperties.bufferFeatures & requiredProperties.bufferFeatures) == requiredProperties.bufferFeatures); |
| allPass = allPass && ((formatProperties.linearTilingFeatures & requiredProperties.linearTilingFeatures) == requiredProperties.linearTilingFeatures); |
| allPass = allPass && ((formatProperties.optimalTilingFeatures & requiredProperties.optimalTilingFeatures) == requiredProperties.optimalTilingFeatures); |
| |
| return allPass ? tcu::TestStatus::pass("") : tcu::TestStatus::fail(""); |
| } |
| |
| void createTestCases (tcu::TestCaseGroup* group) |
| { |
| for (VkFormat format = VK_FORMAT_R4G4_UNORM_PACK8; format < VK_CORE_FORMAT_LAST; format = static_cast<VkFormat>(format+1)) |
| { |
| std::string testName = de::toLower(std::string(getFormatName(format)).substr(10)); |
| addFunctionCase(group, testName, std::string(), checkSupport, test, format); |
| } |
| } |
| |
| } // namespace |
| |
| namespace vkt |
| { |
| namespace api |
| { |
| |
| tcu::TestCaseGroup* createFormatPropertiesExtendedKHRTests (tcu::TestContext& testCtx) |
| { |
| return createTestGroup(testCtx, "format_feature_flags2", "VK_KHR_format_feature_flags2 tests", createTestCases); |
| } |
| |
| } // api |
| } // vkt |