Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(340)

Unified Diff: include/gpu/GrContext.h

Issue 1178383003: Revert of Make GrTextContext be owned by the GrDrawContext (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: Created 5 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | include/gpu/GrDrawContext.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: include/gpu/GrContext.h
diff --git a/include/gpu/GrContext.h b/include/gpu/GrContext.h
index e95f2c03df8c818272ae9b26c7cab1d8e94db286..acd7b1ad911ee3e1ce92d5f40a8e846fdc66f243 100644
--- a/include/gpu/GrContext.h
+++ b/include/gpu/GrContext.h
@@ -43,6 +43,7 @@
class GrVertexBuffer;
class GrStrokeInfo;
class GrSoftwarePathRenderer;
+class SkGpuDevice;
class SK_API GrContext : public SkRefCnt {
public:
@@ -173,16 +174,11 @@
/**
* 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)
- * @param uesDFT should Distance Field Text be used?
*
* @return a draw context
*/
- GrDrawContext* drawContext(const SkDeviceProperties* devProps = NULL, bool useDFT = false) {
- return fDrawingMgr.drawContext(devProps, useDFT);
+ GrDrawContext* drawContext() {
+ return fDrawingMgr.drawContext();
}
///////////////////////////////////////////////////////////////////////////
@@ -394,17 +390,15 @@
GrContext(); // init must be called after the constructor.
bool init(GrBackend, GrBackendContext, const GrContextOptions& options);
- // 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.
+ // 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.
class DrawingMgr {
public:
- DrawingMgr() : fDrawTarget(NULL) {
- sk_bzero(fDrawContext, sizeof(fDrawContext));
+ DrawingMgr()
+ : fDrawTarget(NULL)
+ , fDrawContext(NULL) {
}
~DrawingMgr();
@@ -420,24 +414,32 @@
// 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(const SkDeviceProperties* devProps, bool useDFT);
+ GrDrawContext* drawContext();
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[kNumPixelGeometries][kNumDFTOptions];
+ GrDrawContext* fDrawContext;
};
DrawingMgr fDrawingMgr;
void initMockContext();
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
@@ -459,6 +461,9 @@
*/
static void TextBlobCacheOverBudgetCB(void* data);
+ // TODO see note on createTextContext
+ friend class SkGpuDevice;
+
typedef SkRefCnt INHERITED;
};
« no previous file with comments | « no previous file | include/gpu/GrDrawContext.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698