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

Side by Side Diff: cc/trees/layer_tree_host_impl.cc

Issue 83883002: cc: Allow TEXTURE_RECTANGLE_ARB to be used for tile textures. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: address review feedback Created 7 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 | Annotate | Revision Log
« no previous file with comments | « cc/test/fake_tile_manager.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2011 The Chromium Authors. All rights reserved. 1 // Copyright 2011 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/trees/layer_tree_host_impl.h" 5 #include "cc/trees/layer_tree_host_impl.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <limits> 8 #include <limits>
9 9
10 #include "base/basictypes.h" 10 #include "base/basictypes.h"
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
49 #include "cc/resources/ui_resource_bitmap.h" 49 #include "cc/resources/ui_resource_bitmap.h"
50 #include "cc/scheduler/delay_based_time_source.h" 50 #include "cc/scheduler/delay_based_time_source.h"
51 #include "cc/scheduler/texture_uploader.h" 51 #include "cc/scheduler/texture_uploader.h"
52 #include "cc/trees/damage_tracker.h" 52 #include "cc/trees/damage_tracker.h"
53 #include "cc/trees/layer_tree_host.h" 53 #include "cc/trees/layer_tree_host.h"
54 #include "cc/trees/layer_tree_host_common.h" 54 #include "cc/trees/layer_tree_host_common.h"
55 #include "cc/trees/layer_tree_impl.h" 55 #include "cc/trees/layer_tree_impl.h"
56 #include "cc/trees/quad_culler.h" 56 #include "cc/trees/quad_culler.h"
57 #include "cc/trees/single_thread_proxy.h" 57 #include "cc/trees/single_thread_proxy.h"
58 #include "cc/trees/tree_synchronizer.h" 58 #include "cc/trees/tree_synchronizer.h"
59 #include "gpu/GLES2/gl2extchromium.h"
59 #include "ui/gfx/frame_time.h" 60 #include "ui/gfx/frame_time.h"
60 #include "ui/gfx/size_conversions.h" 61 #include "ui/gfx/size_conversions.h"
61 #include "ui/gfx/vector2d_conversions.h" 62 #include "ui/gfx/vector2d_conversions.h"
62 63
63 namespace { 64 namespace {
64 65
65 void DidVisibilityChange(cc::LayerTreeHostImpl* id, bool visible) { 66 void DidVisibilityChange(cc::LayerTreeHostImpl* id, bool visible) {
66 if (visible) { 67 if (visible) {
67 TRACE_EVENT_ASYNC_BEGIN1("webkit", 68 TRACE_EVENT_ASYNC_BEGIN1("webkit",
68 "LayerTreeHostImpl::SetVisible", 69 "LayerTreeHostImpl::SetVisible",
(...skipping 27 matching lines...) Expand all
96 } 97 }
97 98
98 size_t GetMaxRasterTasksUsageBytes(cc::ContextProvider* context_provider) { 99 size_t GetMaxRasterTasksUsageBytes(cc::ContextProvider* context_provider) {
99 // Transfer-buffer/raster-tasks limits are different but related. We make 100 // Transfer-buffer/raster-tasks limits are different but related. We make
100 // equal here, as this is ideal when using transfer buffers. When not using 101 // equal here, as this is ideal when using transfer buffers. When not using
101 // transfer buffers we should still limit raster to something similar, to 102 // transfer buffers we should still limit raster to something similar, to
102 // preserve caching behavior (and limit memory waste when priorities change). 103 // preserve caching behavior (and limit memory waste when priorities change).
103 return GetMaxTransferBufferUsageBytes(context_provider); 104 return GetMaxTransferBufferUsageBytes(context_provider);
104 } 105 }
105 106
107 GLenum GetMapImageTextureTarget(cc::ContextProvider* context_provider) {
108 if (!context_provider)
109 return GL_TEXTURE_2D;
110
111 // TODO(reveman): Determine if GL_TEXTURE_EXTERNAL_OES works well on
112 // Android before we enable this. crbug.com/322780
113 #if !defined(OS_ANDROID)
114 if (context_provider->ContextCapabilities().egl_image_external)
115 return GL_TEXTURE_EXTERNAL_OES;
116 if (context_provider->ContextCapabilities().texture_rectangle)
117 return GL_TEXTURE_RECTANGLE_ARB;
118 #endif
119
120 return GL_TEXTURE_2D;
121 }
122
106 } // namespace 123 } // namespace
107 124
108 namespace cc { 125 namespace cc {
109 126
110 class LayerTreeHostImplTimeSourceAdapter : public TimeSourceClient { 127 class LayerTreeHostImplTimeSourceAdapter : public TimeSourceClient {
111 public: 128 public:
112 static scoped_ptr<LayerTreeHostImplTimeSourceAdapter> Create( 129 static scoped_ptr<LayerTreeHostImplTimeSourceAdapter> Create(
113 LayerTreeHostImpl* layer_tree_host_impl, 130 LayerTreeHostImpl* layer_tree_host_impl,
114 scoped_refptr<DelayBasedTimeSource> time_source) { 131 scoped_refptr<DelayBasedTimeSource> time_source) {
115 return make_scoped_ptr( 132 return make_scoped_ptr(
(...skipping 1537 matching lines...) Expand 10 before | Expand all | Expand 10 after
1653 bool using_map_image) { 1670 bool using_map_image) {
1654 DCHECK(settings_.impl_side_painting); 1671 DCHECK(settings_.impl_side_painting);
1655 DCHECK(resource_provider); 1672 DCHECK(resource_provider);
1656 tile_manager_ = 1673 tile_manager_ =
1657 TileManager::Create(this, 1674 TileManager::Create(this,
1658 resource_provider, 1675 resource_provider,
1659 settings_.num_raster_threads, 1676 settings_.num_raster_threads,
1660 rendering_stats_instrumentation_, 1677 rendering_stats_instrumentation_,
1661 using_map_image, 1678 using_map_image,
1662 GetMaxTransferBufferUsageBytes(context_provider), 1679 GetMaxTransferBufferUsageBytes(context_provider),
1663 GetMaxRasterTasksUsageBytes(context_provider)); 1680 GetMaxRasterTasksUsageBytes(context_provider),
1681 GetMapImageTextureTarget(context_provider));
1664 1682
1665 UpdateTileManagerMemoryPolicy(ActualManagedMemoryPolicy()); 1683 UpdateTileManagerMemoryPolicy(ActualManagedMemoryPolicy());
1666 need_to_update_visible_tiles_before_draw_ = false; 1684 need_to_update_visible_tiles_before_draw_ = false;
1667 } 1685 }
1668 1686
1669 void LayerTreeHostImpl::EnforceZeroBudget(bool zero_budget) { 1687 void LayerTreeHostImpl::EnforceZeroBudget(bool zero_budget) {
1670 SetManagedMemoryPolicy(cached_managed_memory_policy_, zero_budget); 1688 SetManagedMemoryPolicy(cached_managed_memory_policy_, zero_budget);
1671 } 1689 }
1672 1690
1673 bool LayerTreeHostImpl::InitializeRenderer( 1691 bool LayerTreeHostImpl::InitializeRenderer(
(...skipping 1168 matching lines...) Expand 10 before | Expand all | Expand 10 after
2842 if (evicted_ui_resources_.empty()) 2860 if (evicted_ui_resources_.empty())
2843 client_->OnCanDrawStateChanged(CanDraw()); 2861 client_->OnCanDrawStateChanged(CanDraw());
2844 } 2862 }
2845 2863
2846 void LayerTreeHostImpl::ScheduleMicroBenchmark( 2864 void LayerTreeHostImpl::ScheduleMicroBenchmark(
2847 scoped_ptr<MicroBenchmarkImpl> benchmark) { 2865 scoped_ptr<MicroBenchmarkImpl> benchmark) {
2848 micro_benchmark_controller_.ScheduleRun(benchmark.Pass()); 2866 micro_benchmark_controller_.ScheduleRun(benchmark.Pass());
2849 } 2867 }
2850 2868
2851 } // namespace cc 2869 } // namespace cc
OLDNEW
« no previous file with comments | « cc/test/fake_tile_manager.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698