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

Side by Side Diff: cc/output/gl_renderer.cc

Issue 16730003: Aura: Support --enable-partial-swap with --composite-to-mailbox (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Address sievers@s comments. Created 7 years, 6 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
« no previous file with comments | « cc/output/gl_renderer.h ('k') | content/browser/renderer_host/render_widget_host_view_aura.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 2010 The Chromium Authors. All rights reserved. 1 // Copyright 2010 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 "cc/output/gl_renderer.h" 5 #include "cc/output/gl_renderer.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <limits> 8 #include <limits>
9 #include <set> 9 #include <set>
10 #include <string> 10 #include <string>
(...skipping 1810 matching lines...) Expand 10 before | Expand all | Expand 10 after
1821 void GLRenderer::FinishDrawingFrame(DrawingFrame* frame) { 1821 void GLRenderer::FinishDrawingFrame(DrawingFrame* frame) {
1822 current_framebuffer_lock_.reset(); 1822 current_framebuffer_lock_.reset();
1823 swap_buffer_rect_.Union(gfx::ToEnclosingRect(frame->root_damage_rect)); 1823 swap_buffer_rect_.Union(gfx::ToEnclosingRect(frame->root_damage_rect));
1824 1824
1825 GLC(context_, context_->disable(GL_BLEND)); 1825 GLC(context_, context_->disable(GL_BLEND));
1826 blend_shadow_ = false; 1826 blend_shadow_ = false;
1827 1827
1828 if (Settings().compositor_frame_message) { 1828 if (Settings().compositor_frame_message) {
1829 CompositorFrame compositor_frame; 1829 CompositorFrame compositor_frame;
1830 compositor_frame.metadata = client_->MakeCompositorFrameMetadata(); 1830 compositor_frame.metadata = client_->MakeCompositorFrameMetadata();
1831 compositor_frame.gl_frame_data.reset(new GLFrameData());
1832 compositor_frame.gl_frame_data->damage_rect = GetFrameDamage();
1831 output_surface_->SendFrameToParentCompositor(&compositor_frame); 1833 output_surface_->SendFrameToParentCompositor(&compositor_frame);
1832 } 1834 }
1833 } 1835 }
1834 1836
1835 void GLRenderer::FinishDrawingQuadList() { FlushTextureQuadCache(); } 1837 void GLRenderer::FinishDrawingQuadList() { FlushTextureQuadCache(); }
1836 1838
1837 bool GLRenderer::FlippedFramebuffer() const { return true; } 1839 bool GLRenderer::FlippedFramebuffer() const { return true; }
1838 1840
1839 void GLRenderer::EnsureScissorTestEnabled() { 1841 void GLRenderer::EnsureScissorTestEnabled() {
1840 if (is_scissor_enabled_) 1842 if (is_scissor_enabled_)
(...skipping 111 matching lines...) Expand 10 before | Expand all | Expand 10 after
1952 void GLRenderer::SwapBuffers(const ui::LatencyInfo& latency_info) { 1954 void GLRenderer::SwapBuffers(const ui::LatencyInfo& latency_info) {
1953 DCHECK(visible_); 1955 DCHECK(visible_);
1954 DCHECK(!is_backbuffer_discarded_); 1956 DCHECK(!is_backbuffer_discarded_);
1955 1957
1956 TRACE_EVENT0("cc", "GLRenderer::SwapBuffers"); 1958 TRACE_EVENT0("cc", "GLRenderer::SwapBuffers");
1957 // We're done! Time to swapbuffers! 1959 // We're done! Time to swapbuffers!
1958 1960
1959 if (capabilities_.using_partial_swap && client_->AllowPartialSwap()) { 1961 if (capabilities_.using_partial_swap && client_->AllowPartialSwap()) {
1960 // If supported, we can save significant bandwidth by only swapping the 1962 // If supported, we can save significant bandwidth by only swapping the
1961 // damaged/scissored region (clamped to the viewport) 1963 // damaged/scissored region (clamped to the viewport)
1962 swap_buffer_rect_.Intersect(client_->DeviceViewport()); 1964 output_surface_->PostSubBuffer(GetFrameDamage(), latency_info);
aelias_OOO_until_Jul13 2013/06/10 22:20:12 To be clearer about what I was asking for earlier,
aelias_OOO_until_Jul13 2013/06/10 23:20:20 On second thought, since this doesn't truly need t
1963 int flipped_y_pos_of_rect_bottom =
1964 client_->DeviceViewport().height() - swap_buffer_rect_.y() -
1965 swap_buffer_rect_.height();
1966 output_surface_->PostSubBuffer(gfx::Rect(swap_buffer_rect_.x(),
1967 flipped_y_pos_of_rect_bottom,
1968 swap_buffer_rect_.width(),
1969 swap_buffer_rect_.height()),
1970 latency_info);
1971 } else { 1965 } else {
1972 output_surface_->SwapBuffers(latency_info); 1966 output_surface_->SwapBuffers(latency_info);
1973 } 1967 }
1974 1968
1975 swap_buffer_rect_ = gfx::Rect(); 1969 swap_buffer_rect_ = gfx::Rect();
1976 1970
1977 // We don't have real fences, so we mark read fences as passed 1971 // We don't have real fences, so we mark read fences as passed
1978 // assuming a double-buffered GPU pipeline. A texture can be 1972 // assuming a double-buffered GPU pipeline. A texture can be
1979 // written to after one full frame has past since it was last read. 1973 // written to after one full frame has past since it was last read.
1980 if (last_swap_fence_.get()) 1974 if (last_swap_fence_.get())
(...skipping 916 matching lines...) Expand 10 before | Expand all | Expand 10 after
2897 bool GLRenderer::CanUseSkiaGPUBackend() const { 2891 bool GLRenderer::CanUseSkiaGPUBackend() const {
2898 // The Skia GPU backend requires a stencil buffer. See ReinitializeGrCanvas 2892 // The Skia GPU backend requires a stencil buffer. See ReinitializeGrCanvas
2899 // implementation. 2893 // implementation.
2900 return gr_context_ && context_->getContextAttributes().stencil; 2894 return gr_context_ && context_->getContextAttributes().stencil;
2901 } 2895 }
2902 2896
2903 bool GLRenderer::IsContextLost() { 2897 bool GLRenderer::IsContextLost() {
2904 return (context_->getGraphicsResetStatusARB() != GL_NO_ERROR); 2898 return (context_->getGraphicsResetStatusARB() != GL_NO_ERROR);
2905 } 2899 }
2906 2900
2901 gfx::Rect GLRenderer::GetFrameDamage() {
2902 gfx::Rect frame_damage = swap_buffer_rect_;
2903 frame_damage.Intersect(client_->DeviceViewport());
2904 int flipped_y_pos_of_rect_bottom = client_->DeviceViewport().height() -
2905 frame_damage.y() - frame_damage.height();
2906 frame_damage.set_y(flipped_y_pos_of_rect_bottom);
2907 return frame_damage;
2908 }
2909
2907 } // namespace cc 2910 } // namespace cc
OLDNEW
« no previous file with comments | « cc/output/gl_renderer.h ('k') | content/browser/renderer_host/render_widget_host_view_aura.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698