GPU workaround to simulate Out of Memory errors with large textures
[chromium-blink-merge.git] / cc / quads / yuv_video_draw_quad.h
blob03276eb0c890d02405a3fa9258f782d9fd420d6c
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
3 // found in the LICENSE file.
5 #ifndef CC_QUADS_YUV_VIDEO_DRAW_QUAD_H_
6 #define CC_QUADS_YUV_VIDEO_DRAW_QUAD_H_
8 #include "base/basictypes.h"
9 #include "base/memory/scoped_ptr.h"
10 #include "cc/base/cc_export.h"
11 #include "cc/quads/draw_quad.h"
13 namespace cc {
15 class CC_EXPORT YUVVideoDrawQuad : public DrawQuad {
16 public:
17 enum ColorSpace {
18 REC_601, // SDTV standard with restricted "studio swing" color range.
19 REC_709, // HDTV standard with restricted "studio swing" color range.
20 JPEG, // Full color range [0, 255] JPEG color space.
21 COLOR_SPACE_LAST = JPEG
24 ~YUVVideoDrawQuad() override;
26 YUVVideoDrawQuad();
28 void SetNew(const SharedQuadState* shared_quad_state,
29 const gfx::Rect& rect,
30 const gfx::Rect& opaque_rect,
31 const gfx::Rect& visible_rect,
32 const gfx::RectF& tex_coord_rect,
33 const gfx::Size& ya_tex_size,
34 const gfx::Size& uv_tex_size,
35 unsigned y_plane_resource_id,
36 unsigned u_plane_resource_id,
37 unsigned v_plane_resource_id,
38 unsigned a_plane_resource_id,
39 ColorSpace color_space);
41 void SetAll(const SharedQuadState* shared_quad_state,
42 const gfx::Rect& rect,
43 const gfx::Rect& opaque_rect,
44 const gfx::Rect& visible_rect,
45 bool needs_blending,
46 const gfx::RectF& tex_coord_rect,
47 const gfx::Size& ya_tex_size,
48 const gfx::Size& uv_tex_size,
49 unsigned y_plane_resource_id,
50 unsigned u_plane_resource_id,
51 unsigned v_plane_resource_id,
52 unsigned a_plane_resource_id,
53 ColorSpace color_space);
55 gfx::RectF tex_coord_rect;
56 // Empty texture size implies no clamping of texture coordinates.
57 gfx::Size ya_tex_size;
58 gfx::Size uv_tex_size;
59 unsigned y_plane_resource_id;
60 unsigned u_plane_resource_id;
61 unsigned v_plane_resource_id;
62 unsigned a_plane_resource_id;
63 ColorSpace color_space;
65 void IterateResources(const ResourceIteratorCallback& callback) override;
67 static const YUVVideoDrawQuad* MaterialCast(const DrawQuad*);
69 private:
70 void ExtendValue(base::trace_event::TracedValue* value) const override;
73 } // namespace cc
75 #endif // CC_QUADS_YUV_VIDEO_DRAW_QUAD_H_