OLD | NEW |
1 | 1 |
2 /* | 2 /* |
3 * Copyright 2010 Google Inc. | 3 * Copyright 2010 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 | 9 |
10 | 10 |
11 #include "GrDrawTarget.h" | 11 #include "GrDrawTarget.h" |
12 #include "GrContext.h" | 12 #include "GrContext.h" |
13 #include "GrDrawTargetCaps.h" | 13 #include "GrDrawTargetCaps.h" |
14 #include "GrPath.h" | 14 #include "GrPath.h" |
15 #include "GrRenderTarget.h" | 15 #include "GrRenderTarget.h" |
| 16 #include "GrTemplates.h" |
16 #include "GrTexture.h" | 17 #include "GrTexture.h" |
17 #include "GrVertexBuffer.h" | 18 #include "GrVertexBuffer.h" |
18 | 19 |
19 #include "SkStrokeRec.h" | 20 #include "SkStrokeRec.h" |
20 | 21 |
21 //////////////////////////////////////////////////////////////////////////////// | 22 //////////////////////////////////////////////////////////////////////////////// |
22 | 23 |
23 GrDrawTarget::DrawInfo& GrDrawTarget::DrawInfo::operator =(const DrawInfo& di) { | 24 GrDrawTarget::DrawInfo& GrDrawTarget::DrawInfo::operator =(const DrawInfo& di) { |
24 fPrimitiveType = di.fPrimitiveType; | 25 fPrimitiveType = di.fPrimitiveType; |
25 fStartVertex = di.fStartVertex; | 26 fStartVertex = di.fStartVertex; |
(...skipping 580 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
606 if (this->caps()->gpuTracingSupport()) { | 607 if (this->caps()->gpuTracingSupport()) { |
607 SkASSERT(fGpuTraceMarkerCount >= 1); | 608 SkASSERT(fGpuTraceMarkerCount >= 1); |
608 this->fActiveTraceMarkers.remove(*marker); | 609 this->fActiveTraceMarkers.remove(*marker); |
609 this->didRemoveGpuTraceMarker(); | 610 this->didRemoveGpuTraceMarker(); |
610 --fGpuTraceMarkerCount; | 611 --fGpuTraceMarkerCount; |
611 } | 612 } |
612 } | 613 } |
613 | 614 |
614 //////////////////////////////////////////////////////////////////////////////// | 615 //////////////////////////////////////////////////////////////////////////////// |
615 | 616 |
616 bool GrDrawTarget::canApplyCoverage() const { | |
617 // we can correctly apply coverage if a) we have dual source blending | |
618 // or b) one of our blend optimizations applies | |
619 // or c) the src, dst blend coeffs are 1,0 and we will read Dst Color | |
620 GrBlendCoeff srcCoeff; | |
621 GrBlendCoeff dstCoeff; | |
622 GrDrawState::BlendOptFlags flag = this->getDrawState().getBlendOpts(true, &s
rcCoeff, &dstCoeff); | |
623 return this->caps()->dualSourceBlendingSupport() || | |
624 GrDrawState::kNone_BlendOpt != flag || | |
625 (this->getDrawState().willEffectReadDstColor() && | |
626 kOne_GrBlendCoeff == srcCoeff && kZero_GrBlendCoeff == dstCoeff); | |
627 } | |
628 | |
629 //////////////////////////////////////////////////////////////////////////////// | |
630 | |
631 void GrDrawTarget::drawIndexedInstances(GrPrimitiveType type, | 617 void GrDrawTarget::drawIndexedInstances(GrPrimitiveType type, |
632 int instanceCount, | 618 int instanceCount, |
633 int verticesPerInstance, | 619 int verticesPerInstance, |
634 int indicesPerInstance, | 620 int indicesPerInstance, |
635 const SkRect* devBounds) { | 621 const SkRect* devBounds) { |
636 if (!verticesPerInstance || !indicesPerInstance) { | 622 if (!verticesPerInstance || !indicesPerInstance) { |
637 return; | 623 return; |
638 } | 624 } |
639 | 625 |
640 int maxInstancesPerDraw = this->indexCountInCurrentSource() / indicesPerInst
ance; | 626 int maxInstancesPerDraw = this->indexCountInCurrentSource() / indicesPerInst
ance; |
(...skipping 505 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1146 SkASSERT(!fConfigTextureSupport[kUnknown_GrPixelConfig]); | 1132 SkASSERT(!fConfigTextureSupport[kUnknown_GrPixelConfig]); |
1147 | 1133 |
1148 for (size_t i = 1; i < SK_ARRAY_COUNT(kConfigNames); ++i) { | 1134 for (size_t i = 1; i < SK_ARRAY_COUNT(kConfigNames); ++i) { |
1149 r.appendf("%s is uploadable to a texture: %s\n", | 1135 r.appendf("%s is uploadable to a texture: %s\n", |
1150 kConfigNames[i], | 1136 kConfigNames[i], |
1151 gNY[fConfigTextureSupport[i]]); | 1137 gNY[fConfigTextureSupport[i]]); |
1152 } | 1138 } |
1153 | 1139 |
1154 return r; | 1140 return r; |
1155 } | 1141 } |
OLD | NEW |