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

Side by Side Diff: device/vr/android/gvr/gvr_device.cc

Issue 2508703002: WebVR: Use content CVC size for compositor rendering (Closed)
Patch Set: Rebase, use more appropriate crbug/655722 for TODOS 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 unified diff | Download patch
« no previous file with comments | « device/vr/android/gvr/gvr_delegate.h ('k') | third_party/WebKit/Source/modules/vr/VRDisplay.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "device/vr/android/gvr/gvr_device.h" 5 #include "device/vr/android/gvr/gvr_device.h"
6 6
7 #include <math.h> 7 #include <math.h>
8 #include <algorithm> 8 #include <algorithm>
9 9
10 #include "base/time/time.h" 10 #include "base/time/time.h"
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
52 left_eye->fieldOfView = mojom::VRFieldOfView::New(); 52 left_eye->fieldOfView = mojom::VRFieldOfView::New();
53 right_eye->fieldOfView = mojom::VRFieldOfView::New(); 53 right_eye->fieldOfView = mojom::VRFieldOfView::New();
54 54
55 left_eye->offset.resize(3); 55 left_eye->offset.resize(3);
56 right_eye->offset.resize(3); 56 right_eye->offset.resize(3);
57 57
58 // TODO(bajones): GVR has a bug that causes it to return bad render target 58 // TODO(bajones): GVR has a bug that causes it to return bad render target
59 // sizes when the phone is in portait mode. Send arbitrary, 59 // sizes when the phone is in portait mode. Send arbitrary,
60 // not-horrifically-wrong values instead. 60 // not-horrifically-wrong values instead.
61 // gvr::Sizei render_target_size = gvr_api->GetRecommendedRenderTargetSize(); 61 // gvr::Sizei render_target_size = gvr_api->GetRecommendedRenderTargetSize();
62 left_eye->renderWidth = 1024; // render_target_size.width / 2; 62 gvr::Sizei render_target_size = kFallbackRenderTargetSize;
63 left_eye->renderHeight = 1024; // render_target_size.height; 63 left_eye->renderWidth = render_target_size.width / 2;
64 left_eye->renderHeight = render_target_size.height;
64 65
65 right_eye->renderWidth = left_eye->renderWidth; 66 right_eye->renderWidth = left_eye->renderWidth;
66 right_eye->renderHeight = left_eye->renderHeight; 67 right_eye->renderHeight = left_eye->renderHeight;
67 68
68 gvr::GvrApi* gvr_api = GetGvrApi(); 69 gvr::GvrApi* gvr_api = GetGvrApi();
69 if (!gvr_api) { 70 if (!gvr_api) {
70 // We may not be able to get an instance of GvrApi right away, so 71 // We may not be able to get an instance of GvrApi right away, so
71 // stub in some data till we have one. 72 // stub in some data till we have one.
72 device->displayName = "Unknown"; 73 device->displayName = "Unknown";
73 74
74 left_eye->fieldOfView->upDegrees = 45; 75 left_eye->fieldOfView->upDegrees = 45;
75 left_eye->fieldOfView->downDegrees = 45; 76 left_eye->fieldOfView->downDegrees = 45;
76 left_eye->fieldOfView->leftDegrees = 45; 77 left_eye->fieldOfView->leftDegrees = 45;
77 left_eye->fieldOfView->rightDegrees = 45; 78 left_eye->fieldOfView->rightDegrees = 45;
78 79
79 right_eye->fieldOfView->upDegrees = 45; 80 right_eye->fieldOfView->upDegrees = 45;
80 right_eye->fieldOfView->downDegrees = 45; 81 right_eye->fieldOfView->downDegrees = 45;
81 right_eye->fieldOfView->leftDegrees = 45; 82 right_eye->fieldOfView->leftDegrees = 45;
82 right_eye->fieldOfView->rightDegrees = 45; 83 right_eye->fieldOfView->rightDegrees = 45;
83 84
84 left_eye->offset[0] = -0.0; 85 left_eye->offset[0] = -0.0;
85 left_eye->offset[1] = -0.0; 86 left_eye->offset[1] = -0.0;
86 left_eye->offset[2] = -0.03; 87 left_eye->offset[2] = -0.03;
87 88
88 right_eye->offset[0] = 0.0; 89 right_eye->offset[0] = 0.0;
89 right_eye->offset[1] = 0.0; 90 right_eye->offset[1] = 0.0;
90 right_eye->offset[2] = 0.03; 91 right_eye->offset[2] = 0.03;
91 92
93 delegate_->SetWebVRRenderSurfaceSize(2 * left_eye->renderWidth,
94 left_eye->renderHeight);
95
92 return device; 96 return device;
93 } 97 }
94 98
99 // In compositor mode, we have to use the current compositor window's
100 // surface size. Would be nice to change it, but that needs more browser
101 // internals to be modified. TODO(klausw,crbug.com/655722): remove this once
102 // we can pick our own surface size.
103 gvr::Sizei compositor_size = delegate_->GetWebVRCompositorSurfaceSize();
104 left_eye->renderWidth = compositor_size.width / 2;
105 left_eye->renderHeight = compositor_size.height;
106 right_eye->renderWidth = left_eye->renderHeight;
107 right_eye->renderHeight = left_eye->renderHeight;
108
95 std::string vendor = gvr_api->GetViewerVendor(); 109 std::string vendor = gvr_api->GetViewerVendor();
96 std::string model = gvr_api->GetViewerModel(); 110 std::string model = gvr_api->GetViewerModel();
97 device->displayName = vendor + " " + model; 111 device->displayName = vendor + " " + model;
98 112
99 gvr::BufferViewportList gvr_buffer_viewports = 113 gvr::BufferViewportList gvr_buffer_viewports =
100 gvr_api->CreateEmptyBufferViewportList(); 114 gvr_api->CreateEmptyBufferViewportList();
101 gvr_buffer_viewports.SetToRecommendedBufferViewports(); 115 gvr_buffer_viewports.SetToRecommendedBufferViewports();
102 116
103 gvr::BufferViewport eye_viewport = gvr_api->CreateBufferViewport(); 117 gvr::BufferViewport eye_viewport = gvr_api->CreateBufferViewport();
104 gvr_buffer_viewports.GetBufferViewport(GVR_LEFT_EYE, &eye_viewport); 118 gvr_buffer_viewports.GetBufferViewport(GVR_LEFT_EYE, &eye_viewport);
(...skipping 14 matching lines...) Expand all
119 gvr::Mat4f left_eye_mat = gvr_api->GetEyeFromHeadMatrix(GVR_LEFT_EYE); 133 gvr::Mat4f left_eye_mat = gvr_api->GetEyeFromHeadMatrix(GVR_LEFT_EYE);
120 left_eye->offset[0] = -left_eye_mat.m[0][3]; 134 left_eye->offset[0] = -left_eye_mat.m[0][3];
121 left_eye->offset[1] = -left_eye_mat.m[1][3]; 135 left_eye->offset[1] = -left_eye_mat.m[1][3];
122 left_eye->offset[2] = -left_eye_mat.m[2][3]; 136 left_eye->offset[2] = -left_eye_mat.m[2][3];
123 137
124 gvr::Mat4f right_eye_mat = gvr_api->GetEyeFromHeadMatrix(GVR_RIGHT_EYE); 138 gvr::Mat4f right_eye_mat = gvr_api->GetEyeFromHeadMatrix(GVR_RIGHT_EYE);
125 right_eye->offset[0] = -right_eye_mat.m[0][3]; 139 right_eye->offset[0] = -right_eye_mat.m[0][3];
126 right_eye->offset[1] = -right_eye_mat.m[1][3]; 140 right_eye->offset[1] = -right_eye_mat.m[1][3];
127 right_eye->offset[2] = -right_eye_mat.m[2][3]; 141 right_eye->offset[2] = -right_eye_mat.m[2][3];
128 142
143 delegate_->SetWebVRRenderSurfaceSize(2 * left_eye->renderWidth,
144 left_eye->renderHeight);
145
129 return device; 146 return device;
130 } 147 }
131 148
132 mojom::VRPosePtr GvrDevice::GetPose() { 149 mojom::VRPosePtr GvrDevice::GetPose() {
133 TRACE_EVENT0("input", "GvrDevice::GetSensorState"); 150 TRACE_EVENT0("input", "GvrDevice::GetSensorState");
134 151
135 mojom::VRPosePtr pose = mojom::VRPose::New(); 152 mojom::VRPosePtr pose = mojom::VRPose::New();
136 153
137 pose->timestamp = base::Time::Now().ToJsTime(); 154 pose->timestamp = base::Time::Now().ToJsTime();
138 155
(...skipping 110 matching lines...) Expand 10 before | Expand all | Expand 10 after
249 } 266 }
250 267
251 gvr::GvrApi* GvrDevice::GetGvrApi() { 268 gvr::GvrApi* GvrDevice::GetGvrApi() {
252 if (!delegate_) 269 if (!delegate_)
253 return nullptr; 270 return nullptr;
254 271
255 return delegate_->gvr_api(); 272 return delegate_->gvr_api();
256 } 273 }
257 274
258 } // namespace device 275 } // namespace device
OLDNEW
« no previous file with comments | « device/vr/android/gvr/gvr_delegate.h ('k') | third_party/WebKit/Source/modules/vr/VRDisplay.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698