| Index: src/gpu/GrDrawingManager.h
|
| diff --git a/src/gpu/GrDrawingManager.h b/src/gpu/GrDrawingManager.h
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..d799493c8fc8888d2d740af20235cd28eef2f02a
|
| --- /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 DrawingManager creates a separate GrTextContext for each
|
| +// 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
|
|
|