Index: src/gpu/GrOptDrawState.h |
diff --git a/src/gpu/GrOptDrawState.h b/src/gpu/GrOptDrawState.h |
index f47913a41ae049b2b214ac166a1291f4c09bf3a2..2be301706d3648df4c02560ba6355ff71fb34476 100644 |
--- a/src/gpu/GrOptDrawState.h |
+++ b/src/gpu/GrOptDrawState.h |
@@ -11,11 +11,13 @@ |
#include "GrColor.h" |
#include "GrGpu.h" |
#include "GrProcessorStage.h" |
+#include "GrProgramDesc.h" |
#include "GrStencil.h" |
#include "GrTypesPriv.h" |
#include "SkMatrix.h" |
#include "SkRefCnt.h" |
+class GrDeviceCoordTexture; |
class GrDrawState; |
/** |
@@ -30,8 +32,8 @@ public: |
* GrOptDrawState. In all cases the GrOptDrawState is reffed and ownership is given to the |
* caller. |
*/ |
- static GrOptDrawState* Create(const GrDrawState& drawState, const GrDrawTargetCaps& caps, |
- GrGpu::DrawType drawType); |
+ static GrOptDrawState* Create(const GrDrawState& drawState, GrGpu*, |
+ const GrDeviceCoordTexture* dstCopy, GrGpu::DrawType drawType); |
bool operator== (const GrOptDrawState& that) const; |
@@ -306,38 +308,10 @@ public: |
bool readsFragPosition() const { return fReadsFragPosition; } |
bool requiresLocalCoordAttrib() const { return fRequiresLocalCoordAttrib; } |
- /////////////////////////////////////////////////////////////////////////// |
- /// @name Stage Output Types |
- //// |
- |
- enum PrimaryOutputType { |
- // Modulate color and coverage, write result as the color output. |
- kModulate_PrimaryOutputType, |
- // Combines the coverage, dst, and color as coverage * color + (1 - coverage) * dst. This |
- // can only be set if fDstReadKey is non-zero. |
- kCombineWithDst_PrimaryOutputType, |
- |
- kPrimaryOutputTypeCnt, |
- }; |
- |
- enum SecondaryOutputType { |
- // There is no secondary output |
- kNone_SecondaryOutputType, |
- // Writes coverage as the secondary output. Only set if dual source blending is supported |
- // and primary output is kModulate. |
- kCoverage_SecondaryOutputType, |
- // Writes coverage * (1 - colorA) as the secondary output. Only set if dual source blending |
- // is supported and primary output is kModulate. |
- kCoverageISA_SecondaryOutputType, |
- // Writes coverage * (1 - colorRGBA) as the secondary output. Only set if dual source |
- // blending is supported and primary output is kModulate. |
- kCoverageISC_SecondaryOutputType, |
- |
- kSecondaryOutputTypeCnt, |
- }; |
+ GrProgramDesc::PrimaryOutputType getPrimaryOutputType() const { return fPrimaryOutputType; } |
+ GrProgramDesc::SecondaryOutputType getSecondaryOutputType() const { return fSecondaryOutputType; } |
- PrimaryOutputType getPrimaryOutputType() const { return fPrimaryOutputType; } |
- SecondaryOutputType getSecondaryOutputType() const { return fSecondaryOutputType; } |
+ const GrProgramDesc& desc() const { return fDesc; } |
/// @} |
@@ -376,7 +350,7 @@ private: |
*/ |
GrOptDrawState(const GrDrawState& drawState, BlendOptFlags blendOptFlags, |
GrBlendCoeff optSrcCoeff, GrBlendCoeff optDstCoeff, |
- const GrDrawTargetCaps& caps); |
+ GrGpu*, const GrDeviceCoordTexture* dstCopy, GrGpu::DrawType); |
/** |
* Loops through all the color stage effects to check if the stage will ignore color input or |
@@ -467,8 +441,10 @@ private: |
BlendOptFlags fBlendOptFlags; |
// Fragment shader color outputs |
- PrimaryOutputType fPrimaryOutputType : 8; |
- SecondaryOutputType fSecondaryOutputType : 8; |
+ GrProgramDesc::PrimaryOutputType fPrimaryOutputType : 8; |
bsalomon
2014/10/23 17:08:52
Is this stuff part of the key already? Wondering i
egdaniel
2014/10/23 17:15:07
An option would be to store these values locally i
joshualitt
2014/10/23 17:45:06
Seems a bit icky. We calculate these types while
egdaniel
2014/10/23 17:53:02
I don't think it is that wacky. The only reason we
bsalomon
2014/10/23 18:10:29
I'm not sure about the actual mechanics but I agre
|
+ GrProgramDesc::SecondaryOutputType fSecondaryOutputType : 8; |
+ |
+ GrProgramDesc fDesc; |
typedef SkRefCnt INHERITED; |
}; |