diff options
author | Allan Sandfeld Jensen <allan.jensen@qt.io> | 2020-10-12 14:27:29 +0200 |
---|---|---|
committer | Allan Sandfeld Jensen <allan.jensen@qt.io> | 2020-10-13 09:35:20 +0000 |
commit | c30a6232df03e1efbd9f3b226777b07e087a1122 (patch) | |
tree | e992f45784689f373bcc38d1b79a239ebe17ee23 /chromium/gpu/vulkan/vulkan_cxx_unittest.cc | |
parent | 7b5b123ac58f58ffde0f4f6e488bcd09aa4decd3 (diff) | |
download | qtwebengine-chromium-85-based.tar.gz |
BASELINE: Update Chromium to 85.0.4183.14085-based
Change-Id: Iaa42f4680837c57725b1344f108c0196741f6057
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
Diffstat (limited to 'chromium/gpu/vulkan/vulkan_cxx_unittest.cc')
-rw-r--r-- | chromium/gpu/vulkan/vulkan_cxx_unittest.cc | 90 |
1 files changed, 90 insertions, 0 deletions
diff --git a/chromium/gpu/vulkan/vulkan_cxx_unittest.cc b/chromium/gpu/vulkan/vulkan_cxx_unittest.cc new file mode 100644 index 00000000000..b0f16eaaa61 --- /dev/null +++ b/chromium/gpu/vulkan/vulkan_cxx_unittest.cc @@ -0,0 +1,90 @@ +// Copyright 2020 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "testing/gtest/include/gtest/gtest.h" + +#include "base/command_line.h" +#include "base/files/file_path.h" +#include "base/native_library.h" +#include "base/path_service.h" +#include "build/build_config.h" +#include "gpu/vulkan/vulkan_cxx.h" +#include "gpu/vulkan/vulkan_function_pointers.h" + +namespace gpu { + +class VulkanCXXTest : public testing::Test { + public: + VulkanCXXTest() = default; + ~VulkanCXXTest() override = default; + + void SetUp() override { + use_swiftshader_ = + base::CommandLine::ForCurrentProcess()->HasSwitch("use-swiftshader"); + base::FilePath path; +#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_CHROMEOS) || \ + defined(OS_FUCHSIA) + if (use_swiftshader_) { +#if defined(OS_LINUX) + EXPECT_TRUE(base::PathService::Get(base::DIR_MODULE, &path)); + path = path.Append("libvk_swiftshader.so"); +#else + return; +#endif + } else { + path = base::FilePath("libvulkan.so.1"); + } +#elif defined(OS_WIN) + if (use_swiftshader_) { + EXPECT_TRUE(base::PathService::Get(base::DIR_MODULE, &path)); + path = path.Append(L"vk_swiftshader.dll"); + } else { + path = base::FilePath(L"vulkan-1.dll"); + } +#else +#error "Not supported platform" +#endif + + auto* vulkan_function_pointers = GetVulkanFunctionPointers(); + base::NativeLibraryLoadError native_library_load_error; + vulkan_function_pointers->vulkan_loader_library = + base::LoadNativeLibrary(path, &native_library_load_error); + EXPECT_TRUE(vulkan_function_pointers->vulkan_loader_library); + } + + void TearDown() override { + auto* vulkan_function_pointers = GetVulkanFunctionPointers(); + base::UnloadNativeLibrary(vulkan_function_pointers->vulkan_loader_library); + } + + private: + bool use_swiftshader_ = false; +}; + +TEST_F(VulkanCXXTest, CreateInstanceUnique) { + auto* vulkan_function_pointers = GetVulkanFunctionPointers(); + EXPECT_TRUE(vulkan_function_pointers->BindUnassociatedFunctionPointers()); + + vk::Result result; + uint32_t api_version; + std::tie(result, api_version) = vk::enumerateInstanceVersion(); + EXPECT_EQ(result, vk::Result::eSuccess); + EXPECT_GE(api_version, kVulkanRequiredApiVersion); + + vk::ApplicationInfo app_info("VulkanCXXTest", 0, nullptr, 0, + kVulkanRequiredApiVersion); + vk::InstanceCreateInfo instance_create_info({}, &app_info); + auto result_value = vk::createInstanceUnique(instance_create_info); + EXPECT_EQ(result_value.result, vk::Result::eSuccess); + + vk::UniqueInstance instance = std::move(result_value.value); + EXPECT_TRUE(instance); + + EXPECT_TRUE(vulkan_function_pointers->BindInstanceFunctionPointers( + instance.get(), kVulkanRequiredApiVersion, gfx::ExtensionSet())); + + instance.reset(); +} + +} // namespace gpu |