Commit 0ba75129 authored by Peng Huang's avatar Peng Huang Committed by Commit Bot

vulkan_tests: support android

Right now, the vulkan_tests can only run with X11. This CL make it work
with android.

Note: vulkan_tests is not running on any bots right now.

Bug: 1065499
Change-Id: Ie8f9c452d2a77beb8e3c8d4c1fa715a8b708c2cc
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2125009
Commit-Queue: Peng Huang <penghuang@chromium.org>
Reviewed-by: default avatarChris Blume <cblume@chromium.org>
Reviewed-by: default avatarKhushal <khushalsagar@chromium.org>
Cr-Commit-Position: refs/heads/master@{#754197}
parent ce097196
...@@ -128,8 +128,9 @@ if (enable_vulkan) { ...@@ -128,8 +128,9 @@ if (enable_vulkan) {
} }
} }
# TODO(cblume): These tests should run on each platform -- crbug.com/858614 # TODO(penghuang): support more platforms
if (use_x11) { # https://crbug.com/1065499
if (is_android || use_x11) {
test("vulkan_tests") { test("vulkan_tests") {
sources = [ sources = [
"tests/basic_vulkan_test.cc", "tests/basic_vulkan_test.cc",
...@@ -148,11 +149,21 @@ if (enable_vulkan) { ...@@ -148,11 +149,21 @@ if (enable_vulkan) {
"//testing/gmock", "//testing/gmock",
"//testing/gtest", "//testing/gtest",
"//ui/events/platform", "//ui/events/platform",
"//ui/events/platform/x11",
"//ui/gfx", "//ui/gfx",
"//ui/gfx:native_widget_types", "//ui/gfx:native_widget_types",
"//ui/gfx/geometry", "//ui/gfx/geometry",
] ]
if (use_x11) {
deps += [ "//ui/events/platform/x11" ]
}
if (is_android) {
deps += [
"//ui/android:ui_java",
"//ui/gl",
]
}
} }
} }
} }
...@@ -10,6 +10,10 @@ ...@@ -10,6 +10,10 @@
#include "ui/events/platform/platform_event_source.h" #include "ui/events/platform/platform_event_source.h"
#include "ui/gfx/geometry/rect.h" #include "ui/gfx/geometry/rect.h"
#if defined(OS_ANDROID)
#include <android/native_window_jni.h>
#endif
namespace gpu { namespace gpu {
BasicVulkanTest::BasicVulkanTest() {} BasicVulkanTest::BasicVulkanTest() {}
...@@ -18,8 +22,16 @@ BasicVulkanTest::~BasicVulkanTest() {} ...@@ -18,8 +22,16 @@ BasicVulkanTest::~BasicVulkanTest() {}
void BasicVulkanTest::SetUp() { void BasicVulkanTest::SetUp() {
platform_event_source_ = ui::PlatformEventSource::CreateDefault(); platform_event_source_ = ui::PlatformEventSource::CreateDefault();
#if defined(USE_X11)
const gfx::Rect kDefaultBounds(10, 10, 100, 100); const gfx::Rect kDefaultBounds(10, 10, 100, 100);
window_ = CreateNativeWindow(kDefaultBounds); window_ = CreateNativeWindow(kDefaultBounds);
#elif defined(OS_ANDROID)
// TODO(penghuang): Not depend on gl.
uint texture = 0;
surface_texture_ = gl::SurfaceTexture::Create(texture);
window_ = surface_texture_->CreateSurface();
ASSERT_TRUE(window_ != gfx::kNullAcceleratedWidget);
#endif
vulkan_implementation_ = CreateVulkanImplementation(); vulkan_implementation_ = CreateVulkanImplementation();
ASSERT_TRUE(vulkan_implementation_); ASSERT_TRUE(vulkan_implementation_);
ASSERT_TRUE(vulkan_implementation_->InitializeVulkanInstance()); ASSERT_TRUE(vulkan_implementation_->InitializeVulkanInstance());
...@@ -31,7 +43,11 @@ void BasicVulkanTest::SetUp() { ...@@ -31,7 +43,11 @@ void BasicVulkanTest::SetUp() {
} }
void BasicVulkanTest::TearDown() { void BasicVulkanTest::TearDown() {
#if defined(USE_X11)
DestroyNativeWindow(window_); DestroyNativeWindow(window_);
#elif defined(OS_ANDROID)
ANativeWindow_release(window_);
#endif
window_ = gfx::kNullAcceleratedWidget; window_ = gfx::kNullAcceleratedWidget;
device_queue_->Destroy(); device_queue_->Destroy();
vulkan_implementation_.reset(); vulkan_implementation_.reset();
......
...@@ -5,11 +5,17 @@ ...@@ -5,11 +5,17 @@
#ifndef GPU_VULKAN_TESTS_BASIC_VULKAN_TEST_H_ #ifndef GPU_VULKAN_TESTS_BASIC_VULKAN_TEST_H_
#define GPU_VULKAN_TESTS_BASIC_VULKAN_TEST_H_ #define GPU_VULKAN_TESTS_BASIC_VULKAN_TEST_H_
#include "base/memory/ref_counted.h"
#include "build/build_config.h"
#include "gpu/vulkan/vulkan_device_queue.h" #include "gpu/vulkan/vulkan_device_queue.h"
#include "gpu/vulkan/vulkan_implementation.h" #include "gpu/vulkan/vulkan_implementation.h"
#include "testing/gtest/include/gtest/gtest.h" #include "testing/gtest/include/gtest/gtest.h"
#include "ui/gfx/native_widget_types.h" #include "ui/gfx/native_widget_types.h"
#if defined(OS_ANDROID)
#include "ui/gl/android/surface_texture.h"
#endif
namespace ui { namespace ui {
class PlatformEventSource; class PlatformEventSource;
} }
...@@ -40,6 +46,9 @@ class BasicVulkanTest : public testing::Test { ...@@ -40,6 +46,9 @@ class BasicVulkanTest : public testing::Test {
std::unique_ptr<VulkanDeviceQueue> device_queue_; std::unique_ptr<VulkanDeviceQueue> device_queue_;
gfx::AcceleratedWidget window_ = gfx::kNullAcceleratedWidget; gfx::AcceleratedWidget window_ = gfx::kNullAcceleratedWidget;
#if defined(OS_ANDROID)
scoped_refptr<gl::SurfaceTexture> surface_texture_;
#endif
}; };
} // namespace gpu } // namespace gpu
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment