| OLD | NEW |
| 1 | 1 |
| 2 /* | 2 /* |
| 3 * Copyright 2011 Google Inc. | 3 * Copyright 2011 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 "GrContext.h" | 9 #include "GrContext.h" |
| 10 | 10 |
| (...skipping 462 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 473 SkScalarIsInt(r.fRight) && SkScalarIsInt(r.fBottom); | 473 SkScalarIsInt(r.fRight) && SkScalarIsInt(r.fBottom); |
| 474 } | 474 } |
| 475 | 475 |
| 476 static bool apply_aa_to_rect(GrDrawTarget* target, | 476 static bool apply_aa_to_rect(GrDrawTarget* target, |
| 477 GrPipelineBuilder* pipelineBuilder, | 477 GrPipelineBuilder* pipelineBuilder, |
| 478 SkRect* devBoundRect, | 478 SkRect* devBoundRect, |
| 479 const SkRect& rect, | 479 const SkRect& rect, |
| 480 SkScalar strokeWidth, | 480 SkScalar strokeWidth, |
| 481 const SkMatrix& combinedMatrix, | 481 const SkMatrix& combinedMatrix, |
| 482 GrColor color) { | 482 GrColor color) { |
| 483 if (!pipelineBuilder->canTweakAlphaForCoverage() && | |
| 484 !pipelineBuilder->canUseFracCoveragePrimProc(color, *target->caps())) { | |
| 485 #ifdef SK_DEBUG | |
| 486 //SkDebugf("Turning off AA to correctly apply blend.\n"); | |
| 487 #endif | |
| 488 return false; | |
| 489 } | |
| 490 | |
| 491 if (pipelineBuilder->getRenderTarget()->isMultisampled()) { | 483 if (pipelineBuilder->getRenderTarget()->isMultisampled()) { |
| 492 return false; | 484 return false; |
| 493 } | 485 } |
| 494 | 486 |
| 495 #if defined(SHADER_AA_FILL_RECT) || !defined(IGNORE_ROT_AA_RECT_OPT) | 487 #if defined(SHADER_AA_FILL_RECT) || !defined(IGNORE_ROT_AA_RECT_OPT) |
| 496 if (strokeWidth >= 0) { | 488 if (strokeWidth >= 0) { |
| 497 #endif | 489 #endif |
| 498 if (!combinedMatrix.preservesAxisAlignment()) { | 490 if (!combinedMatrix.preservesAxisAlignment()) { |
| 499 return false; | 491 return false; |
| 500 } | 492 } |
| (...skipping 381 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 882 if (path.isInverseFillType()) { | 874 if (path.isInverseFillType()) { |
| 883 return false; | 875 return false; |
| 884 } | 876 } |
| 885 | 877 |
| 886 // TODO: this restriction could be lifted if we were willing to apply | 878 // TODO: this restriction could be lifted if we were willing to apply |
| 887 // the matrix to all the points individually rather than just to the rect | 879 // the matrix to all the points individually rather than just to the rect |
| 888 if (!viewMatrix.preservesAxisAlignment()) { | 880 if (!viewMatrix.preservesAxisAlignment()) { |
| 889 return false; | 881 return false; |
| 890 } | 882 } |
| 891 | 883 |
| 892 if (!pipelineBuilder->canTweakAlphaForCoverage() && | |
| 893 !pipelineBuilder->canUseFracCoveragePrimProc(color, *target->caps())) { | |
| 894 return false; | |
| 895 } | |
| 896 | |
| 897 SkPath::Direction dirs[2]; | 884 SkPath::Direction dirs[2]; |
| 898 if (!path.isNestedRects(rects, dirs)) { | 885 if (!path.isNestedRects(rects, dirs)) { |
| 899 return false; | 886 return false; |
| 900 } | 887 } |
| 901 | 888 |
| 902 if (SkPath::kWinding_FillType == path.getFillType() && dirs[0] == dirs[1]) { | 889 if (SkPath::kWinding_FillType == path.getFillType() && dirs[0] == dirs[1]) { |
| 903 // The two rects need to be wound opposite to each other | 890 // The two rects need to be wound opposite to each other |
| 904 return false; | 891 return false; |
| 905 } | 892 } |
| 906 | 893 |
| (...skipping 114 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1021 SkASSERT(!path.isEmpty()); | 1008 SkASSERT(!path.isEmpty()); |
| 1022 | 1009 |
| 1023 GR_CREATE_TRACE_MARKER("GrContext::internalDrawPath", target); | 1010 GR_CREATE_TRACE_MARKER("GrContext::internalDrawPath", target); |
| 1024 | 1011 |
| 1025 | 1012 |
| 1026 // An Assumption here is that path renderer would use some form of tweaking | 1013 // An Assumption here is that path renderer would use some form of tweaking |
| 1027 // the src color (either the input alpha or in the frag shader) to implement | 1014 // the src color (either the input alpha or in the frag shader) to implement |
| 1028 // aa. If we have some future driver-mojo path AA that can do the right | 1015 // aa. If we have some future driver-mojo path AA that can do the right |
| 1029 // thing WRT to the blend then we'll need some query on the PR. | 1016 // thing WRT to the blend then we'll need some query on the PR. |
| 1030 bool useCoverageAA = useAA && | 1017 bool useCoverageAA = useAA && |
| 1031 !pipelineBuilder->getRenderTarget()->isMultisampled() && | 1018 !pipelineBuilder->getRenderTarget()->isMultisampled(); |
| 1032 pipelineBuilder->canUseFracCoveragePrimProc(color, *target->caps()); | |
| 1033 | 1019 |
| 1034 | 1020 |
| 1035 GrPathRendererChain::DrawType type = | 1021 GrPathRendererChain::DrawType type = |
| 1036 useCoverageAA ? GrPathRendererChain::kColorAntiAlias_DrawType : | 1022 useCoverageAA ? GrPathRendererChain::kColorAntiAlias_DrawType : |
| 1037 GrPathRendererChain::kColor_DrawType; | 1023 GrPathRendererChain::kColor_DrawType; |
| 1038 | 1024 |
| 1039 const SkPath* pathPtr = &path; | 1025 const SkPath* pathPtr = &path; |
| 1040 SkTLazy<SkPath> tmpPath; | 1026 SkTLazy<SkPath> tmpPath; |
| 1041 SkTCopyOnFirstWrite<SkStrokeRec> stroke(strokeInfo.getStrokeRec()); | 1027 SkTCopyOnFirstWrite<SkStrokeRec> stroke(strokeInfo.getStrokeRec()); |
| 1042 | 1028 |
| (...skipping 564 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1607 } | 1593 } |
| 1608 } | 1594 } |
| 1609 | 1595 |
| 1610 void GrContext::removeGpuTraceMarker(const GrGpuTraceMarker* marker) { | 1596 void GrContext::removeGpuTraceMarker(const GrGpuTraceMarker* marker) { |
| 1611 fGpu->removeGpuTraceMarker(marker); | 1597 fGpu->removeGpuTraceMarker(marker); |
| 1612 if (fDrawBuffer) { | 1598 if (fDrawBuffer) { |
| 1613 fDrawBuffer->removeGpuTraceMarker(marker); | 1599 fDrawBuffer->removeGpuTraceMarker(marker); |
| 1614 } | 1600 } |
| 1615 } | 1601 } |
| 1616 | 1602 |
| OLD | NEW |