Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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 "cc/quads/render_pass.h" | 5 #include "cc/quads/render_pass.h" |
| 6 #include "cc/quads/solid_color_draw_quad.h" | 6 #include "cc/quads/solid_color_draw_quad.h" |
| 7 #include "cc/quads/surface_draw_quad.h" | 7 #include "cc/quads/surface_draw_quad.h" |
| 8 #include "cc/quads/texture_draw_quad.h" | 8 #include "cc/quads/texture_draw_quad.h" |
| 9 #include "gpu/command_buffer/common/mailbox.h" | 9 #include "gpu/command_buffer/common/mailbox.h" |
| 10 #include "gpu/command_buffer/common/mailbox_holder.h" | 10 #include "gpu/command_buffer/common/mailbox_holder.h" |
| (...skipping 23 matching lines...) Expand all Loading... | |
| 34 | 34 |
| 35 TEST(SurfaceLibTest, Color) { | 35 TEST(SurfaceLibTest, Color) { |
| 36 SkColor arbitrary_color = SK_ColorMAGENTA; | 36 SkColor arbitrary_color = SK_ColorMAGENTA; |
| 37 SkColor round_trip = surfaces::Color::From(arbitrary_color).To<SkColor>(); | 37 SkColor round_trip = surfaces::Color::From(arbitrary_color).To<SkColor>(); |
| 38 EXPECT_EQ(arbitrary_color, round_trip); | 38 EXPECT_EQ(arbitrary_color, round_trip); |
| 39 } | 39 } |
| 40 | 40 |
| 41 class SurfaceLibQuadTest : public testing::Test { | 41 class SurfaceLibQuadTest : public testing::Test { |
| 42 public: | 42 public: |
| 43 SurfaceLibQuadTest() | 43 SurfaceLibQuadTest() |
| 44 : sqs(new cc::SharedQuadState), | 44 : rect(5, 7, 13, 19), |
| 45 rect(5, 7, 13, 19), | |
| 46 opaque_rect(rect), | 45 opaque_rect(rect), |
| 47 visible_rect(9, 11, 5, 7), | 46 visible_rect(9, 11, 5, 7), |
| 48 needs_blending(false) {} | 47 needs_blending(false) {} |
| 49 | 48 |
| 50 protected: | 49 protected: |
| 51 scoped_ptr<cc::SharedQuadState> sqs; | |
| 52 gfx::Rect rect; | 50 gfx::Rect rect; |
| 53 gfx::Rect opaque_rect; | 51 gfx::Rect opaque_rect; |
| 54 gfx::Rect visible_rect; | 52 gfx::Rect visible_rect; |
| 55 bool needs_blending; | 53 bool needs_blending; |
| 56 }; | 54 }; |
| 57 | 55 |
| 58 TEST_F(SurfaceLibQuadTest, ColorQuad) { | 56 TEST_F(SurfaceLibQuadTest, ColorQuad) { |
| 59 scoped_ptr<cc::SolidColorDrawQuad> color_quad(new cc::SolidColorDrawQuad); | 57 scoped_ptr<cc::RenderPass> render_pass = cc::RenderPass::Create(); |
| 58 cc::SharedQuadState* sqs = render_pass->CreateAndAppendSharedQuadState(); | |
| 59 cc::SolidColorDrawQuad* color_quad = | |
| 60 render_pass->CreateAndAppendDrawQuad<cc::SolidColorDrawQuad>(); | |
| 60 SkColor arbitrary_color = SK_ColorGREEN; | 61 SkColor arbitrary_color = SK_ColorGREEN; |
| 61 bool force_anti_aliasing_off = true; | 62 bool force_anti_aliasing_off = true; |
| 62 color_quad->SetAll(sqs.get(), | 63 color_quad->SetAll(sqs, |
| 63 rect, | 64 rect, |
| 64 opaque_rect, | 65 opaque_rect, |
| 65 visible_rect, | 66 visible_rect, |
| 66 needs_blending, | 67 needs_blending, |
| 67 arbitrary_color, | 68 arbitrary_color, |
| 68 force_anti_aliasing_off); | 69 force_anti_aliasing_off); |
| 69 | 70 |
| 70 cc::DrawQuad* base_ptr = static_cast<cc::DrawQuad*>(color_quad.get()); | 71 surfaces::QuadPtr mojo_quad = |
| 71 surfaces::QuadPtr mojo_quad = surfaces::Quad::From(*base_ptr); | 72 surfaces::Quad::From(*(render_pass->quad_list.back())); |
| 72 ASSERT_FALSE(mojo_quad.is_null()); | 73 ASSERT_FALSE(mojo_quad.is_null()); |
| 73 EXPECT_EQ(surfaces::MATERIAL_SOLID_COLOR, mojo_quad->material); | 74 EXPECT_EQ(surfaces::MATERIAL_SOLID_COLOR, mojo_quad->material); |
| 74 EXPECT_EQ(Rect::From(rect), mojo_quad->rect); | 75 EXPECT_EQ(Rect::From(rect), mojo_quad->rect); |
| 75 EXPECT_EQ(Rect::From(opaque_rect), mojo_quad->opaque_rect); | 76 EXPECT_EQ(Rect::From(opaque_rect), mojo_quad->opaque_rect); |
| 76 EXPECT_EQ(Rect::From(visible_rect), mojo_quad->visible_rect); | 77 EXPECT_EQ(Rect::From(visible_rect), mojo_quad->visible_rect); |
| 77 EXPECT_EQ(needs_blending, mojo_quad->needs_blending); | 78 EXPECT_EQ(needs_blending, mojo_quad->needs_blending); |
| 78 ASSERT_TRUE(mojo_quad->solid_color_quad_state); | 79 ASSERT_TRUE(mojo_quad->solid_color_quad_state); |
| 79 surfaces::SolidColorQuadStatePtr& mojo_color_state = | 80 surfaces::SolidColorQuadStatePtr& mojo_color_state = |
| 80 mojo_quad->solid_color_quad_state; | 81 mojo_quad->solid_color_quad_state; |
| 81 EXPECT_EQ(surfaces::Color::From(arbitrary_color), mojo_color_state->color); | 82 EXPECT_EQ(surfaces::Color::From(arbitrary_color), mojo_color_state->color); |
| 82 EXPECT_EQ(force_anti_aliasing_off, mojo_color_state->force_anti_aliasing_off); | 83 EXPECT_EQ(force_anti_aliasing_off, mojo_color_state->force_anti_aliasing_off); |
| 83 | |
| 84 scoped_ptr<cc::DrawQuad> round_trip_quad = | |
| 85 ConvertTo(mojo_quad.Pass(), sqs.get()); | |
| 86 EXPECT_EQ(rect, round_trip_quad->rect); | |
| 87 EXPECT_EQ(opaque_rect, round_trip_quad->opaque_rect); | |
| 88 EXPECT_EQ(visible_rect, round_trip_quad->visible_rect); | |
| 89 EXPECT_EQ(needs_blending, round_trip_quad->needs_blending); | |
| 90 ASSERT_EQ(cc::DrawQuad::SOLID_COLOR, round_trip_quad->material); | |
| 91 const cc::SolidColorDrawQuad* round_trip_color_quad = | |
| 92 cc::SolidColorDrawQuad::MaterialCast(round_trip_quad.get()); | |
| 93 EXPECT_EQ(arbitrary_color, round_trip_color_quad->color); | |
| 94 EXPECT_EQ(force_anti_aliasing_off, | |
| 95 round_trip_color_quad->force_anti_aliasing_off); | |
| 96 } | 84 } |
| 97 | 85 |
| 98 TEST_F(SurfaceLibQuadTest, SurfaceQuad) { | 86 TEST_F(SurfaceLibQuadTest, SurfaceQuad) { |
| 99 scoped_ptr<cc::SurfaceDrawQuad> surface_quad(new cc::SurfaceDrawQuad); | 87 scoped_ptr<cc::RenderPass> render_pass = cc::RenderPass::Create(); |
| 88 cc::SharedQuadState* sqs = render_pass->CreateAndAppendSharedQuadState(); | |
| 89 cc::SurfaceDrawQuad* surface_quad = | |
| 90 render_pass->CreateAndAppendDrawQuad<cc::SurfaceDrawQuad>(); | |
| 100 cc::SurfaceId arbitrary_id(5); | 91 cc::SurfaceId arbitrary_id(5); |
| 101 surface_quad->SetAll( | 92 surface_quad->SetAll( |
| 102 sqs.get(), rect, opaque_rect, visible_rect, needs_blending, arbitrary_id); | 93 sqs, rect, opaque_rect, visible_rect, needs_blending, arbitrary_id); |
| 103 cc::DrawQuad* base_ptr = static_cast<cc::DrawQuad*>(surface_quad.get()); | 94 |
| 104 surfaces::QuadPtr mojo_quad = surfaces::Quad::From(*base_ptr); | 95 surfaces::QuadPtr mojo_quad = |
| 96 surfaces::Quad::From(*(render_pass->quad_list.back())); | |
| 105 ASSERT_FALSE(mojo_quad.is_null()); | 97 ASSERT_FALSE(mojo_quad.is_null()); |
| 106 EXPECT_EQ(surfaces::MATERIAL_SURFACE_CONTENT, mojo_quad->material); | 98 EXPECT_EQ(surfaces::MATERIAL_SURFACE_CONTENT, mojo_quad->material); |
| 107 ASSERT_TRUE(mojo_quad->surface_quad_state); | 99 ASSERT_TRUE(mojo_quad->surface_quad_state); |
| 108 surfaces::SurfaceQuadStatePtr& mojo_surface_state = | 100 surfaces::SurfaceQuadStatePtr& mojo_surface_state = |
| 109 mojo_quad->surface_quad_state; | 101 mojo_quad->surface_quad_state; |
| 110 EXPECT_EQ(surfaces::SurfaceId::From(arbitrary_id), | 102 EXPECT_EQ(surfaces::SurfaceId::From(arbitrary_id), |
| 111 mojo_surface_state->surface); | 103 mojo_surface_state->surface); |
| 112 | |
| 113 scoped_ptr<cc::DrawQuad> round_trip_quad = | |
| 114 ConvertTo(mojo_quad.Pass(), sqs.get()); | |
| 115 ASSERT_EQ(cc::DrawQuad::SURFACE_CONTENT, round_trip_quad->material); | |
| 116 const cc::SurfaceDrawQuad* round_trip_surface_quad = | |
| 117 cc::SurfaceDrawQuad::MaterialCast(round_trip_quad.get()); | |
| 118 EXPECT_EQ(arbitrary_id, round_trip_surface_quad->surface_id); | |
| 119 } | 104 } |
| 120 | 105 |
| 121 TEST_F(SurfaceLibQuadTest, TextureQuad) { | 106 TEST_F(SurfaceLibQuadTest, TextureQuad) { |
| 122 scoped_ptr<cc::TextureDrawQuad> texture_quad(new cc::TextureDrawQuad); | 107 scoped_ptr<cc::RenderPass> render_pass = cc::RenderPass::Create(); |
| 108 cc::SharedQuadState* sqs = render_pass->CreateAndAppendSharedQuadState(); | |
|
jamesr
2014/07/17 20:25:24
nit: you could probably move these two lines into
| |
| 109 cc::TextureDrawQuad* texture_quad = | |
| 110 render_pass->CreateAndAppendDrawQuad<cc::TextureDrawQuad>(); | |
| 123 unsigned resource_id = 9; | 111 unsigned resource_id = 9; |
| 124 bool premultiplied_alpha = true; | 112 bool premultiplied_alpha = true; |
| 125 gfx::PointF uv_top_left(1.7f, 2.1f); | 113 gfx::PointF uv_top_left(1.7f, 2.1f); |
| 126 gfx::PointF uv_bottom_right(-7.f, 16.3f); | 114 gfx::PointF uv_bottom_right(-7.f, 16.3f); |
| 127 SkColor background_color = SK_ColorYELLOW; | 115 SkColor background_color = SK_ColorYELLOW; |
| 128 float vertex_opacity[4] = {0.1f, 0.5f, 0.4f, 0.8f}; | 116 float vertex_opacity[4] = {0.1f, 0.5f, 0.4f, 0.8f}; |
| 129 bool flipped = false; | 117 bool flipped = false; |
| 130 texture_quad->SetAll(sqs.get(), | 118 texture_quad->SetAll(sqs, |
| 131 rect, | 119 rect, |
| 132 opaque_rect, | 120 opaque_rect, |
| 133 visible_rect, | 121 visible_rect, |
| 134 needs_blending, | 122 needs_blending, |
| 135 resource_id, | 123 resource_id, |
| 136 premultiplied_alpha, | 124 premultiplied_alpha, |
| 137 uv_top_left, | 125 uv_top_left, |
| 138 uv_bottom_right, | 126 uv_bottom_right, |
| 139 background_color, | 127 background_color, |
| 140 vertex_opacity, | 128 vertex_opacity, |
| 141 flipped); | 129 flipped); |
| 142 | 130 |
| 143 cc::DrawQuad* base_ptr = static_cast<cc::DrawQuad*>(texture_quad.get()); | 131 surfaces::QuadPtr mojo_quad = |
| 144 surfaces::QuadPtr mojo_quad = surfaces::Quad::From(*base_ptr); | 132 surfaces::Quad::From(*(render_pass->quad_list.back())); |
| 145 ASSERT_FALSE(mojo_quad.is_null()); | 133 ASSERT_FALSE(mojo_quad.is_null()); |
| 146 EXPECT_EQ(surfaces::MATERIAL_TEXTURE_CONTENT, mojo_quad->material); | 134 EXPECT_EQ(surfaces::MATERIAL_TEXTURE_CONTENT, mojo_quad->material); |
| 147 ASSERT_TRUE(mojo_quad->texture_quad_state); | 135 ASSERT_TRUE(mojo_quad->texture_quad_state); |
| 148 surfaces::TextureQuadStatePtr& mojo_texture_state = | 136 surfaces::TextureQuadStatePtr& mojo_texture_state = |
| 149 mojo_quad->texture_quad_state; | 137 mojo_quad->texture_quad_state; |
| 150 EXPECT_EQ(resource_id, mojo_texture_state->resource_id); | 138 EXPECT_EQ(resource_id, mojo_texture_state->resource_id); |
| 151 EXPECT_EQ(premultiplied_alpha, mojo_texture_state->premultiplied_alpha); | 139 EXPECT_EQ(premultiplied_alpha, mojo_texture_state->premultiplied_alpha); |
| 152 EXPECT_EQ(PointF::From(uv_top_left), mojo_texture_state->uv_top_left); | 140 EXPECT_EQ(PointF::From(uv_top_left), mojo_texture_state->uv_top_left); |
| 153 EXPECT_EQ(PointF::From(uv_bottom_right), mojo_texture_state->uv_bottom_right); | 141 EXPECT_EQ(PointF::From(uv_bottom_right), mojo_texture_state->uv_bottom_right); |
| 154 EXPECT_EQ(surfaces::Color::From(background_color), | 142 EXPECT_EQ(surfaces::Color::From(background_color), |
| 155 mojo_texture_state->background_color); | 143 mojo_texture_state->background_color); |
| 156 for (size_t i = 0; i < 4; ++i) { | 144 for (size_t i = 0; i < 4; ++i) { |
| 157 EXPECT_EQ(vertex_opacity[i], mojo_texture_state->vertex_opacity[i]) << i; | 145 EXPECT_EQ(vertex_opacity[i], mojo_texture_state->vertex_opacity[i]) << i; |
| 158 } | 146 } |
| 159 EXPECT_EQ(flipped, mojo_texture_state->flipped); | 147 EXPECT_EQ(flipped, mojo_texture_state->flipped); |
| 160 | |
| 161 scoped_ptr<cc::DrawQuad> round_trip_quad = | |
| 162 ConvertTo(mojo_quad.Pass(), sqs.get()); | |
| 163 ASSERT_EQ(cc::DrawQuad::TEXTURE_CONTENT, round_trip_quad->material); | |
| 164 const cc::TextureDrawQuad* round_trip_surface_quad = | |
| 165 cc::TextureDrawQuad::MaterialCast(round_trip_quad.get()); | |
| 166 EXPECT_EQ(resource_id, round_trip_surface_quad->resource_id); | |
| 167 EXPECT_EQ(premultiplied_alpha, round_trip_surface_quad->premultiplied_alpha); | |
| 168 EXPECT_EQ(uv_top_left, round_trip_surface_quad->uv_top_left); | |
| 169 EXPECT_EQ(uv_bottom_right, round_trip_surface_quad->uv_bottom_right); | |
| 170 EXPECT_EQ(background_color, round_trip_surface_quad->background_color); | |
| 171 for (size_t i = 0; i < 4; ++i) { | |
| 172 EXPECT_EQ(vertex_opacity[i], round_trip_surface_quad->vertex_opacity[i]) | |
| 173 << i; | |
| 174 } | |
| 175 EXPECT_EQ(flipped, round_trip_surface_quad->flipped); | |
| 176 } | 148 } |
| 177 | 149 |
| 178 TEST(SurfaceLibTest, SharedQuadState) { | 150 TEST(SurfaceLibTest, SharedQuadState) { |
| 179 gfx::Transform content_to_target_transform; | 151 gfx::Transform content_to_target_transform; |
| 180 content_to_target_transform.Scale3d(0.3f, 0.7f, 0.9f); | 152 content_to_target_transform.Scale3d(0.3f, 0.7f, 0.9f); |
| 181 gfx::Size content_bounds(57, 39); | 153 gfx::Size content_bounds(57, 39); |
| 182 gfx::Rect visible_content_rect(3, 7, 28, 42); | 154 gfx::Rect visible_content_rect(3, 7, 28, 42); |
| 183 gfx::Rect clip_rect(9, 12, 21, 31); | 155 gfx::Rect clip_rect(9, 12, 21, 31); |
| 184 bool is_clipped = true; | 156 bool is_clipped = true; |
| 185 float opacity = 0.65f; | 157 float opacity = 0.65f; |
| 186 int sorting_context_id = 13; | 158 int sorting_context_id = 13; |
| 187 SkXfermode::Mode blend_mode = SkXfermode::kSrcOver_Mode; | 159 SkXfermode::Mode blend_mode = SkXfermode::kSrcOver_Mode; |
| 188 scoped_ptr<cc::SharedQuadState> sqs(new cc::SharedQuadState); | 160 scoped_ptr<cc::RenderPass> render_pass = cc::RenderPass::Create(); |
| 161 cc::SharedQuadState* sqs = render_pass->CreateAndAppendSharedQuadState(); | |
| 189 sqs->SetAll(content_to_target_transform, | 162 sqs->SetAll(content_to_target_transform, |
| 190 content_bounds, | 163 content_bounds, |
| 191 visible_content_rect, | 164 visible_content_rect, |
| 192 clip_rect, | 165 clip_rect, |
| 193 is_clipped, | 166 is_clipped, |
| 194 opacity, | 167 opacity, |
| 195 blend_mode, | 168 blend_mode, |
| 196 sorting_context_id); | 169 sorting_context_id); |
| 197 | 170 |
| 198 surfaces::SharedQuadStatePtr mojo_sqs = surfaces::SharedQuadState::From(*sqs); | 171 surfaces::SharedQuadStatePtr mojo_sqs = surfaces::SharedQuadState::From(*sqs); |
| 199 ASSERT_FALSE(mojo_sqs.is_null()); | 172 ASSERT_FALSE(mojo_sqs.is_null()); |
| 200 EXPECT_EQ(Transform::From(content_to_target_transform), | 173 EXPECT_EQ(Transform::From(content_to_target_transform), |
| 201 mojo_sqs->content_to_target_transform); | 174 mojo_sqs->content_to_target_transform); |
| 202 EXPECT_EQ(Size::From(content_bounds), mojo_sqs->content_bounds); | 175 EXPECT_EQ(Size::From(content_bounds), mojo_sqs->content_bounds); |
| 203 EXPECT_EQ(Rect::From(visible_content_rect), mojo_sqs->visible_content_rect); | 176 EXPECT_EQ(Rect::From(visible_content_rect), mojo_sqs->visible_content_rect); |
| 204 EXPECT_EQ(Rect::From(clip_rect), mojo_sqs->clip_rect); | 177 EXPECT_EQ(Rect::From(clip_rect), mojo_sqs->clip_rect); |
| 205 EXPECT_EQ(is_clipped, mojo_sqs->is_clipped); | 178 EXPECT_EQ(is_clipped, mojo_sqs->is_clipped); |
| 206 EXPECT_EQ(opacity, mojo_sqs->opacity); | 179 EXPECT_EQ(opacity, mojo_sqs->opacity); |
| 207 EXPECT_EQ(sorting_context_id, mojo_sqs->sorting_context_id); | 180 EXPECT_EQ(sorting_context_id, mojo_sqs->sorting_context_id); |
| 208 | |
| 209 scoped_ptr<cc::SharedQuadState> round_trip_sqs = ConvertTo(mojo_sqs.Pass()); | |
| 210 EXPECT_EQ(content_to_target_transform, | |
| 211 round_trip_sqs->content_to_target_transform); | |
| 212 EXPECT_EQ(content_bounds, round_trip_sqs->content_bounds); | |
| 213 EXPECT_EQ(visible_content_rect, round_trip_sqs->visible_content_rect); | |
| 214 EXPECT_EQ(clip_rect, round_trip_sqs->clip_rect); | |
| 215 EXPECT_EQ(is_clipped, round_trip_sqs->is_clipped); | |
| 216 EXPECT_EQ(opacity, round_trip_sqs->opacity); | |
| 217 EXPECT_EQ(sorting_context_id, round_trip_sqs->sorting_context_id); | |
| 218 } | 181 } |
| 219 | 182 |
| 220 TEST_F(SurfaceLibQuadTest, RenderPass) { | 183 TEST_F(SurfaceLibQuadTest, RenderPass) { |
| 221 scoped_ptr<cc::RenderPass> pass = cc::RenderPass::Create(); | 184 scoped_ptr<cc::RenderPass> pass = cc::RenderPass::Create(); |
| 222 cc::RenderPass::Id pass_id(1, 6); | 185 cc::RenderPass::Id pass_id(1, 6); |
| 223 gfx::Rect output_rect(4, 9, 13, 71); | 186 gfx::Rect output_rect(4, 9, 13, 71); |
| 224 gfx::Rect damage_rect(9, 17, 41, 45); | 187 gfx::Rect damage_rect(9, 17, 41, 45); |
| 225 gfx::Transform transform_to_root_target; | 188 gfx::Transform transform_to_root_target; |
| 226 transform_to_root_target.SkewY(43.0); | 189 transform_to_root_target.SkewY(43.0); |
| 227 bool has_transparent_background = false; | 190 bool has_transparent_background = false; |
| 228 pass->SetAll(pass_id, | 191 pass->SetAll(pass_id, |
|
weiliangc
2014/07/17 21:27:10
If set up SharedQuadState in SurfaceLibQuadTest, t
jamesr
2014/07/17 21:29:36
Or move this test out of the SurfaceLibQuadTest fi
| |
| 229 output_rect, | 192 output_rect, |
| 230 damage_rect, | 193 damage_rect, |
| 231 transform_to_root_target, | 194 transform_to_root_target, |
| 232 has_transparent_background); | 195 has_transparent_background); |
| 233 | 196 |
| 234 gfx::Transform content_to_target_transform; | 197 gfx::Transform content_to_target_transform; |
| 235 content_to_target_transform.Scale3d(0.3f, 0.7f, 0.9f); | 198 content_to_target_transform.Scale3d(0.3f, 0.7f, 0.9f); |
| 236 gfx::Size content_bounds(57, 39); | 199 gfx::Size content_bounds(57, 39); |
| 237 gfx::Rect visible_content_rect(3, 7, 28, 42); | 200 gfx::Rect visible_content_rect(3, 7, 28, 42); |
| 238 gfx::Rect clip_rect(9, 12, 21, 31); | 201 gfx::Rect clip_rect(9, 12, 21, 31); |
| (...skipping 16 matching lines...) Expand all Loading... | |
| 255 SkColor arbitrary_color = SK_ColorGREEN; | 218 SkColor arbitrary_color = SK_ColorGREEN; |
| 256 bool force_anti_aliasing_off = true; | 219 bool force_anti_aliasing_off = true; |
| 257 color_quad->SetAll(pass->shared_quad_state_list.back(), | 220 color_quad->SetAll(pass->shared_quad_state_list.back(), |
| 258 rect, | 221 rect, |
| 259 opaque_rect, | 222 opaque_rect, |
| 260 visible_rect, | 223 visible_rect, |
| 261 needs_blending, | 224 needs_blending, |
| 262 arbitrary_color, | 225 arbitrary_color, |
| 263 force_anti_aliasing_off); | 226 force_anti_aliasing_off); |
| 264 | 227 |
| 228 cc::SurfaceDrawQuad* surface_quad = | |
| 229 pass->CreateAndAppendDrawQuad<cc::SurfaceDrawQuad>(); | |
| 230 cc::SurfaceId arbitrary_id(5); | |
| 231 surface_quad->SetAll( | |
| 232 sqs, rect, opaque_rect, visible_rect, needs_blending, arbitrary_id); | |
| 233 | |
| 234 cc::TextureDrawQuad* texture_quad = | |
| 235 pass->CreateAndAppendDrawQuad<cc::TextureDrawQuad>(); | |
| 236 unsigned resource_id = 9; | |
| 237 bool premultiplied_alpha = true; | |
| 238 gfx::PointF uv_top_left(1.7f, 2.1f); | |
| 239 gfx::PointF uv_bottom_right(-7.f, 16.3f); | |
| 240 SkColor background_color = SK_ColorYELLOW; | |
| 241 float vertex_opacity[4] = {0.1f, 0.5f, 0.4f, 0.8f}; | |
| 242 bool flipped = false; | |
| 243 texture_quad->SetAll(sqs, | |
| 244 rect, | |
| 245 opaque_rect, | |
| 246 visible_rect, | |
| 247 needs_blending, | |
| 248 resource_id, | |
| 249 premultiplied_alpha, | |
| 250 uv_top_left, | |
| 251 uv_bottom_right, | |
| 252 background_color, | |
| 253 vertex_opacity, | |
| 254 flipped); | |
| 255 | |
| 265 surfaces::PassPtr mojo_pass = surfaces::Pass::From(*pass); | 256 surfaces::PassPtr mojo_pass = surfaces::Pass::From(*pass); |
| 266 ASSERT_FALSE(mojo_pass.is_null()); | 257 ASSERT_FALSE(mojo_pass.is_null()); |
| 267 EXPECT_EQ(6, mojo_pass->id); | 258 EXPECT_EQ(6, mojo_pass->id); |
| 268 EXPECT_EQ(Rect::From(output_rect), mojo_pass->output_rect); | 259 EXPECT_EQ(Rect::From(output_rect), mojo_pass->output_rect); |
| 269 EXPECT_EQ(Rect::From(damage_rect), mojo_pass->damage_rect); | 260 EXPECT_EQ(Rect::From(damage_rect), mojo_pass->damage_rect); |
| 270 EXPECT_EQ(Transform::From(transform_to_root_target), | 261 EXPECT_EQ(Transform::From(transform_to_root_target), |
| 271 mojo_pass->transform_to_root_target); | 262 mojo_pass->transform_to_root_target); |
| 272 EXPECT_EQ(has_transparent_background, mojo_pass->has_transparent_background); | 263 EXPECT_EQ(has_transparent_background, mojo_pass->has_transparent_background); |
| 273 ASSERT_EQ(1u, mojo_pass->shared_quad_states.size()); | 264 ASSERT_EQ(1u, mojo_pass->shared_quad_states.size()); |
| 274 ASSERT_EQ(1u, mojo_pass->quads.size()); | 265 ASSERT_EQ(3u, mojo_pass->quads.size()); |
| 275 EXPECT_EQ(0, mojo_pass->quads[0]->shared_quad_state_index); | 266 EXPECT_EQ(0, mojo_pass->quads[0]->shared_quad_state_index); |
| 276 | 267 |
| 277 scoped_ptr<cc::RenderPass> round_trip_pass = ConvertTo(mojo_pass.Pass()); | 268 scoped_ptr<cc::RenderPass> round_trip_pass = ConvertTo(mojo_pass.Pass()); |
| 278 EXPECT_EQ(pass_id, round_trip_pass->id); | 269 EXPECT_EQ(pass_id, round_trip_pass->id); |
| 279 EXPECT_EQ(output_rect, round_trip_pass->output_rect); | 270 EXPECT_EQ(output_rect, round_trip_pass->output_rect); |
| 280 EXPECT_EQ(damage_rect, round_trip_pass->damage_rect); | 271 EXPECT_EQ(damage_rect, round_trip_pass->damage_rect); |
| 281 EXPECT_EQ(transform_to_root_target, | 272 EXPECT_EQ(transform_to_root_target, |
| 282 round_trip_pass->transform_to_root_target); | 273 round_trip_pass->transform_to_root_target); |
| 283 EXPECT_EQ(has_transparent_background, | 274 EXPECT_EQ(has_transparent_background, |
| 284 round_trip_pass->has_transparent_background); | 275 round_trip_pass->has_transparent_background); |
| 285 ASSERT_EQ(1u, round_trip_pass->shared_quad_state_list.size()); | 276 ASSERT_EQ(1u, round_trip_pass->shared_quad_state_list.size()); |
| 286 ASSERT_EQ(1u, round_trip_pass->quad_list.size()); | 277 ASSERT_EQ(3u, round_trip_pass->quad_list.size()); |
| 287 EXPECT_EQ(round_trip_pass->shared_quad_state_list.front(), | 278 EXPECT_EQ(round_trip_pass->shared_quad_state_list.front(), |
| 288 round_trip_pass->quad_list[0]->shared_quad_state); | 279 round_trip_pass->quad_list.front()->shared_quad_state); |
| 280 | |
| 281 cc::SharedQuadState* round_trip_sqs = | |
| 282 round_trip_pass->shared_quad_state_list.front(); | |
| 283 EXPECT_EQ(content_to_target_transform, | |
| 284 round_trip_sqs->content_to_target_transform); | |
| 285 EXPECT_EQ(content_bounds, round_trip_sqs->content_bounds); | |
| 286 EXPECT_EQ(visible_content_rect, round_trip_sqs->visible_content_rect); | |
| 287 EXPECT_EQ(clip_rect, round_trip_sqs->clip_rect); | |
| 288 EXPECT_EQ(is_clipped, round_trip_sqs->is_clipped); | |
| 289 EXPECT_EQ(opacity, round_trip_sqs->opacity); | |
| 290 EXPECT_EQ(sorting_context_id, round_trip_sqs->sorting_context_id); | |
| 291 | |
| 292 cc::QuadList::iterator dq_iter = round_trip_pass->quad_list.begin(); | |
| 293 // First is solid color quad. | |
| 294 ASSERT_EQ(cc::DrawQuad::SOLID_COLOR, (*dq_iter)->material); | |
| 295 EXPECT_EQ(rect, (*dq_iter)->rect); | |
| 296 EXPECT_EQ(opaque_rect, (*dq_iter)->opaque_rect); | |
| 297 EXPECT_EQ(visible_rect, (*dq_iter)->visible_rect); | |
| 298 EXPECT_EQ(needs_blending, (*dq_iter)->needs_blending); | |
| 299 const cc::SolidColorDrawQuad* round_trip_color_quad = | |
| 300 cc::SolidColorDrawQuad::MaterialCast(*dq_iter); | |
| 301 EXPECT_EQ(arbitrary_color, round_trip_color_quad->color); | |
| 302 EXPECT_EQ(force_anti_aliasing_off, | |
| 303 round_trip_color_quad->force_anti_aliasing_off); | |
| 304 | |
| 305 ++dq_iter; | |
| 306 // Second is surface quad. | |
| 307 ASSERT_EQ(cc::DrawQuad::SURFACE_CONTENT, (*dq_iter)->material); | |
| 308 const cc::SurfaceDrawQuad* round_trip_surface_quad = | |
| 309 cc::SurfaceDrawQuad::MaterialCast(*dq_iter); | |
| 310 EXPECT_EQ(arbitrary_id, round_trip_surface_quad->surface_id); | |
| 311 | |
| 312 ++dq_iter; | |
| 313 // Third is texture quad. | |
| 314 ASSERT_EQ(cc::DrawQuad::TEXTURE_CONTENT, (*dq_iter)->material); | |
| 315 const cc::TextureDrawQuad* round_trip_texture_quad = | |
| 316 cc::TextureDrawQuad::MaterialCast(*dq_iter); | |
| 317 EXPECT_EQ(resource_id, round_trip_texture_quad->resource_id); | |
| 318 EXPECT_EQ(premultiplied_alpha, round_trip_texture_quad->premultiplied_alpha); | |
| 319 EXPECT_EQ(uv_top_left, round_trip_texture_quad->uv_top_left); | |
| 320 EXPECT_EQ(uv_bottom_right, round_trip_texture_quad->uv_bottom_right); | |
| 321 EXPECT_EQ(background_color, round_trip_texture_quad->background_color); | |
| 322 for (size_t i = 0; i < 4; ++i) { | |
| 323 EXPECT_EQ(vertex_opacity[i], round_trip_texture_quad->vertex_opacity[i]) | |
| 324 << i; | |
| 325 } | |
| 326 EXPECT_EQ(flipped, round_trip_texture_quad->flipped); | |
| 289 } | 327 } |
| 290 | 328 |
| 291 TEST(SurfaceLibTest, Mailbox) { | 329 TEST(SurfaceLibTest, Mailbox) { |
| 292 gpu::Mailbox mailbox; | 330 gpu::Mailbox mailbox; |
| 293 mailbox.Generate(); | 331 mailbox.Generate(); |
| 294 | 332 |
| 295 surfaces::MailboxPtr mojo_mailbox = surfaces::Mailbox::From(mailbox); | 333 surfaces::MailboxPtr mojo_mailbox = surfaces::Mailbox::From(mailbox); |
| 296 EXPECT_EQ(0, memcmp(mailbox.name, mojo_mailbox->name.storage().data(), 64)); | 334 EXPECT_EQ(0, memcmp(mailbox.name, mojo_mailbox->name.storage().data(), 64)); |
| 297 | 335 |
| 298 gpu::Mailbox round_trip_mailbox = mojo_mailbox.To<gpu::Mailbox>(); | 336 gpu::Mailbox round_trip_mailbox = mojo_mailbox.To<gpu::Mailbox>(); |
| (...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 381 cc::ReturnedResource round_trip_resource = | 419 cc::ReturnedResource round_trip_resource = |
| 382 mojo_resource.To<cc::ReturnedResource>(); | 420 mojo_resource.To<cc::ReturnedResource>(); |
| 383 EXPECT_EQ(id, round_trip_resource.id); | 421 EXPECT_EQ(id, round_trip_resource.id); |
| 384 EXPECT_EQ(sync_point, round_trip_resource.sync_point); | 422 EXPECT_EQ(sync_point, round_trip_resource.sync_point); |
| 385 EXPECT_EQ(count, round_trip_resource.count); | 423 EXPECT_EQ(count, round_trip_resource.count); |
| 386 EXPECT_EQ(lost, round_trip_resource.lost); | 424 EXPECT_EQ(lost, round_trip_resource.lost); |
| 387 } | 425 } |
| 388 | 426 |
| 389 } // namespace | 427 } // namespace |
| 390 } // namespace mojo | 428 } // namespace mojo |
| OLD | NEW |