Migrate GrContextPriv & ivars to GrDirectContext
After this, GrContextPriv gets renamed and GrContext gets removed.
Change-Id: I49b034e4669876becb50b93c5fe3af887481e1ba
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/326158
Reviewed-by: Robert Phillips <robertphillips@google.com>
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Brian Salomon <bsalomon@google.com>
Auto-Submit: Adlai Holler <adlai@google.com>
diff --git a/include/gpu/GrDirectContext.h b/include/gpu/GrDirectContext.h
index 170b065..11048cb 100644
--- a/include/gpu/GrDirectContext.h
+++ b/include/gpu/GrDirectContext.h
@@ -15,14 +15,22 @@
// We shouldn't need this but currently Android is relying on this being include transitively.
#include "include/core/SkUnPreMultiply.h"
+class GrAtlasManager;
class GrBackendSemaphore;
+class GrClientMappedBufferManager;
+class GrContextPriv;
class GrContextThreadSafeProxy;
struct GrD3DBackendContext;
class GrFragmentProcessor;
+class GrGpu;
struct GrGLInterface;
struct GrMockOptions;
class GrPath;
+class GrResourceCache;
+class GrSmallPathAtlasMgr;
class GrRenderTargetContext;
+class GrResourceProvider;
+class GrStrikeCache;
class GrSurfaceProxy;
class GrSwizzle;
class GrTextureProxy;
@@ -32,6 +40,7 @@
class SkString;
class SkSurfaceCharacterization;
class SkSurfaceProps;
+class SkTaskGroup;
class SkTraceMemoryDump;
class SK_API GrDirectContext : public GrContext {
@@ -708,21 +717,45 @@
SkString dump() const;
#endif
+ // Provides access to functions that aren't part of the public API.
+ GrContextPriv priv();
+ const GrContextPriv priv() const; // NOLINT(readability-const-return-type)
+
protected:
GrDirectContext(GrBackendApi backend, const GrContextOptions& options);
bool init() override;
- GrAtlasManager* onGetAtlasManager() override { return fAtlasManager.get(); }
- GrSmallPathAtlasMgr* onGetSmallPathAtlasMgr() override;
+ GrAtlasManager* onGetAtlasManager() { return fAtlasManager.get(); }
+ GrSmallPathAtlasMgr* onGetSmallPathAtlasMgr();
GrDirectContext* asDirectContext() override { return this; }
private:
+ // fTaskGroup must appear before anything that uses it (e.g. fGpu), so that it is destroyed
+ // after all of its users. Clients of fTaskGroup will generally want to ensure that they call
+ // wait() on it as they are being destroyed, to avoid the possibility of pending tasks being
+ // invoked after objects they depend upon have already been destroyed.
+ std::unique_ptr<SkTaskGroup> fTaskGroup;
+ std::unique_ptr<GrStrikeCache> fStrikeCache;
+ sk_sp<GrGpu> fGpu;
+ std::unique_ptr<GrResourceCache> fResourceCache;
+ std::unique_ptr<GrResourceProvider> fResourceProvider;
+
+ bool fDidTestPMConversions;
+ // true if the PM/UPM conversion succeeded; false otherwise
+ bool fPMUPMConversionsRoundTrip;
+
+ GrContextOptions::PersistentCache* fPersistentCache;
+ GrContextOptions::ShaderErrorHandler* fShaderErrorHandler;
+
+ std::unique_ptr<GrClientMappedBufferManager> fMappedBufferManager;
std::unique_ptr<GrAtlasManager> fAtlasManager;
std::unique_ptr<GrSmallPathAtlasMgr> fSmallPathAtlasMgr;
+ friend class GrContextPriv;
+
using INHERITED = GrContext;
};
diff --git a/include/private/GrContext.h b/include/private/GrContext.h
index 0e47bac..220b00b 100644
--- a/include/private/GrContext.h
+++ b/include/private/GrContext.h
@@ -9,19 +9,8 @@
#define GrContext_DEFINED
#include "include/core/SkTypes.h"
-#include "include/gpu/GrContextOptions.h"
#include "include/gpu/GrRecordingContext.h"
-class GrAtlasManager;
-class GrClientMappedBufferManager;
-class GrContextPriv;
-class GrGpu;
-class GrResourceCache;
-class GrResourceProvider;
-class GrSmallPathAtlasMgr;
-class GrStrikeCache;
-class SkTaskGroup;
-
/**
* This deprecated class is being merged into GrDirectContext and removed.
* Do not add new subclasses, new API, or attempt to instantiate one.
@@ -32,40 +21,10 @@
public:
~GrContext() override;
- // Provides access to functions that aren't part of the public API.
- GrContextPriv priv();
- const GrContextPriv priv() const; // NOLINT(readability-const-return-type)
protected:
GrContext(sk_sp<GrContextThreadSafeProxy>);
- virtual GrAtlasManager* onGetAtlasManager() = 0;
- virtual GrSmallPathAtlasMgr* onGetSmallPathAtlasMgr() = 0;
-
private:
- friend class GrDirectContext; // for access to fGpu
-
- // fTaskGroup must appear before anything that uses it (e.g. fGpu), so that it is destroyed
- // after all of its users. Clients of fTaskGroup will generally want to ensure that they call
- // wait() on it as they are being destroyed, to avoid the possibility of pending tasks being
- // invoked after objects they depend upon have already been destroyed.
- std::unique_ptr<SkTaskGroup> fTaskGroup;
- std::unique_ptr<GrStrikeCache> fStrikeCache;
- sk_sp<GrGpu> fGpu;
- std::unique_ptr<GrResourceCache> fResourceCache;
- std::unique_ptr<GrResourceProvider> fResourceProvider;
-
- bool fDidTestPMConversions;
- // true if the PM/UPM conversion succeeded; false otherwise
- bool fPMUPMConversionsRoundTrip;
-
- GrContextOptions::PersistentCache* fPersistentCache;
- GrContextOptions::ShaderErrorHandler* fShaderErrorHandler;
-
- std::unique_ptr<GrClientMappedBufferManager> fMappedBufferManager;
-
- // TODO: have the GrClipStackClip use renderTargetContexts and rm this friending
- friend class GrContextPriv;
-
using INHERITED = GrRecordingContext;
};
diff --git a/src/gpu/GrContextPriv.h b/src/gpu/GrContextPriv.h
index cbea452..5e6e2f7 100644
--- a/src/gpu/GrContextPriv.h
+++ b/src/gpu/GrContextPriv.h
@@ -22,7 +22,8 @@
class SkDeferredDisplayList;
class SkTaskGroup;
-/** Class that adds methods to GrContext that are only intended for use internal to Skia.
+/** TODO: Rename to GrDirectContextPriv.
+ Class that adds methods to GrDirectContext that are only intended for use internal to Skia.
This class is purely a privileged window into GrContext. It should never have additional
data members or virtual methods. */
class GrContextPriv {
@@ -168,7 +169,7 @@
#endif
private:
- explicit GrContextPriv(GrContext* context) : fContext(context) {}
+ explicit GrContextPriv(GrDirectContext* context) : fContext(context) {}
GrContextPriv(const GrContextPriv&) = delete;
GrContextPriv& operator=(const GrContextPriv&) = delete;
@@ -176,15 +177,15 @@
const GrContextPriv* operator&() const;
GrContextPriv* operator&();
- GrContext* fContext;
+ GrDirectContext* fContext;
- friend class GrContext; // to construct/copy this type.
+ friend class GrDirectContext; // to construct/copy this type.
};
-inline GrContextPriv GrContext::priv() { return GrContextPriv(this); }
+inline GrContextPriv GrDirectContext::priv() { return GrContextPriv(this); }
-inline const GrContextPriv GrContext::priv() const { // NOLINT(readability-const-return-type)
- return GrContextPriv(const_cast<GrContext*>(this));
+inline const GrContextPriv GrDirectContext::priv() const { // NOLINT(readability-const-return-type)
+ return GrContextPriv(const_cast<GrDirectContext*>(this));
}
#endif
diff --git a/tools/fiddle/fiddle_main.cpp b/tools/fiddle/fiddle_main.cpp
index fa08050..e749d9d 100644
--- a/tools/fiddle/fiddle_main.cpp
+++ b/tools/fiddle/fiddle_main.cpp
@@ -119,7 +119,7 @@
}
#ifdef SK_GL
-static bool setup_backend_objects(GrContext* context,
+static bool setup_backend_objects(GrDirectContext* context,
const SkBitmap& bm,
const DrawOptions& options) {
if (!context) {