Upstream version 9.38.198.0
[platform/framework/web/crosswalk.git] / src / cc / test / render_pass_test_common.cc
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.
4
5 #include "cc/test/render_pass_test_common.h"
6
7 #include "cc/quads/checkerboard_draw_quad.h"
8 #include "cc/quads/debug_border_draw_quad.h"
9 #include "cc/quads/io_surface_draw_quad.h"
10 #include "cc/quads/render_pass_draw_quad.h"
11 #include "cc/quads/shared_quad_state.h"
12 #include "cc/quads/solid_color_draw_quad.h"
13 #include "cc/quads/stream_video_draw_quad.h"
14 #include "cc/quads/texture_draw_quad.h"
15 #include "cc/quads/tile_draw_quad.h"
16 #include "cc/quads/yuv_video_draw_quad.h"
17 #include "cc/resources/resource_provider.h"
18 #include "ui/gfx/transform.h"
19
20 namespace cc {
21
22 void TestRenderPass::AppendOneOfEveryQuadType(
23     ResourceProvider* resource_provider,
24     RenderPass::Id child_pass) {
25   gfx::Rect rect(0, 0, 100, 100);
26   gfx::Rect opaque_rect(10, 10, 80, 80);
27   gfx::Rect visible_rect(0, 0, 100, 100);
28   const float vertex_opacity[] = {1.0f, 1.0f, 1.0f, 1.0f};
29   ResourceProvider::ResourceId resource1 = resource_provider->CreateResource(
30       gfx::Size(45, 5),
31       GL_CLAMP_TO_EDGE,
32       ResourceProvider::TextureUsageAny,
33       resource_provider->best_texture_format());
34   resource_provider->AllocateForTesting(resource1);
35   ResourceProvider::ResourceId resource2 = resource_provider->CreateResource(
36       gfx::Size(346, 61),
37       GL_CLAMP_TO_EDGE,
38       ResourceProvider::TextureUsageAny,
39       resource_provider->best_texture_format());
40   resource_provider->AllocateForTesting(resource2);
41   ResourceProvider::ResourceId resource3 = resource_provider->CreateResource(
42       gfx::Size(12, 134),
43       GL_CLAMP_TO_EDGE,
44       ResourceProvider::TextureUsageAny,
45       resource_provider->best_texture_format());
46   resource_provider->AllocateForTesting(resource3);
47   ResourceProvider::ResourceId resource4 = resource_provider->CreateResource(
48       gfx::Size(56, 12),
49       GL_CLAMP_TO_EDGE,
50       ResourceProvider::TextureUsageAny,
51       resource_provider->best_texture_format());
52   resource_provider->AllocateForTesting(resource4);
53   ResourceProvider::ResourceId resource5 = resource_provider->CreateResource(
54       gfx::Size(73, 26),
55       GL_CLAMP_TO_EDGE,
56       ResourceProvider::TextureUsageAny,
57       resource_provider->best_texture_format());
58   resource_provider->AllocateForTesting(resource5);
59   ResourceProvider::ResourceId resource6 = resource_provider->CreateResource(
60       gfx::Size(64, 92),
61       GL_CLAMP_TO_EDGE,
62       ResourceProvider::TextureUsageAny,
63       resource_provider->best_texture_format());
64   resource_provider->AllocateForTesting(resource6);
65   ResourceProvider::ResourceId resource7 = resource_provider->CreateResource(
66       gfx::Size(9, 14),
67       GL_CLAMP_TO_EDGE,
68       ResourceProvider::TextureUsageAny,
69       resource_provider->best_texture_format());
70   resource_provider->AllocateForTesting(resource7);
71
72   SharedQuadState* shared_state = this->CreateAndAppendSharedQuadState();
73   shared_state->SetAll(gfx::Transform(),
74                        rect.size(),
75                        rect,
76                        rect,
77                        false,
78                        1,
79                        SkXfermode::kSrcOver_Mode,
80                        0);
81
82   CheckerboardDrawQuad* checkerboard_quad =
83       this->CreateAndAppendDrawQuad<CheckerboardDrawQuad>();
84   checkerboard_quad->SetNew(shared_state, rect, visible_rect, SK_ColorRED);
85
86   DebugBorderDrawQuad* debug_border_quad =
87       this->CreateAndAppendDrawQuad<DebugBorderDrawQuad>();
88   debug_border_quad->SetNew(shared_state, rect, visible_rect, SK_ColorRED, 1);
89
90   IOSurfaceDrawQuad* io_surface_quad =
91       this->CreateAndAppendDrawQuad<IOSurfaceDrawQuad>();
92   io_surface_quad->SetNew(shared_state,
93                           rect,
94                           opaque_rect,
95                           visible_rect,
96                           gfx::Size(50, 50),
97                           resource7,
98                           IOSurfaceDrawQuad::FLIPPED);
99
100   if (child_pass.layer_id) {
101     RenderPassDrawQuad* render_pass_quad =
102         this->CreateAndAppendDrawQuad<RenderPassDrawQuad>();
103     render_pass_quad->SetNew(shared_state,
104                              rect,
105                              visible_rect,
106                              child_pass,
107                              resource5,
108                              gfx::RectF(),
109                              FilterOperations(),
110                              gfx::Vector2dF(),
111                              FilterOperations());
112
113     RenderPassDrawQuad* render_pass_replica_quad =
114         this->CreateAndAppendDrawQuad<RenderPassDrawQuad>();
115     render_pass_replica_quad->SetNew(shared_state,
116                                      rect,
117                                      visible_rect,
118                                      child_pass,
119                                      resource5,
120                                      gfx::RectF(),
121                                      FilterOperations(),
122                                      gfx::Vector2dF(),
123                                      FilterOperations());
124   }
125
126   SolidColorDrawQuad* solid_color_quad =
127       this->CreateAndAppendDrawQuad<SolidColorDrawQuad>();
128   solid_color_quad->SetNew(
129       shared_state, rect, visible_rect, SK_ColorRED, false);
130
131   StreamVideoDrawQuad* stream_video_quad =
132       this->CreateAndAppendDrawQuad<StreamVideoDrawQuad>();
133   stream_video_quad->SetNew(shared_state,
134                             rect,
135                             opaque_rect,
136                             visible_rect,
137                             resource6,
138                             gfx::Transform());
139
140   TextureDrawQuad* texture_quad =
141       this->CreateAndAppendDrawQuad<TextureDrawQuad>();
142   texture_quad->SetNew(shared_state,
143                        rect,
144                        opaque_rect,
145                        visible_rect,
146                        resource1,
147                        false,
148                        gfx::PointF(0.f, 0.f),
149                        gfx::PointF(1.f, 1.f),
150                        SK_ColorTRANSPARENT,
151                        vertex_opacity,
152                        false);
153
154   TileDrawQuad* scaled_tile_quad =
155       this->CreateAndAppendDrawQuad<TileDrawQuad>();
156   scaled_tile_quad->SetNew(shared_state,
157                            rect,
158                            opaque_rect,
159                            visible_rect,
160                            resource2,
161                            gfx::RectF(0, 0, 50, 50),
162                            gfx::Size(50, 50),
163                            false);
164
165   SharedQuadState* transformed_state = this->CreateAndAppendSharedQuadState();
166   transformed_state->CopyFrom(shared_state);
167   gfx::Transform rotation;
168   rotation.Rotate(45);
169   transformed_state->content_to_target_transform =
170       transformed_state->content_to_target_transform * rotation;
171   TileDrawQuad* transformed_tile_quad =
172       this->CreateAndAppendDrawQuad<TileDrawQuad>();
173   transformed_tile_quad->SetNew(transformed_state,
174                                 rect,
175                                 opaque_rect,
176                                 visible_rect,
177                                 resource3,
178                                 gfx::RectF(0, 0, 100, 100),
179                                 gfx::Size(100, 100),
180                                 false);
181
182   SharedQuadState* shared_state2 = this->CreateAndAppendSharedQuadState();
183   shared_state->SetAll(gfx::Transform(),
184                        rect.size(),
185                        rect,
186                        rect,
187                        false,
188                        1,
189                        SkXfermode::kSrcOver_Mode,
190                        0);
191
192   TileDrawQuad* tile_quad = this->CreateAndAppendDrawQuad<TileDrawQuad>();
193   tile_quad->SetNew(shared_state2,
194                     rect,
195                     opaque_rect,
196                     visible_rect,
197                     resource4,
198                     gfx::RectF(0, 0, 100, 100),
199                     gfx::Size(100, 100),
200                     false);
201
202   ResourceProvider::ResourceId plane_resources[4];
203   for (int i = 0; i < 4; ++i) {
204     plane_resources[i] =
205         resource_provider->CreateResource(
206             gfx::Size(20, 12),
207             GL_CLAMP_TO_EDGE,
208             ResourceProvider::TextureUsageAny,
209             resource_provider->best_texture_format());
210     resource_provider->AllocateForTesting(plane_resources[i]);
211   }
212   YUVVideoDrawQuad::ColorSpace color_space = YUVVideoDrawQuad::REC_601;
213   YUVVideoDrawQuad* yuv_quad =
214       this->CreateAndAppendDrawQuad<YUVVideoDrawQuad>();
215   yuv_quad->SetNew(shared_state2,
216                    rect,
217                    opaque_rect,
218                    visible_rect,
219                    gfx::RectF(0, 0, 100, 100),
220                    plane_resources[0],
221                    plane_resources[1],
222                    plane_resources[2],
223                    plane_resources[3],
224                    color_space);
225 }
226
227 }  // namespace cc