diff options
Diffstat (limited to 'src/gpu/instanced/InstancedRendering.cpp')
-rw-r--r-- | src/gpu/instanced/InstancedRendering.cpp | 65 |
1 files changed, 33 insertions, 32 deletions
diff --git a/src/gpu/instanced/InstancedRendering.cpp b/src/gpu/instanced/InstancedRendering.cpp index 2c46d15fd7..135a0610ad 100644 --- a/src/gpu/instanced/InstancedRendering.cpp +++ b/src/gpu/instanced/InstancedRendering.cpp @@ -22,27 +22,28 @@ InstancedRendering::InstancedRendering(GrGpu* gpu) } GrDrawOp* InstancedRendering::recordRect(const SkRect& rect, const SkMatrix& viewMatrix, - GrColor color, GrAA aa, - const GrInstancedPipelineInfo& info, GrAAType* aaType) { - return this->recordShape(ShapeType::kRect, rect, viewMatrix, color, rect, aa, info, aaType); + GrColor color, bool antialias, + const GrInstancedPipelineInfo& info, bool* useHWAA) { + return this->recordShape(ShapeType::kRect, rect, viewMatrix, color, rect, antialias, info, + useHWAA); } GrDrawOp* InstancedRendering::recordRect(const SkRect& rect, const SkMatrix& viewMatrix, - GrColor color, const SkRect& localRect, GrAA aa, - const GrInstancedPipelineInfo& info, GrAAType* aaType) { - return this->recordShape(ShapeType::kRect, rect, viewMatrix, color, localRect, aa, info, - aaType); + GrColor color, const SkRect& localRect, bool antialias, + const GrInstancedPipelineInfo& info, bool* useHWAA) { + return this->recordShape(ShapeType::kRect, rect, viewMatrix, color, localRect, antialias, info, + useHWAA); } GrDrawOp* InstancedRendering::recordRect(const SkRect& rect, const SkMatrix& viewMatrix, GrColor color, const SkMatrix& localMatrix, - GrAA aa, const GrInstancedPipelineInfo& info, - GrAAType* aaType) { + bool antialias, const GrInstancedPipelineInfo& info, + bool* useHWAA) { if (localMatrix.hasPerspective()) { return nullptr; // Perspective is not yet supported in the local matrix. } - if (Batch* batch = this->recordShape(ShapeType::kRect, rect, viewMatrix, color, rect, aa, - info, aaType)) { + if (Batch* batch = this->recordShape(ShapeType::kRect, rect, viewMatrix, color, rect, antialias, + info, useHWAA)) { batch->getSingleInstance().fInfo |= kLocalMatrix_InfoFlag; batch->appendParamsTexel(localMatrix.getScaleX(), localMatrix.getSkewX(), localMatrix.getTranslateX()); @@ -55,16 +56,17 @@ GrDrawOp* InstancedRendering::recordRect(const SkRect& rect, const SkMatrix& vie } GrDrawOp* InstancedRendering::recordOval(const SkRect& oval, const SkMatrix& viewMatrix, - GrColor color, GrAA aa, - const GrInstancedPipelineInfo& info, GrAAType* aaType) { - return this->recordShape(ShapeType::kOval, oval, viewMatrix, color, oval, aa, info, aaType); + GrColor color, bool antialias, + const GrInstancedPipelineInfo& info, bool* useHWAA) { + return this->recordShape(ShapeType::kOval, oval, viewMatrix, color, oval, antialias, info, + useHWAA); } GrDrawOp* InstancedRendering::recordRRect(const SkRRect& rrect, const SkMatrix& viewMatrix, - GrColor color, GrAA aa, - const GrInstancedPipelineInfo& info, GrAAType* aaType) { + GrColor color, bool antialias, + const GrInstancedPipelineInfo& info, bool* useHWAA) { if (Batch* batch = this->recordShape(GetRRectShapeType(rrect), rrect.rect(), viewMatrix, color, - rrect.rect(), aa, info, aaType)) { + rrect.rect(), antialias, info, useHWAA)) { batch->appendRRectParams(rrect); return batch; } @@ -73,16 +75,16 @@ GrDrawOp* InstancedRendering::recordRRect(const SkRRect& rrect, const SkMatrix& GrDrawOp* InstancedRendering::recordDRRect(const SkRRect& outer, const SkRRect& inner, const SkMatrix& viewMatrix, GrColor color, - GrAA aa, const GrInstancedPipelineInfo& info, - GrAAType* aaType) { + bool antialias, const GrInstancedPipelineInfo& info, + bool* useHWAA) { if (inner.getType() > SkRRect::kSimple_Type) { return nullptr; // Complex inner round rects are not yet supported. } if (SkRRect::kEmpty_Type == inner.getType()) { - return this->recordRRect(outer, viewMatrix, color, aa, info, aaType); + return this->recordRRect(outer, viewMatrix, color, antialias, info, useHWAA); } if (Batch* batch = this->recordShape(GetRRectShapeType(outer), outer.rect(), viewMatrix, color, - outer.rect(), aa, info, aaType)) { + outer.rect(), antialias, info, useHWAA)) { batch->appendRRectParams(outer); ShapeType innerShapeType = GetRRectShapeType(inner); batch->fInfo.fInnerShapeTypes |= GetShapeFlag(innerShapeType); @@ -97,9 +99,9 @@ GrDrawOp* InstancedRendering::recordDRRect(const SkRRect& outer, const SkRRect& InstancedRendering::Batch* InstancedRendering::recordShape(ShapeType type, const SkRect& bounds, const SkMatrix& viewMatrix, GrColor color, const SkRect& localRect, - GrAA aa, + bool antialias, const GrInstancedPipelineInfo& info, - GrAAType* aaType) { + bool* useHWAA) { SkASSERT(State::kRecordingDraws == fState); if (info.fIsRenderingToFloat && fGpu->caps()->avoidInstancedDrawsToFPTargets()) { @@ -107,7 +109,7 @@ InstancedRendering::Batch* InstancedRendering::recordShape(ShapeType type, const } AntialiasMode antialiasMode; - if (!this->selectAntialiasMode(viewMatrix, aa, info, aaType, &antialiasMode)) { + if (!this->selectAntialiasMode(viewMatrix, antialias, info, useHWAA, &antialiasMode)) { return nullptr; } @@ -191,28 +193,27 @@ InstancedRendering::Batch* InstancedRendering::recordShape(ShapeType type, const return batch; } -inline bool InstancedRendering::selectAntialiasMode(const SkMatrix& viewMatrix, GrAA aa, +inline bool InstancedRendering::selectAntialiasMode(const SkMatrix& viewMatrix, bool antialias, const GrInstancedPipelineInfo& info, - GrAAType* aaType, - AntialiasMode* antialiasMode) { + bool* useHWAA, AntialiasMode* antialiasMode) { SkASSERT(!info.fColorDisabled || info.fDrawingShapeToStencil); SkASSERT(!info.fIsMixedSampled || info.fIsMultisampled); SkASSERT(GrCaps::InstancedSupport::kNone != fGpu->caps()->instancedSupport()); if (!info.fIsMultisampled || fGpu->caps()->multisampleDisableSupport()) { - if (GrAA::kNo == aa) { + if (!antialias) { if (info.fDrawingShapeToStencil && !info.fCanDiscard) { // We can't draw to the stencil buffer without discard (or sample mask if MSAA). return false; } *antialiasMode = AntialiasMode::kNone; - *aaType = GrAAType::kNone; + *useHWAA = false; return true; } if (info.canUseCoverageAA() && viewMatrix.preservesRightAngles()) { *antialiasMode = AntialiasMode::kCoverage; - *aaType = GrAAType::kCoverage; + *useHWAA = false; return true; } } @@ -221,12 +222,12 @@ inline bool InstancedRendering::selectAntialiasMode(const SkMatrix& viewMatrix, fGpu->caps()->instancedSupport() >= GrCaps::InstancedSupport::kMultisampled) { if (!info.fIsMixedSampled || info.fColorDisabled) { *antialiasMode = AntialiasMode::kMSAA; - *aaType = GrAAType::kHW; + *useHWAA = true; return true; } if (fGpu->caps()->instancedSupport() >= GrCaps::InstancedSupport::kMixedSampled) { *antialiasMode = AntialiasMode::kMixedSamples; - *aaType = GrAAType::kHW; + *useHWAA = true; return true; } } |