Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(308)

Unified Diff: device/vr/android/gvr/gvr_device.cc

Issue 2508703002: WebVR: Use content CVC size for compositor rendering (Closed)
Patch Set: Undo VrShellImpl changes, use native-side values. Created 4 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: device/vr/android/gvr/gvr_device.cc
diff --git a/device/vr/android/gvr/gvr_device.cc b/device/vr/android/gvr/gvr_device.cc
index 6a442569166233bdbd01a36528b954312158b49c..57d5eb070ba709c7f98f5265b57318bf9557853f 100644
--- a/device/vr/android/gvr/gvr_device.cc
+++ b/device/vr/android/gvr/gvr_device.cc
@@ -55,16 +55,6 @@ mojom::VRDisplayInfoPtr GvrDevice::GetVRDevice() {
left_eye->offset.resize(3);
right_eye->offset.resize(3);
- // TODO(bajones): GVR has a bug that causes it to return bad render target
- // sizes when the phone is in portait mode. Send arbitrary,
- // not-horrifically-wrong values instead.
- // gvr::Sizei render_target_size = gvr_api->GetRecommendedRenderTargetSize();
- left_eye->renderWidth = 1024; // render_target_size.width / 2;
- left_eye->renderHeight = 1024; // render_target_size.height;
-
- right_eye->renderWidth = left_eye->renderWidth;
- right_eye->renderHeight = left_eye->renderHeight;
-
gvr::GvrApi* gvr_api = GetGvrApi();
if (!gvr_api) {
// We may not be able to get an instance of GvrApi right away, so
@@ -75,11 +65,15 @@ mojom::VRDisplayInfoPtr GvrDevice::GetVRDevice() {
left_eye->fieldOfView->downDegrees = 45;
left_eye->fieldOfView->leftDegrees = 45;
left_eye->fieldOfView->rightDegrees = 45;
+ left_eye->renderWidth = 1024;
mthiesse 2016/11/16 21:30:41 Maybe move this 1024 value used all over the place
klausw 2016/11/16 23:37:39 I've reverted this part of the change to keep the
+ left_eye->renderHeight = 1024;
right_eye->fieldOfView->upDegrees = 45;
right_eye->fieldOfView->downDegrees = 45;
right_eye->fieldOfView->leftDegrees = 45;
right_eye->fieldOfView->rightDegrees = 45;
+ right_eye->renderWidth = left_eye->renderHeight;
+ right_eye->renderHeight = left_eye->renderHeight;
left_eye->offset[0] = -0.0;
left_eye->offset[1] = -0.0;
@@ -89,9 +83,22 @@ mojom::VRDisplayInfoPtr GvrDevice::GetVRDevice() {
right_eye->offset[1] = 0.0;
right_eye->offset[2] = 0.03;
+ delegate_->SetWebVRRenderSurfaceSize(2 * left_eye->renderWidth,
+ left_eye->renderHeight);
+
return device;
}
+ // In compositor mode, we have to use the current compositor window's
+ // surface size. Would be nice to change it, but that needs more browser
+ // internals to be modified. TODO(klausw): remove this once we can
+ // pick our own surface size.
+ gvr::Sizei compositor_size = delegate_->GetWebVRCompositorSurfaceSize();
+ left_eye->renderWidth = compositor_size.width / 2;
+ left_eye->renderHeight = compositor_size.height;
+ right_eye->renderWidth = left_eye->renderHeight;
+ right_eye->renderHeight = left_eye->renderHeight;
+
std::string vendor = gvr_api->GetViewerVendor();
std::string model = gvr_api->GetViewerModel();
device->displayName = vendor + " " + model;
@@ -126,6 +133,9 @@ mojom::VRDisplayInfoPtr GvrDevice::GetVRDevice() {
right_eye->offset[1] = -right_eye_mat.m[1][3];
right_eye->offset[2] = -right_eye_mat.m[2][3];
+ delegate_->SetWebVRRenderSurfaceSize(2 * left_eye->renderWidth,
+ left_eye->renderHeight);
+
return device;
}

Powered by Google App Engine
This is Rietveld 408576698