| Index: android_webview/browser/shared_renderer_state.cc
|
| diff --git a/android_webview/browser/shared_renderer_state.cc b/android_webview/browser/shared_renderer_state.cc
|
| index cb0bda938b11ba71cd3133f8a2474c532e035721..69a41e53d3d0d33f621e93cee5bf714e0a277a1b 100644
|
| --- a/android_webview/browser/shared_renderer_state.cc
|
| +++ b/android_webview/browser/shared_renderer_state.cc
|
| @@ -259,6 +259,18 @@ void SharedRendererState::DrawGL(AwDrawGLInfo* draw_info) {
|
| draw_info->mode == AwDrawGLInfo::kModeDraw
|
| ? ScopedAppGLStateRestore::MODE_DRAW
|
| : ScopedAppGLStateRestore::MODE_RESOURCE_MANAGEMENT);
|
| + // Set the correct FBO before kModeDraw. The GL commands run in kModeDraw
|
| + // require a correctly bound FBO. The FBO remains until the next kModeDraw.
|
| + // So kModeProcess between kModeDraws has correctly bound FBO, too.
|
| + if (draw_info->mode == AwDrawGLInfo::kModeDraw) {
|
| + if (!hardware_renderer_) {
|
| + hardware_renderer_.reset(new HardwareRenderer(this));
|
| + hardware_renderer_->CommitFrame();
|
| + }
|
| + hardware_renderer_->SetBackingFrameBufferObject(
|
| + state_restore.framebuffer_binding_ext());
|
| + }
|
| +
|
| ScopedAllowGL allow_gl;
|
|
|
| if (draw_info->mode == AwDrawGLInfo::kModeProcessNoContext) {
|
| @@ -279,14 +291,7 @@ void SharedRendererState::DrawGL(AwDrawGLInfo* draw_info) {
|
| return;
|
| }
|
|
|
| - if (!hardware_renderer_) {
|
| - hardware_renderer_.reset(new HardwareRenderer(this));
|
| - hardware_renderer_->CommitFrame();
|
| - }
|
| -
|
| - hardware_renderer_->DrawGL(state_restore.stencil_enabled(),
|
| - state_restore.framebuffer_binding_ext(),
|
| - draw_info);
|
| + hardware_renderer_->DrawGL(state_restore.stencil_enabled(), draw_info);
|
| DeferredGpuCommandService::GetInstance()->PerformIdleWork(false);
|
| }
|
|
|
|
|