basic_vulkan_test.cc 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. // Copyright 2016 The Chromium Authors. All rights reserved.
  2. // Use of this source code is governed by a BSD-style license that can be
  3. // found in the LICENSE file.
  4. #include "gpu/vulkan/tests/basic_vulkan_test.h"
  5. #include "base/command_line.h"
  6. #include "base/strings/string_piece_forward.h"
  7. #include "gpu/vulkan/init/vulkan_factory.h"
  8. #include "gpu/vulkan/tests/native_window.h"
  9. #include "gpu/vulkan/vulkan_surface.h"
  10. #include "ui/gfx/geometry/rect.h"
  11. #if defined(USE_OZONE)
  12. #include "ui/ozone/public/ozone_platform.h"
  13. #endif
  14. namespace gpu {
  15. BasicVulkanTest::BasicVulkanTest() {}
  16. BasicVulkanTest::~BasicVulkanTest() {}
  17. void BasicVulkanTest::SetUp() {
  18. bool supports_swapchain = true;
  19. #if defined(USE_OZONE)
  20. supports_swapchain = ui::OzonePlatform::GetInstance()
  21. ->GetPlatformProperties()
  22. .supports_vulkan_swap_chain;
  23. #endif
  24. bool use_swiftshader =
  25. base::CommandLine::ForCurrentProcess()->HasSwitch("use-swiftshader");
  26. const gfx::Rect kDefaultBounds(10, 10, 100, 100);
  27. if (supports_swapchain) {
  28. window_ = CreateNativeWindow(kDefaultBounds);
  29. ASSERT_TRUE(window_ != gfx::kNullAcceleratedWidget);
  30. }
  31. vulkan_implementation_ = CreateVulkanImplementation(use_swiftshader);
  32. ASSERT_TRUE(vulkan_implementation_);
  33. ASSERT_TRUE(vulkan_implementation_->InitializeVulkanInstance());
  34. int flags = VulkanDeviceQueue::GRAPHICS_QUEUE_FLAG;
  35. if (supports_swapchain)
  36. flags |= VulkanDeviceQueue::PRESENTATION_SUPPORT_QUEUE_FLAG;
  37. device_queue_ =
  38. gpu::CreateVulkanDeviceQueue(vulkan_implementation_.get(), flags);
  39. ASSERT_TRUE(device_queue_);
  40. }
  41. void BasicVulkanTest::TearDown() {
  42. if (window_ != gfx::kNullAcceleratedWidget) {
  43. DestroyNativeWindow(window_);
  44. window_ = gfx::kNullAcceleratedWidget;
  45. }
  46. device_queue_->Destroy();
  47. vulkan_implementation_.reset();
  48. }
  49. std::unique_ptr<VulkanSurface> BasicVulkanTest::CreateViewSurface(
  50. gfx::AcceleratedWidget window) {
  51. return window_ != gfx::kNullAcceleratedWidget
  52. ? vulkan_implementation_->CreateViewSurface(window)
  53. : nullptr;
  54. }
  55. } // namespace gpu