Commit 107706c9 authored by Aldo Culquicondor's avatar Aldo Culquicondor Committed by Commit Bot

VR UI: Wrap GL bindings

This wrapper allows to use the same macros for GL commands. They will make use of
native GL or the command buffer, depending on the platform. Windows is the first
platform to use the command buffer.

All vr targets build for all platforms, but they fail to run on Windows, due to
missing dependencies. These will be added in a followup CL. For now, disable the
tests from the trybots.

Bug: 884256
Cq-Include-Trybots: luci.chromium.try:android_optional_gpu_tests_rel;luci.chromium.try:linux_optional_gpu_tests_rel;luci.chromium.try:linux_vr;luci.chromium.try:mac_optional_gpu_tests_rel;luci.chromium.try:win_optional_gpu_tests_rel
Change-Id: I8802ea37a82cd29d4356e7d4601952077d20dd4a
Reviewed-on: https://chromium-review.googlesource.com/1226028Reviewed-by: default avatarKenneth Russell <kbr@chromium.org>
Reviewed-by: default avatarBill Orr <billorr@chromium.org>
Reviewed-by: default avatarJoshua Pawlicki <waffles@chromium.org>
Reviewed-by: default avatarDavid Reveman <reveman@chromium.org>
Reviewed-by: default avatarTibor Goldschwendt <tiborg@chromium.org>
Commit-Queue: Aldo Culquicondor <acondor@chromium.org>
Cr-Commit-Position: refs/heads/master@{#593061}
parent 8669b846
......@@ -92,7 +92,6 @@ static_library("vr_android") {
"//base",
"//cc",
"//chrome/browser/ui:ui",
"//chrome/browser/vr:vr_base",
"//chrome/browser/vr:vr_common",
"//chrome/common:common",
"//chrome/common:constants",
......
......@@ -22,7 +22,6 @@
#include "chrome/browser/vr/assets_loader.h"
#include "chrome/browser/vr/metrics/metrics_helper.h"
#include "chrome/browser/vr/vr_features.h"
#include "chrome/common/safe_browsing/file_type_policies.h"
#include "components/component_updater/component_updater_paths.h"
#include "components/component_updater/component_updater_service.h"
#include "components/crx_file/id_util.h"
......
......@@ -20,6 +20,19 @@ buildflag_header("vr_build_features") {
flags = [ "USE_VR_ASSETS_COMPONENT=$use_vr_assets_component" ]
}
use_command_buffer = is_win
config("vr_gl_mode") {
if (use_command_buffer) {
defines = [
"VR_USE_COMMAND_BUFFER",
"GL_GLEXT_PROTOTYPES",
]
} else {
defines = [ "VR_USE_NATIVE_GL" ]
}
}
component("vr_ui") {
sources = [
"animation.cc",
......@@ -122,8 +135,6 @@ component("vr_ui") {
"font_fallback.h",
"frame_lifecycle.cc",
"frame_lifecycle.h",
"ganesh_surface_provider.cc",
"ganesh_surface_provider.h",
"model/color_scheme.cc",
"model/color_scheme.h",
"model/modal_prompt_type.cc",
......@@ -150,6 +161,8 @@ component("vr_ui") {
"renderers/transparent_quad_renderer.h",
"sequence.cc",
"sequence.h",
"skia_surface_provider.h",
"skia_surface_provider_factory.h",
"target_property.cc",
"target_property.h",
"transition.cc",
......@@ -169,10 +182,6 @@ component("vr_ui") {
"vr_ui_export.h",
]
public_deps = [
"//ui/gl",
]
deps = [
":vr_base",
"//base",
......@@ -192,12 +201,21 @@ component("vr_ui") {
"VR_IMPLEMENTATION",
"VR_UI_IMPLEMENTATION",
]
if (use_command_buffer) {
sources += [ "skia_surface_provider_factory_cmd_buffer.cc" ]
} else {
sources += [
"native_gl_surface_provider.cc",
"native_gl_surface_provider.h",
"skia_surface_provider_factory_native_gl.cc",
]
deps += [ "//ui/gl/init" ]
}
}
component("vr_common") {
sources = [
"base_graphics_delegate.cc",
"base_graphics_delegate.h",
"base_scheduler_delegate.cc",
"base_scheduler_delegate.h",
"browser_renderer.cc",
......@@ -264,13 +282,20 @@ component("vr_common") {
"//skia",
"//ui/base",
"//ui/display",
"//ui/gl/init",
]
defines = [
"VR_IMPLEMENTATION",
"VR_UI_IMPLEMENTATION",
]
if (!use_command_buffer) {
sources += [
"base_graphics_delegate.cc",
"base_graphics_delegate.h",
]
deps += [ "//ui/gl/init" ]
}
}
# vr_base contains common dependencies of vr_common and vr_ui. It exists because
......@@ -284,6 +309,7 @@ source_set("vr_base") {
"browser_ui_interface.h",
"exit_vr_prompt_choice.h",
"fov_rectangle.h",
"gl_bindings.h",
"gl_texture_location.h",
"input_event.cc",
"input_event.h",
......@@ -347,11 +373,11 @@ source_set("vr_base") {
public_deps = [
":vr_build_features",
":vr_gl_bindings",
"//components/omnibox/browser",
"//components/strings:components_strings_grit",
"//content/public/common",
"//ui/base",
"//ui/gl/init",
]
deps = [
......@@ -369,6 +395,22 @@ source_set("vr_base") {
]
}
source_set("vr_gl_bindings") {
sources = [
"gl_bindings.h",
]
public_configs = [ ":vr_gl_mode" ]
if (use_command_buffer) {
public_deps = [
"//gpu/command_buffer/client:gles2_c_lib",
]
} else {
public_deps = [
"//ui/gl",
]
}
}
test("vr_common_unittests") {
sources = [
"animation_unittest.cc",
......@@ -532,22 +574,34 @@ source_set("vr_gl_test_support") {
testonly = true
sources = [
"test/gl_test_environment.cc",
"test/gl_test_environment.h",
"test/gl_test_environment_unittest.cc",
"test/vr_gl_test_suite.cc",
"test/vr_gl_test_suite.h",
]
public_deps = [
":vr_gl_bindings",
"//base/test:test_support",
"//skia",
"//testing/gtest",
"//ui/gl",
"//ui/gl:test_support",
]
deps = [
":vr_common", # For graphics delegate.
":vr_test_support",
"//ui/gl:test_support",
]
if (use_command_buffer) {
sources += [ "test/gl_test_environment_cmd_buffer.cc" ]
deps += [
"//gpu:gpu",
"//gpu/command_buffer/client:gles2_implementation",
"//gpu/ipc:gl_in_process_context",
]
} else {
sources += [ "test/gl_test_environment_native_gl.cc" ]
}
}
repack("vr_test_pak") {
......
......@@ -18,7 +18,6 @@
#include "chrome/browser/vr/scheduler_delegate.h"
#include "chrome/browser/vr/ui_interface.h"
#include "chrome/browser/vr/ui_test_input.h"
#include "ui/gl/gl_bindings.h"
namespace vr {
......
......@@ -326,19 +326,19 @@ Controller::Renderer::Renderer()
AddSquare(kTopNumRings, kSquareNumSectors, transform, *top_alpha_curve,
&vertices_, &colors_, &indices_);
glGenBuffersARB(1, &vertex_buffer_);
glGenBuffers(1, &vertex_buffer_);
glBindBuffer(GL_ARRAY_BUFFER, vertex_buffer_);
glBufferData(GL_ARRAY_BUFFER, vertices_.size() * sizeof(float),
vertices_.data(), GL_STATIC_DRAW);
glBindBuffer(GL_ARRAY_BUFFER, 0);
glGenBuffersARB(1, &color_buffer_);
glGenBuffers(1, &color_buffer_);
glBindBuffer(GL_ARRAY_BUFFER, color_buffer_);
glBufferData(GL_ARRAY_BUFFER, colors_.size() * sizeof(float), colors_.data(),
GL_STATIC_DRAW);
glBindBuffer(GL_ARRAY_BUFFER, 0);
glGenBuffersARB(1, &index_buffer_);
glGenBuffers(1, &index_buffer_);
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, index_buffer_);
glBufferData(GL_ELEMENT_ARRAY_BUFFER, indices_.size() * sizeof(GLushort),
indices_.data(), GL_STATIC_DRAW);
......
......@@ -285,7 +285,7 @@ Background::Renderer::Renderer()
}
GLuint buffers[2];
glGenBuffersARB(2, buffers);
glGenBuffers(2, buffers);
vertex_buffer_ = buffers[0];
index_buffer_ = buffers[1];
index_count_ = indices.size();
......
......@@ -6,9 +6,9 @@
#define CHROME_BROWSER_VR_ELEMENTS_ENVIRONMENT_BACKGROUND_H_
#include "chrome/browser/vr/elements/ui_element.h"
#include "chrome/browser/vr/gl_bindings.h"
#include "chrome/browser/vr/renderers/base_quad_renderer.h"
#include "third_party/skia/include/core/SkRefCnt.h"
#include "ui/gl/gl_bindings.h"
class SkBitmap;
class SkSurface;
......
......@@ -180,7 +180,7 @@ void Stars::Renderer::CreateBuffers() {
}
GLuint buffers[2];
glGenBuffersARB(2, buffers);
glGenBuffers(2, buffers);
vertex_buffer_ = buffers[0];
index_buffer_ = buffers[1];
......
......@@ -7,10 +7,10 @@
#include "base/macros.h"
#include "chrome/browser/vr/elements/ui_element.h"
#include "chrome/browser/vr/gl_bindings.h"
#include "chrome/browser/vr/vr_ui_export.h"
#include "third_party/skia/include/core/SkRefCnt.h"
#include "ui/gfx/geometry/size.h"
#include "ui/gl/gl_bindings.h"
class SkSurface;
......
......@@ -7,7 +7,6 @@
#include "base/trace_event/trace_event.h"
#include "third_party/skia/include/core/SkCanvas.h"
#include "ui/gfx/canvas.h"
#include "ui/gl/gl_bindings.h"
namespace vr {
......
// Copyright 2018 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.
#ifndef CHROME_BROWSER_VR_GL_BINDINGS_H_
#define CHROME_BROWSER_VR_GL_BINDINGS_H_
#if defined(VR_USE_COMMAND_BUFFER)
#include <GLES2/gl2.h>
#include <GLES2/gl2ext.h>
#elif defined(VR_USE_NATIVE_GL)
#include "ui/gl/gl_bindings.h" // nogncheck
// The above header still uses the ARB prefix for the following GL API call.
#define glGenBuffers glGenBuffersARB
#else
#error "Missing configuration for GL mode."
#endif // defined(VR_USE_COMMAND_BUFFER)
#endif // CHROME_BROWSER_VR_GL_BINDINGS_H_
......@@ -2,7 +2,7 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "chrome/browser/vr/ganesh_surface_provider.h"
#include "chrome/browser/vr/native_gl_surface_provider.h"
#include "third_party/skia/include/core/SkCanvas.h"
#include "third_party/skia/include/core/SkSurface.h"
......@@ -16,7 +16,7 @@
namespace vr {
GaneshSurfaceProvider::GaneshSurfaceProvider() {
NativeGlSurfaceProvider::NativeGlSurfaceProvider() {
const char* version_str =
reinterpret_cast<const char*>(glGetString(GL_VERSION));
const char* renderer_str =
......@@ -33,17 +33,17 @@ GaneshSurfaceProvider::GaneshSurfaceProvider() {
glGetIntegerv(GL_FRAMEBUFFER_BINDING, &main_fbo_);
}
GaneshSurfaceProvider::~GaneshSurfaceProvider() = default;
NativeGlSurfaceProvider::~NativeGlSurfaceProvider() = default;
sk_sp<SkSurface> GaneshSurfaceProvider::MakeSurface(const gfx::Size& size) {
sk_sp<SkSurface> NativeGlSurfaceProvider::MakeSurface(const gfx::Size& size) {
return SkSurface::MakeRenderTarget(
gr_context_.get(), SkBudgeted::kNo,
SkImageInfo::MakeN32Premul(size.width(), size.height()), 0,
kTopLeft_GrSurfaceOrigin, nullptr);
}
GLuint GaneshSurfaceProvider::FlushSurface(SkSurface* surface,
GLuint reuse_texture_id) {
GLuint NativeGlSurfaceProvider::FlushSurface(SkSurface* surface,
GLuint reuse_texture_id) {
surface->getCanvas()->flush();
GrBackendTexture backend_texture =
surface->getBackendTexture(SkSurface::kFlushRead_BackendHandleAccess);
......
......@@ -2,8 +2,8 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef CHROME_BROWSER_VR_GANESH_SURFACE_PROVIDER_H_
#define CHROME_BROWSER_VR_GANESH_SURFACE_PROVIDER_H_
#ifndef CHROME_BROWSER_VR_NATIVE_GL_SURFACE_PROVIDER_H_
#define CHROME_BROWSER_VR_NATIVE_GL_SURFACE_PROVIDER_H_
#include "chrome/browser/vr/skia_surface_provider.h"
#include "chrome/browser/vr/vr_ui_export.h"
......@@ -13,10 +13,10 @@ class GrContext;
namespace vr {
// Creates a Skia surface for which drawing commands are executed on the GPU.
class VR_UI_EXPORT GaneshSurfaceProvider : public SkiaSurfaceProvider {
class VR_UI_EXPORT NativeGlSurfaceProvider : public SkiaSurfaceProvider {
public:
GaneshSurfaceProvider();
~GaneshSurfaceProvider() override;
NativeGlSurfaceProvider();
~NativeGlSurfaceProvider() override;
sk_sp<SkSurface> MakeSurface(const gfx::Size& size) override;
GLuint FlushSurface(SkSurface* surface, GLuint reuse_texture_id) override;
......@@ -28,4 +28,4 @@ class VR_UI_EXPORT GaneshSurfaceProvider : public SkiaSurfaceProvider {
} // namespace vr
#endif // CHROME_BROWSER_VR_GANESH_SURFACE_PROVIDER_H_
#endif // CHROME_BROWSER_VR_NATIVE_GL_SURFACE_PROVIDER_H_
......@@ -46,7 +46,7 @@ GLuint BaseQuadRenderer::index_buffer_ = 0;
void BaseQuadRenderer::CreateBuffers() {
GLuint buffers[2];
glGenBuffersARB(2, buffers);
glGenBuffers(2, buffers);
vertex_buffer_ = buffers[0];
index_buffer_ = buffers[1];
......
......@@ -4,6 +4,7 @@
#include "chrome/browser/vr/renderers/base_renderer.h"
#include "base/logging.h"
#include "chrome/browser/vr/vr_gl_util.h"
namespace vr {
......
......@@ -6,7 +6,7 @@
#define CHROME_BROWSER_VR_RENDERERS_BASE_RENDERER_H_
#include "base/macros.h"
#include "ui/gl/gl_bindings.h"
#include "chrome/browser/vr/gl_bindings.h"
namespace vr {
......
......@@ -341,7 +341,7 @@ GLuint TexturedQuadRenderer::index_buffer_ = 0;
void TexturedQuadRenderer::CreateBuffers() {
GLuint buffers[2];
glGenBuffersARB(2, buffers);
glGenBuffers(2, buffers);
vertex_buffer_ = buffers[0];
index_buffer_ = buffers[1];
......
......@@ -5,9 +5,9 @@
#ifndef CHROME_BROWSER_VR_SKIA_SURFACE_PROVIDER_H_
#define CHROME_BROWSER_VR_SKIA_SURFACE_PROVIDER_H_
#include "chrome/browser/vr/gl_bindings.h"
#include "third_party/skia/include/core/SkRefCnt.h"
#include "third_party/skia/include/gpu/GrContext.h"
#include "ui/gl/gl_bindings.h"
class SkSurface;
......
// Copyright 2018 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.
#ifndef CHROME_BROWSER_VR_SKIA_SURFACE_PROVIDER_FACTORY_H_
#define CHROME_BROWSER_VR_SKIA_SURFACE_PROVIDER_FACTORY_H_
#include <memory>
#include "chrome/browser/vr/skia_surface_provider.h"
#include "chrome/browser/vr/vr_ui_export.h"
namespace vr {
class VR_UI_EXPORT SkiaSurfaceProviderFactory {
public:
static std::unique_ptr<SkiaSurfaceProvider> Create();
};
} // namespace vr
#endif // CHROME_BROWSER_VR_SKIA_SURFACE_PROVIDER_FACTORY_H_
// Copyright 2018 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 "chrome/browser/vr/skia_surface_provider_factory.h"
#include "base/logging.h"
namespace vr {
std::unique_ptr<SkiaSurfaceProvider> SkiaSurfaceProviderFactory::Create() {
// TODO(crbug/884256): Implement a surface provider using the command buffer.
NOTIMPLEMENTED();
return nullptr;
}
} // namespace vr
// Copyright 2018 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 "chrome/browser/vr/skia_surface_provider_factory.h"
#include "chrome/browser/vr/native_gl_surface_provider.h"
namespace vr {
std::unique_ptr<SkiaSurfaceProvider> SkiaSurfaceProviderFactory::Create() {
return std::make_unique<NativeGlSurfaceProvider>();
}
} // namespace vr
......@@ -7,10 +7,19 @@
#include <memory>
#include "base/macros.h"
#include "base/memory/scoped_refptr.h"
#include "chrome/browser/vr/gl_bindings.h"
#include "ui/gfx/geometry/size.h"
#include "ui/gl/gl_bindings.h"
#include "ui/gl/gl_context.h"
#include "ui/gl/gl_surface.h"
namespace gl {
class GLSurface;
class GLContext;
} // namespace gl
namespace gpu {
class GLInProcessContext;
} // namespace gpu
namespace vr {
......@@ -20,12 +29,18 @@ class GlTestEnvironment {
~GlTestEnvironment();
GLuint GetFrameBufferForTesting();
GLuint CreateTexture(GLenum target);
private:
scoped_refptr<gl::GLSurface> surface_;
scoped_refptr<gl::GLContext> context_;
GLuint vao_ = 0;
GLuint frame_buffer_ = 0;
#if defined(VR_USE_COMMAND_BUFFER)
std::unique_ptr<gpu::GLInProcessContext> context_;
#else
scoped_refptr<gl::GLSurface> surface_;
scoped_refptr<gl::GLContext> context_;
#endif // defined(USE_COMMAND_BUFFER)
};
} // namespace vr
......
// Copyright 2018 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 "chrome/browser/vr/test/gl_test_environment.h"
#include "base/run_loop.h"
#include "base/threading/thread_task_runner_handle.h"
#include "gpu/command_buffer/client/gles2_implementation.h"
#include "gpu/command_buffer/client/gles2_lib.h"
#include "gpu/command_buffer/client/shared_memory_limits.h"
#include "gpu/command_buffer/common/context_creation_attribs.h"
#include "gpu/ipc/gl_in_process_context.h"
namespace {
GLuint CreateTexture(GLenum target) {
// Create the texture object.
GLuint texture = 0;
glGenTextures(1, &texture);
glBindTexture(target, texture);
glTexParameteri(target, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
glTexParameteri(target, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
glTexParameteri(target, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
glTexParameteri(target, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
return texture;
}
GLuint SetupFramebuffer(int width, int height) {
GLuint color_buffer_texture = CreateTexture(GL_TEXTURE_2D);
glBindTexture(GL_TEXTURE_2D, color_buffer_texture);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, width, height, 0, GL_RGBA,
GL_UNSIGNED_BYTE, nullptr);
GLuint framebuffer = 0;
glGenFramebuffers(1, &framebuffer);
glBindFramebuffer(GL_FRAMEBUFFER, framebuffer);
glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D,
color_buffer_texture, 0);
if (glCheckFramebufferStatus(GL_FRAMEBUFFER) != GL_FRAMEBUFFER_COMPLETE) {
DCHECK_EQ(static_cast<GLenum>(GL_FRAMEBUFFER_COMPLETE),
glCheckFramebufferStatus(GL_FRAMEBUFFER))
<< "Error setting up framebuffer";
glDeleteFramebuffers(1, &framebuffer);
framebuffer = 0;
}
glBindFramebuffer(GL_FRAMEBUFFER, 0);
glDeleteTextures(1, &color_buffer_texture);
return framebuffer;
}
} // namespace
namespace vr {
GlTestEnvironment::GlTestEnvironment(const gfx::Size frame_buffer_size) {
gpu::ContextCreationAttribs attributes;
attributes.alpha_size = 8;
attributes.depth_size = 24;
attributes.red_size = 8;
attributes.green_size = 8;
attributes.blue_size = 8;
attributes.stencil_size = 8;
attributes.samples = 4;
attributes.sample_buffers = 1;
attributes.bind_generates_resource = false;
context_ = std::make_unique<gpu::GLInProcessContext>();
auto result = context_->Initialize(nullptr, /* service */
nullptr, /* surface */
true, /* offscreen */
gpu::kNullSurfaceHandle, /* window */
attributes, gpu::SharedMemoryLimits(),
nullptr /* memory_buffer_manager */,
nullptr, /* image_factory */
base::ThreadTaskRunnerHandle::Get());
DCHECK_EQ(result, gpu::ContextResult::kSuccess);
gles2::SetGLContext(context_->GetImplementation());
// To avoid glGetVertexAttribiv(0, ...) failing.
glGenVertexArraysOES(1, &vao_);
glBindVertexArrayOES(vao_);
frame_buffer_ =
SetupFramebuffer(frame_buffer_size.width(), frame_buffer_size.height());
glBindFramebuffer(GL_FRAMEBUFFER, frame_buffer_);
}
GlTestEnvironment::~GlTestEnvironment() {
glDeleteFramebuffers(1, &frame_buffer_);
if (vao_) {
glDeleteVertexArraysOES(1, &vao_);
}
}
GLuint GlTestEnvironment::GetFrameBufferForTesting() {
return frame_buffer_;
}
GLuint GlTestEnvironment::CreateTexture(GLenum target) {
return ::CreateTexture(target);
}
} // namespace vr
......@@ -4,16 +4,16 @@
#include "chrome/browser/vr/test/gl_test_environment.h"
#include "ui/gl/gl_context.h"
#include "ui/gl/gl_surface.h"
#include "ui/gl/gl_version_info.h"
#include "ui/gl/init/gl_factory.h"
#include "ui/gl/test/gl_image_test_support.h"
#include "ui/gl/test/gl_test_helper.h"
namespace vr {
GlTestEnvironment::GlTestEnvironment(const gfx::Size frame_buffer_size) {
// Setup offscreen GL context.
gl::GLImageTestSupport::InitializeGL(base::nullopt);
surface_ = gl::init::CreateOffscreenGLSurface(gfx::Size());
context_ = gl::init::CreateGLContext(nullptr, surface_.get(),
gl::GLContextAttribs());
......@@ -38,11 +38,14 @@ GlTestEnvironment::~GlTestEnvironment() {
context_->ReleaseCurrent(surface_.get());
context_ = nullptr;
surface_ = nullptr;
gl::GLImageTestSupport::CleanupGL();
}
GLuint GlTestEnvironment::GetFrameBufferForTesting() {
return frame_buffer_;
}
GLuint GlTestEnvironment::CreateTexture(GLenum target) {
return gl::GLTestHelper::CreateTexture(target);
}
} // namespace vr
......@@ -6,7 +6,6 @@
#include "build/build_config.h"
#include "testing/gtest/include/gtest/gtest.h"
#include "ui/gfx/geometry/size.h"
#include "ui/gl/gl_bindings.h"
namespace vr {
......
......@@ -4,13 +4,13 @@
#include "base/bind.h"
#include "base/test/launcher/unit_test_launcher.h"
#include "chrome/browser/vr/test/vr_test_suite.h"
#include "chrome/browser/vr/test/vr_gl_test_suite.h"
int main(int argc, char** argv) {
vr::VrTestSuite test_suite(argc, argv);
vr::VrGlTestSuite test_suite(argc, argv);
return base::LaunchUnitTests(
argc, argv,
base::BindRepeating(&vr::VrTestSuite::Run,
base::BindRepeating(&vr::VrGlTestSuite::Run,
base::Unretained(&test_suite)));
}
......@@ -13,9 +13,6 @@
#include "chrome/browser/vr/text_input_delegate.h"
#include "third_party/skia/include/core/SkImageEncoder.h"
#include "third_party/skia/include/core/SkStream.h"
#include "ui/gl/gl_bindings.h"
#include "ui/gl/gl_context.h"
#include "ui/gl/test/gl_test_helper.h"
namespace vr {
......@@ -31,8 +28,8 @@ void UiPixelTest::SetUp() {
std::make_unique<GlTestEnvironment>(frame_buffer_size_);
// Make content texture.
content_texture_ = gl::GLTestHelper::CreateTexture(GL_TEXTURE_2D);
content_overlay_texture_ = gl::GLTestHelper::CreateTexture(GL_TEXTURE_2D);
content_texture_ = gl_test_environment_->CreateTexture(GL_TEXTURE_2D);
content_overlay_texture_ = gl_test_environment_->CreateTexture(GL_TEXTURE_2D);
// TODO(tiborg): Make GL_TEXTURE_EXTERNAL_OES texture for content and fill it
// with fake content.
......
// Copyright 2018 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 "chrome/browser/vr/test/vr_gl_test_suite.h"
#include "ui/gl/gl_implementation.h"
#include "ui/gl/test/gl_image_test_support.h"
#if defined(VR_USE_COMMAND_BUFFER)
#include "gpu/config/gpu_info_collector.h" // nogncheck
#include "gpu/config/gpu_preferences.h" // nogncheck
#include "gpu/config/gpu_util.h" // nogncheck
#include "gpu/ipc/in_process_command_buffer.h" // nogncheck
#endif // defined(VR_USE_COMMAND_BUFFER)
namespace vr {
VrGlTestSuite::VrGlTestSuite(int argc, char** argv) : VrTestSuite(argc, argv) {}
void VrGlTestSuite::Initialize() {
VrTestSuite::Initialize();
gl::GLImageTestSupport::InitializeGL(gl::kGLImplementationEGLGLES2);
#if defined(VR_USE_COMMAND_BUFFER)
base::CommandLine* command_line = base::CommandLine::ForCurrentProcess();
gpu::GPUInfo gpu_info;
gpu::CollectGraphicsInfoForTesting(&gpu_info);
gpu::GpuFeatureInfo gpu_feature_info = gpu::ComputeGpuFeatureInfo(
gpu_info, gpu::GpuPreferences(), command_line, nullptr);
// Always enable gpu and oop raster, regardless of platform and blacklist.
gpu_feature_info.status_values[gpu::GPU_FEATURE_TYPE_GPU_RASTERIZATION] =
gpu::kGpuFeatureStatusEnabled;
gpu_feature_info.status_values[gpu::GPU_FEATURE_TYPE_OOP_RASTERIZATION] =
gpu::kGpuFeatureStatusEnabled;
gpu::InProcessCommandBuffer::InitializeDefaultServiceForTesting(
gpu_feature_info);
#endif // defined(VR_USE_COMMAND_BUFFER)
}
void VrGlTestSuite::Shutdown() {
gl::GLImageTestSupport::CleanupGL();
vr::VrTestSuite::Shutdown();
}
} // namespace vr
// Copyright 2018 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.
#ifndef CHROME_BROWSER_VR_TEST_VR_GL_TEST_SUITE_H_
#define CHROME_BROWSER_VR_TEST_VR_GL_TEST_SUITE_H_
#include "chrome/browser/vr/test/vr_test_suite.h"
namespace vr {
class VrGlTestSuite : public VrTestSuite {
public:
VrGlTestSuite(int argc, char** argv);
void Initialize() override;
void Shutdown() override;
};
} // namespace vr
#endif // CHROME_BROWSER_VR_TEST_VR_GL_TEST_SUITE_H_
......@@ -5,7 +5,7 @@
#include "base/strings/utf_string_conversions.h"
#include "cc/base/lap_timer.h"
#include "chrome/browser/vr/elements/text.h"
#include "chrome/browser/vr/ganesh_surface_provider.h"
#include "chrome/browser/vr/skia_surface_provider_factory.h"
#include "chrome/browser/vr/test/constants.h"
#include "chrome/browser/vr/test/gl_test_environment.h"
#include "testing/gtest/include/gtest/gtest.h"
......@@ -27,7 +27,7 @@ class TextPerfTest : public testing::Test {
void SetUp() override {
gl_test_environment_ =
std::make_unique<GlTestEnvironment>(kPixelHalfScreen);
provider_ = std::make_unique<GaneshSurfaceProvider>();
provider_ = SkiaSurfaceProviderFactory::Create();
text_element_ = std::make_unique<Text>(kFontHeightMeters);
text_element_->SetFieldWidth(kTextWidthMeters);
......
......@@ -18,7 +18,6 @@
#include "chrome/browser/vr/content_input_delegate.h"
#include "chrome/browser/vr/elements/content_element.h"
#include "chrome/browser/vr/elements/text_input.h"
#include "chrome/browser/vr/ganesh_surface_provider.h"
#include "chrome/browser/vr/keyboard_delegate.h"
#include "chrome/browser/vr/model/assets.h"
#include "chrome/browser/vr/model/model.h"
......@@ -27,6 +26,7 @@
#include "chrome/browser/vr/model/sound_id.h"
#include "chrome/browser/vr/platform_input_handler.h"
#include "chrome/browser/vr/platform_ui_input_delegate.h"
#include "chrome/browser/vr/skia_surface_provider_factory.h"
#include "chrome/browser/vr/speech_recognizer.h"
#include "chrome/browser/vr/ui_browser_interface.h"
#include "chrome/browser/vr/ui_element_renderer.h"
......@@ -376,7 +376,7 @@ void Ui::OnGlInitialized(GlTextureLocation textures_location,
ui_element_renderer_ = std::make_unique<UiElementRenderer>();
ui_renderer_ =
std::make_unique<UiRenderer>(scene_.get(), ui_element_renderer_.get());
provider_ = std::make_unique<GaneshSurfaceProvider>();
provider_ = SkiaSurfaceProviderFactory::Create();
scene_->OnGlInitialized(provider_.get());
model_->content_texture_id = content_texture_id;
model_->content_overlay_texture_id = content_overlay_texture_id;
......
......@@ -17,7 +17,6 @@
#include "chrome/browser/vr/renderers/texture_copy_renderer.h"
#include "chrome/browser/vr/renderers/textured_quad_renderer.h"
#include "chrome/browser/vr/renderers/transparent_quad_renderer.h"
#include "chrome/browser/vr/vr_gl_util.h"
#include "ui/gfx/geometry/point3_f.h"
#include "ui/gfx/geometry/vector3d_f.h"
......
......@@ -24,7 +24,6 @@
#include "ui/gfx/geometry/size.h"
#include "ui/gfx/geometry/size_f.h"
#include "ui/gfx/transform.h"
#include "ui/gl/gl_bindings.h"
namespace gfx {
class RectF;
......
......@@ -6,10 +6,10 @@
#include "base/trace_event/trace_event.h"
#include "chrome/browser/vr/elements/ui_element.h"
#include "chrome/browser/vr/gl_bindings.h"
#include "chrome/browser/vr/render_info.h"
#include "chrome/browser/vr/ui_element_renderer.h"
#include "chrome/browser/vr/ui_scene.h"
#include "ui/gl/gl_bindings.h"
namespace vr {
......
......@@ -26,10 +26,10 @@ GLuint CompileShader(GLenum shader_type,
// Compile the shader.
glCompileShader(shader_handle);
// Get the compilation status.
GLint status;
GLint status = GL_FALSE;
glGetShaderiv(shader_handle, GL_COMPILE_STATUS, &status);
if (status == GL_FALSE) {
GLint info_log_length;
GLint info_log_length = 0;
glGetShaderiv(shader_handle, GL_INFO_LOG_LENGTH, &info_log_length);
GLchar* str_info_log = new GLchar[info_log_length + 1];
glGetShaderInfoLog(shader_handle, info_log_length, nullptr, str_info_log);
......@@ -62,12 +62,12 @@ GLuint CreateAndLinkProgram(GLuint vertext_shader_handle,
glLinkProgram(program_handle);
// Get the link status.
GLint link_status;
GLint link_status = GL_FALSE;
glGetProgramiv(program_handle, GL_LINK_STATUS, &link_status);
// If the link failed, delete the program.
if (link_status == GL_FALSE) {
GLint info_log_length;
GLint info_log_length = 0;
glGetProgramiv(program_handle, GL_INFO_LOG_LENGTH, &info_log_length);
GLchar* str_info_log = new GLchar[info_log_length + 1];
......
......@@ -8,9 +8,9 @@
#include <array>
#include <string>
#include "chrome/browser/vr/gl_bindings.h"
#include "chrome/browser/vr/vr_export.h"
#include "third_party/skia/include/core/SkColor.h"
#include "ui/gl/gl_bindings.h"
#define SHADER(Src) "#version 100\n" #Src
#define OEIE_SHADER(Src) \
......
......@@ -9,6 +9,7 @@
#include "ui/gfx/x/x11.h"
#include "ui/gfx/x/x11_error_tracker.h"
#include "ui/gfx/x/x11_types.h"
#include "ui/gl/gl_bindings.h"
#include "ui/gl/gl_surface_glx_x11.h"
#include "ui/gl/init/gl_factory.h"
#include "ui/gl/test/gl_image_test_support.h"
......
......@@ -9,7 +9,6 @@
#include "base/optional.h"
#include "ui/gfx/buffer_types.h"
#include "ui/gl/gl_bindings.h"
#include "ui/gl/gl_implementation.h"
namespace gl {
......
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