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

Side by Side Diff: content/common/gpu/gpu_command_buffer_stub.cc

Issue 10388010: Decoupling backbuffer allocation suggestion from frontbuffer allocation suggestion. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Reset previous damage at time of swap. Created 8 years, 7 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 (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 #if defined(ENABLE_GPU) 5 #if defined(ENABLE_GPU)
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/bind_helpers.h" 8 #include "base/bind_helpers.h"
9 #include "base/command_line.h" 9 #include "base/command_line.h"
10 #include "base/debug/trace_event.h" 10 #include "base/debug/trace_event.h"
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
53 handle_(handle), 53 handle_(handle),
54 initial_size_(size), 54 initial_size_(size),
55 disallowed_features_(disallowed_features), 55 disallowed_features_(disallowed_features),
56 allowed_extensions_(allowed_extensions), 56 allowed_extensions_(allowed_extensions),
57 requested_attribs_(attribs), 57 requested_attribs_(attribs),
58 gpu_preference_(gpu_preference), 58 gpu_preference_(gpu_preference),
59 route_id_(route_id), 59 route_id_(route_id),
60 software_(software), 60 software_(software),
61 client_has_memory_allocation_changed_callback_(false), 61 client_has_memory_allocation_changed_callback_(false),
62 last_flush_count_(0), 62 last_flush_count_(0),
63 allocation_(GpuMemoryAllocation::INVALID_RESOURCE_SIZE,
64 GpuMemoryAllocation::kHasFrontbuffer |
65 GpuMemoryAllocation::kHasBackbuffer),
66 parent_stub_for_initialization_(), 63 parent_stub_for_initialization_(),
67 parent_texture_for_initialization_(0), 64 parent_texture_for_initialization_(0),
68 watchdog_(watchdog) { 65 watchdog_(watchdog) {
69 if (share_group) { 66 if (share_group) {
70 context_group_ = share_group->context_group_; 67 context_group_ = share_group->context_group_;
71 } else { 68 } else {
72 context_group_ = new gpu::gles2::ContextGroup(mailbox_manager, true); 69 context_group_ = new gpu::gles2::ContextGroup(mailbox_manager, true);
73 } 70 }
74 if (surface_id != 0) 71 if (surface_id != 0)
75 surface_state_.reset(new GpuCommandBufferStubBase::SurfaceState( 72 surface_state_.reset(new GpuCommandBufferStubBase::SurfaceState(
(...skipping 496 matching lines...) Expand 10 before | Expand all | Expand 10 after
572 void GpuCommandBufferStub::OnSetSurfaceVisible(bool visible) { 569 void GpuCommandBufferStub::OnSetSurfaceVisible(bool visible) {
573 DCHECK(surface_state_.get()); 570 DCHECK(surface_state_.get());
574 surface_state_->visible = visible; 571 surface_state_->visible = visible;
575 surface_state_->last_used_time = base::TimeTicks::Now(); 572 surface_state_->last_used_time = base::TimeTicks::Now();
576 channel_->gpu_channel_manager()->gpu_memory_manager()->ScheduleManage(); 573 channel_->gpu_channel_manager()->gpu_memory_manager()->ScheduleManage();
577 } 574 }
578 575
579 void GpuCommandBufferStub::OnDiscardBackbuffer() { 576 void GpuCommandBufferStub::OnDiscardBackbuffer() {
580 if (!surface_) 577 if (!surface_)
581 return; 578 return;
582 if (allocation_.suggest_have_frontbuffer) 579 surface_->SetBackbufferAllocation(false);
583 surface_->SetBufferAllocation(
584 gfx::GLSurface::BUFFER_ALLOCATION_FRONT_ONLY);
585 else
586 surface_->SetBufferAllocation(
587 gfx::GLSurface::BUFFER_ALLOCATION_NONE);
588 } 580 }
589 581
590 void GpuCommandBufferStub::OnEnsureBackbuffer() { 582 void GpuCommandBufferStub::OnEnsureBackbuffer() {
591 if (!surface_) 583 if (!surface_)
592 return; 584 return;
593 // TODO(mmocny): Support backbuffer without frontbuffer. 585 surface_->SetBackbufferAllocation(true);
594 surface_->SetBufferAllocation(
595 gfx::GLSurface::BUFFER_ALLOCATION_FRONT_AND_BACK);
596 } 586 }
597 587
598 void GpuCommandBufferStub::OnSetClientHasMemoryAllocationChangedCallback( 588 void GpuCommandBufferStub::OnSetClientHasMemoryAllocationChangedCallback(
599 bool has_callback) { 589 bool has_callback) {
600 client_has_memory_allocation_changed_callback_ = has_callback; 590 client_has_memory_allocation_changed_callback_ = has_callback;
601 channel_->gpu_channel_manager()->gpu_memory_manager()->ScheduleManage(); 591 channel_->gpu_channel_manager()->gpu_memory_manager()->ScheduleManage();
602 } 592 }
603 593
604 void GpuCommandBufferStub::SendConsoleMessage( 594 void GpuCommandBufferStub::SendConsoleMessage(
605 int32 id, 595 int32 id,
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
643 bool GpuCommandBufferStub::has_surface_state() const { 633 bool GpuCommandBufferStub::has_surface_state() const {
644 return surface_state_ != NULL; 634 return surface_state_ != NULL;
645 } 635 }
646 636
647 const GpuCommandBufferStubBase::SurfaceState& 637 const GpuCommandBufferStubBase::SurfaceState&
648 GpuCommandBufferStub::surface_state() const { 638 GpuCommandBufferStub::surface_state() const {
649 DCHECK(has_surface_state()); 639 DCHECK(has_surface_state());
650 return *surface_state_.get(); 640 return *surface_state_.get();
651 } 641 }
652 642
653 void GpuCommandBufferStub::SendMemoryAllocationToProxy(
654 const GpuMemoryAllocation& allocation) {
655 Send(new GpuCommandBufferMsg_SetMemoryAllocation(route_id_, allocation));
656 }
657
658 void GpuCommandBufferStub::SetMemoryAllocation( 643 void GpuCommandBufferStub::SetMemoryAllocation(
659 const GpuMemoryAllocation& allocation) { 644 const GpuMemoryAllocation& allocation) {
660 allocation_ = allocation; 645 Send(new GpuCommandBufferMsg_SetMemoryAllocation(route_id_, allocation));
661 646 if (!surface_)
662 SendMemoryAllocationToProxy(allocation); 647 return;
648 surface_->SetFrontbufferAllocation(allocation.suggest_have_frontbuffer);
663 } 649 }
664 650
665 #endif // defined(ENABLE_GPU) 651 #endif // defined(ENABLE_GPU)
OLDNEW
« no previous file with comments | « content/common/gpu/gpu_command_buffer_stub.h ('k') | content/common/gpu/image_transport_surface_linux.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698