| Index: src/gpu/GrDrawTarget.cpp
|
| ===================================================================
|
| --- src/gpu/GrDrawTarget.cpp (revision 8359)
|
| +++ src/gpu/GrDrawTarget.cpp (working copy)
|
| @@ -452,7 +452,7 @@
|
| void GrDrawTarget::stencilPath(const GrPath* path, const SkStrokeRec& stroke, SkPath::FillType fill) {
|
| // TODO: extract portions of checkDraw that are relevant to path stenciling.
|
| GrAssert(NULL != path);
|
| - GrAssert(fCaps.pathStencilingSupport());
|
| + GrAssert(this->caps()->pathStencilingSupport());
|
| GrAssert(!stroke.isHairlineStyle());
|
| GrAssert(!SkPath::IsInverseFillType(fill));
|
| this->onStencilPath(path, stroke, fill);
|
| @@ -464,7 +464,7 @@
|
| // There is a conflict between using smooth lines and our use of premultiplied alpha. Smooth
|
| // lines tweak the incoming alpha value but not in a premul-alpha way. So we only use them when
|
| // our alpha is 0xff and tweaking the color for partial coverage is OK
|
| - if (!fCaps.hwAALineSupport() ||
|
| + if (!this->caps()->hwAALineSupport() ||
|
| !this->getDrawState().isHWAntialiasState()) {
|
| return false;
|
| }
|
| @@ -476,7 +476,7 @@
|
| bool GrDrawTarget::canApplyCoverage() const {
|
| // we can correctly apply coverage if a) we have dual source blending
|
| // or b) one of our blend optimizations applies.
|
| - return this->getCaps().dualSourceBlendingSupport() ||
|
| + return this->caps()->dualSourceBlendingSupport() ||
|
| GrDrawState::kNone_BlendOpt != this->getDrawState().getBlendOpts(true);
|
| }
|
|
|
| @@ -677,19 +677,57 @@
|
| target->setClip(&fReplacementClip);
|
| }
|
|
|
| +///////////////////////////////////////////////////////////////////////////////
|
| +
|
| +void GrDrawTarget::Caps::reset() {
|
| + f8BitPaletteSupport = false;
|
| + fNPOTTextureTileSupport = false;
|
| + fTwoSidedStencilSupport = false;
|
| + fStencilWrapOpsSupport = false;
|
| + fHWAALineSupport = false;
|
| + fShaderDerivativeSupport = false;
|
| + fGeometryShaderSupport = false;
|
| + fDualSourceBlendingSupport = false;
|
| + fBufferLockSupport = false;
|
| + fPathStencilingSupport = false;
|
| +
|
| + fMaxRenderTargetSize = 0;
|
| + fMaxTextureSize = 0;
|
| + fMaxSampleCount = 0;
|
| +}
|
| +
|
| +GrDrawTarget::Caps& GrDrawTarget::Caps::operator=(const GrDrawTarget::Caps& other) {
|
| + f8BitPaletteSupport = other.f8BitPaletteSupport;
|
| + fNPOTTextureTileSupport = other.fNPOTTextureTileSupport;
|
| + fTwoSidedStencilSupport = other.fTwoSidedStencilSupport;
|
| + fStencilWrapOpsSupport = other.fStencilWrapOpsSupport;
|
| + fHWAALineSupport = other.fHWAALineSupport;
|
| + fShaderDerivativeSupport = other.fShaderDerivativeSupport;
|
| + fGeometryShaderSupport = other.fGeometryShaderSupport;
|
| + fDualSourceBlendingSupport = other.fDualSourceBlendingSupport;
|
| + fBufferLockSupport = other.fBufferLockSupport;
|
| + fPathStencilingSupport = other.fPathStencilingSupport;
|
| +
|
| + fMaxRenderTargetSize = other.fMaxRenderTargetSize;
|
| + fMaxTextureSize = other.fMaxTextureSize;
|
| + fMaxSampleCount = other.fMaxSampleCount;
|
| +
|
| + return *this;
|
| +}
|
| +
|
| void GrDrawTarget::Caps::print() const {
|
| static const char* gNY[] = {"NO", "YES"};
|
| - GrPrintf("8 Bit Palette Support : %s\n", gNY[fInternals.f8BitPaletteSupport]);
|
| - GrPrintf("NPOT Texture Tile Support : %s\n", gNY[fInternals.fNPOTTextureTileSupport]);
|
| - GrPrintf("Two Sided Stencil Support : %s\n", gNY[fInternals.fTwoSidedStencilSupport]);
|
| - GrPrintf("Stencil Wrap Ops Support : %s\n", gNY[fInternals.fStencilWrapOpsSupport]);
|
| - GrPrintf("HW AA Lines Support : %s\n", gNY[fInternals.fHWAALineSupport]);
|
| - GrPrintf("Shader Derivative Support : %s\n", gNY[fInternals.fShaderDerivativeSupport]);
|
| - GrPrintf("Geometry Shader Support : %s\n", gNY[fInternals.fGeometryShaderSupport]);
|
| - GrPrintf("FSAA Support : %s\n", gNY[fInternals.fFSAASupport]);
|
| - GrPrintf("Dual Source Blending Support: %s\n", gNY[fInternals.fDualSourceBlendingSupport]);
|
| - GrPrintf("Buffer Lock Support : %s\n", gNY[fInternals.fBufferLockSupport]);
|
| - GrPrintf("Path Stenciling Support : %s\n", gNY[fInternals.fPathStencilingSupport]);
|
| - GrPrintf("Max Texture Size : %d\n", fInternals.fMaxTextureSize);
|
| - GrPrintf("Max Render Target Size : %d\n", fInternals.fMaxRenderTargetSize);
|
| + GrPrintf("8 Bit Palette Support : %s\n", gNY[f8BitPaletteSupport]);
|
| + GrPrintf("NPOT Texture Tile Support : %s\n", gNY[fNPOTTextureTileSupport]);
|
| + GrPrintf("Two Sided Stencil Support : %s\n", gNY[fTwoSidedStencilSupport]);
|
| + GrPrintf("Stencil Wrap Ops Support : %s\n", gNY[fStencilWrapOpsSupport]);
|
| + GrPrintf("HW AA Lines Support : %s\n", gNY[fHWAALineSupport]);
|
| + GrPrintf("Shader Derivative Support : %s\n", gNY[fShaderDerivativeSupport]);
|
| + GrPrintf("Geometry Shader Support : %s\n", gNY[fGeometryShaderSupport]);
|
| + GrPrintf("Dual Source Blending Support: %s\n", gNY[fDualSourceBlendingSupport]);
|
| + GrPrintf("Buffer Lock Support : %s\n", gNY[fBufferLockSupport]);
|
| + GrPrintf("Path Stenciling Support : %s\n", gNY[fPathStencilingSupport]);
|
| + GrPrintf("Max Texture Size : %d\n", fMaxTextureSize);
|
| + GrPrintf("Max Render Target Size : %d\n", fMaxRenderTargetSize);
|
| + GrPrintf("Max Sample Count : %d\n", fMaxSampleCount);
|
| }
|
|
|