Index: include/gpu/GrXferProcessor.h |
diff --git a/include/gpu/GrXferProcessor.h b/include/gpu/GrXferProcessor.h |
index b7354b4ffbd3ce86007e02af93cbdd69c9433851..8206c9a7081748126e31b6aa66ebf2993b8fab09 100644 |
--- a/include/gpu/GrXferProcessor.h |
+++ b/include/gpu/GrXferProcessor.h |
@@ -49,6 +49,14 @@ enum GrBlendCoeff { |
}; |
/** |
+ * Barriers for blending. When a shader reads the dst directly, an Xfer barrier is sometimes |
+ * required after a pixel has been written, before it can be safely read again. |
+ */ |
+enum GrXferBarrierType { |
+ kTexture_GrXferBarrierType, //<! Required when a shader reads and renders to the same texture. |
+}; |
+ |
+/** |
* GrXferProcessor is responsible for implementing the xfer mode that blends the src color and dst |
* color. It does this by emitting fragment shader code and controlling the fixed-function blend |
* state. The inputs to its shader code are the final computed src color and fractional pixel |
@@ -125,6 +133,14 @@ public: |
GrColor* overrideColor, |
const GrDrawTargetCaps& caps) = 0; |
+ /** |
+ * Returns whether this XP will require an Xfer barrier on the given rt. If true, outBarrierType |
+ * is updated to contain the type of barrier needed. |
+ */ |
+ bool willNeedXferBarrier(const GrRenderTarget* rt, |
+ const GrDrawTargetCaps& caps, |
+ GrXferBarrierType* outBarrierType) const; |
+ |
struct BlendInfo { |
void reset() { |
fSrcBlend = kOne_GrBlendCoeff; |