summaryrefslogtreecommitdiff
path: root/chromium/third_party/skia/dm/DMSrcSink.h
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/third_party/skia/dm/DMSrcSink.h')
-rw-r--r--chromium/third_party/skia/dm/DMSrcSink.h52
1 files changed, 34 insertions, 18 deletions
diff --git a/chromium/third_party/skia/dm/DMSrcSink.h b/chromium/third_party/skia/dm/DMSrcSink.h
index 3dd109b4f66..184841a91e6 100644
--- a/chromium/third_party/skia/dm/DMSrcSink.h
+++ b/chromium/third_party/skia/dm/DMSrcSink.h
@@ -9,7 +9,6 @@
#define DMSrcSink_DEFINED
#include "gm/gm.h"
-#include "include/android/SkBitmapRegionDecoder.h"
#include "include/core/SkBBHFactory.h"
#include "include/core/SkBitmap.h"
#include "include/core/SkCanvas.h"
@@ -87,15 +86,15 @@ struct SinkFlags {
struct Src {
virtual ~Src() {}
- virtual Result SK_WARN_UNUSED_RESULT draw(SkCanvas*) const = 0;
+ virtual Result SK_WARN_UNUSED_RESULT draw(GrContext*, SkCanvas*) const = 0;
virtual SkISize size() const = 0;
virtual Name name() const = 0;
virtual void modifyGrContextOptions(GrContextOptions* options) const {}
virtual bool veto(SinkFlags) const { return false; }
virtual int pageCount() const { return 1; }
- virtual Result SK_WARN_UNUSED_RESULT draw(int, SkCanvas* canvas) const {
- return this->draw(canvas);
+ virtual Result SK_WARN_UNUSED_RESULT draw(int, GrContext* context, SkCanvas* canvas) const {
+ return this->draw(context, canvas);
}
virtual SkISize size(int) const { return this->size(); }
// Force Tasks using this Src to run on the main thread?
@@ -131,7 +130,7 @@ class GMSrc : public Src {
public:
explicit GMSrc(skiagm::GMFactory);
- Result draw(SkCanvas*) const override;
+ Result draw(GrContext*, SkCanvas*) const override;
SkISize size() const override;
Name name() const override;
void modifyGrContextOptions(GrContextOptions* options) const override;
@@ -163,7 +162,7 @@ public:
};
CodecSrc(Path, Mode, DstColorType, SkAlphaType, float);
- Result draw(SkCanvas*) const override;
+ Result draw(GrContext*, SkCanvas*) const override;
SkISize size() const override;
Name name() const override;
bool veto(SinkFlags) const override;
@@ -181,7 +180,7 @@ class AndroidCodecSrc : public Src {
public:
AndroidCodecSrc(Path, CodecSrc::DstColorType, SkAlphaType, int sampleSize);
- Result draw(SkCanvas*) const override;
+ Result draw(GrContext*, SkCanvas*) const override;
SkISize size() const override;
Name name() const override;
bool veto(SinkFlags) const override;
@@ -194,6 +193,7 @@ private:
bool fRunSerially;
};
+#ifdef SK_ENABLE_ANDROID_UTILS
// Allows for testing of various implementations of Android's BitmapRegionDecoder
class BRDSrc : public Src {
public:
@@ -209,7 +209,7 @@ public:
BRDSrc(Path, Mode, CodecSrc::DstColorType, uint32_t);
- Result draw(SkCanvas*) const override;
+ Result draw(GrContext*, SkCanvas*) const override;
SkISize size() const override;
Name name() const override;
bool veto(SinkFlags) const override;
@@ -219,6 +219,7 @@ private:
CodecSrc::DstColorType fDstColorType;
uint32_t fSampleSize;
};
+#endif
class ImageGenSrc : public Src {
public:
@@ -228,7 +229,7 @@ public:
};
ImageGenSrc(Path, Mode, SkAlphaType, bool);
- Result draw(SkCanvas*) const override;
+ Result draw(GrContext*, SkCanvas*) const override;
SkISize size() const override;
Name name() const override;
bool veto(SinkFlags) const override;
@@ -245,7 +246,7 @@ class ColorCodecSrc : public Src {
public:
ColorCodecSrc(Path, bool decode_to_dst);
- Result draw(SkCanvas*) const override;
+ Result draw(GrContext*, SkCanvas*) const override;
SkISize size() const override;
Name name() const override;
bool veto(SinkFlags) const override;
@@ -258,7 +259,7 @@ class SKPSrc : public Src {
public:
explicit SKPSrc(Path path);
- Result draw(SkCanvas*) const override;
+ Result draw(GrContext*, SkCanvas*) const override;
SkISize size() const override;
Name name() const override;
private:
@@ -272,7 +273,7 @@ class BisectSrc : public SKPSrc {
public:
explicit BisectSrc(Path path, const char* trail);
- Result draw(SkCanvas*) const override;
+ Result draw(GrContext*, SkCanvas*) const override;
private:
SkString fTrail;
@@ -286,7 +287,7 @@ class SkottieSrc final : public Src {
public:
explicit SkottieSrc(Path path);
- Result draw(SkCanvas*) const override;
+ Result draw(GrContext*, SkCanvas*) const override;
SkISize size() const override;
Name name() const override;
bool veto(SinkFlags) const override;
@@ -314,7 +315,7 @@ class SVGSrc : public Src {
public:
explicit SVGSrc(Path path);
- Result draw(SkCanvas*) const override;
+ Result draw(GrContext*, SkCanvas*) const override;
SkISize size() const override;
Name name() const override;
bool veto(SinkFlags) const override;
@@ -334,8 +335,8 @@ public:
explicit MSKPSrc(Path path);
int pageCount() const override;
- Result draw(SkCanvas* c) const override;
- Result draw(int, SkCanvas*) const override;
+ Result draw(GrContext*, SkCanvas* c) const override;
+ Result draw(int, GrContext*, SkCanvas*) const override;
SkISize size() const override;
SkISize size(int) const override;
Name name() const override;
@@ -450,6 +451,21 @@ private:
typedef GPUSink INHERITED;
};
+// This sink attempts to emulate Chrome's OOP-R behavior. It:
+// doesn't use promise images
+// uses only a single thread for both DDL creation & drawing
+class GPUOOPRSink : public GPUSink {
+public:
+ GPUOOPRSink(const SkCommandLineConfigGpu*, const GrContextOptions&);
+
+ Result draw(const Src&, SkBitmap*, SkWStream*, SkString*) const override;
+
+private:
+ Result ooprDraw(const Src&, sk_sp<SkSurface> dstSurface, GrContext*) const;
+
+ typedef GPUSink INHERITED;
+};
+
// This sink attempts to better simulate the Chrome DDL use-case. It:
// creates the DDLs on separate recording threads
// performs all the GPU work on a separate GPU thread
@@ -472,8 +488,8 @@ private:
sk_gpu_test::TestContext* gpuTestCtx,
GrContext* gpuThreadCtx) const;
- std::unique_ptr<SkExecutor> fRecordingThreadPool;
- std::unique_ptr<SkExecutor> fGPUThread;
+ std::unique_ptr<SkExecutor> fRecordingExecutor;
+ std::unique_ptr<SkExecutor> fGPUExecutor;
typedef GPUSink INHERITED;
};