OLD | NEW |
---|---|
1 // Copyright 2011 The Chromium Authors. All rights reserved. | 1 // Copyright 2011 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 | 6 |
7 #include "base/values.h" | 7 #include "base/values.h" |
8 #include "cc/base/math_util.h" | 8 #include "cc/base/math_util.h" |
9 #include "cc/debug/traced_value.h" | 9 #include "cc/debug/traced_value.h" |
10 #include "cc/output/copy_output_request.h" | 10 #include "cc/output/copy_output_request.h" |
11 #include "cc/quads/checkerboard_draw_quad.h" | |
12 #include "cc/quads/debug_border_draw_quad.h" | |
11 #include "cc/quads/draw_quad.h" | 13 #include "cc/quads/draw_quad.h" |
14 #include "cc/quads/io_surface_draw_quad.h" | |
15 #include "cc/quads/picture_draw_quad.h" | |
12 #include "cc/quads/render_pass_draw_quad.h" | 16 #include "cc/quads/render_pass_draw_quad.h" |
13 #include "cc/quads/shared_quad_state.h" | 17 #include "cc/quads/shared_quad_state.h" |
18 #include "cc/quads/solid_color_draw_quad.h" | |
19 #include "cc/quads/stream_video_draw_quad.h" | |
20 #include "cc/quads/surface_draw_quad.h" | |
21 #include "cc/quads/texture_draw_quad.h" | |
22 #include "cc/quads/tile_draw_quad.h" | |
23 #include "cc/quads/yuv_video_draw_quad.h" | |
14 | 24 |
15 namespace { | 25 namespace { |
16 const size_t kDefaultNumSharedQuadStatesToReserve = 32; | 26 const size_t kDefaultNumSharedQuadStatesToReserve = 32; |
17 const size_t kDefaultNumQuadsToReserve = 128; | 27 const size_t kDefaultNumQuadsToReserve = 128; |
18 } | 28 } |
19 | 29 |
20 namespace cc { | 30 namespace cc { |
21 | 31 |
22 void* RenderPass::Id::AsTracingId() const { | 32 void* RenderPass::Id::AsTracingId() const { |
23 COMPILE_ASSERT(sizeof(size_t) <= sizeof(void*), // NOLINT | 33 COMPILE_ASSERT(sizeof(size_t) <= sizeof(void*), // NOLINT |
(...skipping 143 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
167 TRACE_DISABLED_BY_DEFAULT("cc.debug.quads"), | 177 TRACE_DISABLED_BY_DEFAULT("cc.debug.quads"), |
168 value.get(), "cc::RenderPass", id.AsTracingId()); | 178 value.get(), "cc::RenderPass", id.AsTracingId()); |
169 return value.PassAs<base::Value>(); | 179 return value.PassAs<base::Value>(); |
170 } | 180 } |
171 | 181 |
172 SharedQuadState* RenderPass::CreateAndAppendSharedQuadState() { | 182 SharedQuadState* RenderPass::CreateAndAppendSharedQuadState() { |
173 shared_quad_state_list.push_back(make_scoped_ptr(new SharedQuadState)); | 183 shared_quad_state_list.push_back(make_scoped_ptr(new SharedQuadState)); |
174 return shared_quad_state_list.back(); | 184 return shared_quad_state_list.back(); |
175 } | 185 } |
176 | 186 |
187 RenderPassDrawQuad* RenderPass::CopyFromAndAppendRenderPassDrawQuad( | |
188 const RenderPassDrawQuad* quad, | |
189 const SharedQuadState* shared_quad_state, | |
190 RenderPass::Id render_pass_id) { | |
191 RenderPassDrawQuad* copy_quad = | |
192 CopyFromAndAppendTypedDrawQuad<RenderPassDrawQuad>(quad); | |
193 copy_quad->shared_quad_state = shared_quad_state; | |
194 copy_quad->render_pass_id = render_pass_id; | |
195 return copy_quad; | |
196 } | |
197 | |
198 DrawQuad* RenderPass::CopyFromAndAppendDrawQuad( | |
199 const DrawQuad* quad, | |
200 const SharedQuadState* shared_quad_state) { | |
201 switch (quad->material) { | |
202 case DrawQuad::CHECKERBOARD: { | |
203 const CheckerboardDrawQuad* original_quad = | |
danakj
2014/07/09 17:12:09
I think you can move this material cast into the C
| |
204 CheckerboardDrawQuad::MaterialCast(quad); | |
205 CopyFromAndAppendTypedDrawQuad<CheckerboardDrawQuad>(original_quad); | |
206 break; | |
207 } | |
208 case DrawQuad::DEBUG_BORDER: { | |
209 const DebugBorderDrawQuad* original_quad = | |
210 DebugBorderDrawQuad::MaterialCast(quad); | |
211 CopyFromAndAppendTypedDrawQuad<DebugBorderDrawQuad>(original_quad); | |
212 break; | |
213 } | |
214 case DrawQuad::IO_SURFACE_CONTENT: { | |
215 const IOSurfaceDrawQuad* original_quad = | |
216 IOSurfaceDrawQuad::MaterialCast(quad); | |
217 CopyFromAndAppendTypedDrawQuad<IOSurfaceDrawQuad>(original_quad); | |
218 break; | |
219 } | |
220 case DrawQuad::PICTURE_CONTENT: { | |
221 const PictureDrawQuad* original_quad = | |
222 PictureDrawQuad::MaterialCast(quad); | |
223 CopyFromAndAppendTypedDrawQuad<PictureDrawQuad>(original_quad); | |
224 break; | |
225 } | |
226 case DrawQuad::TEXTURE_CONTENT: { | |
227 const TextureDrawQuad* original_quad = | |
228 TextureDrawQuad::MaterialCast(quad); | |
229 CopyFromAndAppendTypedDrawQuad<TextureDrawQuad>(original_quad); | |
230 break; | |
231 } | |
232 case DrawQuad::SOLID_COLOR: { | |
233 const SolidColorDrawQuad* original_quad = | |
234 SolidColorDrawQuad::MaterialCast(quad); | |
235 CopyFromAndAppendTypedDrawQuad<SolidColorDrawQuad>(original_quad); | |
236 break; | |
237 } | |
238 case DrawQuad::TILED_CONTENT: { | |
239 const TileDrawQuad* original_quad = TileDrawQuad::MaterialCast(quad); | |
240 CopyFromAndAppendTypedDrawQuad<TileDrawQuad>(original_quad); | |
241 break; | |
242 } | |
243 case DrawQuad::STREAM_VIDEO_CONTENT: { | |
244 const StreamVideoDrawQuad* original_quad = | |
245 StreamVideoDrawQuad::MaterialCast(quad); | |
246 CopyFromAndAppendTypedDrawQuad<StreamVideoDrawQuad>(original_quad); | |
247 break; | |
248 } | |
249 case DrawQuad::SURFACE_CONTENT: { | |
250 const SurfaceDrawQuad* original_quad = | |
251 SurfaceDrawQuad::MaterialCast(quad); | |
252 CopyFromAndAppendTypedDrawQuad<SurfaceDrawQuad>(original_quad); | |
253 break; | |
254 } | |
255 case DrawQuad::YUV_VIDEO_CONTENT: { | |
256 const YUVVideoDrawQuad* original_quad = | |
257 YUVVideoDrawQuad::MaterialCast(quad); | |
258 CopyFromAndAppendTypedDrawQuad<YUVVideoDrawQuad>(original_quad); | |
259 break; | |
260 } | |
261 case DrawQuad::RENDER_PASS | |
262 : // RenderPass quads need to use typed copy from function. | |
263 case DrawQuad::INVALID: | |
264 LOG(FATAL) << "Invalid DrawQuad material " << quad->material; | |
265 break; | |
266 } | |
267 quad_list.back()->shared_quad_state = shared_quad_state; | |
268 return quad_list.back(); | |
269 } | |
270 | |
177 } // namespace cc | 271 } // namespace cc |
OLD | NEW |