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 "cc/test/render_pass_test_common.h" | 5 #include "cc/test/render_pass_test_common.h" |
6 | 6 |
7 #include "cc/checkerboard_draw_quad.h" | 7 #include "cc/checkerboard_draw_quad.h" |
8 #include "cc/debug_border_draw_quad.h" | 8 #include "cc/debug_border_draw_quad.h" |
9 #include "cc/io_surface_draw_quad.h" | 9 #include "cc/io_surface_draw_quad.h" |
10 #include "cc/render_pass_draw_quad.h" | 10 #include "cc/render_pass_draw_quad.h" |
11 #include "cc/solid_color_draw_quad.h" | 11 #include "cc/solid_color_draw_quad.h" |
12 #include "cc/shared_quad_state.h" | 12 #include "cc/shared_quad_state.h" |
13 #include "cc/stream_video_draw_quad.h" | 13 #include "cc/stream_video_draw_quad.h" |
14 #include "cc/texture_draw_quad.h" | 14 #include "cc/texture_draw_quad.h" |
15 #include "cc/tile_draw_quad.h" | 15 #include "cc/tile_draw_quad.h" |
16 #include "cc/yuv_video_draw_quad.h" | 16 #include "cc/yuv_video_draw_quad.h" |
17 #include "cc/resource_provider.h" | 17 #include "cc/resource_provider.h" |
18 #include "ui/gfx/transform.h" | 18 #include "ui/gfx/transform.h" |
19 | 19 |
20 namespace cc { | 20 namespace cc { |
21 | 21 |
| 22 void TestRenderPass::AppendQuad(scoped_ptr<cc::DrawQuad> quad) { |
| 23 quad_list.push_back(quad.Pass()); |
| 24 } |
| 25 |
| 26 void TestRenderPass::AppendSharedQuadState( |
| 27 scoped_ptr<cc::SharedQuadState> state) { |
| 28 shared_quad_state_list.push_back(state.Pass()); |
| 29 } |
| 30 |
22 void TestRenderPass::AppendOneOfEveryQuadType( | 31 void TestRenderPass::AppendOneOfEveryQuadType( |
23 cc::ResourceProvider* resourceProvider) { | 32 cc::ResourceProvider* resourceProvider, RenderPass::Id child_pass) { |
24 gfx::Rect rect(0, 0, 100, 100); | 33 gfx::Rect rect(0, 0, 100, 100); |
25 gfx::Rect opaque_rect(10, 10, 80, 80); | 34 gfx::Rect opaque_rect(10, 10, 80, 80); |
26 const float vertex_opacity[] = {1.0f, 1.0f, 1.0f, 1.0f}; | 35 const float vertex_opacity[] = {1.0f, 1.0f, 1.0f, 1.0f}; |
27 cc::ResourceProvider::ResourceId texture_resource = | 36 cc::ResourceProvider::ResourceId texture_resource = |
28 resourceProvider->createResource( | 37 resourceProvider->createResource( |
29 gfx::Size(20, 12), | 38 gfx::Size(20, 12), |
30 resourceProvider->bestTextureFormat(), | 39 resourceProvider->bestTextureFormat(), |
31 ResourceProvider::TextureUsageAny); | 40 ResourceProvider::TextureUsageAny); |
32 resourceProvider->allocateForTesting(texture_resource); | 41 resourceProvider->allocateForTesting(texture_resource); |
33 unsigned texture_id = ResourceProvider::ScopedReadLockGL( | 42 unsigned texture_id = ResourceProvider::ScopedReadLockGL( |
34 resourceProvider, texture_resource).textureId(); | 43 resourceProvider, texture_resource).textureId(); |
| 44 cc::ResourceProvider::ResourceId resource1 = |
| 45 resourceProvider->createResource( |
| 46 gfx::Size(45, 5), |
| 47 resourceProvider->bestTextureFormat(), |
| 48 ResourceProvider::TextureUsageAny); |
| 49 resourceProvider->allocateForTesting(resource1); |
| 50 cc::ResourceProvider::ResourceId resource2 = |
| 51 resourceProvider->createResource( |
| 52 gfx::Size(346, 61), |
| 53 resourceProvider->bestTextureFormat(), |
| 54 ResourceProvider::TextureUsageAny); |
| 55 resourceProvider->allocateForTesting(resource2); |
| 56 cc::ResourceProvider::ResourceId resource3 = |
| 57 resourceProvider->createResource( |
| 58 gfx::Size(12, 134), |
| 59 resourceProvider->bestTextureFormat(), |
| 60 ResourceProvider::TextureUsageAny); |
| 61 resourceProvider->allocateForTesting(resource3); |
| 62 cc::ResourceProvider::ResourceId resource4 = |
| 63 resourceProvider->createResource( |
| 64 gfx::Size(56, 12), |
| 65 resourceProvider->bestTextureFormat(), |
| 66 ResourceProvider::TextureUsageAny); |
| 67 resourceProvider->allocateForTesting(resource4); |
| 68 cc::ResourceProvider::ResourceId resource5 = |
| 69 resourceProvider->createResource( |
| 70 gfx::Size(73, 26), |
| 71 resourceProvider->bestTextureFormat(), |
| 72 ResourceProvider::TextureUsageAny); |
| 73 resourceProvider->allocateForTesting(resource5); |
35 | 74 |
36 scoped_ptr<cc::SharedQuadState> shared_state = cc::SharedQuadState::Create(); | 75 scoped_ptr<cc::SharedQuadState> shared_state = cc::SharedQuadState::Create(); |
37 shared_state->SetAll(gfx::Transform(), | 76 shared_state->SetAll(gfx::Transform(), |
38 rect, | 77 rect, |
39 rect, | 78 rect, |
40 rect, | 79 rect, |
41 false, | 80 false, |
42 1); | 81 1); |
43 | 82 |
44 scoped_ptr<cc::CheckerboardDrawQuad> checkerboard_quad = | 83 scoped_ptr<cc::CheckerboardDrawQuad> checkerboard_quad = |
(...skipping 14 matching lines...) Expand all Loading... |
59 scoped_ptr<cc::IOSurfaceDrawQuad> io_surface_quad = | 98 scoped_ptr<cc::IOSurfaceDrawQuad> io_surface_quad = |
60 cc::IOSurfaceDrawQuad::Create(); | 99 cc::IOSurfaceDrawQuad::Create(); |
61 io_surface_quad->SetNew(shared_state.get(), | 100 io_surface_quad->SetNew(shared_state.get(), |
62 rect, | 101 rect, |
63 opaque_rect, | 102 opaque_rect, |
64 gfx::Size(50, 50), | 103 gfx::Size(50, 50), |
65 texture_id, | 104 texture_id, |
66 cc::IOSurfaceDrawQuad::FLIPPED); | 105 cc::IOSurfaceDrawQuad::FLIPPED); |
67 AppendQuad(io_surface_quad.PassAs<DrawQuad>()); | 106 AppendQuad(io_surface_quad.PassAs<DrawQuad>()); |
68 | 107 |
69 scoped_ptr<cc::RenderPassDrawQuad> render_pass_quad = | 108 if (child_pass.layer_id) { |
70 cc::RenderPassDrawQuad::Create(); | 109 scoped_ptr<cc::RenderPassDrawQuad> render_pass_quad = |
71 render_pass_quad->SetNew(shared_state.get(), | 110 cc::RenderPassDrawQuad::Create(); |
72 rect, | 111 render_pass_quad->SetNew(shared_state.get(), |
73 cc::RenderPass::Id(1, 1), | 112 rect, |
74 false, | 113 child_pass, |
75 0, | 114 false, |
76 rect, | 115 resource5, |
77 gfx::RectF(), | 116 rect, |
78 WebKit::WebFilterOperations(), | 117 gfx::RectF(), |
79 skia::RefPtr<SkImageFilter>(), | 118 WebKit::WebFilterOperations(), |
80 WebKit::WebFilterOperations()); | 119 skia::RefPtr<SkImageFilter>(), |
81 AppendQuad(render_pass_quad.PassAs<DrawQuad>()); | 120 WebKit::WebFilterOperations()); |
| 121 AppendQuad(render_pass_quad.PassAs<DrawQuad>()); |
| 122 |
| 123 scoped_ptr<cc::RenderPassDrawQuad> render_pass_replica_quad = |
| 124 cc::RenderPassDrawQuad::Create(); |
| 125 render_pass_replica_quad->SetNew(shared_state.get(), |
| 126 rect, |
| 127 child_pass, |
| 128 true, |
| 129 resource5, |
| 130 rect, |
| 131 gfx::RectF(), |
| 132 WebKit::WebFilterOperations(), |
| 133 skia::RefPtr<SkImageFilter>(), |
| 134 WebKit::WebFilterOperations()); |
| 135 AppendQuad(render_pass_replica_quad.PassAs<DrawQuad>()); |
| 136 } |
82 | 137 |
83 scoped_ptr<cc::SolidColorDrawQuad> solid_color_quad = | 138 scoped_ptr<cc::SolidColorDrawQuad> solid_color_quad = |
84 cc::SolidColorDrawQuad::Create(); | 139 cc::SolidColorDrawQuad::Create(); |
85 solid_color_quad->SetNew(shared_state.get(), | 140 solid_color_quad->SetNew(shared_state.get(), |
86 rect, | 141 rect, |
87 SK_ColorRED); | 142 SK_ColorRED); |
88 AppendQuad(solid_color_quad.PassAs<DrawQuad>()); | 143 AppendQuad(solid_color_quad.PassAs<DrawQuad>()); |
89 | 144 |
90 scoped_ptr<cc::StreamVideoDrawQuad> stream_video_quad = | 145 scoped_ptr<cc::StreamVideoDrawQuad> stream_video_quad = |
91 cc::StreamVideoDrawQuad::Create(); | 146 cc::StreamVideoDrawQuad::Create(); |
92 stream_video_quad->SetNew(shared_state.get(), | 147 stream_video_quad->SetNew(shared_state.get(), |
93 rect, | 148 rect, |
94 opaque_rect, | 149 opaque_rect, |
95 texture_id, | 150 texture_id, |
96 gfx::Transform()); | 151 gfx::Transform()); |
97 AppendQuad(stream_video_quad.PassAs<DrawQuad>()); | 152 AppendQuad(stream_video_quad.PassAs<DrawQuad>()); |
98 | 153 |
99 scoped_ptr<cc::TextureDrawQuad> texture_quad = | 154 scoped_ptr<cc::TextureDrawQuad> texture_quad = |
100 cc::TextureDrawQuad::Create(); | 155 cc::TextureDrawQuad::Create(); |
101 texture_quad->SetNew(shared_state.get(), | 156 texture_quad->SetNew(shared_state.get(), |
102 rect, | 157 rect, |
103 opaque_rect, | 158 opaque_rect, |
104 texture_resource, | 159 resource1, |
105 false, | 160 false, |
106 rect, | 161 rect, |
107 vertex_opacity, | 162 vertex_opacity, |
108 false); | 163 false); |
109 AppendQuad(texture_quad.PassAs<DrawQuad>()); | 164 AppendQuad(texture_quad.PassAs<DrawQuad>()); |
110 | 165 |
111 scoped_ptr<cc::TileDrawQuad> scaled_tile_quad = | 166 scoped_ptr<cc::TileDrawQuad> scaled_tile_quad = |
112 cc::TileDrawQuad::Create(); | 167 cc::TileDrawQuad::Create(); |
113 scaled_tile_quad->SetNew(shared_state.get(), | 168 scaled_tile_quad->SetNew(shared_state.get(), |
114 rect, | 169 rect, |
115 opaque_rect, | 170 opaque_rect, |
116 texture_resource, | 171 resource2, |
117 gfx::RectF(0, 0, 50, 50), | 172 gfx::RectF(0, 0, 50, 50), |
118 gfx::Size(50, 50), | 173 gfx::Size(50, 50), |
119 false, | 174 false, |
120 false, | 175 false, |
121 false, | 176 false, |
122 false, | 177 false, |
123 false); | 178 false); |
124 AppendQuad(scaled_tile_quad.PassAs<DrawQuad>()); | 179 AppendQuad(scaled_tile_quad.PassAs<DrawQuad>()); |
125 | 180 |
126 scoped_ptr<cc::SharedQuadState> transformed_state = shared_state->Copy(); | 181 scoped_ptr<cc::SharedQuadState> transformed_state = shared_state->Copy(); |
127 gfx::Transform rotation; | 182 gfx::Transform rotation; |
128 rotation.Rotate(45); | 183 rotation.Rotate(45); |
129 transformed_state->content_to_target_transform = transformed_state->content_to
_target_transform * rotation; | 184 transformed_state->content_to_target_transform = transformed_state->content_to
_target_transform * rotation; |
130 scoped_ptr<cc::TileDrawQuad> transformed_tile_quad = | 185 scoped_ptr<cc::TileDrawQuad> transformed_tile_quad = |
131 cc::TileDrawQuad::Create(); | 186 cc::TileDrawQuad::Create(); |
132 transformed_tile_quad->SetNew(transformed_state.get(), | 187 transformed_tile_quad->SetNew(transformed_state.get(), |
133 rect, | 188 rect, |
134 opaque_rect, | 189 opaque_rect, |
135 texture_resource, | 190 resource3, |
136 gfx::RectF(0, 0, 100, 100), | 191 gfx::RectF(0, 0, 100, 100), |
137 gfx::Size(100, 100), | 192 gfx::Size(100, 100), |
138 false, | 193 false, |
139 false, | 194 false, |
140 false, | 195 false, |
141 false, | 196 false, |
142 false); | 197 false); |
143 AppendQuad(transformed_tile_quad.PassAs<DrawQuad>()); | 198 AppendQuad(transformed_tile_quad.PassAs<DrawQuad>()); |
144 | 199 |
145 scoped_ptr<cc::TileDrawQuad> tile_quad = | 200 scoped_ptr<cc::TileDrawQuad> tile_quad = |
146 cc::TileDrawQuad::Create(); | 201 cc::TileDrawQuad::Create(); |
147 tile_quad->SetNew(shared_state.get(), | 202 tile_quad->SetNew(shared_state.get(), |
148 rect, | 203 rect, |
149 opaque_rect, | 204 opaque_rect, |
150 texture_resource, | 205 resource4, |
151 gfx::RectF(0, 0, 100, 100), | 206 gfx::RectF(0, 0, 100, 100), |
152 gfx::Size(100, 100), | 207 gfx::Size(100, 100), |
153 false, | 208 false, |
154 false, | 209 false, |
155 false, | 210 false, |
156 false, | 211 false, |
157 false); | 212 false); |
158 AppendQuad(tile_quad.PassAs<DrawQuad>()); | 213 AppendQuad(tile_quad.PassAs<DrawQuad>()); |
159 | 214 |
160 cc::VideoLayerImpl::FramePlane planes[3]; | 215 cc::VideoLayerImpl::FramePlane planes[3]; |
(...skipping 16 matching lines...) Expand all Loading... |
177 planes[0], | 232 planes[0], |
178 planes[1], | 233 planes[1], |
179 planes[2]); | 234 planes[2]); |
180 AppendQuad(yuv_quad.PassAs<DrawQuad>()); | 235 AppendQuad(yuv_quad.PassAs<DrawQuad>()); |
181 | 236 |
182 AppendSharedQuadState(transformed_state.Pass()); | 237 AppendSharedQuadState(transformed_state.Pass()); |
183 AppendSharedQuadState(shared_state.Pass()); | 238 AppendSharedQuadState(shared_state.Pass()); |
184 } | 239 } |
185 | 240 |
186 } // namespace cc | 241 } // namespace cc |
OLD | NEW |