Index: chrome/browser/android/vr_shell/vr_shell.cc |
diff --git a/chrome/browser/android/vr_shell/vr_shell.cc b/chrome/browser/android/vr_shell/vr_shell.cc |
index efce6d11d4d9b15248ad05bbe95bf6748eb7868e..21193ab566d0f965544e8c9d1b7f90633c1e38e5 100644 |
--- a/chrome/browser/android/vr_shell/vr_shell.cc |
+++ b/chrome/browser/android/vr_shell/vr_shell.cc |
@@ -36,7 +36,6 @@ |
#include "content/public/common/referrer.h" |
#include "device/vr/android/gvr/gvr_device.h" |
#include "device/vr/android/gvr/gvr_device_provider.h" |
-#include "gpu/command_buffer/common/mailbox.h" |
#include "jni/VrShellImpl_jni.h" |
#include "third_party/WebKit/public/platform/WebInputEvent.h" |
#include "ui/android/view_android.h" |
@@ -56,13 +55,6 @@ |
vr_shell::VrShell* g_instance; |
static const char kVrShellUIURL[] = "chrome://vr-shell-ui"; |
- |
-// Default downscale factor for computing the recommended WebVR |
-// renderWidth/Height from the 1:1 pixel mapped size. Using a rather |
-// aggressive downscale due to the high overhead of copying pixels |
-// twice before handing off to GVR. For comparison, the polyfill |
-// uses approximately 0.55 on a Pixel XL. |
-static constexpr float kWebVrRecommendedResolutionScale = 0.5; |
void SetIsInVR(content::WebContents* contents, bool is_in_vr) { |
if (contents && contents->GetRenderWidgetHostView()) |
@@ -178,7 +170,6 @@ |
} |
VrShell::~VrShell() { |
- delegate_provider_->RemoveDelegate(); |
{ |
// The GvrLayout is, and must always be, used only on the UI thread, and the |
// GvrApi used for rendering should only be used from the GL thread as it's |
@@ -194,6 +185,7 @@ |
base::ThreadRestrictions::ScopedAllowIO allow_io; |
gl_thread_.reset(); |
} |
+ delegate_provider_->RemoveDelegate(); |
g_instance = nullptr; |
} |
@@ -279,7 +271,6 @@ |
metrics_helper_->SetWebVREnabled(enabled); |
PostToGlThreadWhenReady(base::Bind(&VrShellGl::SetWebVrMode, |
gl_thread_->GetVrShellGl(), enabled)); |
- |
html_interface_->SetMode(enabled ? UiInterface::Mode::WEB_VR |
: UiInterface::Mode::STANDARD); |
} |
@@ -333,22 +324,14 @@ |
html_interface_->SetWebVRSecureOrigin(secure_origin); |
} |
-void VrShell::SubmitWebVRFrame(int16_t frame_index, |
- const gpu::MailboxHolder& mailbox) { |
- TRACE_EVENT1("gpu", "SubmitWebVRFrame", "frame", frame_index); |
- |
- PostToGlThreadWhenReady(base::Bind(&VrShellGl::SubmitWebVRFrame, |
- gl_thread_->GetVrShellGl(), frame_index, |
- mailbox)); |
-} |
+void VrShell::SubmitWebVRFrame() {} |
void VrShell::UpdateWebVRTextureBounds(int16_t frame_index, |
const gvr::Rectf& left_bounds, |
- const gvr::Rectf& right_bounds, |
- const gvr::Sizei& source_size) { |
+ const gvr::Rectf& right_bounds) { |
PostToGlThreadWhenReady(base::Bind(&VrShellGl::UpdateWebVRTextureBounds, |
gl_thread_->GetVrShellGl(), frame_index, |
- left_bounds, right_bounds, source_size)); |
+ left_bounds, right_bounds)); |
} |
bool VrShell::SupportsPresentation() { |
@@ -402,10 +385,6 @@ |
} |
void VrShell::GvrDelegateReady() { |
- PostToGlThreadWhenReady(base::Bind( |
- &VrShellGl::SetSubmitClient, gl_thread_->GetVrShellGl(), |
- base::Passed( |
- delegate_provider_->TakeSubmitFrameClient().PassInterface()))); |
delegate_provider_->SetDelegate(this, gvr_api_); |
} |
@@ -620,7 +599,6 @@ |
} |
} |
-/* static */ |
device::mojom::VRPosePtr VrShell::VRPosePtrFromGvrPose(gvr::Mat4f head_mat) { |
device::mojom::VRPosePtr pose = device::mojom::VRPose::New(); |
@@ -651,37 +629,9 @@ |
return pose; |
} |
-/* static */ |
-gvr::Sizei VrShell::GetRecommendedWebVrSize(gvr::GvrApi* gvr_api) { |
- // Pick a reasonable default size for the WebVR transfer surface |
- // based on a downscaled 1:1 render resolution. This size will also |
- // be reported to the client via CreateVRDisplayInfo as the |
- // client-recommended renderWidth/renderHeight and for the GVR |
- // framebuffer. If the client chooses a different size or resizes it |
- // while presenting, we'll resize the transfer surface and GVR |
- // framebuffer to match. |
- gvr::Sizei render_target_size = |
- gvr_api->GetMaximumEffectiveRenderTargetSize(); |
- gvr::Sizei webvr_size = {static_cast<int>(render_target_size.width * |
- kWebVrRecommendedResolutionScale), |
- static_cast<int>(render_target_size.height * |
- kWebVrRecommendedResolutionScale)}; |
- // Ensure that the width is an even number so that the eyes each |
- // get the same size, the recommended renderWidth is per eye |
- // and the client will use the sum of the left and right width. |
- // |
- // TODO(klausw,crbug.com/699350): should we round the recommended |
- // size to a multiple of 2^N pixels to be friendlier to the GPU? The |
- // exact size doesn't matter, and it might be more efficient. |
- webvr_size.width &= ~1; |
- |
- return webvr_size; |
-} |
- |
-/* static */ |
device::mojom::VRDisplayInfoPtr VrShell::CreateVRDisplayInfo( |
gvr::GvrApi* gvr_api, |
- gvr::Sizei recommended_size, |
+ gvr::Sizei compositor_size, |
uint32_t device_id) { |
TRACE_EVENT0("input", "GvrDevice::GetVRDevice"); |
@@ -710,8 +660,8 @@ |
(eye == GVR_LEFT_EYE) ? device->leftEye : device->rightEye; |
eye_params->fieldOfView = device::mojom::VRFieldOfView::New(); |
eye_params->offset.resize(3); |
- eye_params->renderWidth = recommended_size.width / 2; |
- eye_params->renderHeight = recommended_size.height; |
+ eye_params->renderWidth = compositor_size.width / 2; |
+ eye_params->renderHeight = compositor_size.height; |
gvr::BufferViewport eye_viewport = gvr_api->CreateBufferViewport(); |
gvr_buffer_viewports.GetBufferViewport(eye, &eye_viewport); |