Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright 2012 The Chromium Authors. All rights reserved. | 1 // Copyright 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 #include "base/message_loop/message_loop.h" | 5 #include "base/message_loop/message_loop.h" |
| 6 #include "cc/output/gl_renderer.h" | 6 #include "cc/output/gl_renderer.h" |
| 7 #include "cc/quads/draw_quad.h" | 7 #include "cc/quads/draw_quad.h" |
| 8 #include "cc/quads/picture_draw_quad.h" | 8 #include "cc/quads/picture_draw_quad.h" |
| 9 #include "cc/quads/texture_draw_quad.h" | 9 #include "cc/quads/texture_draw_quad.h" |
| 10 #include "cc/resources/video_resource_updater.h" | 10 #include "cc/resources/video_resource_updater.h" |
| 11 #include "cc/test/fake_picture_pile_impl.h" | 11 #include "cc/test/fake_display_list_raster_source.h" |
| 12 #include "cc/test/fake_display_list_recording_source.h" | |
| 12 #include "cc/test/pixel_test.h" | 13 #include "cc/test/pixel_test.h" |
| 13 #include "gpu/command_buffer/client/gles2_interface.h" | 14 #include "gpu/command_buffer/client/gles2_interface.h" |
| 14 #include "media/base/video_frame.h" | 15 #include "media/base/video_frame.h" |
| 15 #include "third_party/skia/include/core/SkColorPriv.h" | 16 #include "third_party/skia/include/core/SkColorPriv.h" |
| 16 #include "third_party/skia/include/core/SkImageFilter.h" | 17 #include "third_party/skia/include/core/SkImageFilter.h" |
| 17 #include "third_party/skia/include/core/SkMatrix.h" | 18 #include "third_party/skia/include/core/SkMatrix.h" |
| 18 #include "third_party/skia/include/core/SkSurface.h" | 19 #include "third_party/skia/include/core/SkSurface.h" |
| 19 #include "third_party/skia/include/effects/SkColorFilterImageFilter.h" | 20 #include "third_party/skia/include/effects/SkColorFilterImageFilter.h" |
| 20 #include "third_party/skia/include/effects/SkColorMatrixFilter.h" | 21 #include "third_party/skia/include/effects/SkColorMatrixFilter.h" |
| 21 #include "ui/gfx/geometry/rect_conversions.h" | 22 #include "ui/gfx/geometry/rect_conversions.h" |
| (...skipping 734 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 756 this->quad_rect_.width() / 2, | 757 this->quad_rect_.width() / 2, |
| 757 this->quad_rect_.height() / 2); | 758 this->quad_rect_.height() / 2); |
| 758 | 759 |
| 759 SkPaint black_paint; | 760 SkPaint black_paint; |
| 760 black_paint.setColor(SK_ColorBLACK); | 761 black_paint.setColor(SK_ColorBLACK); |
| 761 SkPaint blue_paint; | 762 SkPaint blue_paint; |
| 762 blue_paint.setColor(SK_ColorBLUE); | 763 blue_paint.setColor(SK_ColorBLUE); |
| 763 SkPaint green_paint; | 764 SkPaint green_paint; |
| 764 green_paint.setColor(SK_ColorGREEN); | 765 green_paint.setColor(SK_ColorGREEN); |
| 765 | 766 |
| 766 scoped_ptr<FakePicturePile> blue_recording = | 767 scoped_ptr<FakeDisplayListRecordingSource> blue_recording = |
| 767 FakePicturePile::CreateFilledPile(gfx::Size(1000, 1000), | 768 FakeDisplayListRecordingSource::CreateFilledRecordingSource( |
| 768 this->quad_rect_.size()); | 769 this->quad_rect_.size()); |
| 769 blue_recording->add_draw_rect_with_paint(outer_rect, black_paint); | 770 blue_recording->add_draw_rect_with_paint(outer_rect, black_paint); |
| 770 blue_recording->add_draw_rect_with_paint(inner_rect, blue_paint); | 771 blue_recording->add_draw_rect_with_paint(inner_rect, blue_paint); |
| 771 blue_recording->Rerecord(); | 772 blue_recording->Rerecord(); |
| 772 scoped_refptr<FakePicturePileImpl> blue_pile = | 773 scoped_refptr<FakeDisplayListRasterSource> blue_raster_source = |
| 773 FakePicturePileImpl::CreateFromPile(blue_recording.get(), nullptr); | 774 FakeDisplayListRasterSource::CreateFromRecordingSource( |
| 775 blue_recording.get(), false); | |
| 774 | 776 |
| 775 PictureDrawQuad* blue_quad = | 777 PictureDrawQuad* blue_quad = |
| 776 this->render_pass_->template CreateAndAppendDrawQuad<PictureDrawQuad>(); | 778 this->render_pass_->template CreateAndAppendDrawQuad<PictureDrawQuad>(); |
| 777 | 779 |
| 778 blue_quad->SetNew(this->front_quad_state_, this->quad_rect_, gfx::Rect(), | 780 blue_quad->SetNew(this->front_quad_state_, this->quad_rect_, gfx::Rect(), |
| 779 this->quad_rect_, gfx::RectF(this->quad_rect_), | 781 this->quad_rect_, gfx::RectF(this->quad_rect_), |
| 780 this->quad_rect_.size(), false, RGBA_8888, this->quad_rect_, | 782 this->quad_rect_.size(), false, RGBA_8888, this->quad_rect_, |
| 781 1.f, blue_pile); | 783 1.f, blue_raster_source); |
| 782 | 784 |
| 783 scoped_ptr<FakePicturePile> green_recording = | 785 scoped_ptr<FakeDisplayListRecordingSource> green_recording = |
| 784 FakePicturePile::CreateFilledPile(this->quad_rect_.size(), | 786 FakeDisplayListRecordingSource::CreateFilledRecordingSource( |
| 785 this->quad_rect_.size()); | 787 this->quad_rect_.size()); |
| 786 green_recording->add_draw_rect_with_paint(outer_rect, green_paint); | 788 green_recording->add_draw_rect_with_paint(outer_rect, green_paint); |
| 787 green_recording->add_draw_rect_with_paint(inner_rect, black_paint); | 789 green_recording->add_draw_rect_with_paint(inner_rect, black_paint); |
| 788 green_recording->Rerecord(); | 790 green_recording->Rerecord(); |
| 789 scoped_refptr<FakePicturePileImpl> green_pile = | 791 scoped_refptr<FakeDisplayListRasterSource> green_raster_source = |
| 790 FakePicturePileImpl::CreateFromPile(green_recording.get(), nullptr); | 792 FakeDisplayListRasterSource::CreateFromRecordingSource( |
| 793 green_recording.get(), false); | |
| 791 | 794 |
| 792 PictureDrawQuad* green_quad = | 795 PictureDrawQuad* green_quad = |
| 793 this->render_pass_->template CreateAndAppendDrawQuad<PictureDrawQuad>(); | 796 this->render_pass_->template CreateAndAppendDrawQuad<PictureDrawQuad>(); |
| 794 green_quad->SetNew(this->back_quad_state_, this->quad_rect_, gfx::Rect(), | 797 green_quad->SetNew(this->back_quad_state_, this->quad_rect_, gfx::Rect(), |
| 795 this->quad_rect_, gfx::RectF(this->quad_rect_), | 798 this->quad_rect_, gfx::RectF(this->quad_rect_), |
| 796 this->quad_rect_.size(), false, RGBA_8888, | 799 this->quad_rect_.size(), false, RGBA_8888, |
| 797 this->quad_rect_, 1.f, green_pile); | 800 this->quad_rect_, 1.f, green_raster_source); |
| 798 SCOPED_TRACE("IntersectingPictureQuadsPass"); | 801 SCOPED_TRACE("IntersectingPictureQuadsPass"); |
| 799 this->template AppendBackgroundAndRunTest<PictureDrawQuad>( | 802 this->template AppendBackgroundAndRunTest<PictureDrawQuad>( |
| 800 FuzzyPixelComparator(false, 2.f, 0.f, 256.f, 256, 0.f)); | 803 FuzzyPixelComparator(false, 2.f, 0.f, 256.f, 256, 0.f)); |
| 801 } | 804 } |
| 802 | 805 |
| 803 TYPED_TEST(IntersectingQuadPixelTest, RenderPassQuads) { | 806 TYPED_TEST(IntersectingQuadPixelTest, RenderPassQuads) { |
| 804 this->SetupQuadStateAndRenderPass(); | 807 this->SetupQuadStateAndRenderPass(); |
| 805 RenderPassId child_pass_id1(2, 2); | 808 RenderPassId child_pass_id1(2, 2); |
| 806 RenderPassId child_pass_id2(2, 3); | 809 RenderPassId child_pass_id2(2, 3); |
| 807 scoped_ptr<RenderPass> child_pass1 = | 810 scoped_ptr<RenderPass> child_pass1 = |
| (...skipping 1356 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 2164 RenderPassList pass_list; | 2167 RenderPassList pass_list; |
| 2165 pass_list.push_back(pass.Pass()); | 2168 pass_list.push_back(pass.Pass()); |
| 2166 | 2169 |
| 2167 EXPECT_TRUE(this->RunPixelTest( | 2170 EXPECT_TRUE(this->RunPixelTest( |
| 2168 &pass_list, | 2171 &pass_list, |
| 2169 base::FilePath(FILE_PATH_LITERAL("anti_aliasing_perspective.png")), | 2172 base::FilePath(FILE_PATH_LITERAL("anti_aliasing_perspective.png")), |
| 2170 FuzzyPixelOffByOneComparator(true))); | 2173 FuzzyPixelOffByOneComparator(true))); |
| 2171 } | 2174 } |
| 2172 | 2175 |
| 2173 TYPED_TEST(SoftwareRendererPixelTest, PictureDrawQuadIdentityScale) { | 2176 TYPED_TEST(SoftwareRendererPixelTest, PictureDrawQuadIdentityScale) { |
| 2174 gfx::Size pile_tile_size(1000, 1000); | |
| 2175 gfx::Rect viewport(this->device_viewport_size_); | 2177 gfx::Rect viewport(this->device_viewport_size_); |
| 2176 // TODO(enne): the renderer should figure this out on its own. | 2178 // TODO(enne): the renderer should figure this out on its own. |
| 2177 ResourceFormat texture_format = RGBA_8888; | 2179 ResourceFormat texture_format = RGBA_8888; |
| 2178 bool nearest_neighbor = false; | 2180 bool nearest_neighbor = false; |
| 2179 | 2181 |
| 2180 RenderPassId id(1, 1); | 2182 RenderPassId id(1, 1); |
| 2181 gfx::Transform transform_to_root; | 2183 gfx::Transform transform_to_root; |
| 2182 scoped_ptr<RenderPass> pass = | 2184 scoped_ptr<RenderPass> pass = |
| 2183 CreateTestRenderPass(id, viewport, transform_to_root); | 2185 CreateTestRenderPass(id, viewport, transform_to_root); |
| 2184 | 2186 |
| 2185 // One clipped blue quad in the lower right corner. Outside the clip | 2187 // One clipped blue quad in the lower right corner. Outside the clip |
| 2186 // is red, which should not appear. | 2188 // is red, which should not appear. |
| 2187 gfx::Rect blue_rect(gfx::Size(100, 100)); | 2189 gfx::Rect blue_rect(gfx::Size(100, 100)); |
| 2188 gfx::Rect blue_clip_rect(gfx::Point(50, 50), gfx::Size(50, 50)); | 2190 gfx::Rect blue_clip_rect(gfx::Point(50, 50), gfx::Size(50, 50)); |
| 2189 | 2191 |
| 2190 scoped_ptr<FakePicturePile> blue_recording = | 2192 scoped_ptr<FakeDisplayListRecordingSource> blue_recording = |
| 2191 FakePicturePile::CreateFilledPile(pile_tile_size, blue_rect.size()); | 2193 FakeDisplayListRecordingSource::CreateFilledRecordingSource( |
| 2194 blue_rect.size()); | |
| 2192 SkPaint red_paint; | 2195 SkPaint red_paint; |
| 2193 red_paint.setColor(SK_ColorRED); | 2196 red_paint.setColor(SK_ColorRED); |
| 2194 blue_recording->add_draw_rect_with_paint(blue_rect, red_paint); | 2197 blue_recording->add_draw_rect_with_paint(blue_rect, red_paint); |
| 2195 SkPaint blue_paint; | 2198 SkPaint blue_paint; |
| 2196 blue_paint.setColor(SK_ColorBLUE); | 2199 blue_paint.setColor(SK_ColorBLUE); |
| 2197 blue_recording->add_draw_rect_with_paint(blue_clip_rect, blue_paint); | 2200 blue_recording->add_draw_rect_with_paint(blue_clip_rect, blue_paint); |
| 2198 blue_recording->Rerecord(); | 2201 blue_recording->Rerecord(); |
| 2199 | 2202 |
| 2200 scoped_refptr<FakePicturePileImpl> blue_pile = | 2203 scoped_refptr<FakeDisplayListRasterSource> blue_raster_source = |
| 2201 FakePicturePileImpl::CreateFromPile(blue_recording.get(), nullptr); | 2204 FakeDisplayListRasterSource::CreateFromRecordingSource( |
| 2205 blue_recording.get(), false); | |
| 2202 | 2206 |
| 2203 gfx::Vector2d offset(viewport.bottom_right() - blue_rect.bottom_right()); | 2207 gfx::Vector2d offset(viewport.bottom_right() - blue_rect.bottom_right()); |
| 2204 gfx::Transform blue_quad_to_target_transform; | 2208 gfx::Transform blue_quad_to_target_transform; |
| 2205 blue_quad_to_target_transform.Translate(offset.x(), offset.y()); | 2209 blue_quad_to_target_transform.Translate(offset.x(), offset.y()); |
| 2206 gfx::Rect blue_target_clip_rect = MathUtil::MapEnclosingClippedRect( | 2210 gfx::Rect blue_target_clip_rect = MathUtil::MapEnclosingClippedRect( |
| 2207 blue_quad_to_target_transform, blue_clip_rect); | 2211 blue_quad_to_target_transform, blue_clip_rect); |
| 2208 SharedQuadState* blue_shared_state = | 2212 SharedQuadState* blue_shared_state = |
| 2209 CreateTestSharedQuadStateClipped(blue_quad_to_target_transform, blue_rect, | 2213 CreateTestSharedQuadStateClipped(blue_quad_to_target_transform, blue_rect, |
| 2210 blue_target_clip_rect, pass.get()); | 2214 blue_target_clip_rect, pass.get()); |
| 2211 | 2215 |
| 2212 PictureDrawQuad* blue_quad = pass->CreateAndAppendDrawQuad<PictureDrawQuad>(); | 2216 PictureDrawQuad* blue_quad = pass->CreateAndAppendDrawQuad<PictureDrawQuad>(); |
| 2213 | 2217 |
| 2214 blue_quad->SetNew(blue_shared_state, | 2218 blue_quad->SetNew(blue_shared_state, |
| 2215 viewport, // Intentionally bigger than clip. | 2219 viewport, // Intentionally bigger than clip. |
| 2216 gfx::Rect(), viewport, gfx::RectF(viewport), | 2220 gfx::Rect(), viewport, gfx::RectF(viewport), |
| 2217 viewport.size(), nearest_neighbor, texture_format, viewport, | 2221 viewport.size(), nearest_neighbor, texture_format, viewport, |
| 2218 1.f, blue_pile.get()); | 2222 1.f, blue_raster_source.get()); |
|
danakj
2015/09/22 21:52:15
nit: no get()?
vmpstr
2015/09/22 22:57:49
Changed to Pass.
| |
| 2219 | 2223 |
| 2220 // One viewport-filling green quad. | 2224 // One viewport-filling green quad. |
| 2221 scoped_ptr<FakePicturePile> green_recording = | 2225 scoped_ptr<FakeDisplayListRecordingSource> green_recording = |
| 2222 FakePicturePile::CreateFilledPile(pile_tile_size, viewport.size()); | 2226 FakeDisplayListRecordingSource::CreateFilledRecordingSource( |
| 2227 viewport.size()); | |
| 2223 SkPaint green_paint; | 2228 SkPaint green_paint; |
| 2224 green_paint.setColor(SK_ColorGREEN); | 2229 green_paint.setColor(SK_ColorGREEN); |
| 2225 green_recording->add_draw_rect_with_paint(viewport, green_paint); | 2230 green_recording->add_draw_rect_with_paint(viewport, green_paint); |
| 2226 green_recording->Rerecord(); | 2231 green_recording->Rerecord(); |
| 2227 scoped_refptr<FakePicturePileImpl> green_pile = | 2232 scoped_refptr<FakeDisplayListRasterSource> green_raster_source = |
| 2228 FakePicturePileImpl::CreateFromPile(green_recording.get(), nullptr); | 2233 FakeDisplayListRasterSource::CreateFromRecordingSource( |
| 2234 green_recording.get(), false); | |
| 2229 | 2235 |
| 2230 gfx::Transform green_quad_to_target_transform; | 2236 gfx::Transform green_quad_to_target_transform; |
| 2231 SharedQuadState* green_shared_state = CreateTestSharedQuadState( | 2237 SharedQuadState* green_shared_state = CreateTestSharedQuadState( |
| 2232 green_quad_to_target_transform, viewport, pass.get()); | 2238 green_quad_to_target_transform, viewport, pass.get()); |
| 2233 | 2239 |
| 2234 PictureDrawQuad* green_quad = | 2240 PictureDrawQuad* green_quad = |
| 2235 pass->CreateAndAppendDrawQuad<PictureDrawQuad>(); | 2241 pass->CreateAndAppendDrawQuad<PictureDrawQuad>(); |
| 2236 green_quad->SetNew(green_shared_state, viewport, gfx::Rect(), viewport, | 2242 green_quad->SetNew(green_shared_state, viewport, gfx::Rect(), viewport, |
| 2237 gfx::RectF(0.f, 0.f, 1.f, 1.f), viewport.size(), | 2243 gfx::RectF(0.f, 0.f, 1.f, 1.f), viewport.size(), |
| 2238 nearest_neighbor, texture_format, viewport, 1.f, | 2244 nearest_neighbor, texture_format, viewport, 1.f, |
| 2239 green_pile.get()); | 2245 green_raster_source.get()); |
|
danakj
2015/09/22 21:52:14
dittos
vmpstr
2015/09/22 22:57:49
Changed to Pass.
| |
| 2240 | 2246 |
| 2241 RenderPassList pass_list; | 2247 RenderPassList pass_list; |
| 2242 pass_list.push_back(pass.Pass()); | 2248 pass_list.push_back(pass.Pass()); |
| 2243 | 2249 |
| 2244 EXPECT_TRUE(this->RunPixelTest( | 2250 EXPECT_TRUE(this->RunPixelTest( |
| 2245 &pass_list, | 2251 &pass_list, |
| 2246 base::FilePath(FILE_PATH_LITERAL("green_with_blue_corner.png")), | 2252 base::FilePath(FILE_PATH_LITERAL("green_with_blue_corner.png")), |
| 2247 ExactPixelComparator(true))); | 2253 ExactPixelComparator(true))); |
| 2248 } | 2254 } |
| 2249 | 2255 |
| 2250 // Not WithSkiaGPUBackend since that path currently requires tiles for opacity. | 2256 // Not WithSkiaGPUBackend since that path currently requires tiles for opacity. |
| 2251 TYPED_TEST(SoftwareRendererPixelTest, PictureDrawQuadOpacity) { | 2257 TYPED_TEST(SoftwareRendererPixelTest, PictureDrawQuadOpacity) { |
| 2252 gfx::Size pile_tile_size(1000, 1000); | |
| 2253 gfx::Rect viewport(this->device_viewport_size_); | 2258 gfx::Rect viewport(this->device_viewport_size_); |
| 2254 ResourceFormat texture_format = RGBA_8888; | 2259 ResourceFormat texture_format = RGBA_8888; |
| 2255 bool nearest_neighbor = false; | 2260 bool nearest_neighbor = false; |
| 2256 | 2261 |
| 2257 RenderPassId id(1, 1); | 2262 RenderPassId id(1, 1); |
| 2258 gfx::Transform transform_to_root; | 2263 gfx::Transform transform_to_root; |
| 2259 scoped_ptr<RenderPass> pass = | 2264 scoped_ptr<RenderPass> pass = |
| 2260 CreateTestRenderPass(id, viewport, transform_to_root); | 2265 CreateTestRenderPass(id, viewport, transform_to_root); |
| 2261 | 2266 |
| 2262 // One viewport-filling 0.5-opacity green quad. | 2267 // One viewport-filling 0.5-opacity green quad. |
| 2263 scoped_ptr<FakePicturePile> green_recording = | 2268 scoped_ptr<FakeDisplayListRecordingSource> green_recording = |
| 2264 FakePicturePile::CreateFilledPile(pile_tile_size, viewport.size()); | 2269 FakeDisplayListRecordingSource::CreateFilledRecordingSource( |
| 2270 viewport.size()); | |
| 2265 SkPaint green_paint; | 2271 SkPaint green_paint; |
| 2266 green_paint.setColor(SK_ColorGREEN); | 2272 green_paint.setColor(SK_ColorGREEN); |
| 2267 green_recording->add_draw_rect_with_paint(viewport, green_paint); | 2273 green_recording->add_draw_rect_with_paint(viewport, green_paint); |
| 2268 green_recording->Rerecord(); | 2274 green_recording->Rerecord(); |
| 2269 scoped_refptr<FakePicturePileImpl> green_pile = | 2275 scoped_refptr<FakeDisplayListRasterSource> green_raster_source = |
| 2270 FakePicturePileImpl::CreateFromPile(green_recording.get(), nullptr); | 2276 FakeDisplayListRasterSource::CreateFromRecordingSource( |
| 2277 green_recording.get(), false); | |
| 2271 | 2278 |
| 2272 gfx::Transform green_quad_to_target_transform; | 2279 gfx::Transform green_quad_to_target_transform; |
| 2273 SharedQuadState* green_shared_state = CreateTestSharedQuadState( | 2280 SharedQuadState* green_shared_state = CreateTestSharedQuadState( |
| 2274 green_quad_to_target_transform, viewport, pass.get()); | 2281 green_quad_to_target_transform, viewport, pass.get()); |
| 2275 green_shared_state->opacity = 0.5f; | 2282 green_shared_state->opacity = 0.5f; |
| 2276 | 2283 |
| 2277 PictureDrawQuad* green_quad = | 2284 PictureDrawQuad* green_quad = |
| 2278 pass->CreateAndAppendDrawQuad<PictureDrawQuad>(); | 2285 pass->CreateAndAppendDrawQuad<PictureDrawQuad>(); |
| 2279 green_quad->SetNew(green_shared_state, viewport, gfx::Rect(), viewport, | 2286 green_quad->SetNew(green_shared_state, viewport, gfx::Rect(), viewport, |
| 2280 gfx::RectF(0, 0, 1, 1), viewport.size(), nearest_neighbor, | 2287 gfx::RectF(0, 0, 1, 1), viewport.size(), nearest_neighbor, |
| 2281 texture_format, viewport, 1.f, green_pile.get()); | 2288 texture_format, viewport, 1.f, green_raster_source.get()); |
| 2282 | 2289 |
| 2283 // One viewport-filling white quad. | 2290 // One viewport-filling white quad. |
| 2284 scoped_ptr<FakePicturePile> white_recording = | 2291 scoped_ptr<FakeDisplayListRecordingSource> white_recording = |
| 2285 FakePicturePile::CreateFilledPile(pile_tile_size, viewport.size()); | 2292 FakeDisplayListRecordingSource::CreateFilledRecordingSource( |
| 2293 viewport.size()); | |
| 2286 SkPaint white_paint; | 2294 SkPaint white_paint; |
| 2287 white_paint.setColor(SK_ColorWHITE); | 2295 white_paint.setColor(SK_ColorWHITE); |
| 2288 white_recording->add_draw_rect_with_paint(viewport, white_paint); | 2296 white_recording->add_draw_rect_with_paint(viewport, white_paint); |
| 2289 white_recording->Rerecord(); | 2297 white_recording->Rerecord(); |
| 2290 scoped_refptr<FakePicturePileImpl> white_pile = | 2298 scoped_refptr<FakeDisplayListRasterSource> white_raster_source = |
| 2291 FakePicturePileImpl::CreateFromPile(white_recording.get(), nullptr); | 2299 FakeDisplayListRasterSource::CreateFromRecordingSource( |
| 2300 white_recording.get(), false); | |
| 2292 | 2301 |
| 2293 gfx::Transform white_quad_to_target_transform; | 2302 gfx::Transform white_quad_to_target_transform; |
| 2294 SharedQuadState* white_shared_state = CreateTestSharedQuadState( | 2303 SharedQuadState* white_shared_state = CreateTestSharedQuadState( |
| 2295 white_quad_to_target_transform, viewport, pass.get()); | 2304 white_quad_to_target_transform, viewport, pass.get()); |
| 2296 | 2305 |
| 2297 PictureDrawQuad* white_quad = | 2306 PictureDrawQuad* white_quad = |
| 2298 pass->CreateAndAppendDrawQuad<PictureDrawQuad>(); | 2307 pass->CreateAndAppendDrawQuad<PictureDrawQuad>(); |
| 2299 white_quad->SetNew(white_shared_state, viewport, gfx::Rect(), viewport, | 2308 white_quad->SetNew(white_shared_state, viewport, gfx::Rect(), viewport, |
| 2300 gfx::RectF(0, 0, 1, 1), viewport.size(), nearest_neighbor, | 2309 gfx::RectF(0, 0, 1, 1), viewport.size(), nearest_neighbor, |
| 2301 texture_format, viewport, 1.f, white_pile.get()); | 2310 texture_format, viewport, 1.f, white_raster_source.get()); |
|
danakj
2015/09/22 21:52:15
dittos
vmpstr
2015/09/22 22:57:49
Changed to Pass.
| |
| 2302 | 2311 |
| 2303 RenderPassList pass_list; | 2312 RenderPassList pass_list; |
| 2304 pass_list.push_back(pass.Pass()); | 2313 pass_list.push_back(pass.Pass()); |
| 2305 | 2314 |
| 2306 EXPECT_TRUE(this->RunPixelTest( | 2315 EXPECT_TRUE(this->RunPixelTest( |
| 2307 &pass_list, | 2316 &pass_list, |
| 2308 base::FilePath(FILE_PATH_LITERAL("green_alpha.png")), | 2317 base::FilePath(FILE_PATH_LITERAL("green_alpha.png")), |
| 2309 FuzzyPixelOffByOneComparator(true))); | 2318 FuzzyPixelOffByOneComparator(true))); |
| 2310 } | 2319 } |
| 2311 | 2320 |
| (...skipping 12 matching lines...) Expand all Loading... | |
| 2324 } | 2333 } |
| 2325 | 2334 |
| 2326 // If we disable image filtering, then a 2x2 bitmap should appear as four | 2335 // If we disable image filtering, then a 2x2 bitmap should appear as four |
| 2327 // huge sharp squares. | 2336 // huge sharp squares. |
| 2328 TYPED_TEST(SoftwareRendererPixelTest, PictureDrawQuadDisableImageFiltering) { | 2337 TYPED_TEST(SoftwareRendererPixelTest, PictureDrawQuadDisableImageFiltering) { |
| 2329 // We only care about this in software mode since bilinear filtering is | 2338 // We only care about this in software mode since bilinear filtering is |
| 2330 // cheap in hardware. | 2339 // cheap in hardware. |
| 2331 if (!IsSoftwareRenderer<TypeParam>()) | 2340 if (!IsSoftwareRenderer<TypeParam>()) |
| 2332 return; | 2341 return; |
| 2333 | 2342 |
| 2334 gfx::Size pile_tile_size(1000, 1000); | |
| 2335 gfx::Rect viewport(this->device_viewport_size_); | 2343 gfx::Rect viewport(this->device_viewport_size_); |
| 2336 ResourceFormat texture_format = RGBA_8888; | 2344 ResourceFormat texture_format = RGBA_8888; |
| 2337 bool nearest_neighbor = false; | 2345 bool nearest_neighbor = false; |
| 2338 | 2346 |
| 2339 RenderPassId id(1, 1); | 2347 RenderPassId id(1, 1); |
| 2340 gfx::Transform transform_to_root; | 2348 gfx::Transform transform_to_root; |
| 2341 scoped_ptr<RenderPass> pass = | 2349 scoped_ptr<RenderPass> pass = |
| 2342 CreateTestRenderPass(id, viewport, transform_to_root); | 2350 CreateTestRenderPass(id, viewport, transform_to_root); |
| 2343 | 2351 |
| 2344 skia::RefPtr<SkSurface> surface = | 2352 skia::RefPtr<SkSurface> surface = |
| 2345 skia::AdoptRef(SkSurface::NewRasterN32Premul(2, 2)); | 2353 skia::AdoptRef(SkSurface::NewRasterN32Premul(2, 2)); |
| 2346 ASSERT_NE(surface, nullptr); | 2354 ASSERT_NE(surface, nullptr); |
| 2347 SkCanvas* canvas = surface->getCanvas(); | 2355 SkCanvas* canvas = surface->getCanvas(); |
| 2348 canvas->drawPoint(0, 0, SK_ColorGREEN); | 2356 canvas->drawPoint(0, 0, SK_ColorGREEN); |
| 2349 canvas->drawPoint(0, 1, SK_ColorBLUE); | 2357 canvas->drawPoint(0, 1, SK_ColorBLUE); |
| 2350 canvas->drawPoint(1, 0, SK_ColorBLUE); | 2358 canvas->drawPoint(1, 0, SK_ColorBLUE); |
| 2351 canvas->drawPoint(1, 1, SK_ColorGREEN); | 2359 canvas->drawPoint(1, 1, SK_ColorGREEN); |
| 2352 skia::RefPtr<SkImage> image = skia::AdoptRef(surface->newImageSnapshot()); | 2360 skia::RefPtr<SkImage> image = skia::AdoptRef(surface->newImageSnapshot()); |
| 2353 | 2361 |
| 2354 scoped_ptr<FakePicturePile> recording = | 2362 scoped_ptr<FakeDisplayListRecordingSource> recording = |
| 2355 FakePicturePile::CreateFilledPile(pile_tile_size, viewport.size()); | 2363 FakeDisplayListRecordingSource::CreateFilledRecordingSource( |
| 2364 viewport.size()); | |
| 2356 SkPaint paint; | 2365 SkPaint paint; |
| 2357 paint.setFilterQuality(kLow_SkFilterQuality); | 2366 paint.setFilterQuality(kLow_SkFilterQuality); |
| 2358 recording->add_draw_image_with_paint(image.get(), gfx::Point(), paint); | 2367 recording->add_draw_image_with_paint(image.get(), gfx::Point(), paint); |
| 2359 recording->Rerecord(); | 2368 recording->Rerecord(); |
| 2360 scoped_refptr<FakePicturePileImpl> pile = | 2369 scoped_refptr<FakeDisplayListRasterSource> raster_source = |
| 2361 FakePicturePileImpl::CreateFromPile(recording.get(), nullptr); | 2370 FakeDisplayListRasterSource::CreateFromRecordingSource(recording.get(), |
| 2371 false); | |
| 2362 | 2372 |
| 2363 gfx::Transform quad_to_target_transform; | 2373 gfx::Transform quad_to_target_transform; |
| 2364 SharedQuadState* shared_state = | 2374 SharedQuadState* shared_state = |
| 2365 CreateTestSharedQuadState(quad_to_target_transform, viewport, pass.get()); | 2375 CreateTestSharedQuadState(quad_to_target_transform, viewport, pass.get()); |
| 2366 | 2376 |
| 2367 PictureDrawQuad* quad = pass->CreateAndAppendDrawQuad<PictureDrawQuad>(); | 2377 PictureDrawQuad* quad = pass->CreateAndAppendDrawQuad<PictureDrawQuad>(); |
| 2368 quad->SetNew(shared_state, viewport, gfx::Rect(), viewport, | 2378 quad->SetNew(shared_state, viewport, gfx::Rect(), viewport, |
| 2369 gfx::RectF(0, 0, 2, 2), viewport.size(), nearest_neighbor, | 2379 gfx::RectF(0, 0, 2, 2), viewport.size(), nearest_neighbor, |
| 2370 texture_format, viewport, 1.f, pile.get()); | 2380 texture_format, viewport, 1.f, raster_source.get()); |
|
danakj
2015/09/22 21:52:15
more dittos..
vmpstr
2015/09/22 22:57:49
Changed to Pass.
| |
| 2371 | 2381 |
| 2372 RenderPassList pass_list; | 2382 RenderPassList pass_list; |
| 2373 pass_list.push_back(pass.Pass()); | 2383 pass_list.push_back(pass.Pass()); |
| 2374 | 2384 |
| 2375 this->disable_picture_quad_image_filtering_ = true; | 2385 this->disable_picture_quad_image_filtering_ = true; |
| 2376 | 2386 |
| 2377 EXPECT_TRUE(this->RunPixelTest( | 2387 EXPECT_TRUE(this->RunPixelTest( |
| 2378 &pass_list, | 2388 &pass_list, |
| 2379 base::FilePath(FILE_PATH_LITERAL("four_blue_green_checkers.png")), | 2389 base::FilePath(FILE_PATH_LITERAL("four_blue_green_checkers.png")), |
| 2380 ExactPixelComparator(true))); | 2390 ExactPixelComparator(true))); |
| 2381 } | 2391 } |
| 2382 | 2392 |
| 2383 // This disables filtering by setting |nearest_neighbor| on the PictureDrawQuad. | 2393 // This disables filtering by setting |nearest_neighbor| on the PictureDrawQuad. |
| 2384 TYPED_TEST(SoftwareRendererPixelTest, PictureDrawQuadNearestNeighbor) { | 2394 TYPED_TEST(SoftwareRendererPixelTest, PictureDrawQuadNearestNeighbor) { |
| 2385 gfx::Size pile_tile_size(1000, 1000); | |
| 2386 gfx::Rect viewport(this->device_viewport_size_); | 2395 gfx::Rect viewport(this->device_viewport_size_); |
| 2387 ResourceFormat texture_format = RGBA_8888; | 2396 ResourceFormat texture_format = RGBA_8888; |
| 2388 bool nearest_neighbor = true; | 2397 bool nearest_neighbor = true; |
| 2389 | 2398 |
| 2390 RenderPassId id(1, 1); | 2399 RenderPassId id(1, 1); |
| 2391 gfx::Transform transform_to_root; | 2400 gfx::Transform transform_to_root; |
| 2392 scoped_ptr<RenderPass> pass = | 2401 scoped_ptr<RenderPass> pass = |
| 2393 CreateTestRenderPass(id, viewport, transform_to_root); | 2402 CreateTestRenderPass(id, viewport, transform_to_root); |
| 2394 | 2403 |
| 2395 skia::RefPtr<SkSurface> surface = | 2404 skia::RefPtr<SkSurface> surface = |
| 2396 skia::AdoptRef(SkSurface::NewRasterN32Premul(2, 2)); | 2405 skia::AdoptRef(SkSurface::NewRasterN32Premul(2, 2)); |
| 2397 ASSERT_NE(surface, nullptr); | 2406 ASSERT_NE(surface, nullptr); |
| 2398 SkCanvas* canvas = surface->getCanvas(); | 2407 SkCanvas* canvas = surface->getCanvas(); |
| 2399 canvas->drawPoint(0, 0, SK_ColorGREEN); | 2408 canvas->drawPoint(0, 0, SK_ColorGREEN); |
| 2400 canvas->drawPoint(0, 1, SK_ColorBLUE); | 2409 canvas->drawPoint(0, 1, SK_ColorBLUE); |
| 2401 canvas->drawPoint(1, 0, SK_ColorBLUE); | 2410 canvas->drawPoint(1, 0, SK_ColorBLUE); |
| 2402 canvas->drawPoint(1, 1, SK_ColorGREEN); | 2411 canvas->drawPoint(1, 1, SK_ColorGREEN); |
| 2403 skia::RefPtr<SkImage> image = skia::AdoptRef(surface->newImageSnapshot()); | 2412 skia::RefPtr<SkImage> image = skia::AdoptRef(surface->newImageSnapshot()); |
| 2404 | 2413 |
| 2405 scoped_ptr<FakePicturePile> recording = | 2414 scoped_ptr<FakeDisplayListRecordingSource> recording = |
| 2406 FakePicturePile::CreateFilledPile(pile_tile_size, viewport.size()); | 2415 FakeDisplayListRecordingSource::CreateFilledRecordingSource( |
| 2416 viewport.size()); | |
| 2407 SkPaint paint; | 2417 SkPaint paint; |
| 2408 paint.setFilterQuality(kLow_SkFilterQuality); | 2418 paint.setFilterQuality(kLow_SkFilterQuality); |
| 2409 recording->add_draw_image_with_paint(image.get(), gfx::Point(), paint); | 2419 recording->add_draw_image_with_paint(image.get(), gfx::Point(), paint); |
| 2410 recording->Rerecord(); | 2420 recording->Rerecord(); |
| 2411 scoped_refptr<FakePicturePileImpl> pile = | 2421 scoped_refptr<FakeDisplayListRasterSource> raster_source = |
| 2412 FakePicturePileImpl::CreateFromPile(recording.get(), nullptr); | 2422 FakeDisplayListRasterSource::CreateFromRecordingSource(recording.get(), |
| 2423 false); | |
| 2413 | 2424 |
| 2414 gfx::Transform quad_to_target_transform; | 2425 gfx::Transform quad_to_target_transform; |
| 2415 SharedQuadState* shared_state = | 2426 SharedQuadState* shared_state = |
| 2416 CreateTestSharedQuadState(quad_to_target_transform, viewport, pass.get()); | 2427 CreateTestSharedQuadState(quad_to_target_transform, viewport, pass.get()); |
| 2417 | 2428 |
| 2418 PictureDrawQuad* quad = pass->CreateAndAppendDrawQuad<PictureDrawQuad>(); | 2429 PictureDrawQuad* quad = pass->CreateAndAppendDrawQuad<PictureDrawQuad>(); |
| 2419 quad->SetNew(shared_state, viewport, gfx::Rect(), viewport, | 2430 quad->SetNew(shared_state, viewport, gfx::Rect(), viewport, |
| 2420 gfx::RectF(0, 0, 2, 2), viewport.size(), nearest_neighbor, | 2431 gfx::RectF(0, 0, 2, 2), viewport.size(), nearest_neighbor, |
| 2421 texture_format, viewport, 1.f, pile.get()); | 2432 texture_format, viewport, 1.f, raster_source.get()); |
|
danakj
2015/09/22 21:52:15
D:
vmpstr
2015/09/22 22:57:49
Changed to Pass.
| |
| 2422 | 2433 |
| 2423 RenderPassList pass_list; | 2434 RenderPassList pass_list; |
| 2424 pass_list.push_back(pass.Pass()); | 2435 pass_list.push_back(pass.Pass()); |
| 2425 | 2436 |
| 2426 EXPECT_TRUE(this->RunPixelTest( | 2437 EXPECT_TRUE(this->RunPixelTest( |
| 2427 &pass_list, | 2438 &pass_list, |
| 2428 base::FilePath(FILE_PATH_LITERAL("four_blue_green_checkers.png")), | 2439 base::FilePath(FILE_PATH_LITERAL("four_blue_green_checkers.png")), |
| 2429 ExactPixelComparator(true))); | 2440 ExactPixelComparator(true))); |
| 2430 } | 2441 } |
| 2431 | 2442 |
| (...skipping 148 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 2580 | 2591 |
| 2581 // Allow for a small amount of error as the blending alogrithm used by Skia is | 2592 // Allow for a small amount of error as the blending alogrithm used by Skia is |
| 2582 // affected by the offset in the expanded rect. | 2593 // affected by the offset in the expanded rect. |
| 2583 EXPECT_TRUE(this->RunPixelTest( | 2594 EXPECT_TRUE(this->RunPixelTest( |
| 2584 &pass_list, | 2595 &pass_list, |
| 2585 base::FilePath(FILE_PATH_LITERAL("four_blue_green_checkers_linear.png")), | 2596 base::FilePath(FILE_PATH_LITERAL("four_blue_green_checkers_linear.png")), |
| 2586 FuzzyPixelComparator(false, 100.f, 0.f, 16.f, 16.f, 0.f))); | 2597 FuzzyPixelComparator(false, 100.f, 0.f, 16.f, 16.f, 0.f))); |
| 2587 } | 2598 } |
| 2588 | 2599 |
| 2589 TYPED_TEST(SoftwareRendererPixelTest, PictureDrawQuadNonIdentityScale) { | 2600 TYPED_TEST(SoftwareRendererPixelTest, PictureDrawQuadNonIdentityScale) { |
| 2590 gfx::Size pile_tile_size(1000, 1000); | |
| 2591 gfx::Rect viewport(this->device_viewport_size_); | 2601 gfx::Rect viewport(this->device_viewport_size_); |
| 2592 // TODO(enne): the renderer should figure this out on its own. | 2602 // TODO(enne): the renderer should figure this out on its own. |
| 2593 ResourceFormat texture_format = RGBA_8888; | 2603 ResourceFormat texture_format = RGBA_8888; |
| 2594 bool nearest_neighbor = false; | 2604 bool nearest_neighbor = false; |
| 2595 | 2605 |
| 2596 RenderPassId id(1, 1); | 2606 RenderPassId id(1, 1); |
| 2597 gfx::Transform transform_to_root; | 2607 gfx::Transform transform_to_root; |
| 2598 scoped_ptr<RenderPass> pass = | 2608 scoped_ptr<RenderPass> pass = |
| 2599 CreateTestRenderPass(id, viewport, transform_to_root); | 2609 CreateTestRenderPass(id, viewport, transform_to_root); |
| 2600 | 2610 |
| 2601 // As scaling up the blue checkerboards will cause sampling on the GPU, | 2611 // As scaling up the blue checkerboards will cause sampling on the GPU, |
| 2602 // a few extra "cleanup rects" need to be added to clobber the blending | 2612 // a few extra "cleanup rects" need to be added to clobber the blending |
| 2603 // to make the output image more clean. This will also test subrects | 2613 // to make the output image more clean. This will also test subrects |
| 2604 // of the layer. | 2614 // of the layer. |
| 2605 gfx::Transform green_quad_to_target_transform; | 2615 gfx::Transform green_quad_to_target_transform; |
| 2606 gfx::Rect green_rect1(gfx::Point(80, 0), gfx::Size(20, 100)); | 2616 gfx::Rect green_rect1(gfx::Point(80, 0), gfx::Size(20, 100)); |
| 2607 gfx::Rect green_rect2(gfx::Point(0, 80), gfx::Size(100, 20)); | 2617 gfx::Rect green_rect2(gfx::Point(0, 80), gfx::Size(100, 20)); |
| 2608 | 2618 |
| 2609 scoped_ptr<FakePicturePile> green_recording = | 2619 scoped_ptr<FakeDisplayListRecordingSource> green_recording = |
| 2610 FakePicturePile::CreateFilledPile(pile_tile_size, viewport.size()); | 2620 FakeDisplayListRecordingSource::CreateFilledRecordingSource( |
| 2621 viewport.size()); | |
| 2611 | 2622 |
| 2612 SkPaint red_paint; | 2623 SkPaint red_paint; |
| 2613 red_paint.setColor(SK_ColorRED); | 2624 red_paint.setColor(SK_ColorRED); |
| 2614 green_recording->add_draw_rect_with_paint(viewport, red_paint); | 2625 green_recording->add_draw_rect_with_paint(viewport, red_paint); |
| 2615 SkPaint green_paint; | 2626 SkPaint green_paint; |
| 2616 green_paint.setColor(SK_ColorGREEN); | 2627 green_paint.setColor(SK_ColorGREEN); |
| 2617 green_recording->add_draw_rect_with_paint(green_rect1, green_paint); | 2628 green_recording->add_draw_rect_with_paint(green_rect1, green_paint); |
| 2618 green_recording->add_draw_rect_with_paint(green_rect2, green_paint); | 2629 green_recording->add_draw_rect_with_paint(green_rect2, green_paint); |
| 2619 green_recording->Rerecord(); | 2630 green_recording->Rerecord(); |
| 2620 scoped_refptr<FakePicturePileImpl> green_pile = | 2631 scoped_refptr<FakeDisplayListRasterSource> green_raster_source = |
| 2621 FakePicturePileImpl::CreateFromPile(green_recording.get(), nullptr); | 2632 FakeDisplayListRasterSource::CreateFromRecordingSource( |
| 2633 green_recording.get(), false); | |
| 2622 | 2634 |
| 2623 SharedQuadState* top_right_green_shared_quad_state = | 2635 SharedQuadState* top_right_green_shared_quad_state = |
| 2624 CreateTestSharedQuadState(green_quad_to_target_transform, viewport, | 2636 CreateTestSharedQuadState(green_quad_to_target_transform, viewport, |
| 2625 pass.get()); | 2637 pass.get()); |
| 2626 | 2638 |
| 2627 PictureDrawQuad* green_quad1 = | 2639 PictureDrawQuad* green_quad1 = |
| 2628 pass->CreateAndAppendDrawQuad<PictureDrawQuad>(); | 2640 pass->CreateAndAppendDrawQuad<PictureDrawQuad>(); |
| 2629 green_quad1->SetNew(top_right_green_shared_quad_state, green_rect1, | 2641 green_quad1->SetNew(top_right_green_shared_quad_state, green_rect1, |
| 2630 gfx::Rect(), green_rect1, gfx::RectF(green_rect1.size()), | 2642 gfx::Rect(), green_rect1, gfx::RectF(green_rect1.size()), |
| 2631 green_rect1.size(), nearest_neighbor, texture_format, | 2643 green_rect1.size(), nearest_neighbor, texture_format, |
| 2632 green_rect1, 1.f, green_pile.get()); | 2644 green_rect1, 1.f, green_raster_source.get()); |
|
danakj
2015/09/22 21:52:15
...
vmpstr
2015/09/22 22:57:49
Removed .get()
| |
| 2633 | 2645 |
| 2634 PictureDrawQuad* green_quad2 = | 2646 PictureDrawQuad* green_quad2 = |
| 2635 pass->CreateAndAppendDrawQuad<PictureDrawQuad>(); | 2647 pass->CreateAndAppendDrawQuad<PictureDrawQuad>(); |
| 2636 green_quad2->SetNew(top_right_green_shared_quad_state, green_rect2, | 2648 green_quad2->SetNew(top_right_green_shared_quad_state, green_rect2, |
| 2637 gfx::Rect(), green_rect2, gfx::RectF(green_rect2.size()), | 2649 gfx::Rect(), green_rect2, gfx::RectF(green_rect2.size()), |
| 2638 green_rect2.size(), nearest_neighbor, texture_format, | 2650 green_rect2.size(), nearest_neighbor, texture_format, |
| 2639 green_rect2, 1.f, green_pile.get()); | 2651 green_rect2, 1.f, green_raster_source.get()); |
|
danakj
2015/09/22 21:52:15
silly turn refptr into raw pointer into refptr..
vmpstr
2015/09/22 22:57:49
Changed to Pass.
| |
| 2640 | 2652 |
| 2641 // Add a green clipped checkerboard in the bottom right to help test | 2653 // Add a green clipped checkerboard in the bottom right to help test |
| 2642 // interleaving picture quad content and solid color content. | 2654 // interleaving picture quad content and solid color content. |
| 2643 gfx::Rect bottom_right_rect( | 2655 gfx::Rect bottom_right_rect( |
| 2644 gfx::Point(viewport.width() / 2, viewport.height() / 2), | 2656 gfx::Point(viewport.width() / 2, viewport.height() / 2), |
| 2645 gfx::Size(viewport.width() / 2, viewport.height() / 2)); | 2657 gfx::Size(viewport.width() / 2, viewport.height() / 2)); |
| 2646 SharedQuadState* bottom_right_green_shared_state = | 2658 SharedQuadState* bottom_right_green_shared_state = |
| 2647 CreateTestSharedQuadStateClipped(green_quad_to_target_transform, viewport, | 2659 CreateTestSharedQuadStateClipped(green_quad_to_target_transform, viewport, |
| 2648 bottom_right_rect, pass.get()); | 2660 bottom_right_rect, pass.get()); |
| 2649 SolidColorDrawQuad* bottom_right_color_quad = | 2661 SolidColorDrawQuad* bottom_right_color_quad = |
| (...skipping 14 matching lines...) Expand all Loading... | |
| 2664 gfx::RectF blue_layer_rect2(gfx::PointF(8.0f, 6.5f), gfx::SizeF(2.5f, 2.5f)); | 2676 gfx::RectF blue_layer_rect2(gfx::PointF(8.0f, 6.5f), gfx::SizeF(2.5f, 2.5f)); |
| 2665 gfx::RectF union_layer_rect = blue_layer_rect1; | 2677 gfx::RectF union_layer_rect = blue_layer_rect1; |
| 2666 union_layer_rect.Union(blue_layer_rect2); | 2678 union_layer_rect.Union(blue_layer_rect2); |
| 2667 | 2679 |
| 2668 // Because scaling up will cause sampling outside the rects, add one extra | 2680 // Because scaling up will cause sampling outside the rects, add one extra |
| 2669 // pixel of buffer at the final content scale. | 2681 // pixel of buffer at the final content scale. |
| 2670 float inset = -1.f / contents_scale; | 2682 float inset = -1.f / contents_scale; |
| 2671 blue_layer_rect1.Inset(inset, inset, inset, inset); | 2683 blue_layer_rect1.Inset(inset, inset, inset, inset); |
| 2672 blue_layer_rect2.Inset(inset, inset, inset, inset); | 2684 blue_layer_rect2.Inset(inset, inset, inset, inset); |
| 2673 | 2685 |
| 2674 scoped_ptr<FakePicturePile> recording = | 2686 scoped_ptr<FakeDisplayListRecordingSource> recording = |
| 2675 FakePicturePile::CreateFilledPile(pile_tile_size, layer_rect.size()); | 2687 FakeDisplayListRecordingSource::CreateFilledRecordingSource( |
| 2688 layer_rect.size()); | |
| 2676 | 2689 |
| 2677 Region outside(layer_rect); | 2690 Region outside(layer_rect); |
| 2678 outside.Subtract(gfx::ToEnclosingRect(union_layer_rect)); | 2691 outside.Subtract(gfx::ToEnclosingRect(union_layer_rect)); |
| 2679 for (Region::Iterator iter(outside); iter.has_rect(); iter.next()) { | 2692 for (Region::Iterator iter(outside); iter.has_rect(); iter.next()) { |
| 2680 recording->add_draw_rect_with_paint(iter.rect(), red_paint); | 2693 recording->add_draw_rect_with_paint(iter.rect(), red_paint); |
| 2681 } | 2694 } |
| 2682 | 2695 |
| 2683 SkPaint blue_paint; | 2696 SkPaint blue_paint; |
| 2684 blue_paint.setColor(SK_ColorBLUE); | 2697 blue_paint.setColor(SK_ColorBLUE); |
| 2685 recording->add_draw_rectf_with_paint(blue_layer_rect1, blue_paint); | 2698 recording->add_draw_rectf_with_paint(blue_layer_rect1, blue_paint); |
| 2686 recording->add_draw_rectf_with_paint(blue_layer_rect2, blue_paint); | 2699 recording->add_draw_rectf_with_paint(blue_layer_rect2, blue_paint); |
| 2687 recording->Rerecord(); | 2700 recording->Rerecord(); |
| 2688 scoped_refptr<FakePicturePileImpl> pile = | 2701 scoped_refptr<FakeDisplayListRasterSource> raster_source = |
| 2689 FakePicturePileImpl::CreateFromPile(recording.get(), nullptr); | 2702 FakeDisplayListRasterSource::CreateFromRecordingSource(recording.get(), |
| 2703 false); | |
| 2690 | 2704 |
| 2691 gfx::Rect content_rect( | 2705 gfx::Rect content_rect( |
| 2692 gfx::ScaleToEnclosingRect(layer_rect, contents_scale)); | 2706 gfx::ScaleToEnclosingRect(layer_rect, contents_scale)); |
| 2693 gfx::Rect content_union_rect( | 2707 gfx::Rect content_union_rect( |
| 2694 gfx::ToEnclosingRect(gfx::ScaleRect(union_layer_rect, contents_scale))); | 2708 gfx::ToEnclosingRect(gfx::ScaleRect(union_layer_rect, contents_scale))); |
| 2695 | 2709 |
| 2696 // At a scale of 4x the rectangles with a width of 2.5 will take up 10 pixels, | 2710 // At a scale of 4x the rectangles with a width of 2.5 will take up 10 pixels, |
| 2697 // so scale an additional 10x to make them 100x100. | 2711 // so scale an additional 10x to make them 100x100. |
| 2698 gfx::Transform quad_to_target_transform; | 2712 gfx::Transform quad_to_target_transform; |
| 2699 quad_to_target_transform.Scale(10.0, 10.0); | 2713 quad_to_target_transform.Scale(10.0, 10.0); |
| 2700 gfx::Rect quad_content_rect(gfx::Size(20, 20)); | 2714 gfx::Rect quad_content_rect(gfx::Size(20, 20)); |
| 2701 SharedQuadState* blue_shared_state = CreateTestSharedQuadState( | 2715 SharedQuadState* blue_shared_state = CreateTestSharedQuadState( |
| 2702 quad_to_target_transform, quad_content_rect, pass.get()); | 2716 quad_to_target_transform, quad_content_rect, pass.get()); |
| 2703 | 2717 |
| 2704 PictureDrawQuad* blue_quad = pass->CreateAndAppendDrawQuad<PictureDrawQuad>(); | 2718 PictureDrawQuad* blue_quad = pass->CreateAndAppendDrawQuad<PictureDrawQuad>(); |
| 2705 blue_quad->SetNew(blue_shared_state, quad_content_rect, gfx::Rect(), | 2719 blue_quad->SetNew(blue_shared_state, quad_content_rect, gfx::Rect(), |
| 2706 quad_content_rect, gfx::RectF(quad_content_rect), | 2720 quad_content_rect, gfx::RectF(quad_content_rect), |
| 2707 content_union_rect.size(), nearest_neighbor, texture_format, | 2721 content_union_rect.size(), nearest_neighbor, texture_format, |
| 2708 content_union_rect, contents_scale, pile.get()); | 2722 content_union_rect, contents_scale, raster_source.get()); |
|
danakj
2015/09/22 21:52:15
but it sure is popular..
btw, you could also Pass
vmpstr
2015/09/22 22:57:49
Changed to Pass.
| |
| 2709 | 2723 |
| 2710 // Fill left half of viewport with green. | 2724 // Fill left half of viewport with green. |
| 2711 gfx::Transform half_green_quad_to_target_transform; | 2725 gfx::Transform half_green_quad_to_target_transform; |
| 2712 gfx::Rect half_green_rect(gfx::Size(viewport.width() / 2, viewport.height())); | 2726 gfx::Rect half_green_rect(gfx::Size(viewport.width() / 2, viewport.height())); |
| 2713 SharedQuadState* half_green_shared_state = CreateTestSharedQuadState( | 2727 SharedQuadState* half_green_shared_state = CreateTestSharedQuadState( |
| 2714 half_green_quad_to_target_transform, half_green_rect, pass.get()); | 2728 half_green_quad_to_target_transform, half_green_rect, pass.get()); |
| 2715 SolidColorDrawQuad* half_color_quad = | 2729 SolidColorDrawQuad* half_color_quad = |
| 2716 pass->CreateAndAppendDrawQuad<SolidColorDrawQuad>(); | 2730 pass->CreateAndAppendDrawQuad<SolidColorDrawQuad>(); |
| 2717 half_color_quad->SetNew(half_green_shared_state, | 2731 half_color_quad->SetNew(half_green_shared_state, |
| 2718 half_green_rect, | 2732 half_green_rect, |
| (...skipping 215 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 2934 EXPECT_TRUE(this->RunPixelTest( | 2948 EXPECT_TRUE(this->RunPixelTest( |
| 2935 &pass_list, | 2949 &pass_list, |
| 2936 base::FilePath(FILE_PATH_LITERAL("wrap_mode_repeat.png")), | 2950 base::FilePath(FILE_PATH_LITERAL("wrap_mode_repeat.png")), |
| 2937 FuzzyPixelOffByOneComparator(true))); | 2951 FuzzyPixelOffByOneComparator(true))); |
| 2938 } | 2952 } |
| 2939 | 2953 |
| 2940 #endif // !defined(OS_ANDROID) | 2954 #endif // !defined(OS_ANDROID) |
| 2941 | 2955 |
| 2942 } // namespace | 2956 } // namespace |
| 2943 } // namespace cc | 2957 } // namespace cc |
| OLD | NEW |