Chromium Code Reviews| Index: include/gpu/GrContext.h |
| diff --git a/include/gpu/GrContext.h b/include/gpu/GrContext.h |
| index acd7b1ad911ee3e1ce92d5f40a8e846fdc66f243..e95f2c03df8c818272ae9b26c7cab1d8e94db286 100644 |
| --- a/include/gpu/GrContext.h |
| +++ b/include/gpu/GrContext.h |
| @@ -43,7 +43,6 @@ class GrTextureParams; |
| class GrVertexBuffer; |
| class GrStrokeInfo; |
| class GrSoftwarePathRenderer; |
| -class SkGpuDevice; |
| class SK_API GrContext : public SkRefCnt { |
| public: |
| @@ -174,11 +173,16 @@ public: |
| /** |
| * Returns a helper object to orchestrate draws. |
| + * Callers should take a ref if they rely on the GrDrawContext sticking around. |
| + * NULL will be returned if the context has been abandoned. |
| + * |
| + * @param devProps the device properties (mainly defines text drawing) |
|
bsalomon
2015/06/11 01:47:57
devprops doesn't already have a DF flag? I guess I
robertphillips
2015/06/16 16:52:37
I think that would be reasonable.
|
| + * @param uesDFT should Distance Field Text be used? |
| * |
| * @return a draw context |
| */ |
| - GrDrawContext* drawContext() { |
| - return fDrawingMgr.drawContext(); |
| + GrDrawContext* drawContext(const SkDeviceProperties* devProps = NULL, bool useDFT = false) { |
| + return fDrawingMgr.drawContext(devProps, useDFT); |
| } |
| /////////////////////////////////////////////////////////////////////////// |
| @@ -390,15 +394,17 @@ private: |
| GrContext(); // init must be called after the constructor. |
| bool init(GrBackend, GrBackendContext, const GrContextOptions& options); |
| - // Currently the DrawingMgr just wraps the single GrDrawTarget in a single |
| - // GrDrawContext and hands it out. In the future this class will allocate |
| - // a new GrDrawContext for each GrRenderTarget/GrDrawTarget and manage |
| - // the DAG. |
| + // Currently the DrawingMgr stores a separate GrDrawContext for each |
| + // combination of text drawing options (pixel geometry x DFT use) |
| + // and hands the appropriate one back given the user's request. |
| + // All of the GrDrawContexts still land in the same GrDrawTarget! |
| + // |
| + // In the future this class will allocate a new GrDrawContext for |
| + // each GrRenderTarget/GrDrawTarget and manage the DAG. |
| class DrawingMgr { |
| public: |
| - DrawingMgr() |
| - : fDrawTarget(NULL) |
| - , fDrawContext(NULL) { |
| + DrawingMgr() : fDrawTarget(NULL) { |
| + sk_bzero(fDrawContext, sizeof(fDrawContext)); |
| } |
| ~DrawingMgr(); |
| @@ -414,14 +420,18 @@ private: |
| // Callers should take a ref if they rely on the GrDrawContext sticking around. |
| // NULL will be returned if the context has been abandoned. |
| - GrDrawContext* drawContext(); |
| + GrDrawContext* drawContext(const SkDeviceProperties* devProps, bool useDFT); |
| private: |
| friend class GrContext; // for access to fDrawTarget for testing |
| + static const int kNumPixelGeometries = 5; // The different pixel geometries |
| + static const int kNumDFTOptions = 2; // DFT or no DFT |
| + |
| + GrContext* fContext; |
| GrDrawTarget* fDrawTarget; |
| - GrDrawContext* fDrawContext; |
| + GrDrawContext* fDrawContext[kNumPixelGeometries][kNumDFTOptions]; |
| }; |
| DrawingMgr fDrawingMgr; |
| @@ -430,18 +440,6 @@ private: |
| void initCommon(); |
| /** |
| - * Creates a new text rendering context that is optimal for the |
| - * render target and the context. Caller assumes the ownership |
| - * of the returned object. The returned object must be deleted |
| - * before the context is destroyed. |
| - * TODO bury this behind context! |
| - */ |
| - GrTextContext* createTextContext(GrRenderTarget*, |
| - const SkDeviceProperties&, |
| - bool enableDistanceFieldFonts); |
| - |
| - |
| - /** |
| * These functions create premul <-> unpremul effects if it is possible to generate a pair |
| * of effects that make a readToUPM->writeToPM->readToUPM cycle invariant. Otherwise, they |
| * return NULL. |
| @@ -461,9 +459,6 @@ private: |
| */ |
| static void TextBlobCacheOverBudgetCB(void* data); |
| - // TODO see note on createTextContext |
| - friend class SkGpuDevice; |
| - |
| typedef SkRefCnt INHERITED; |
| }; |