Chromium Code Reviews| Index: include/gpu/GrContext.h |
| diff --git a/include/gpu/GrContext.h b/include/gpu/GrContext.h |
| index acd7b1ad911ee3e1ce92d5f40a8e846fdc66f243..97d2f8258d1b2bdd61ba745772a698e16cd25a48 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: |
| @@ -175,10 +174,13 @@ public: |
| /** |
| * Returns a helper object to orchestrate draws. |
|
reed1
2015/06/10 15:10:45
I presume there is no ownership change w/ this? i.
robertphillips
2015/06/10 15:17:44
Done - added some comments.
|
| * |
| + * @param devProps the device properties (mainly defines text drawing) |
| + * @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 +392,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 +418,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 +438,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 +457,6 @@ private: |
| */ |
| static void TextBlobCacheOverBudgetCB(void* data); |
| - // TODO see note on createTextContext |
| - friend class SkGpuDevice; |
| - |
| typedef SkRefCnt INHERITED; |
| }; |