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