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

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

Issue 668123003: cc: Support texture rect targets for masks (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@base_for_texture_rect_changes
Patch Set: Created 6 years, 2 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
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 60 matching lines...) Expand 10 before | Expand all | Expand 10 after
71 #include "gpu/command_buffer/client/gles2_interface.h" 71 #include "gpu/command_buffer/client/gles2_interface.h"
72 #include "gpu/GLES2/gl2extchromium.h" 72 #include "gpu/GLES2/gl2extchromium.h"
73 #include "ui/gfx/frame_time.h" 73 #include "ui/gfx/frame_time.h"
74 #include "ui/gfx/geometry/rect_conversions.h" 74 #include "ui/gfx/geometry/rect_conversions.h"
75 #include "ui/gfx/size_conversions.h" 75 #include "ui/gfx/size_conversions.h"
76 #include "ui/gfx/vector2d_conversions.h" 76 #include "ui/gfx/vector2d_conversions.h"
77 77
78 namespace cc { 78 namespace cc {
79 namespace { 79 namespace {
80 80
81 bool SupportsTextureTarget(unsigned target,
82 LayerTreeSettings::TextureTargetPrefs prefs) {
reveman 2014/10/22 12:40:39 I find this utility function a bit confusing. Base
83 switch (prefs) {
84 case LayerTreeSettings::USE_DEFAULT_TEXTURE_TARGET:
85 return true;
86 case LayerTreeSettings::FORCE_TEXTURE_2D_TARGET:
87 return target == GL_TEXTURE_2D;
88 case LayerTreeSettings::FORCE_TEXTURE_RECT_TARGET:
89 return target == GL_TEXTURE_RECTANGLE_ARB;
90 }
91 NOTREACHED();
92 return false;
93 }
94
81 // Small helper class that saves the current viewport location as the user sees 95 // Small helper class that saves the current viewport location as the user sees
82 // it and resets to the same location. 96 // it and resets to the same location.
83 class ViewportAnchor { 97 class ViewportAnchor {
84 public: 98 public:
85 ViewportAnchor(LayerImpl* inner_scroll, LayerImpl* outer_scroll) 99 ViewportAnchor(LayerImpl* inner_scroll, LayerImpl* outer_scroll)
86 : inner_(inner_scroll), 100 : inner_(inner_scroll),
87 outer_(outer_scroll) { 101 outer_(outer_scroll) {
88 viewport_in_content_coordinates_ = inner_->TotalScrollOffset(); 102 viewport_in_content_coordinates_ = inner_->TotalScrollOffset();
89 103
90 if (outer_) 104 if (outer_)
(...skipping 1915 matching lines...) Expand 10 before | Expand all | Expand 10 after
2006 DCHECK(settings_.impl_side_painting); 2020 DCHECK(settings_.impl_side_painting);
2007 DCHECK(output_surface_); 2021 DCHECK(output_surface_);
2008 DCHECK(resource_provider_); 2022 DCHECK(resource_provider_);
2009 base::SingleThreadTaskRunner* task_runner = 2023 base::SingleThreadTaskRunner* task_runner =
2010 proxy_->HasImplThread() ? proxy_->ImplThreadTaskRunner() 2024 proxy_->HasImplThread() ? proxy_->ImplThreadTaskRunner()
2011 : proxy_->MainThreadTaskRunner(); 2025 : proxy_->MainThreadTaskRunner();
2012 DCHECK(task_runner); 2026 DCHECK(task_runner);
2013 2027
2014 ContextProvider* context_provider = output_surface_->context_provider(); 2028 ContextProvider* context_provider = output_surface_->context_provider();
2015 if (!context_provider) { 2029 if (!context_provider) {
2030 DCHECK(
2031 SupportsTextureTarget(GL_TEXTURE_2D, settings_.texture_target_prefs));
2016 resource_pool_ = 2032 resource_pool_ =
2017 ResourcePool::Create(resource_provider_.get(), 2033 ResourcePool::Create(resource_provider_.get(),
2018 GL_TEXTURE_2D, 2034 GL_TEXTURE_2D,
2019 resource_provider_->best_texture_format()); 2035 resource_provider_->best_texture_format());
2020 2036
2021 raster_worker_pool_ = 2037 raster_worker_pool_ =
2022 BitmapRasterWorkerPool::Create(proxy_->ImplThreadTaskRunner(), 2038 BitmapRasterWorkerPool::Create(proxy_->ImplThreadTaskRunner(),
2023 RasterWorkerPool::GetTaskGraphRunner(), 2039 RasterWorkerPool::GetTaskGraphRunner(),
2024 resource_provider_.get()); 2040 resource_provider_.get());
2025 } else if (use_gpu_rasterization_) { 2041 } else if (use_gpu_rasterization_) {
2042 DCHECK(
2043 SupportsTextureTarget(GL_TEXTURE_2D, settings_.texture_target_prefs));
2026 resource_pool_ = 2044 resource_pool_ =
2027 ResourcePool::Create(resource_provider_.get(), 2045 ResourcePool::Create(resource_provider_.get(),
2028 GL_TEXTURE_2D, 2046 GL_TEXTURE_2D,
2029 resource_provider_->best_texture_format()); 2047 resource_provider_->best_texture_format());
2030 2048
2031 raster_worker_pool_ = GpuRasterWorkerPool::Create( 2049 raster_worker_pool_ = GpuRasterWorkerPool::Create(
2032 task_runner, context_provider, resource_provider_.get()); 2050 task_runner, context_provider, resource_provider_.get());
2033 } else if (UseZeroCopyRasterizer()) { 2051 } else if (UseZeroCopyRasterizer()) {
2034 resource_pool_ = ResourcePool::Create( 2052 unsigned target =
2035 resource_provider_.get(), 2053 GetMapImageTextureTarget(context_provider->ContextCapabilities());
2036 GetMapImageTextureTarget(context_provider->ContextCapabilities()), 2054 if (settings_.texture_target_prefs ==
2037 resource_provider_->best_texture_format()); 2055 LayerTreeSettings::FORCE_TEXTURE_2D_TARGET)
reveman 2014/10/22 12:40:38 I don't think this should be a special case for ze
enne (OOO) 2014/10/22 19:20:44 Maybe I'm mistaken, but I don't think it applies t
reveman 2014/10/22 20:36:47 Correct, GLRenderer is only affected by the target
enne (OOO) 2014/10/22 21:14:30 I'm not sure that these should be the same flag, a
reveman 2014/10/22 23:13:35 I think ((pool type) * (raster target type)) + (dr
2056 target = GL_TEXTURE_2D;
2057 DCHECK(SupportsTextureTarget(target, settings_.texture_target_prefs));
2058 resource_pool_ =
2059 ResourcePool::Create(resource_provider_.get(),
2060 target,
2061 resource_provider_->best_texture_format());
2038 2062
2039 raster_worker_pool_ = 2063 raster_worker_pool_ =
2040 ZeroCopyRasterWorkerPool::Create(proxy_->ImplThreadTaskRunner(), 2064 ZeroCopyRasterWorkerPool::Create(proxy_->ImplThreadTaskRunner(),
2041 RasterWorkerPool::GetTaskGraphRunner(), 2065 RasterWorkerPool::GetTaskGraphRunner(),
2042 resource_provider_.get()); 2066 resource_provider_.get());
2043 } else if (UseOneCopyRasterizer()) { 2067 } else if (UseOneCopyRasterizer()) {
2068 DCHECK(
2069 SupportsTextureTarget(GL_TEXTURE_2D, settings_.texture_target_prefs));
2044 // We need to create a staging resource pool when using copy rasterizer. 2070 // We need to create a staging resource pool when using copy rasterizer.
2045 staging_resource_pool_ = ResourcePool::Create( 2071 staging_resource_pool_ = ResourcePool::Create(
2046 resource_provider_.get(), 2072 resource_provider_.get(),
2047 GetMapImageTextureTarget(context_provider->ContextCapabilities()), 2073 GetMapImageTextureTarget(context_provider->ContextCapabilities()),
2048 resource_provider_->best_texture_format()); 2074 resource_provider_->best_texture_format());
2049 resource_pool_ = 2075 resource_pool_ =
2050 ResourcePool::Create(resource_provider_.get(), 2076 ResourcePool::Create(resource_provider_.get(),
2051 GL_TEXTURE_2D, 2077 GL_TEXTURE_2D,
2052 resource_provider_->best_texture_format()); 2078 resource_provider_->best_texture_format());
2053 2079
2054 raster_worker_pool_ = 2080 raster_worker_pool_ =
2055 OneCopyRasterWorkerPool::Create(task_runner, 2081 OneCopyRasterWorkerPool::Create(task_runner,
2056 RasterWorkerPool::GetTaskGraphRunner(), 2082 RasterWorkerPool::GetTaskGraphRunner(),
2057 context_provider, 2083 context_provider,
2058 resource_provider_.get(), 2084 resource_provider_.get(),
2059 staging_resource_pool_.get()); 2085 staging_resource_pool_.get());
2060 } else { 2086 } else {
2087 DCHECK(
2088 SupportsTextureTarget(GL_TEXTURE_2D, settings_.texture_target_prefs));
2061 resource_pool_ = ResourcePool::Create( 2089 resource_pool_ = ResourcePool::Create(
2062 resource_provider_.get(), 2090 resource_provider_.get(),
2063 GL_TEXTURE_2D, 2091 GL_TEXTURE_2D,
2064 resource_provider_->memory_efficient_texture_format()); 2092 resource_provider_->memory_efficient_texture_format());
2065 2093
2066 raster_worker_pool_ = PixelBufferRasterWorkerPool::Create( 2094 raster_worker_pool_ = PixelBufferRasterWorkerPool::Create(
2067 task_runner, 2095 task_runner,
2068 RasterWorkerPool::GetTaskGraphRunner(), 2096 RasterWorkerPool::GetTaskGraphRunner(),
2069 context_provider, 2097 context_provider,
2070 resource_provider_.get(), 2098 resource_provider_.get(),
(...skipping 1404 matching lines...) Expand 10 before | Expand all | Expand 10 after
3475 } 3503 }
3476 3504
3477 void LayerTreeHostImpl::UnregisterPictureLayerImpl(PictureLayerImpl* layer) { 3505 void LayerTreeHostImpl::UnregisterPictureLayerImpl(PictureLayerImpl* layer) {
3478 std::vector<PictureLayerImpl*>::iterator it = 3506 std::vector<PictureLayerImpl*>::iterator it =
3479 std::find(picture_layers_.begin(), picture_layers_.end(), layer); 3507 std::find(picture_layers_.begin(), picture_layers_.end(), layer);
3480 DCHECK(it != picture_layers_.end()); 3508 DCHECK(it != picture_layers_.end());
3481 picture_layers_.erase(it); 3509 picture_layers_.erase(it);
3482 } 3510 }
3483 3511
3484 } // namespace cc 3512 } // namespace cc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698