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

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

Issue 2823003002: SkBitmap and SkPixelRef no longer need lock/unlock (Closed)
Patch Set: win fix after rebase Created 3 years, 8 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/output/gl_renderer.cc ('k') | cc/resources/ui_resource_bitmap.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 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 <stddef.h> 5 #include <stddef.h>
6 #include <stdint.h> 6 #include <stdint.h>
7 #include <memory> 7 #include <memory>
8 8
9 #include "base/message_loop/message_loop.h" 9 #include "base/message_loop/message_loop.h"
10 #include "cc/base/math_util.h" 10 #include "cc/base/math_util.h"
(...skipping 1968 matching lines...) Expand 10 before | Expand all | Expand 10 after
1979 rect.Inset(6, 6, 4, 4); 1979 rect.Inset(6, 6, 4, 4);
1980 canvas.drawRect( 1980 canvas.drawRect(
1981 SkRect::MakeXYWH(rect.x(), rect.y(), rect.width(), rect.height()), 1981 SkRect::MakeXYWH(rect.x(), rect.y(), rect.width(), rect.height()),
1982 flags); 1982 flags);
1983 rect.Inset(6, 6, 4, 4); 1983 rect.Inset(6, 6, 4, 4);
1984 } 1984 }
1985 1985
1986 ResourceId mask_resource_id = this->resource_provider_->CreateResource( 1986 ResourceId mask_resource_id = this->resource_provider_->CreateResource(
1987 mask_rect.size(), ResourceProvider::TEXTURE_HINT_IMMUTABLE, RGBA_8888, 1987 mask_rect.size(), ResourceProvider::TEXTURE_HINT_IMMUTABLE, RGBA_8888,
1988 gfx::ColorSpace()); 1988 gfx::ColorSpace());
1989 { 1989
1990 SkAutoLockPixels lock(bitmap); 1990 this->resource_provider_->CopyToResource(
1991 this->resource_provider_->CopyToResource( 1991 mask_resource_id, reinterpret_cast<uint8_t*>(bitmap.getPixels()),
1992 mask_resource_id, reinterpret_cast<uint8_t*>(bitmap.getPixels()), 1992 mask_rect.size());
1993 mask_rect.size());
1994 }
1995 1993
1996 // This RenderPassDrawQuad does not include the full |viewport_rect| which is 1994 // This RenderPassDrawQuad does not include the full |viewport_rect| which is
1997 // the size of the child render pass. 1995 // the size of the child render pass.
1998 gfx::Rect sub_rect = gfx::Rect(50, 50, 200, 100); 1996 gfx::Rect sub_rect = gfx::Rect(50, 50, 200, 100);
1999 EXPECT_NE(sub_rect.x(), child_pass->output_rect.x()); 1997 EXPECT_NE(sub_rect.x(), child_pass->output_rect.x());
2000 EXPECT_NE(sub_rect.y(), child_pass->output_rect.y()); 1998 EXPECT_NE(sub_rect.y(), child_pass->output_rect.y());
2001 EXPECT_NE(sub_rect.right(), child_pass->output_rect.right()); 1999 EXPECT_NE(sub_rect.right(), child_pass->output_rect.right());
2002 EXPECT_NE(sub_rect.bottom(), child_pass->output_rect.bottom()); 2000 EXPECT_NE(sub_rect.bottom(), child_pass->output_rect.bottom());
2003 2001
2004 // Set up a mask on the RenderPassDrawQuad. 2002 // Set up a mask on the RenderPassDrawQuad.
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after
2074 rect.Inset(6, 6, 4, 4); 2072 rect.Inset(6, 6, 4, 4);
2075 canvas.drawRect( 2073 canvas.drawRect(
2076 SkRect::MakeXYWH(rect.x(), rect.y(), rect.width(), rect.height()), 2074 SkRect::MakeXYWH(rect.x(), rect.y(), rect.width(), rect.height()),
2077 flags); 2075 flags);
2078 rect.Inset(6, 6, 4, 4); 2076 rect.Inset(6, 6, 4, 4);
2079 } 2077 }
2080 2078
2081 ResourceId mask_resource_id = this->resource_provider_->CreateResource( 2079 ResourceId mask_resource_id = this->resource_provider_->CreateResource(
2082 mask_rect.size(), ResourceProvider::TEXTURE_HINT_IMMUTABLE, RGBA_8888, 2080 mask_rect.size(), ResourceProvider::TEXTURE_HINT_IMMUTABLE, RGBA_8888,
2083 gfx::ColorSpace()); 2081 gfx::ColorSpace());
2084 { 2082
2085 SkAutoLockPixels lock(bitmap); 2083 this->resource_provider_->CopyToResource(
2086 this->resource_provider_->CopyToResource( 2084 mask_resource_id, reinterpret_cast<uint8_t*>(bitmap.getPixels()),
2087 mask_resource_id, reinterpret_cast<uint8_t*>(bitmap.getPixels()), 2085 mask_rect.size());
2088 mask_rect.size());
2089 }
2090 2086
2091 // This RenderPassDrawQuad does not include the full |viewport_rect| which is 2087 // This RenderPassDrawQuad does not include the full |viewport_rect| which is
2092 // the size of the child render pass. 2088 // the size of the child render pass.
2093 gfx::Rect sub_rect = gfx::Rect(50, 20, 200, 60); 2089 gfx::Rect sub_rect = gfx::Rect(50, 20, 200, 60);
2094 EXPECT_NE(sub_rect.x(), child_pass->output_rect.x()); 2090 EXPECT_NE(sub_rect.x(), child_pass->output_rect.x());
2095 EXPECT_NE(sub_rect.y(), child_pass->output_rect.y()); 2091 EXPECT_NE(sub_rect.y(), child_pass->output_rect.y());
2096 EXPECT_NE(sub_rect.right(), child_pass->output_rect.right()); 2092 EXPECT_NE(sub_rect.right(), child_pass->output_rect.right());
2097 EXPECT_NE(sub_rect.bottom(), child_pass->output_rect.bottom()); 2093 EXPECT_NE(sub_rect.bottom(), child_pass->output_rect.bottom());
2098 2094
2099 // Set up a mask on the RenderPassDrawQuad. 2095 // Set up a mask on the RenderPassDrawQuad.
(...skipping 702 matching lines...) Expand 10 before | Expand all | Expand 10 after
2802 } 2798 }
2803 2799
2804 // This disables filtering by setting |nearest_neighbor| on the TileDrawQuad. 2800 // This disables filtering by setting |nearest_neighbor| on the TileDrawQuad.
2805 TYPED_TEST(RendererPixelTest, TileDrawQuadNearestNeighbor) { 2801 TYPED_TEST(RendererPixelTest, TileDrawQuadNearestNeighbor) {
2806 gfx::Rect viewport(this->device_viewport_size_); 2802 gfx::Rect viewport(this->device_viewport_size_);
2807 bool swizzle_contents = true; 2803 bool swizzle_contents = true;
2808 bool nearest_neighbor = true; 2804 bool nearest_neighbor = true;
2809 2805
2810 SkBitmap bitmap; 2806 SkBitmap bitmap;
2811 bitmap.allocN32Pixels(2, 2); 2807 bitmap.allocN32Pixels(2, 2);
2812 { 2808 SkCanvas canvas(bitmap);
2813 SkAutoLockPixels lock(bitmap); 2809 draw_point_color(&canvas, 0, 0, SK_ColorGREEN);
2814 SkCanvas canvas(bitmap); 2810 draw_point_color(&canvas, 0, 1, SK_ColorBLUE);
2815 draw_point_color(&canvas, 0, 0, SK_ColorGREEN); 2811 draw_point_color(&canvas, 1, 0, SK_ColorBLUE);
2816 draw_point_color(&canvas, 0, 1, SK_ColorBLUE); 2812 draw_point_color(&canvas, 1, 1, SK_ColorGREEN);
2817 draw_point_color(&canvas, 1, 0, SK_ColorBLUE);
2818 draw_point_color(&canvas, 1, 1, SK_ColorGREEN);
2819 }
2820 2813
2821 gfx::Size tile_size(2, 2); 2814 gfx::Size tile_size(2, 2);
2822 ResourceId resource = this->resource_provider_->CreateResource( 2815 ResourceId resource = this->resource_provider_->CreateResource(
2823 tile_size, ResourceProvider::TEXTURE_HINT_IMMUTABLE, RGBA_8888, 2816 tile_size, ResourceProvider::TEXTURE_HINT_IMMUTABLE, RGBA_8888,
2824 gfx::ColorSpace()); 2817 gfx::ColorSpace());
2825 2818
2826 { 2819 this->resource_provider_->CopyToResource(
2827 SkAutoLockPixels lock(bitmap); 2820 resource, static_cast<uint8_t*>(bitmap.getPixels()), tile_size);
2828 this->resource_provider_->CopyToResource(
2829 resource, static_cast<uint8_t*>(bitmap.getPixels()), tile_size);
2830 }
2831 2821
2832 int id = 1; 2822 int id = 1;
2833 gfx::Transform transform_to_root; 2823 gfx::Transform transform_to_root;
2834 std::unique_ptr<RenderPass> pass = 2824 std::unique_ptr<RenderPass> pass =
2835 CreateTestRenderPass(id, viewport, transform_to_root); 2825 CreateTestRenderPass(id, viewport, transform_to_root);
2836 2826
2837 gfx::Transform quad_to_target_transform; 2827 gfx::Transform quad_to_target_transform;
2838 SharedQuadState* shared_state = 2828 SharedQuadState* shared_state =
2839 CreateTestSharedQuadState(quad_to_target_transform, viewport, pass.get()); 2829 CreateTestSharedQuadState(quad_to_target_transform, viewport, pass.get());
2840 2830
(...skipping 12 matching lines...) Expand all
2853 } 2843 }
2854 2844
2855 // This disables filtering by setting |nearest_neighbor| to true on the 2845 // This disables filtering by setting |nearest_neighbor| to true on the
2856 // TextureDrawQuad. 2846 // TextureDrawQuad.
2857 TYPED_TEST(SoftwareRendererPixelTest, TextureDrawQuadNearestNeighbor) { 2847 TYPED_TEST(SoftwareRendererPixelTest, TextureDrawQuadNearestNeighbor) {
2858 gfx::Rect viewport(this->device_viewport_size_); 2848 gfx::Rect viewport(this->device_viewport_size_);
2859 bool nearest_neighbor = true; 2849 bool nearest_neighbor = true;
2860 2850
2861 SkBitmap bitmap; 2851 SkBitmap bitmap;
2862 bitmap.allocN32Pixels(2, 2); 2852 bitmap.allocN32Pixels(2, 2);
2863 { 2853 SkCanvas canvas(bitmap);
2864 SkAutoLockPixels lock(bitmap); 2854 draw_point_color(&canvas, 0, 0, SK_ColorGREEN);
2865 SkCanvas canvas(bitmap); 2855 draw_point_color(&canvas, 0, 1, SK_ColorBLUE);
2866 draw_point_color(&canvas, 0, 0, SK_ColorGREEN); 2856 draw_point_color(&canvas, 1, 0, SK_ColorBLUE);
2867 draw_point_color(&canvas, 0, 1, SK_ColorBLUE); 2857 draw_point_color(&canvas, 1, 1, SK_ColorGREEN);
2868 draw_point_color(&canvas, 1, 0, SK_ColorBLUE);
2869 draw_point_color(&canvas, 1, 1, SK_ColorGREEN);
2870 }
2871 2858
2872 gfx::Size tile_size(2, 2); 2859 gfx::Size tile_size(2, 2);
2873 ResourceId resource = this->resource_provider_->CreateResource( 2860 ResourceId resource = this->resource_provider_->CreateResource(
2874 tile_size, ResourceProvider::TEXTURE_HINT_IMMUTABLE, RGBA_8888, 2861 tile_size, ResourceProvider::TEXTURE_HINT_IMMUTABLE, RGBA_8888,
2875 gfx::ColorSpace()); 2862 gfx::ColorSpace());
2876 2863
2877 { 2864 this->resource_provider_->CopyToResource(
2878 SkAutoLockPixels lock(bitmap); 2865 resource, static_cast<uint8_t*>(bitmap.getPixels()), tile_size);
2879 this->resource_provider_->CopyToResource(
2880 resource, static_cast<uint8_t*>(bitmap.getPixels()), tile_size);
2881 }
2882 2866
2883 int id = 1; 2867 int id = 1;
2884 gfx::Transform transform_to_root; 2868 gfx::Transform transform_to_root;
2885 std::unique_ptr<RenderPass> pass = 2869 std::unique_ptr<RenderPass> pass =
2886 CreateTestRenderPass(id, viewport, transform_to_root); 2870 CreateTestRenderPass(id, viewport, transform_to_root);
2887 2871
2888 gfx::Transform quad_to_target_transform; 2872 gfx::Transform quad_to_target_transform;
2889 SharedQuadState* shared_state = 2873 SharedQuadState* shared_state =
2890 CreateTestSharedQuadState(quad_to_target_transform, viewport, pass.get()); 2874 CreateTestSharedQuadState(quad_to_target_transform, viewport, pass.get());
2891 2875
(...skipping 14 matching lines...) Expand all
2906 2890
2907 // This ensures filtering is enabled by setting |nearest_neighbor| to false on 2891 // This ensures filtering is enabled by setting |nearest_neighbor| to false on
2908 // the TextureDrawQuad. 2892 // the TextureDrawQuad.
2909 TYPED_TEST(SoftwareRendererPixelTest, TextureDrawQuadLinear) { 2893 TYPED_TEST(SoftwareRendererPixelTest, TextureDrawQuadLinear) {
2910 gfx::Rect viewport(this->device_viewport_size_); 2894 gfx::Rect viewport(this->device_viewport_size_);
2911 bool nearest_neighbor = false; 2895 bool nearest_neighbor = false;
2912 2896
2913 SkBitmap bitmap; 2897 SkBitmap bitmap;
2914 bitmap.allocN32Pixels(2, 2); 2898 bitmap.allocN32Pixels(2, 2);
2915 { 2899 {
2916 SkAutoLockPixels lock(bitmap);
2917 SkCanvas canvas(bitmap); 2900 SkCanvas canvas(bitmap);
2918 draw_point_color(&canvas, 0, 0, SK_ColorGREEN); 2901 draw_point_color(&canvas, 0, 0, SK_ColorGREEN);
2919 draw_point_color(&canvas, 0, 1, SK_ColorBLUE); 2902 draw_point_color(&canvas, 0, 1, SK_ColorBLUE);
2920 draw_point_color(&canvas, 1, 0, SK_ColorBLUE); 2903 draw_point_color(&canvas, 1, 0, SK_ColorBLUE);
2921 draw_point_color(&canvas, 1, 1, SK_ColorGREEN); 2904 draw_point_color(&canvas, 1, 1, SK_ColorGREEN);
2922 } 2905 }
2923 2906
2924 gfx::Size tile_size(2, 2); 2907 gfx::Size tile_size(2, 2);
2925 ResourceId resource = this->resource_provider_->CreateResource( 2908 ResourceId resource = this->resource_provider_->CreateResource(
2926 tile_size, ResourceProvider::TEXTURE_HINT_IMMUTABLE, RGBA_8888, 2909 tile_size, ResourceProvider::TEXTURE_HINT_IMMUTABLE, RGBA_8888,
2927 gfx::ColorSpace()); 2910 gfx::ColorSpace());
2928 2911
2929 { 2912 this->resource_provider_->CopyToResource(
2930 SkAutoLockPixels lock(bitmap); 2913 resource, static_cast<uint8_t*>(bitmap.getPixels()), tile_size);
2931 this->resource_provider_->CopyToResource(
2932 resource, static_cast<uint8_t*>(bitmap.getPixels()), tile_size);
2933 }
2934 2914
2935 int id = 1; 2915 int id = 1;
2936 gfx::Transform transform_to_root; 2916 gfx::Transform transform_to_root;
2937 std::unique_ptr<RenderPass> pass = 2917 std::unique_ptr<RenderPass> pass =
2938 CreateTestRenderPass(id, viewport, transform_to_root); 2918 CreateTestRenderPass(id, viewport, transform_to_root);
2939 2919
2940 gfx::Transform quad_to_target_transform; 2920 gfx::Transform quad_to_target_transform;
2941 SharedQuadState* shared_state = 2921 SharedQuadState* shared_state =
2942 CreateTestSharedQuadState(quad_to_target_transform, viewport, pass.get()); 2922 CreateTestSharedQuadState(quad_to_target_transform, viewport, pass.get());
2943 2923
(...skipping 338 matching lines...) Expand 10 before | Expand all | Expand 10 after
3282 inset_rect.Inset(6, 6, 4, 4); 3262 inset_rect.Inset(6, 6, 4, 4);
3283 canvas.drawRect(SkRect::MakeXYWH(inset_rect.x(), inset_rect.y(), 3263 canvas.drawRect(SkRect::MakeXYWH(inset_rect.x(), inset_rect.y(),
3284 inset_rect.width(), inset_rect.height()), 3264 inset_rect.width(), inset_rect.height()),
3285 paint); 3265 paint);
3286 inset_rect.Inset(6, 6, 4, 4); 3266 inset_rect.Inset(6, 6, 4, 4);
3287 } 3267 }
3288 3268
3289 ResourceId resource = this->resource_provider_->CreateResource( 3269 ResourceId resource = this->resource_provider_->CreateResource(
3290 mask_rect.size(), ResourceProvider::TEXTURE_HINT_IMMUTABLE, RGBA_8888, 3270 mask_rect.size(), ResourceProvider::TEXTURE_HINT_IMMUTABLE, RGBA_8888,
3291 gfx::ColorSpace()); 3271 gfx::ColorSpace());
3292 { 3272
3293 SkAutoLockPixels lock(bitmap); 3273 this->resource_provider_->CopyToResource(
3294 this->resource_provider_->CopyToResource( 3274 resource, reinterpret_cast<uint8_t*>(bitmap.getPixels()),
3295 resource, reinterpret_cast<uint8_t*>(bitmap.getPixels()), 3275 mask_rect.size());
3296 mask_rect.size());
3297 }
3298 3276
3299 // Arbitrary dividing lengths to divide up the resource into 16 quads. 3277 // Arbitrary dividing lengths to divide up the resource into 16 quads.
3300 int widths[] = { 3278 int widths[] = {
3301 0, 60, 50, 40, 3279 0, 60, 50, 40,
3302 }; 3280 };
3303 int heights[] = { 3281 int heights[] = {
3304 0, 10, 80, 50, 3282 0, 10, 80, 50,
3305 }; 3283 };
3306 size_t num_quads = 4; 3284 size_t num_quads = 4;
3307 for (size_t i = 0; i < num_quads; ++i) { 3285 for (size_t i = 0; i < num_quads; ++i) {
(...skipping 266 matching lines...) Expand 10 before | Expand all | Expand 10 after
3574 INSTANTIATE_TEST_CASE_P( 3552 INSTANTIATE_TEST_CASE_P(
3575 ToColorSpace, 3553 ToColorSpace,
3576 ColorTransformPixelTest, 3554 ColorTransformPixelTest,
3577 testing::Combine(testing::ValuesIn(intermediate_color_spaces), 3555 testing::Combine(testing::ValuesIn(intermediate_color_spaces),
3578 testing::ValuesIn(dst_color_spaces))); 3556 testing::ValuesIn(dst_color_spaces)));
3579 3557
3580 #endif // !defined(OS_ANDROID) 3558 #endif // !defined(OS_ANDROID)
3581 3559
3582 } // namespace 3560 } // namespace
3583 } // namespace cc 3561 } // namespace cc
OLDNEW
« no previous file with comments | « cc/output/gl_renderer.cc ('k') | cc/resources/ui_resource_bitmap.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698