| Index: src/gpu/gl/GrGLCaps.h
|
| diff --git a/src/gpu/gl/GrGLCaps.h b/src/gpu/gl/GrGLCaps.h
|
| index 954b158809a5ccff495dec7ba0c3b75cf0955931..13ba3863b1228efc806a0da20e7c0f0fee30604b 100644
|
| --- a/src/gpu/gl/GrGLCaps.h
|
| +++ b/src/gpu/gl/GrGLCaps.h
|
| @@ -16,6 +16,7 @@
|
| #include "SkTArray.h"
|
|
|
| class GrGLContextInfo;
|
| +class GrGLSLCaps;
|
|
|
| /**
|
| * Stores some capabilities of a GL context. Most are determined by the GL
|
| @@ -165,19 +166,6 @@ public:
|
| kES_EXT_MsToTexture_MSFBOType == fMSFBOType;
|
| }
|
|
|
| - /**
|
| - * Some helper functions for encapsulating various extensions to read FB Buffer on openglES
|
| - *
|
| - * TODO(joshualitt) On desktop opengl 4.2+ we can achieve something similar to this effect
|
| - */
|
| - bool fbFetchSupport() const { return fFBFetchSupport; }
|
| -
|
| - bool fbFetchNeedsCustomOutput() const { return fFBFetchNeedsCustomOutput; }
|
| -
|
| - const char* fbFetchColorName() const { return fFBFetchColorName; }
|
| -
|
| - const char* fbFetchExtensionString() const { return fFBFetchExtensionString; }
|
| -
|
| bool fbMixedSamplesSupport() const { return fFBMixedSamplesSupport; }
|
|
|
| InvalidateFBType invalidateFBType() const { return fInvalidateFBType; }
|
| @@ -265,8 +253,6 @@ public:
|
|
|
| bool fullClearIsFree() const { return fFullClearIsFree; }
|
|
|
| - bool dropsTileOnZeroDivide() const { return fDropsTileOnZeroDivide; }
|
| -
|
| /**
|
| * Returns a string containing the caps info.
|
| */
|
| @@ -285,6 +271,8 @@ public:
|
|
|
| LATCAlias latcAlias() const { return fLATCAlias; }
|
|
|
| + GrGLSLCaps* glslCaps() const { return reinterpret_cast<GrGLSLCaps*>(fShaderCaps.get()); }
|
| +
|
| private:
|
| /**
|
| * Maintains a bit per GrPixelConfig. It is used to avoid redundantly
|
| @@ -329,9 +317,6 @@ private:
|
| void initConfigRenderableTable(const GrGLContextInfo&);
|
| void initConfigTexturableTable(const GrGLContextInfo&, const GrGLInterface*);
|
|
|
| - // Must be called after fGeometryShaderSupport is initialized.
|
| - void initShaderPrecisionTable(const GrGLContextInfo&, const GrGLInterface*);
|
| -
|
| bool doReadPixelsSupported(const GrGLInterface* intf, GrGLenum format, GrGLenum type) const;
|
|
|
| // tracks configs that have been verified to pass the FBO completeness when
|
| @@ -371,14 +356,8 @@ private:
|
| bool fUseNonVBOVertexAndIndexDynamicData : 1;
|
| bool fIsCoreProfile : 1;
|
| bool fFullClearIsFree : 1;
|
| - bool fDropsTileOnZeroDivide : 1;
|
| - bool fFBFetchSupport : 1;
|
| - bool fFBFetchNeedsCustomOutput : 1;
|
| bool fFBMixedSamplesSupport : 1;
|
|
|
| - const char* fFBFetchColorName;
|
| - const char* fFBFetchExtensionString;
|
| -
|
| struct ReadPixelsSupportedFormat {
|
| GrGLenum fFormat;
|
| GrGLenum fType;
|
| @@ -395,6 +374,66 @@ private:
|
| typedef GrDrawTargetCaps INHERITED;
|
| };
|
|
|
| -typedef GrGLCaps GrGLSLCaps;
|
| +
|
| +class GrGLSLCaps : public GrShaderCaps {
|
| +public:
|
| + SK_DECLARE_INST_COUNT(GrGLSLCaps)
|
| +
|
| + /**
|
| + * Creates a GrGLSLCaps that advertises no support for any extensions,
|
| + * formats, etc. Call init to initialize from a GrGLContextInfo.
|
| + */
|
| + GrGLSLCaps();
|
| + ~GrGLSLCaps() override {}
|
| +
|
| + GrGLSLCaps(const GrGLSLCaps& caps);
|
| +
|
| + GrGLSLCaps& operator = (const GrGLSLCaps& caps);
|
| +
|
| + /**
|
| + * Resets the caps such that nothing is supported.
|
| + */
|
| + void reset() override;
|
| +
|
| + /**
|
| + * Initializes the GrGLSLCaps to the set of features supported in the current
|
| + * OpenGL context accessible via ctxInfo.
|
| + */
|
| + bool init(const GrGLContextInfo& ctxInfo, const GrGLInterface* glInterface);
|
| +
|
| + /**
|
| + * Some helper functions for encapsulating various extensions to read FB Buffer on openglES
|
| + *
|
| + * TODO(joshualitt) On desktop opengl 4.2+ we can achieve something similar to this effect
|
| + */
|
| + bool fbFetchSupport() const { return fFBFetchSupport; }
|
| +
|
| + bool fbFetchNeedsCustomOutput() const { return fFBFetchNeedsCustomOutput; }
|
| +
|
| + const char* fbFetchColorName() const { return fFBFetchColorName; }
|
| +
|
| + const char* fbFetchExtensionString() const { return fFBFetchExtensionString; }
|
| +
|
| + bool dropsTileOnZeroDivide() const { return fDropsTileOnZeroDivide; }
|
| +
|
| + /**
|
| + * Returns a string containing the caps info.
|
| + */
|
| + SkString dump() const override;
|
| +
|
| +private:
|
| + // Must be called after fGeometryShaderSupport is initialized.
|
| + void initShaderPrecisionTable(const GrGLContextInfo&, const GrGLInterface*);
|
| +
|
| + bool fDropsTileOnZeroDivide : 1;
|
| + bool fFBFetchSupport : 1;
|
| + bool fFBFetchNeedsCustomOutput : 1;
|
| +
|
| + const char* fFBFetchColorName;
|
| + const char* fFBFetchExtensionString;
|
| +
|
| + typedef GrShaderCaps INHERITED;
|
| +};
|
| +
|
|
|
| #endif
|
|
|