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

Side by Side Diff: src/gpu/GrDrawContext.cpp

Issue 1279303002: Expand functionality of GrRectBatchFactory with AARects (Closed) Base URL: https://skia.googlesource.com/skia.git@batchfactory3
Patch Set: tweaks Created 5 years, 4 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
« no previous file with comments | « src/gpu/GrContext.cpp ('k') | src/gpu/GrDrawTarget.cpp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 1
2 /* 2 /*
3 * Copyright 2015 Google Inc. 3 * Copyright 2015 Google Inc.
4 * 4 *
5 * Use of this source code is governed by a BSD-style license that can be 5 * Use of this source code is governed by a BSD-style license that can be
6 * found in the LICENSE file. 6 * found in the LICENSE file.
7 */ 7 */
8 8
9 #include "GrAARectRenderer.h"
10 #include "GrAtlasTextContext.h" 9 #include "GrAtlasTextContext.h"
11 #include "GrBatchTest.h" 10 #include "GrBatchTest.h"
12 #include "GrColor.h" 11 #include "GrColor.h"
13 #include "GrDrawContext.h" 12 #include "GrDrawContext.h"
14 #include "GrOvalRenderer.h" 13 #include "GrOvalRenderer.h"
15 #include "GrPathRenderer.h" 14 #include "GrPathRenderer.h"
16 #include "GrRenderTarget.h" 15 #include "GrRenderTarget.h"
17 #include "GrRenderTargetPriv.h" 16 #include "GrRenderTargetPriv.h"
18 #include "GrStencilAndCoverTextContext.h" 17 #include "GrStencilAndCoverTextContext.h"
19 18
(...skipping 281 matching lines...) Expand 10 before | Expand all | Expand 10 after
301 } 300 }
302 301
303 GrColor color = paint.getColor(); 302 GrColor color = paint.getColor();
304 SkRect devBoundRect; 303 SkRect devBoundRect;
305 bool needAA = paint.isAntiAlias() && 304 bool needAA = paint.isAntiAlias() &&
306 !pipelineBuilder.getRenderTarget()->isUnifiedMultisampled(); 305 !pipelineBuilder.getRenderTarget()->isUnifiedMultisampled();
307 bool doAA = needAA && apply_aa_to_rect(fDrawTarget, &pipelineBuilder, &devBo undRect, rect, 306 bool doAA = needAA && apply_aa_to_rect(fDrawTarget, &pipelineBuilder, &devBo undRect, rect,
308 width, viewMatrix, color); 307 width, viewMatrix, color);
309 308
310 if (doAA) { 309 if (doAA) {
310 SkAutoTUnref<GrBatch> batch;
311 if (width >= 0) { 311 if (width >= 0) {
312 GrAARectRenderer::StrokeAARect(fDrawTarget, 312 batch.reset(GrRectBatchFactory::CreateStrokeAA(color, viewMatrix, re ct, devBoundRect,
313 pipelineBuilder, 313 *strokeInfo));
314 color,
315 viewMatrix,
316 rect,
317 devBoundRect,
318 *strokeInfo);
319 } else { 314 } else {
320 // filled AA rect 315 batch.reset(GrRectBatchFactory::CreateFillAA(color, viewMatrix, rect , devBoundRect));
321 GrAARectRenderer::FillAARect(fDrawTarget,
322 pipelineBuilder,
323 color,
324 viewMatrix,
325 rect,
326 devBoundRect);
327 } 316 }
317 fDrawTarget->drawBatch(pipelineBuilder, batch);
328 return; 318 return;
329 } 319 }
330 320
331 if (width >= 0) { 321 if (width >= 0) {
332 // Non-AA hairlines are snapped to pixel centers to make which pixels ar e hit deterministic 322 // Non-AA hairlines are snapped to pixel centers to make which pixels ar e hit deterministic
333 bool snapToPixelCenters = (0 == width && !rt->isUnifiedMultisampled()); 323 bool snapToPixelCenters = (0 == width && !rt->isUnifiedMultisampled());
334 SkAutoTUnref<GrBatch> batch(GrRectBatchFactory::CreateStrokeBW(color, vi ewMatrix, rect, 324 SkAutoTUnref<GrBatch> batch(GrRectBatchFactory::CreateStrokeBW(color, vi ewMatrix, rect,
335 width, sn apToPixelCenters)); 325 width, sn apToPixelCenters));
336 326
337 // Depending on sub-pixel coordinates and the particular GPU, we may los e a corner of 327 // Depending on sub-pixel coordinates and the particular GPU, we may los e a corner of
(...skipping 357 matching lines...) Expand 10 before | Expand all | Expand 10 after
695 GrPipelineBuilder pipelineBuilder(paint, rt, clip); 685 GrPipelineBuilder pipelineBuilder(paint, rt, clip);
696 if (!strokeInfo.isDashed()) { 686 if (!strokeInfo.isDashed()) {
697 bool useCoverageAA = paint.isAntiAlias() && 687 bool useCoverageAA = paint.isAntiAlias() &&
698 !pipelineBuilder.getRenderTarget()->isUnifiedMultisampled(); 688 !pipelineBuilder.getRenderTarget()->isUnifiedMultisampled();
699 689
700 if (useCoverageAA && strokeInfo.getWidth() < 0 && !path.isConvex()) { 690 if (useCoverageAA && strokeInfo.getWidth() < 0 && !path.isConvex()) {
701 // Concave AA paths are expensive - try to avoid them for special ca ses 691 // Concave AA paths are expensive - try to avoid them for special ca ses
702 SkRect rects[2]; 692 SkRect rects[2];
703 693
704 if (is_nested_rects(viewMatrix, path, strokeInfo, rects)) { 694 if (is_nested_rects(viewMatrix, path, strokeInfo, rects)) {
705 GrAARectRenderer::FillAANestedRects(fDrawTarget, pipelineBuilder , color, 695 SkAutoTUnref<GrBatch> batch(GrRectBatchFactory::CreateFillNested RectsAA(color,
706 viewMatrix, rects); 696 viewMatrix,
697 rects));
698 fDrawTarget->drawBatch(pipelineBuilder, batch);
707 return; 699 return;
708 } 700 }
709 } 701 }
710 SkRect ovalRect; 702 SkRect ovalRect;
711 bool isOval = path.isOval(&ovalRect); 703 bool isOval = path.isOval(&ovalRect);
712 704
713 if (isOval && !path.isInverseFillType()) { 705 if (isOval && !path.isInverseFillType()) {
714 if (GrOvalRenderer::DrawOval(fDrawTarget, 706 if (GrOvalRenderer::DrawOval(fDrawTarget,
715 pipelineBuilder, 707 pipelineBuilder,
716 color, 708 color,
(...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after
819 RETURN_FALSE_IF_ABANDONED 811 RETURN_FALSE_IF_ABANDONED
820 812
821 ASSERT_OWNED_RESOURCE(rt); 813 ASSERT_OWNED_RESOURCE(rt);
822 SkASSERT(rt); 814 SkASSERT(rt);
823 return true; 815 return true;
824 } 816 }
825 817
826 void GrDrawContext::drawBatch(GrPipelineBuilder* pipelineBuilder, GrBatch* batch ) { 818 void GrDrawContext::drawBatch(GrPipelineBuilder* pipelineBuilder, GrBatch* batch ) {
827 fDrawTarget->drawBatch(*pipelineBuilder, batch); 819 fDrawTarget->drawBatch(*pipelineBuilder, batch);
828 } 820 }
OLDNEW
« no previous file with comments | « src/gpu/GrContext.cpp ('k') | src/gpu/GrDrawTarget.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698