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" |
(...skipping 119 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
130 : SkPackARGB32NoCheck(SkColorGetA(texel_stripe_color), | 130 : SkPackARGB32NoCheck(SkColorGetA(texel_stripe_color), |
131 SkColorGetR(texel_stripe_color), | 131 SkColorGetR(texel_stripe_color), |
132 SkColorGetG(texel_stripe_color), | 132 SkColorGetG(texel_stripe_color), |
133 SkColorGetB(texel_stripe_color)); | 133 SkColorGetB(texel_stripe_color)); |
134 std::vector<uint32_t> pixels(rect.size().GetArea(), pixel_color); | 134 std::vector<uint32_t> pixels(rect.size().GetArea(), pixel_color); |
135 for (int i = rect.height() / 4; i < (rect.height() * 3 / 4); ++i) { | 135 for (int i = rect.height() / 4; i < (rect.height() * 3 / 4); ++i) { |
136 for (int k = rect.width() / 4; k < (rect.width() * 3 / 4); ++k) { | 136 for (int k = rect.width() / 4; k < (rect.width() * 3 / 4); ++k) { |
137 pixels[i * rect.width() + k] = pixel_stripe_color; | 137 pixels[i * rect.width() + k] = pixel_stripe_color; |
138 } | 138 } |
139 } | 139 } |
140 ResourceProvider::ResourceId resource = resource_provider->CreateResource( | 140 ResourceId resource = resource_provider->CreateResource( |
141 rect.size(), GL_CLAMP_TO_EDGE, ResourceProvider::TEXTURE_HINT_IMMUTABLE, | 141 rect.size(), GL_CLAMP_TO_EDGE, ResourceProvider::TEXTURE_HINT_IMMUTABLE, |
142 RGBA_8888); | 142 RGBA_8888); |
143 resource_provider->SetPixels(resource, | 143 resource_provider->SetPixels(resource, |
144 reinterpret_cast<uint8_t*>(&pixels.front()), | 144 reinterpret_cast<uint8_t*>(&pixels.front()), |
145 rect, rect, gfx::Vector2d()); | 145 rect, rect, gfx::Vector2d()); |
146 | 146 |
147 float vertex_opacity[4] = {1.0f, 1.0f, 1.0f, 1.0f}; | 147 float vertex_opacity[4] = {1.0f, 1.0f, 1.0f, 1.0f}; |
148 const gfx::PointF uv_top_left(0.0f, 0.0f); | 148 const gfx::PointF uv_top_left(0.0f, 0.0f); |
149 const gfx::PointF uv_bottom_right(1.0f, 1.0f); | 149 const gfx::PointF uv_bottom_right(1.0f, 1.0f); |
150 const bool flipped = false; | 150 const bool flipped = false; |
(...skipping 14 matching lines...) Expand all Loading... |
165 RenderPass* render_pass) { | 165 RenderPass* render_pass) { |
166 SkPMColor pixel_color = premultiplied_alpha ? | 166 SkPMColor pixel_color = premultiplied_alpha ? |
167 SkPreMultiplyColor(texel_color) : | 167 SkPreMultiplyColor(texel_color) : |
168 SkPackARGB32NoCheck(SkColorGetA(texel_color), | 168 SkPackARGB32NoCheck(SkColorGetA(texel_color), |
169 SkColorGetR(texel_color), | 169 SkColorGetR(texel_color), |
170 SkColorGetG(texel_color), | 170 SkColorGetG(texel_color), |
171 SkColorGetB(texel_color)); | 171 SkColorGetB(texel_color)); |
172 size_t num_pixels = static_cast<size_t>(rect.width()) * rect.height(); | 172 size_t num_pixels = static_cast<size_t>(rect.width()) * rect.height(); |
173 std::vector<uint32_t> pixels(num_pixels, pixel_color); | 173 std::vector<uint32_t> pixels(num_pixels, pixel_color); |
174 | 174 |
175 ResourceProvider::ResourceId resource = resource_provider->CreateResource( | 175 ResourceId resource = resource_provider->CreateResource( |
176 rect.size(), GL_CLAMP_TO_EDGE, ResourceProvider::TEXTURE_HINT_IMMUTABLE, | 176 rect.size(), GL_CLAMP_TO_EDGE, ResourceProvider::TEXTURE_HINT_IMMUTABLE, |
177 RGBA_8888); | 177 RGBA_8888); |
178 resource_provider->CopyToResource( | 178 resource_provider->CopyToResource( |
179 resource, reinterpret_cast<uint8_t*>(&pixels.front()), rect.size()); | 179 resource, reinterpret_cast<uint8_t*>(&pixels.front()), rect.size()); |
180 | 180 |
181 float vertex_opacity[4] = {1.0f, 1.0f, 1.0f, 1.0f}; | 181 float vertex_opacity[4] = {1.0f, 1.0f, 1.0f, 1.0f}; |
182 | 182 |
183 const gfx::PointF uv_top_left(0.0f, 0.0f); | 183 const gfx::PointF uv_top_left(0.0f, 0.0f); |
184 const gfx::PointF uv_bottom_right(1.0f, 1.0f); | 184 const gfx::PointF uv_bottom_right(1.0f, 1.0f); |
185 const bool flipped = false; | 185 const bool flipped = false; |
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
217 VideoFrameExternalResources resources = | 217 VideoFrameExternalResources resources = |
218 video_resource_updater->CreateExternalResourcesFromVideoFrame( | 218 video_resource_updater->CreateExternalResourcesFromVideoFrame( |
219 video_frame); | 219 video_frame); |
220 | 220 |
221 EXPECT_EQ(VideoFrameExternalResources::YUV_RESOURCE, resources.type); | 221 EXPECT_EQ(VideoFrameExternalResources::YUV_RESOURCE, resources.type); |
222 EXPECT_EQ(media::VideoFrame::NumPlanes(video_frame->format()), | 222 EXPECT_EQ(media::VideoFrame::NumPlanes(video_frame->format()), |
223 resources.mailboxes.size()); | 223 resources.mailboxes.size()); |
224 EXPECT_EQ(media::VideoFrame::NumPlanes(video_frame->format()), | 224 EXPECT_EQ(media::VideoFrame::NumPlanes(video_frame->format()), |
225 resources.release_callbacks.size()); | 225 resources.release_callbacks.size()); |
226 | 226 |
227 ResourceProvider::ResourceId y_resource = | 227 ResourceId y_resource = resource_provider->CreateResourceFromTextureMailbox( |
228 resource_provider->CreateResourceFromTextureMailbox( | 228 resources.mailboxes[media::VideoFrame::kYPlane], |
229 resources.mailboxes[media::VideoFrame::kYPlane], | 229 SingleReleaseCallbackImpl::Create( |
230 SingleReleaseCallbackImpl::Create( | 230 resources.release_callbacks[media::VideoFrame::kYPlane])); |
231 resources.release_callbacks[media::VideoFrame::kYPlane])); | 231 ResourceId u_resource = resource_provider->CreateResourceFromTextureMailbox( |
232 ResourceProvider::ResourceId u_resource = | 232 resources.mailboxes[media::VideoFrame::kUPlane], |
233 resource_provider->CreateResourceFromTextureMailbox( | 233 SingleReleaseCallbackImpl::Create( |
234 resources.mailboxes[media::VideoFrame::kUPlane], | 234 resources.release_callbacks[media::VideoFrame::kUPlane])); |
235 SingleReleaseCallbackImpl::Create( | 235 ResourceId v_resource = resource_provider->CreateResourceFromTextureMailbox( |
236 resources.release_callbacks[media::VideoFrame::kUPlane])); | 236 resources.mailboxes[media::VideoFrame::kVPlane], |
237 ResourceProvider::ResourceId v_resource = | 237 SingleReleaseCallbackImpl::Create( |
238 resource_provider->CreateResourceFromTextureMailbox( | 238 resources.release_callbacks[media::VideoFrame::kVPlane])); |
239 resources.mailboxes[media::VideoFrame::kVPlane], | 239 ResourceId a_resource = 0; |
240 SingleReleaseCallbackImpl::Create( | |
241 resources.release_callbacks[media::VideoFrame::kVPlane])); | |
242 ResourceProvider::ResourceId a_resource = 0; | |
243 if (with_alpha) { | 240 if (with_alpha) { |
244 a_resource = resource_provider->CreateResourceFromTextureMailbox( | 241 a_resource = resource_provider->CreateResourceFromTextureMailbox( |
245 resources.mailboxes[media::VideoFrame::kAPlane], | 242 resources.mailboxes[media::VideoFrame::kAPlane], |
246 SingleReleaseCallbackImpl::Create( | 243 SingleReleaseCallbackImpl::Create( |
247 resources.release_callbacks[media::VideoFrame::kAPlane])); | 244 resources.release_callbacks[media::VideoFrame::kAPlane])); |
248 } | 245 } |
249 | 246 |
250 const gfx::Size ya_tex_size = video_frame->coded_size(); | 247 const gfx::Size ya_tex_size = video_frame->coded_size(); |
251 const gfx::Size uv_tex_size = media::VideoFrame::PlaneSize( | 248 const gfx::Size uv_tex_size = media::VideoFrame::PlaneSize( |
252 video_frame->format(), media::VideoFrame::kUPlane, | 249 video_frame->format(), media::VideoFrame::kUPlane, |
(...skipping 1419 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1672 canvas.clear(SK_ColorTRANSPARENT); | 1669 canvas.clear(SK_ColorTRANSPARENT); |
1673 gfx::Rect rect = mask_rect; | 1670 gfx::Rect rect = mask_rect; |
1674 while (!rect.IsEmpty()) { | 1671 while (!rect.IsEmpty()) { |
1675 rect.Inset(6, 6, 4, 4); | 1672 rect.Inset(6, 6, 4, 4); |
1676 canvas.drawRect( | 1673 canvas.drawRect( |
1677 SkRect::MakeXYWH(rect.x(), rect.y(), rect.width(), rect.height()), | 1674 SkRect::MakeXYWH(rect.x(), rect.y(), rect.width(), rect.height()), |
1678 paint); | 1675 paint); |
1679 rect.Inset(6, 6, 4, 4); | 1676 rect.Inset(6, 6, 4, 4); |
1680 } | 1677 } |
1681 | 1678 |
1682 ResourceProvider::ResourceId mask_resource_id = | 1679 ResourceId mask_resource_id = this->resource_provider_->CreateResource( |
1683 this->resource_provider_->CreateResource( | 1680 mask_rect.size(), GL_CLAMP_TO_EDGE, |
1684 mask_rect.size(), GL_CLAMP_TO_EDGE, | 1681 ResourceProvider::TEXTURE_HINT_IMMUTABLE, RGBA_8888); |
1685 ResourceProvider::TEXTURE_HINT_IMMUTABLE, RGBA_8888); | |
1686 { | 1682 { |
1687 SkAutoLockPixels lock(bitmap); | 1683 SkAutoLockPixels lock(bitmap); |
1688 this->resource_provider_->CopyToResource( | 1684 this->resource_provider_->CopyToResource( |
1689 mask_resource_id, reinterpret_cast<uint8_t*>(bitmap.getPixels()), | 1685 mask_resource_id, reinterpret_cast<uint8_t*>(bitmap.getPixels()), |
1690 mask_rect.size()); | 1686 mask_rect.size()); |
1691 } | 1687 } |
1692 | 1688 |
1693 // This RenderPassDrawQuad does not include the full |viewport_rect| which is | 1689 // This RenderPassDrawQuad does not include the full |viewport_rect| which is |
1694 // the size of the child render pass. | 1690 // the size of the child render pass. |
1695 gfx::Rect sub_rect = gfx::Rect(50, 50, 200, 100); | 1691 gfx::Rect sub_rect = gfx::Rect(50, 50, 200, 100); |
(...skipping 761 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2457 { | 2453 { |
2458 SkAutoLockPixels lock(bitmap); | 2454 SkAutoLockPixels lock(bitmap); |
2459 SkCanvas canvas(bitmap); | 2455 SkCanvas canvas(bitmap); |
2460 canvas.drawPoint(0, 0, SK_ColorGREEN); | 2456 canvas.drawPoint(0, 0, SK_ColorGREEN); |
2461 canvas.drawPoint(0, 1, SK_ColorBLUE); | 2457 canvas.drawPoint(0, 1, SK_ColorBLUE); |
2462 canvas.drawPoint(1, 0, SK_ColorBLUE); | 2458 canvas.drawPoint(1, 0, SK_ColorBLUE); |
2463 canvas.drawPoint(1, 1, SK_ColorGREEN); | 2459 canvas.drawPoint(1, 1, SK_ColorGREEN); |
2464 } | 2460 } |
2465 | 2461 |
2466 gfx::Size tile_size(2, 2); | 2462 gfx::Size tile_size(2, 2); |
2467 ResourceProvider::ResourceId resource = | 2463 ResourceId resource = this->resource_provider_->CreateResource( |
2468 this->resource_provider_->CreateResource( | 2464 tile_size, GL_CLAMP_TO_EDGE, ResourceProvider::TEXTURE_HINT_IMMUTABLE, |
2469 tile_size, GL_CLAMP_TO_EDGE, ResourceProvider::TEXTURE_HINT_IMMUTABLE, | 2465 RGBA_8888); |
2470 RGBA_8888); | |
2471 | 2466 |
2472 { | 2467 { |
2473 SkAutoLockPixels lock(bitmap); | 2468 SkAutoLockPixels lock(bitmap); |
2474 this->resource_provider_->CopyToResource( | 2469 this->resource_provider_->CopyToResource( |
2475 resource, static_cast<uint8_t*>(bitmap.getPixels()), tile_size); | 2470 resource, static_cast<uint8_t*>(bitmap.getPixels()), tile_size); |
2476 } | 2471 } |
2477 | 2472 |
2478 RenderPassId id(1, 1); | 2473 RenderPassId id(1, 1); |
2479 gfx::Transform transform_to_root; | 2474 gfx::Transform transform_to_root; |
2480 scoped_ptr<RenderPass> pass = | 2475 scoped_ptr<RenderPass> pass = |
(...skipping 28 matching lines...) Expand all Loading... |
2509 { | 2504 { |
2510 SkAutoLockPixels lock(bitmap); | 2505 SkAutoLockPixels lock(bitmap); |
2511 SkCanvas canvas(bitmap); | 2506 SkCanvas canvas(bitmap); |
2512 canvas.drawPoint(0, 0, SK_ColorGREEN); | 2507 canvas.drawPoint(0, 0, SK_ColorGREEN); |
2513 canvas.drawPoint(0, 1, SK_ColorBLUE); | 2508 canvas.drawPoint(0, 1, SK_ColorBLUE); |
2514 canvas.drawPoint(1, 0, SK_ColorBLUE); | 2509 canvas.drawPoint(1, 0, SK_ColorBLUE); |
2515 canvas.drawPoint(1, 1, SK_ColorGREEN); | 2510 canvas.drawPoint(1, 1, SK_ColorGREEN); |
2516 } | 2511 } |
2517 | 2512 |
2518 gfx::Size tile_size(2, 2); | 2513 gfx::Size tile_size(2, 2); |
2519 ResourceProvider::ResourceId resource = | 2514 ResourceId resource = this->resource_provider_->CreateResource( |
2520 this->resource_provider_->CreateResource( | 2515 tile_size, GL_CLAMP_TO_EDGE, ResourceProvider::TEXTURE_HINT_IMMUTABLE, |
2521 tile_size, GL_CLAMP_TO_EDGE, ResourceProvider::TEXTURE_HINT_IMMUTABLE, | 2516 RGBA_8888); |
2522 RGBA_8888); | |
2523 | 2517 |
2524 { | 2518 { |
2525 SkAutoLockPixels lock(bitmap); | 2519 SkAutoLockPixels lock(bitmap); |
2526 this->resource_provider_->CopyToResource( | 2520 this->resource_provider_->CopyToResource( |
2527 resource, static_cast<uint8_t*>(bitmap.getPixels()), tile_size); | 2521 resource, static_cast<uint8_t*>(bitmap.getPixels()), tile_size); |
2528 } | 2522 } |
2529 | 2523 |
2530 RenderPassId id(1, 1); | 2524 RenderPassId id(1, 1); |
2531 gfx::Transform transform_to_root; | 2525 gfx::Transform transform_to_root; |
2532 scoped_ptr<RenderPass> pass = | 2526 scoped_ptr<RenderPass> pass = |
(...skipping 29 matching lines...) Expand all Loading... |
2562 { | 2556 { |
2563 SkAutoLockPixels lock(bitmap); | 2557 SkAutoLockPixels lock(bitmap); |
2564 SkCanvas canvas(bitmap); | 2558 SkCanvas canvas(bitmap); |
2565 canvas.drawPoint(0, 0, SK_ColorGREEN); | 2559 canvas.drawPoint(0, 0, SK_ColorGREEN); |
2566 canvas.drawPoint(0, 1, SK_ColorBLUE); | 2560 canvas.drawPoint(0, 1, SK_ColorBLUE); |
2567 canvas.drawPoint(1, 0, SK_ColorBLUE); | 2561 canvas.drawPoint(1, 0, SK_ColorBLUE); |
2568 canvas.drawPoint(1, 1, SK_ColorGREEN); | 2562 canvas.drawPoint(1, 1, SK_ColorGREEN); |
2569 } | 2563 } |
2570 | 2564 |
2571 gfx::Size tile_size(2, 2); | 2565 gfx::Size tile_size(2, 2); |
2572 ResourceProvider::ResourceId resource = | 2566 ResourceId resource = this->resource_provider_->CreateResource( |
2573 this->resource_provider_->CreateResource( | 2567 tile_size, GL_CLAMP_TO_EDGE, ResourceProvider::TEXTURE_HINT_IMMUTABLE, |
2574 tile_size, GL_CLAMP_TO_EDGE, ResourceProvider::TEXTURE_HINT_IMMUTABLE, | 2568 RGBA_8888); |
2575 RGBA_8888); | |
2576 | 2569 |
2577 { | 2570 { |
2578 SkAutoLockPixels lock(bitmap); | 2571 SkAutoLockPixels lock(bitmap); |
2579 this->resource_provider_->CopyToResource( | 2572 this->resource_provider_->CopyToResource( |
2580 resource, static_cast<uint8_t*>(bitmap.getPixels()), tile_size); | 2573 resource, static_cast<uint8_t*>(bitmap.getPixels()), tile_size); |
2581 } | 2574 } |
2582 | 2575 |
2583 RenderPassId id(1, 1); | 2576 RenderPassId id(1, 1); |
2584 gfx::Transform transform_to_root; | 2577 gfx::Transform transform_to_root; |
2585 scoped_ptr<RenderPass> pass = | 2578 scoped_ptr<RenderPass> pass = |
(...skipping 336 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2922 SkPreMultiplyColor(SkColorSetARGB(255, 0, 128, 0)), | 2915 SkPreMultiplyColor(SkColorSetARGB(255, 0, 128, 0)), |
2923 SkPreMultiplyColor(SkColorSetARGB(255, 0, 64, 0)), | 2916 SkPreMultiplyColor(SkColorSetARGB(255, 0, 64, 0)), |
2924 SkPreMultiplyColor(SkColorSetARGB(255, 0, 0, 0)), | 2917 SkPreMultiplyColor(SkColorSetARGB(255, 0, 0, 0)), |
2925 }; | 2918 }; |
2926 uint32_t pixels[16] = { | 2919 uint32_t pixels[16] = { |
2927 colors[0], colors[0], colors[1], colors[1], | 2920 colors[0], colors[0], colors[1], colors[1], |
2928 colors[0], colors[0], colors[1], colors[1], | 2921 colors[0], colors[0], colors[1], colors[1], |
2929 colors[2], colors[2], colors[3], colors[3], | 2922 colors[2], colors[2], colors[3], colors[3], |
2930 colors[2], colors[2], colors[3], colors[3], | 2923 colors[2], colors[2], colors[3], colors[3], |
2931 }; | 2924 }; |
2932 ResourceProvider::ResourceId resource = | 2925 ResourceId resource = this->resource_provider_->CreateResource( |
2933 this->resource_provider_->CreateResource( | 2926 texture_size, GL_REPEAT, ResourceProvider::TEXTURE_HINT_IMMUTABLE, |
2934 texture_size, GL_REPEAT, ResourceProvider::TEXTURE_HINT_IMMUTABLE, | 2927 RGBA_8888); |
2935 RGBA_8888); | |
2936 this->resource_provider_->CopyToResource( | 2928 this->resource_provider_->CopyToResource( |
2937 resource, reinterpret_cast<uint8_t*>(pixels), texture_size); | 2929 resource, reinterpret_cast<uint8_t*>(pixels), texture_size); |
2938 | 2930 |
2939 float vertex_opacity[4] = {1.0f, 1.0f, 1.0f, 1.0f}; | 2931 float vertex_opacity[4] = {1.0f, 1.0f, 1.0f, 1.0f}; |
2940 TextureDrawQuad* texture_quad = | 2932 TextureDrawQuad* texture_quad = |
2941 pass->CreateAndAppendDrawQuad<TextureDrawQuad>(); | 2933 pass->CreateAndAppendDrawQuad<TextureDrawQuad>(); |
2942 texture_quad->SetNew( | 2934 texture_quad->SetNew( |
2943 shared_state, gfx::Rect(this->device_viewport_size_), gfx::Rect(), | 2935 shared_state, gfx::Rect(this->device_viewport_size_), gfx::Rect(), |
2944 gfx::Rect(this->device_viewport_size_), resource, | 2936 gfx::Rect(this->device_viewport_size_), resource, |
2945 true, // premultiplied_alpha | 2937 true, // premultiplied_alpha |
(...skipping 114 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3060 ? FILE_PATH_LITERAL("four_blue_green_checkers.png") | 3052 ? FILE_PATH_LITERAL("four_blue_green_checkers.png") |
3061 : FILE_PATH_LITERAL("checkers_big.png"); | 3053 : FILE_PATH_LITERAL("checkers_big.png"); |
3062 EXPECT_TRUE(this->RunPixelTest(&pass_list, base::FilePath(path), | 3054 EXPECT_TRUE(this->RunPixelTest(&pass_list, base::FilePath(path), |
3063 ExactPixelComparator(true))); | 3055 ExactPixelComparator(true))); |
3064 } | 3056 } |
3065 | 3057 |
3066 #endif // !defined(OS_ANDROID) | 3058 #endif // !defined(OS_ANDROID) |
3067 | 3059 |
3068 } // namespace | 3060 } // namespace |
3069 } // namespace cc | 3061 } // namespace cc |
OLD | NEW |