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

Side by Side Diff: android_webview/browser/hardware_renderer.cc

Issue 414503004: android: Use hw acceleration in android_webview_shell (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 5 months 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 | Annotate | Revision Log
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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 "android_webview/browser/hardware_renderer.h" 5 #include "android_webview/browser/hardware_renderer.h"
6 6
7 #include "android_webview/browser/aw_gl_surface.h" 7 #include "android_webview/browser/aw_gl_surface.h"
8 #include "android_webview/browser/deferred_gpu_command_service.h" 8 #include "android_webview/browser/deferred_gpu_command_service.h"
9 #include "android_webview/browser/parent_output_surface.h" 9 #include "android_webview/browser/parent_output_surface.h"
10 #include "android_webview/browser/shared_renderer_state.h" 10 #include "android_webview/browser/shared_renderer_state.h"
(...skipping 168 matching lines...) Expand 10 before | Expand all | Expand 10 after
179 delegated_layer_ = cc::DelegatedRendererLayer::Create(frame_provider_); 179 delegated_layer_ = cc::DelegatedRendererLayer::Create(frame_provider_);
180 delegated_layer_->SetBounds(gfx::Size(input->width, input->height)); 180 delegated_layer_->SetBounds(gfx::Size(input->width, input->height));
181 delegated_layer_->SetIsDrawable(true); 181 delegated_layer_->SetIsDrawable(true);
182 182
183 root_layer_->AddChild(delegated_layer_); 183 root_layer_->AddChild(delegated_layer_);
184 } else { 184 } else {
185 frame_provider_->SetFrameData(input->frame.delegated_frame_data.Pass()); 185 frame_provider_->SetFrameData(input->frame.delegated_frame_data.Pass());
186 } 186 }
187 } 187 }
188 188
189 if (!delegated_layer_) {
190 LOG(INFO) << "no layer";
no sievers 2014/07/22 20:53:17 The SurfaceView might start drawing before the chi
191 return;
192 }
189 viewport_.SetSize(draw_info->width, draw_info->height); 193 viewport_.SetSize(draw_info->width, draw_info->height);
190 layer_tree_host_->SetViewportSize(viewport_); 194 layer_tree_host_->SetViewportSize(viewport_);
191 clip_.SetRect(draw_info->clip_left, 195 clip_.SetRect(draw_info->clip_left,
192 draw_info->clip_top, 196 draw_info->clip_top,
193 draw_info->clip_right - draw_info->clip_left, 197 draw_info->clip_right - draw_info->clip_left,
194 draw_info->clip_bottom - draw_info->clip_top); 198 draw_info->clip_bottom - draw_info->clip_top);
195 stencil_enabled_ = stencil_enabled; 199 stencil_enabled_ = stencil_enabled;
196 200
197 gfx::Transform transform(gfx::Transform::kSkipInitialization); 201 gfx::Transform transform(gfx::Transform::kSkipInitialization);
198 transform.matrix().setColMajorf(draw_info->transform); 202 transform.matrix().setColMajorf(draw_info->transform);
199 transform.Translate(scroll_offset_.x(), scroll_offset_.y()); 203 // transform.Translate(scroll_offset_.x(), scroll_offset_.y());
no sievers 2014/07/22 21:00:36 So here I don't understand why we scroll in the pa
204 DCHECK(delegated_layer_.get());
200 delegated_layer_->SetTransform(transform); 205 delegated_layer_->SetTransform(transform);
201 206
202 gl_surface_->SetBackingFrameBufferObject(framebuffer_binding_ext); 207 gl_surface_->SetBackingFrameBufferObject(framebuffer_binding_ext);
203 { 208 {
204 base::AutoReset<bool> frame_resetter(&viewport_clip_valid_for_dcheck_, 209 base::AutoReset<bool> frame_resetter(&viewport_clip_valid_for_dcheck_,
205 true); 210 true);
206 layer_tree_host_->SetNeedsRedrawRect(clip_); 211 layer_tree_host_->SetNeedsRedrawRect(clip_);
207 layer_tree_host_->Composite(gfx::FrameTime::Now()); 212 layer_tree_host_->Composite(gfx::FrameTime::Now());
208 } 213 }
214 DCHECK(gl_surface_.get());
209 gl_surface_->ResetBackingFrameBufferObject(); 215 gl_surface_->ResetBackingFrameBufferObject();
210 } 216 }
211 217
212 scoped_ptr<cc::OutputSurface> HardwareRenderer::CreateOutputSurface( 218 scoped_ptr<cc::OutputSurface> HardwareRenderer::CreateOutputSurface(
213 bool fallback) { 219 bool fallback) {
214 // Android webview does not support losing output surface. 220 // Android webview does not support losing output surface.
215 DCHECK(!fallback); 221 DCHECK(!fallback);
216 scoped_refptr<cc::ContextProvider> context_provider = 222 scoped_refptr<cc::ContextProvider> context_provider =
217 CreateContext(gl_surface_, 223 CreateContext(gl_surface_,
218 DeferredGpuCommandService::GetInstance(), 224 DeferredGpuCommandService::GetInstance(),
219 shared_renderer_state_->GetSharedContext()); 225 shared_renderer_state_->GetSharedContext());
220 scoped_ptr<ParentOutputSurface> output_surface_holder( 226 scoped_ptr<ParentOutputSurface> output_surface_holder(
221 new ParentOutputSurface(context_provider)); 227 new ParentOutputSurface(context_provider));
222 output_surface_ = output_surface_holder.get(); 228 output_surface_ = output_surface_holder.get();
223 return output_surface_holder.PassAs<cc::OutputSurface>(); 229 return output_surface_holder.PassAs<cc::OutputSurface>();
224 } 230 }
225 231
226 void HardwareRenderer::UnusedResourcesAreAvailable() { 232 void HardwareRenderer::UnusedResourcesAreAvailable() {
227 cc::ReturnedResourceArray returned_resources; 233 cc::ReturnedResourceArray returned_resources;
228 resource_collection_->TakeUnusedResourcesForChildCompositor( 234 resource_collection_->TakeUnusedResourcesForChildCompositor(
229 &returned_resources); 235 &returned_resources);
230 shared_renderer_state_->InsertReturnedResources(returned_resources); 236 shared_renderer_state_->InsertReturnedResources(returned_resources);
231 } 237 }
232 238
233 } // namespace android_webview 239 } // namespace android_webview
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698