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

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

Issue 2633563003: Revert of Remove ForceReclaimResources (Closed)
Patch Set: Created 3 years, 11 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
« no previous file with comments | « cc/trees/layer_tree_host_impl_unittest.cc ('k') | cc/trees/layer_tree_host_unittest.cc » ('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 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 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 <stddef.h> 5 #include <stddef.h>
6 6
7 #include "cc/layers/content_layer_client.h" 7 #include "cc/layers/content_layer_client.h"
8 #include "cc/layers/picture_layer.h" 8 #include "cc/layers/picture_layer.h"
9 #include "cc/output/copy_output_request.h" 9 #include "cc/output/copy_output_request.h"
10 #include "cc/playback/display_item_list.h" 10 #include "cc/playback/display_item_list.h"
11 #include "cc/playback/display_item_list_settings.h" 11 #include "cc/playback/display_item_list_settings.h"
12 #include "cc/playback/drawing_display_item.h" 12 #include "cc/playback/drawing_display_item.h"
13 #include "cc/test/layer_tree_pixel_test.h" 13 #include "cc/test/layer_tree_pixel_test.h"
14 #include "cc/test/test_compositor_frame_sink.h"
15 #include "gpu/command_buffer/client/gles2_interface.h"
16 #include "third_party/skia/include/core/SkCanvas.h" 14 #include "third_party/skia/include/core/SkCanvas.h"
17 #include "third_party/skia/include/core/SkPictureRecorder.h" 15 #include "third_party/skia/include/core/SkPictureRecorder.h"
18 16
19 #if !defined(OS_ANDROID) 17 #if !defined(OS_ANDROID)
20 18
21 namespace cc { 19 namespace cc {
22 namespace { 20 namespace {
23 21
24 enum RasterMode { 22 enum RasterMode {
25 PARTIAL_ONE_COPY, 23 PARTIAL_ONE_COPY,
(...skipping 129 matching lines...) Expand 10 before | Expand all | Expand 10 after
155 LayerTreeHostTilesTestPartialInvalidation() 153 LayerTreeHostTilesTestPartialInvalidation()
156 : client_(gfx::Size(200, 200)), 154 : client_(gfx::Size(200, 200)),
157 picture_layer_(PictureLayer::Create(&client_)) { 155 picture_layer_(PictureLayer::Create(&client_)) {
158 picture_layer_->SetBounds(gfx::Size(200, 200)); 156 picture_layer_->SetBounds(gfx::Size(200, 200));
159 picture_layer_->SetIsDrawable(true); 157 picture_layer_->SetIsDrawable(true);
160 } 158 }
161 159
162 void DidCommitAndDrawFrame() override { 160 void DidCommitAndDrawFrame() override {
163 switch (layer_tree_host()->SourceFrameNumber()) { 161 switch (layer_tree_host()->SourceFrameNumber()) {
164 case 1: 162 case 1:
165 // We have done one frame, but the resource may not be available for 163 // We have done one frame, so the layer's content has been rastered.
166 // partial raster yet. Force a second frame. 164 // Now we change the picture behind it to record something completely
167 picture_layer_->SetNeedsDisplayRect(gfx::Rect(50, 50, 100, 100)); 165 // different, but we give a smaller invalidation rect. The layer should
168 break; 166 // only re-raster the stuff in the rect. If it doesn't do partial raster
169 case 2: 167 // it would re-raster the whole thing instead.
170 // We have done two frames, so the layer's content has been rastered
171 // twice and the first frame's resource is available for partial
172 // raster. Now we change the picture behind it to record something
173 // completely different, but we give a smaller invalidation rect. The
174 // layer should only re-raster the stuff in the rect. If it doesn't do
175 // partial raster it would re-raster the whole thing instead.
176 client_.set_blue_top(false); 168 client_.set_blue_top(false);
177 Finish(); 169 Finish();
178 picture_layer_->SetNeedsDisplayRect(gfx::Rect(50, 50, 100, 100)); 170 picture_layer_->SetNeedsDisplayRect(gfx::Rect(50, 50, 100, 100));
179 171
180 // Add a copy request to see what happened! 172 // Add a copy request to see what happened!
181 DoReadback(); 173 DoReadback();
182 break; 174 break;
183 } 175 }
184 } 176 }
185 177
186 void WillPrepareTilesOnThread(LayerTreeHostImpl* host_impl) override {
187 // Issue a GL finish before preparing tiles to ensure resources become
188 // available for use in a timely manner. Needed for the one-copy path.
189 ContextProvider* context_provider =
190 host_impl->compositor_frame_sink()->worker_context_provider();
191 if (!context_provider)
192 return;
193
194 ContextProvider::ScopedContextLock lock(context_provider);
195 lock.ContextGL()->Finish();
196 }
197
198 protected: 178 protected:
199 BlueYellowClient client_; 179 BlueYellowClient client_;
200 scoped_refptr<PictureLayer> picture_layer_; 180 scoped_refptr<PictureLayer> picture_layer_;
201 }; 181 };
202 182
203 TEST_F(LayerTreeHostTilesTestPartialInvalidation, 183 TEST_F(LayerTreeHostTilesTestPartialInvalidation,
204 PartialRaster_SingleThread_OneCopy) { 184 PartialRaster_SingleThread_OneCopy) {
205 RunRasterPixelTest( 185 RunRasterPixelTest(
206 false, PARTIAL_ONE_COPY, picture_layer_, 186 false, PARTIAL_ONE_COPY, picture_layer_,
207 base::FilePath(FILE_PATH_LITERAL("blue_yellow_partial_flipped.png"))); 187 base::FilePath(FILE_PATH_LITERAL("blue_yellow_partial_flipped.png")));
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
253 FullRaster_SingleThread_GpuRaster) { 233 FullRaster_SingleThread_GpuRaster) {
254 RunRasterPixelTest( 234 RunRasterPixelTest(
255 false, FULL_GPU, picture_layer_, 235 false, FULL_GPU, picture_layer_,
256 base::FilePath(FILE_PATH_LITERAL("blue_yellow_flipped.png"))); 236 base::FilePath(FILE_PATH_LITERAL("blue_yellow_flipped.png")));
257 } 237 }
258 238
259 } // namespace 239 } // namespace
260 } // namespace cc 240 } // namespace cc
261 241
262 #endif // !defined(OS_ANDROID) 242 #endif // !defined(OS_ANDROID)
OLDNEW
« no previous file with comments | « cc/trees/layer_tree_host_impl_unittest.cc ('k') | cc/trees/layer_tree_host_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698