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

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

Issue 2235623003: cc: Add gfx::ColorSpace to cc::ResourceProvider resource creation (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebase Created 4 years, 4 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/output_surface.cc ('k') | cc/output/software_renderer_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 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/output/gl_renderer.h" 10 #include "cc/output/gl_renderer.h"
(...skipping 117 matching lines...) Expand 10 before | Expand all | Expand 10 after
128 SkColorGetR(texel_stripe_color), 128 SkColorGetR(texel_stripe_color),
129 SkColorGetG(texel_stripe_color), 129 SkColorGetG(texel_stripe_color),
130 SkColorGetB(texel_stripe_color)); 130 SkColorGetB(texel_stripe_color));
131 std::vector<uint32_t> pixels(rect.size().GetArea(), pixel_color); 131 std::vector<uint32_t> pixels(rect.size().GetArea(), pixel_color);
132 for (int i = rect.height() / 4; i < (rect.height() * 3 / 4); ++i) { 132 for (int i = rect.height() / 4; i < (rect.height() * 3 / 4); ++i) {
133 for (int k = rect.width() / 4; k < (rect.width() * 3 / 4); ++k) { 133 for (int k = rect.width() / 4; k < (rect.width() * 3 / 4); ++k) {
134 pixels[i * rect.width() + k] = pixel_stripe_color; 134 pixels[i * rect.width() + k] = pixel_stripe_color;
135 } 135 }
136 } 136 }
137 ResourceId resource = resource_provider->CreateResource( 137 ResourceId resource = resource_provider->CreateResource(
138 rect.size(), ResourceProvider::TEXTURE_HINT_IMMUTABLE, RGBA_8888); 138 rect.size(), ResourceProvider::TEXTURE_HINT_IMMUTABLE, RGBA_8888,
139 gfx::ColorSpace());
139 resource_provider->CopyToResource( 140 resource_provider->CopyToResource(
140 resource, reinterpret_cast<uint8_t*>(&pixels.front()), rect.size()); 141 resource, reinterpret_cast<uint8_t*>(&pixels.front()), rect.size());
141 142
142 float vertex_opacity[4] = {1.0f, 1.0f, 1.0f, 1.0f}; 143 float vertex_opacity[4] = {1.0f, 1.0f, 1.0f, 1.0f};
143 const gfx::PointF uv_top_left(0.0f, 0.0f); 144 const gfx::PointF uv_top_left(0.0f, 0.0f);
144 const gfx::PointF uv_bottom_right(1.0f, 1.0f); 145 const gfx::PointF uv_bottom_right(1.0f, 1.0f);
145 const bool flipped = false; 146 const bool flipped = false;
146 const bool nearest_neighbor = false; 147 const bool nearest_neighbor = false;
147 TextureDrawQuad* quad = 148 TextureDrawQuad* quad =
148 render_pass->CreateAndAppendDrawQuad<TextureDrawQuad>(); 149 render_pass->CreateAndAppendDrawQuad<TextureDrawQuad>();
(...skipping 13 matching lines...) Expand all
162 SkPMColor pixel_color = premultiplied_alpha ? 163 SkPMColor pixel_color = premultiplied_alpha ?
163 SkPreMultiplyColor(texel_color) : 164 SkPreMultiplyColor(texel_color) :
164 SkPackARGB32NoCheck(SkColorGetA(texel_color), 165 SkPackARGB32NoCheck(SkColorGetA(texel_color),
165 SkColorGetR(texel_color), 166 SkColorGetR(texel_color),
166 SkColorGetG(texel_color), 167 SkColorGetG(texel_color),
167 SkColorGetB(texel_color)); 168 SkColorGetB(texel_color));
168 size_t num_pixels = static_cast<size_t>(rect.width()) * rect.height(); 169 size_t num_pixels = static_cast<size_t>(rect.width()) * rect.height();
169 std::vector<uint32_t> pixels(num_pixels, pixel_color); 170 std::vector<uint32_t> pixels(num_pixels, pixel_color);
170 171
171 ResourceId resource = resource_provider->CreateResource( 172 ResourceId resource = resource_provider->CreateResource(
172 rect.size(), ResourceProvider::TEXTURE_HINT_IMMUTABLE, RGBA_8888); 173 rect.size(), ResourceProvider::TEXTURE_HINT_IMMUTABLE, RGBA_8888,
174 gfx::ColorSpace());
173 resource_provider->CopyToResource( 175 resource_provider->CopyToResource(
174 resource, reinterpret_cast<uint8_t*>(&pixels.front()), rect.size()); 176 resource, reinterpret_cast<uint8_t*>(&pixels.front()), rect.size());
175 177
176 float vertex_opacity[4] = {1.0f, 1.0f, 1.0f, 1.0f}; 178 float vertex_opacity[4] = {1.0f, 1.0f, 1.0f, 1.0f};
177 179
178 const gfx::PointF uv_top_left(0.0f, 0.0f); 180 const gfx::PointF uv_top_left(0.0f, 0.0f);
179 const gfx::PointF uv_bottom_right(1.0f, 1.0f); 181 const gfx::PointF uv_bottom_right(1.0f, 1.0f);
180 const bool flipped = false; 182 const bool flipped = false;
181 const bool nearest_neighbor = false; 183 const bool nearest_neighbor = false;
182 TextureDrawQuad* quad = 184 TextureDrawQuad* quad =
(...skipping 317 matching lines...) Expand 10 before | Expand all | Expand 10 after
500 color_space = YUVVideoDrawQuad::JPEG; 502 color_space = YUVVideoDrawQuad::JPEG;
501 } 503 }
502 504
503 const gfx::Rect opaque_rect(0, 0, 0, 0); 505 const gfx::Rect opaque_rect(0, 0, 0, 0);
504 const gfx::Size ya_tex_size = rect.size(); 506 const gfx::Size ya_tex_size = rect.size();
505 const gfx::Size uv_tex_size = media::VideoFrame::PlaneSize( 507 const gfx::Size uv_tex_size = media::VideoFrame::PlaneSize(
506 media::PIXEL_FORMAT_NV12, media::VideoFrame::kUVPlane, rect.size()); 508 media::PIXEL_FORMAT_NV12, media::VideoFrame::kUVPlane, rect.size());
507 509
508 ResourceId y_resource = resource_provider->CreateResource( 510 ResourceId y_resource = resource_provider->CreateResource(
509 rect.size(), ResourceProvider::TEXTURE_HINT_DEFAULT, 511 rect.size(), ResourceProvider::TEXTURE_HINT_DEFAULT,
510 resource_provider->YuvResourceFormat(8)); 512 resource_provider->YuvResourceFormat(8), gfx::ColorSpace());
511 ResourceId u_resource = resource_provider->CreateResource( 513 ResourceId u_resource = resource_provider->CreateResource(
512 uv_tex_size, ResourceProvider::TEXTURE_HINT_DEFAULT, RGBA_8888); 514 uv_tex_size, ResourceProvider::TEXTURE_HINT_DEFAULT, RGBA_8888,
515 gfx::ColorSpace());
513 ResourceId v_resource = u_resource; 516 ResourceId v_resource = u_resource;
514 ResourceId a_resource = 0; 517 ResourceId a_resource = 0;
515 518
516 std::vector<uint8_t> y_pixels(ya_tex_size.GetArea(), y); 519 std::vector<uint8_t> y_pixels(ya_tex_size.GetArea(), y);
517 resource_provider->CopyToResource(y_resource, y_pixels.data(), ya_tex_size); 520 resource_provider->CopyToResource(y_resource, y_pixels.data(), ya_tex_size);
518 521
519 // U goes in the R component and V goes in the G component. 522 // U goes in the R component and V goes in the G component.
520 uint32_t rgba_pixel = (u << 24) | (v << 16); 523 uint32_t rgba_pixel = (u << 24) | (v << 16);
521 std::vector<uint32_t> uv_pixels(uv_tex_size.GetArea(), rgba_pixel); 524 std::vector<uint32_t> uv_pixels(uv_tex_size.GetArea(), rgba_pixel);
522 resource_provider->CopyToResource( 525 resource_provider->CopyToResource(
(...skipping 1300 matching lines...) Expand 10 before | Expand all | Expand 10 after
1823 gfx::Rect rect = mask_rect; 1826 gfx::Rect rect = mask_rect;
1824 while (!rect.IsEmpty()) { 1827 while (!rect.IsEmpty()) {
1825 rect.Inset(6, 6, 4, 4); 1828 rect.Inset(6, 6, 4, 4);
1826 canvas.drawRect( 1829 canvas.drawRect(
1827 SkRect::MakeXYWH(rect.x(), rect.y(), rect.width(), rect.height()), 1830 SkRect::MakeXYWH(rect.x(), rect.y(), rect.width(), rect.height()),
1828 paint); 1831 paint);
1829 rect.Inset(6, 6, 4, 4); 1832 rect.Inset(6, 6, 4, 4);
1830 } 1833 }
1831 1834
1832 ResourceId mask_resource_id = this->resource_provider_->CreateResource( 1835 ResourceId mask_resource_id = this->resource_provider_->CreateResource(
1833 mask_rect.size(), ResourceProvider::TEXTURE_HINT_IMMUTABLE, RGBA_8888); 1836 mask_rect.size(), ResourceProvider::TEXTURE_HINT_IMMUTABLE, RGBA_8888,
1837 gfx::ColorSpace());
1834 { 1838 {
1835 SkAutoLockPixels lock(bitmap); 1839 SkAutoLockPixels lock(bitmap);
1836 this->resource_provider_->CopyToResource( 1840 this->resource_provider_->CopyToResource(
1837 mask_resource_id, reinterpret_cast<uint8_t*>(bitmap.getPixels()), 1841 mask_resource_id, reinterpret_cast<uint8_t*>(bitmap.getPixels()),
1838 mask_rect.size()); 1842 mask_rect.size());
1839 } 1843 }
1840 1844
1841 // This RenderPassDrawQuad does not include the full |viewport_rect| which is 1845 // This RenderPassDrawQuad does not include the full |viewport_rect| which is
1842 // the size of the child render pass. 1846 // the size of the child render pass.
1843 gfx::Rect sub_rect = gfx::Rect(50, 50, 200, 100); 1847 gfx::Rect sub_rect = gfx::Rect(50, 50, 200, 100);
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after
1916 gfx::Rect rect = mask_rect; 1920 gfx::Rect rect = mask_rect;
1917 while (!rect.IsEmpty()) { 1921 while (!rect.IsEmpty()) {
1918 rect.Inset(6, 6, 4, 4); 1922 rect.Inset(6, 6, 4, 4);
1919 canvas.drawRect( 1923 canvas.drawRect(
1920 SkRect::MakeXYWH(rect.x(), rect.y(), rect.width(), rect.height()), 1924 SkRect::MakeXYWH(rect.x(), rect.y(), rect.width(), rect.height()),
1921 paint); 1925 paint);
1922 rect.Inset(6, 6, 4, 4); 1926 rect.Inset(6, 6, 4, 4);
1923 } 1927 }
1924 1928
1925 ResourceId mask_resource_id = this->resource_provider_->CreateResource( 1929 ResourceId mask_resource_id = this->resource_provider_->CreateResource(
1926 mask_rect.size(), ResourceProvider::TEXTURE_HINT_IMMUTABLE, RGBA_8888); 1930 mask_rect.size(), ResourceProvider::TEXTURE_HINT_IMMUTABLE, RGBA_8888,
1931 gfx::ColorSpace());
1927 { 1932 {
1928 SkAutoLockPixels lock(bitmap); 1933 SkAutoLockPixels lock(bitmap);
1929 this->resource_provider_->CopyToResource( 1934 this->resource_provider_->CopyToResource(
1930 mask_resource_id, reinterpret_cast<uint8_t*>(bitmap.getPixels()), 1935 mask_resource_id, reinterpret_cast<uint8_t*>(bitmap.getPixels()),
1931 mask_rect.size()); 1936 mask_rect.size());
1932 } 1937 }
1933 1938
1934 // This RenderPassDrawQuad does not include the full |viewport_rect| which is 1939 // This RenderPassDrawQuad does not include the full |viewport_rect| which is
1935 // the size of the child render pass. 1940 // the size of the child render pass.
1936 gfx::Rect sub_rect = gfx::Rect(50, 20, 200, 60); 1941 gfx::Rect sub_rect = gfx::Rect(50, 20, 200, 60);
(...skipping 734 matching lines...) Expand 10 before | Expand all | Expand 10 after
2671 SkAutoLockPixels lock(bitmap); 2676 SkAutoLockPixels lock(bitmap);
2672 SkCanvas canvas(bitmap); 2677 SkCanvas canvas(bitmap);
2673 canvas.drawPoint(0, 0, SK_ColorGREEN); 2678 canvas.drawPoint(0, 0, SK_ColorGREEN);
2674 canvas.drawPoint(0, 1, SK_ColorBLUE); 2679 canvas.drawPoint(0, 1, SK_ColorBLUE);
2675 canvas.drawPoint(1, 0, SK_ColorBLUE); 2680 canvas.drawPoint(1, 0, SK_ColorBLUE);
2676 canvas.drawPoint(1, 1, SK_ColorGREEN); 2681 canvas.drawPoint(1, 1, SK_ColorGREEN);
2677 } 2682 }
2678 2683
2679 gfx::Size tile_size(2, 2); 2684 gfx::Size tile_size(2, 2);
2680 ResourceId resource = this->resource_provider_->CreateResource( 2685 ResourceId resource = this->resource_provider_->CreateResource(
2681 tile_size, ResourceProvider::TEXTURE_HINT_IMMUTABLE, RGBA_8888); 2686 tile_size, ResourceProvider::TEXTURE_HINT_IMMUTABLE, RGBA_8888,
2687 gfx::ColorSpace());
2682 2688
2683 { 2689 {
2684 SkAutoLockPixels lock(bitmap); 2690 SkAutoLockPixels lock(bitmap);
2685 this->resource_provider_->CopyToResource( 2691 this->resource_provider_->CopyToResource(
2686 resource, static_cast<uint8_t*>(bitmap.getPixels()), tile_size); 2692 resource, static_cast<uint8_t*>(bitmap.getPixels()), tile_size);
2687 } 2693 }
2688 2694
2689 RenderPassId id(1, 1); 2695 RenderPassId id(1, 1);
2690 gfx::Transform transform_to_root; 2696 gfx::Transform transform_to_root;
2691 std::unique_ptr<RenderPass> pass = 2697 std::unique_ptr<RenderPass> pass =
(...skipping 29 matching lines...) Expand all
2721 SkAutoLockPixels lock(bitmap); 2727 SkAutoLockPixels lock(bitmap);
2722 SkCanvas canvas(bitmap); 2728 SkCanvas canvas(bitmap);
2723 canvas.drawPoint(0, 0, SK_ColorGREEN); 2729 canvas.drawPoint(0, 0, SK_ColorGREEN);
2724 canvas.drawPoint(0, 1, SK_ColorBLUE); 2730 canvas.drawPoint(0, 1, SK_ColorBLUE);
2725 canvas.drawPoint(1, 0, SK_ColorBLUE); 2731 canvas.drawPoint(1, 0, SK_ColorBLUE);
2726 canvas.drawPoint(1, 1, SK_ColorGREEN); 2732 canvas.drawPoint(1, 1, SK_ColorGREEN);
2727 } 2733 }
2728 2734
2729 gfx::Size tile_size(2, 2); 2735 gfx::Size tile_size(2, 2);
2730 ResourceId resource = this->resource_provider_->CreateResource( 2736 ResourceId resource = this->resource_provider_->CreateResource(
2731 tile_size, ResourceProvider::TEXTURE_HINT_IMMUTABLE, RGBA_8888); 2737 tile_size, ResourceProvider::TEXTURE_HINT_IMMUTABLE, RGBA_8888,
2738 gfx::ColorSpace());
2732 2739
2733 { 2740 {
2734 SkAutoLockPixels lock(bitmap); 2741 SkAutoLockPixels lock(bitmap);
2735 this->resource_provider_->CopyToResource( 2742 this->resource_provider_->CopyToResource(
2736 resource, static_cast<uint8_t*>(bitmap.getPixels()), tile_size); 2743 resource, static_cast<uint8_t*>(bitmap.getPixels()), tile_size);
2737 } 2744 }
2738 2745
2739 RenderPassId id(1, 1); 2746 RenderPassId id(1, 1);
2740 gfx::Transform transform_to_root; 2747 gfx::Transform transform_to_root;
2741 std::unique_ptr<RenderPass> pass = 2748 std::unique_ptr<RenderPass> pass =
(...skipping 30 matching lines...) Expand all
2772 SkAutoLockPixels lock(bitmap); 2779 SkAutoLockPixels lock(bitmap);
2773 SkCanvas canvas(bitmap); 2780 SkCanvas canvas(bitmap);
2774 canvas.drawPoint(0, 0, SK_ColorGREEN); 2781 canvas.drawPoint(0, 0, SK_ColorGREEN);
2775 canvas.drawPoint(0, 1, SK_ColorBLUE); 2782 canvas.drawPoint(0, 1, SK_ColorBLUE);
2776 canvas.drawPoint(1, 0, SK_ColorBLUE); 2783 canvas.drawPoint(1, 0, SK_ColorBLUE);
2777 canvas.drawPoint(1, 1, SK_ColorGREEN); 2784 canvas.drawPoint(1, 1, SK_ColorGREEN);
2778 } 2785 }
2779 2786
2780 gfx::Size tile_size(2, 2); 2787 gfx::Size tile_size(2, 2);
2781 ResourceId resource = this->resource_provider_->CreateResource( 2788 ResourceId resource = this->resource_provider_->CreateResource(
2782 tile_size, ResourceProvider::TEXTURE_HINT_IMMUTABLE, RGBA_8888); 2789 tile_size, ResourceProvider::TEXTURE_HINT_IMMUTABLE, RGBA_8888,
2790 gfx::ColorSpace());
2783 2791
2784 { 2792 {
2785 SkAutoLockPixels lock(bitmap); 2793 SkAutoLockPixels lock(bitmap);
2786 this->resource_provider_->CopyToResource( 2794 this->resource_provider_->CopyToResource(
2787 resource, static_cast<uint8_t*>(bitmap.getPixels()), tile_size); 2795 resource, static_cast<uint8_t*>(bitmap.getPixels()), tile_size);
2788 } 2796 }
2789 2797
2790 RenderPassId id(1, 1); 2798 RenderPassId id(1, 1);
2791 gfx::Transform transform_to_root; 2799 gfx::Transform transform_to_root;
2792 std::unique_ptr<RenderPass> pass = 2800 std::unique_ptr<RenderPass> pass =
(...skipping 342 matching lines...) Expand 10 before | Expand all | Expand 10 after
3135 gfx::Rect inset_rect = rect; 3143 gfx::Rect inset_rect = rect;
3136 while (!inset_rect.IsEmpty()) { 3144 while (!inset_rect.IsEmpty()) {
3137 inset_rect.Inset(6, 6, 4, 4); 3145 inset_rect.Inset(6, 6, 4, 4);
3138 canvas.drawRect(SkRect::MakeXYWH(inset_rect.x(), inset_rect.y(), 3146 canvas.drawRect(SkRect::MakeXYWH(inset_rect.x(), inset_rect.y(),
3139 inset_rect.width(), inset_rect.height()), 3147 inset_rect.width(), inset_rect.height()),
3140 paint); 3148 paint);
3141 inset_rect.Inset(6, 6, 4, 4); 3149 inset_rect.Inset(6, 6, 4, 4);
3142 } 3150 }
3143 3151
3144 ResourceId resource = this->resource_provider_->CreateResource( 3152 ResourceId resource = this->resource_provider_->CreateResource(
3145 mask_rect.size(), ResourceProvider::TEXTURE_HINT_IMMUTABLE, RGBA_8888); 3153 mask_rect.size(), ResourceProvider::TEXTURE_HINT_IMMUTABLE, RGBA_8888,
3154 gfx::ColorSpace());
3146 { 3155 {
3147 SkAutoLockPixels lock(bitmap); 3156 SkAutoLockPixels lock(bitmap);
3148 this->resource_provider_->CopyToResource( 3157 this->resource_provider_->CopyToResource(
3149 resource, reinterpret_cast<uint8_t*>(bitmap.getPixels()), 3158 resource, reinterpret_cast<uint8_t*>(bitmap.getPixels()),
3150 mask_rect.size()); 3159 mask_rect.size());
3151 } 3160 }
3152 3161
3153 // Arbitrary dividing lengths to divide up the resource into 16 quads. 3162 // Arbitrary dividing lengths to divide up the resource into 16 quads.
3154 int widths[] = { 3163 int widths[] = {
3155 0, 60, 50, 40, 3164 0, 60, 50, 40,
(...skipping 30 matching lines...) Expand all
3186 3195
3187 EXPECT_TRUE(this->RunPixelTest( 3196 EXPECT_TRUE(this->RunPixelTest(
3188 &pass_list, base::FilePath(FILE_PATH_LITERAL("spiral.png")), 3197 &pass_list, base::FilePath(FILE_PATH_LITERAL("spiral.png")),
3189 FuzzyPixelOffByOneComparator(true))); 3198 FuzzyPixelOffByOneComparator(true)));
3190 } 3199 }
3191 3200
3192 #endif // !defined(OS_ANDROID) 3201 #endif // !defined(OS_ANDROID)
3193 3202
3194 } // namespace 3203 } // namespace
3195 } // namespace cc 3204 } // namespace cc
OLDNEW
« no previous file with comments | « cc/output/output_surface.cc ('k') | cc/output/software_renderer_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698