Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(82)

Side by Side Diff: cc/gl_renderer_pixeltest.cc

Issue 11649005: cc: Support anti-aliasing for solid color layers. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Rebase and add DrawQuad::AntiAliasing struct. Created 7 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
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/gl_renderer.h" 5 #include "cc/gl_renderer.h"
6 6
7 #include "base/file_util.h" 7 #include "base/file_util.h"
8 #include "base/path_service.h" 8 #include "base/path_service.h"
9 #include "cc/compositor_frame_metadata.h" 9 #include "cc/compositor_frame_metadata.h"
10 #include "cc/draw_quad.h" 10 #include "cc/draw_quad.h"
(...skipping 119 matching lines...) Expand 10 before | Expand all | Expand 10 after
130 gfx::Rect rect(0, 0, 200, 200); 130 gfx::Rect rect(0, 0, 200, 200);
131 131
132 RenderPass::Id id(1, 1); 132 RenderPass::Id id(1, 1);
133 scoped_ptr<RenderPass> pass = CreateTestRenderPass(id, rect); 133 scoped_ptr<RenderPass> pass = CreateTestRenderPass(id, rect);
134 134
135 gfx::Transform content_to_target_transform; 135 gfx::Transform content_to_target_transform;
136 scoped_ptr<SharedQuadState> shared_state = 136 scoped_ptr<SharedQuadState> shared_state =
137 CreateTestSharedQuadState(content_to_target_transform, rect); 137 CreateTestSharedQuadState(content_to_target_transform, rect);
138 138
139 scoped_ptr<SolidColorDrawQuad> color_quad = SolidColorDrawQuad::Create(); 139 scoped_ptr<SolidColorDrawQuad> color_quad = SolidColorDrawQuad::Create();
140 color_quad->SetNew(shared_state.get(), rect, SK_ColorGREEN); 140 color_quad->SetNew(shared_state.get(), rect, DrawQuad::AntiAliasing(),
141 SK_ColorGREEN);
141 142
142 pass->quad_list.append(color_quad.PassAs<DrawQuad>()); 143 pass->quad_list.append(color_quad.PassAs<DrawQuad>());
143 144
144 RenderPassList pass_list; 145 RenderPassList pass_list;
145 pass_list.append(pass.Pass()); 146 pass_list.append(pass.Pass());
146 147
147 renderer_->drawFrame(pass_list); 148 renderer_->drawFrame(pass_list);
148 149
149 EXPECT_TRUE(PixelsMatchReference(FilePath(FILE_PATH_LITERAL("green.png")), 150 EXPECT_TRUE(PixelsMatchReference(FilePath(FILE_PATH_LITERAL("green.png")),
150 rect)); 151 rect));
151 } 152 }
152 153
153 TEST_F(GLRendererPixelTest, RenderPassChangesSize) { 154 TEST_F(GLRendererPixelTest, RenderPassChangesSize) {
154 gfx::Rect viewport_rect(200, 200); 155 gfx::Rect viewport_rect(200, 200);
155 156
156 RenderPass::Id root_pass_id(1, 1); 157 RenderPass::Id root_pass_id(1, 1);
157 scoped_ptr<RenderPass> root_pass = 158 scoped_ptr<RenderPass> root_pass =
158 CreateTestRenderPass(root_pass_id, viewport_rect); 159 CreateTestRenderPass(root_pass_id, viewport_rect);
159 160
160 RenderPass::Id child_pass_id(2, 2); 161 RenderPass::Id child_pass_id(2, 2);
161 gfx::Rect pass_rect(200, 200); 162 gfx::Rect pass_rect(200, 200);
162 scoped_ptr<RenderPass> child_pass = 163 scoped_ptr<RenderPass> child_pass =
163 CreateTestRenderPass(child_pass_id, pass_rect); 164 CreateTestRenderPass(child_pass_id, pass_rect);
164 165
165 gfx::Transform content_to_target_transform; 166 gfx::Transform content_to_target_transform;
166 scoped_ptr<SharedQuadState> shared_state = 167 scoped_ptr<SharedQuadState> shared_state =
167 CreateTestSharedQuadState(content_to_target_transform, viewport_rect); 168 CreateTestSharedQuadState(content_to_target_transform, viewport_rect);
168 169
169 scoped_ptr<SolidColorDrawQuad> blue = SolidColorDrawQuad::Create(); 170 scoped_ptr<SolidColorDrawQuad> blue = SolidColorDrawQuad::Create();
170 blue->SetNew(shared_state.get(), gfx::Rect(0, 0, 100, 200), SK_ColorBLUE); 171 blue->SetNew(shared_state.get(), gfx::Rect(0, 0, 100, 200),
172 DrawQuad::AntiAliasing(), SK_ColorBLUE);
171 scoped_ptr<SolidColorDrawQuad> yellow = SolidColorDrawQuad::Create(); 173 scoped_ptr<SolidColorDrawQuad> yellow = SolidColorDrawQuad::Create();
172 yellow->SetNew(shared_state.get(), gfx::Rect(100, 0, 100, 200), SK_ColorYELLOW ); 174 yellow->SetNew(shared_state.get(), gfx::Rect(100, 0, 100, 200),
175 DrawQuad::AntiAliasing(), SK_ColorYELLOW);
173 176
174 child_pass->quad_list.append(blue.PassAs<DrawQuad>()); 177 child_pass->quad_list.append(blue.PassAs<DrawQuad>());
175 child_pass->quad_list.append(yellow.PassAs<DrawQuad>()); 178 child_pass->quad_list.append(yellow.PassAs<DrawQuad>());
176 179
177 scoped_ptr<SharedQuadState> pass_shared_state = 180 scoped_ptr<SharedQuadState> pass_shared_state =
178 CreateTestSharedQuadState(gfx::Transform(), pass_rect); 181 CreateTestSharedQuadState(gfx::Transform(), pass_rect);
179 root_pass->quad_list.append( 182 root_pass->quad_list.append(
180 CreateTestRenderPassDrawQuad(pass_shared_state.get(), 183 CreateTestRenderPassDrawQuad(pass_shared_state.get(),
181 pass_rect, 184 pass_rect,
182 child_pass_id)); 185 child_pass_id));
183 186
184 RenderPassList pass_list; 187 RenderPassList pass_list;
185 pass_list.append(child_pass.Pass()); 188 pass_list.append(child_pass.Pass());
186 pass_list.append(root_pass.Pass()); 189 pass_list.append(root_pass.Pass());
187 190
188 renderer_->setEnlargePassTextureAmountForTesting(gfx::Vector2d(50, 75)); 191 renderer_->setEnlargePassTextureAmountForTesting(gfx::Vector2d(50, 75));
189 renderer_->decideRenderPassAllocationsForFrame(pass_list); 192 renderer_->decideRenderPassAllocationsForFrame(pass_list);
190 renderer_->drawFrame(pass_list); 193 renderer_->drawFrame(pass_list);
191 194
192 EXPECT_TRUE(PixelsMatchReference( 195 EXPECT_TRUE(PixelsMatchReference(
193 FilePath(FILE_PATH_LITERAL("blue_yellow.png")), viewport_rect)); 196 FilePath(FILE_PATH_LITERAL("blue_yellow.png")), viewport_rect));
194 } 197 }
198
199 TEST_F(GLRendererPixelTest, AntiAliasing) {
200 gfx::Rect rect(0, 0, 200, 200);
201
202 RenderPass::Id id(1, 1);
203 scoped_ptr<RenderPass> pass = CreateTestRenderPass(id, rect);
204
205 gfx::Transform red_content_to_target_transform;
206 red_content_to_target_transform.Rotate(10);
207 scoped_ptr<SharedQuadState> red_shared_state =
208 CreateTestSharedQuadState(red_content_to_target_transform, rect);
209
210 scoped_ptr<SolidColorDrawQuad> red = SolidColorDrawQuad::Create();
211 red->SetNew(red_shared_state.get(), rect,
212 DrawQuad::AntiAliasing(true, true, true, true),
213 SK_ColorRED);
214
215 pass->quad_list.append(red.PassAs<DrawQuad>());
216
217 gfx::Transform yellow_content_to_target_transform;
218 yellow_content_to_target_transform.Rotate(5);
219 scoped_ptr<SharedQuadState> yellow_shared_state =
220 CreateTestSharedQuadState(yellow_content_to_target_transform, rect);
221
222 scoped_ptr<SolidColorDrawQuad> yellow = SolidColorDrawQuad::Create();
223 yellow->SetNew(yellow_shared_state.get(), rect,
224 DrawQuad::AntiAliasing(true, true, true, true),
225 SK_ColorYELLOW);
226
227 pass->quad_list.append(yellow.PassAs<DrawQuad>());
228
229 gfx::Transform blue_content_to_target_transform;
230 scoped_ptr<SharedQuadState> blue_shared_state =
231 CreateTestSharedQuadState(blue_content_to_target_transform, rect);
232
233 scoped_ptr<SolidColorDrawQuad> blue = SolidColorDrawQuad::Create();
234 blue->SetNew(blue_shared_state.get(), rect,
235 DrawQuad::AntiAliasing(false, false, false, false),
236 SK_ColorBLUE);
237
238 pass->quad_list.append(blue.PassAs<DrawQuad>());
239
240 RenderPassList pass_list;
241 pass_list.append(pass.Pass());
242
243 renderer_->drawFrame(pass_list);
244
245 EXPECT_TRUE(
246 PixelsMatchReference(FilePath(FILE_PATH_LITERAL("anti_aliasing.png")),
247 rect));
248 }
195 #endif 249 #endif
196 250
197 } // namespace 251 } // namespace
198 } // namespace cc 252 } // namespace cc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698