Chromium Code Reviews| Index: src/gpu/GrDrawingManager.h |
| diff --git a/src/gpu/GrDrawingManager.h b/src/gpu/GrDrawingManager.h |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..40cff73bff527dc8553823c2c4f38ea278289539 |
| --- /dev/null |
| +++ b/src/gpu/GrDrawingManager.h |
| @@ -0,0 +1,69 @@ |
| +/* |
| + * Copyright 2015 Google Inc. |
| + * |
| + * Use of this source code is governed by a BSD-style license that can be |
| + * found in the LICENSE file. |
| + */ |
| + |
| +#ifndef GrDrawingManager_DEFINED |
| +#define GrDrawingManager_DEFINED |
| + |
| +#include "SkTDArray.h" |
| + |
| +class GrContext; |
| +class GrDrawContext; |
| +class GrTextContext; |
| + |
| +// Currently the DrawingMgr creates a separate GrTextContext for each |
|
bsalomon
2015/10/16 20:09:06
Might want to change Mgr here.
robertphillips
2015/10/17 14:42:24
Done.
|
| +// combination of text drawing options (pixel geometry x DFT use) |
| +// and hands the appropriate one back given the DrawContext's request. |
| +// |
| +// It allocates a new GrDrawContext for each GrRenderTarget |
| +// but all of them 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 GrDrawingManager { |
| +public: |
| + ~GrDrawingManager(); |
| + |
| + bool abandoned() const { return fAbandoned; } |
| + |
| + GrDrawContext* drawContext(GrRenderTarget* rt, const SkSurfaceProps* surfaceProps); |
| + |
| + GrTextContext* textContext(const SkSurfaceProps& props, GrRenderTarget* rt); |
| + |
| + // The caller automatically gets a ref on the returned drawTarget. It must |
| + // be balanced by an unref call. |
| + GrDrawTarget* newDrawTarget(GrRenderTarget* rt); |
| + |
| + GrContext* getContext() { return fContext; } |
| + |
| +private: |
| + GrDrawingManager(GrContext* context) |
| + : fContext(context) |
| + , fAbandoned(false) |
| + , fNVPRTextContext(nullptr) { |
| + sk_bzero(fTextContexts, sizeof(fTextContexts)); |
| + } |
| + |
| + void abandon(); |
| + void cleanup(); |
| + void reset(); |
| + void flush(); |
| + |
| + friend class GrContext; // for access to: ctor, abandon, reset & flush |
| + |
| + static const int kNumPixelGeometries = 5; // The different pixel geometries |
| + static const int kNumDFTOptions = 2; // DFT or no DFT |
| + |
| + GrContext* fContext; |
| + |
| + bool fAbandoned; |
| + SkTDArray<GrDrawTarget*> fDrawTargets; |
| + |
| + GrTextContext* fNVPRTextContext; |
| + GrTextContext* fTextContexts[kNumPixelGeometries][kNumDFTOptions]; |
| +}; |
| + |
| +#endif |