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; |
} |