SkDeferredCanvas uses a simple pipe: no cross-process, no shared-address, etc.
(see src/utils/SkDeferredCanvas.cpp:306).
We could just remove these modes from the bot configs, but I'd like to take the
opportunity to simplify the DM code too. I'll happily volunteer to put things
back should we decide we want to test these modes.
BUG=skia:
Review URL: https://codereview.chromium.org/
861303003
static Sink* create_via(const char* tag, Sink* wrapped) {
#define VIA(t, via, ...) if (0 == strcmp(t, tag)) { return new via(__VA_ARGS__); }
+ VIA("pipe", ViaPipe, wrapped);
VIA("serialize", ViaSerialization, wrapped);
-
- VIA("tiles", ViaTiles, 256, 256, NULL, wrapped);
- VIA("tiles_rt", ViaTiles, 256, 256, new SkRTreeFactory, wrapped);
-
- const int xp = SkGPipeWriter::kCrossProcess_Flag,
- sa = xp | SkGPipeWriter::kSharedAddressSpace_Flag;
- VIA("pipe", ViaPipe, 0, wrapped);
- VIA("pipe_xp", ViaPipe, xp, wrapped);
- VIA("pipe_sa", ViaPipe, sa, wrapped);
+ VIA("tiles", ViaTiles, 256, 256, NULL, wrapped);
+ VIA("tiles_rt", ViaTiles, 256, 256, new SkRTreeFactory, wrapped);
if (FLAGS_matrix.count() == 9) {
SkMatrix m;
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
-ViaPipe::ViaPipe(int flags, Sink* sink) : fFlags((SkGPipeWriter::Flags)flags), fSink(sink) {}
+ViaPipe::ViaPipe(Sink* sink) : fSink(sink) {}
Error ViaPipe::draw(const Src& src, SkBitmap* bitmap, SkWStream* stream) const {
- // We turn our arguments into a Src, then draw that Src into our Sink to fill bitmap or stream.
+ // We turn ourselves into another Src that draws our argument into bitmap/stream via pipe.
struct ProxySrc : public Src {
const Src& fSrc;
- SkGPipeWriter::Flags fFlags;
- ProxySrc(const Src& src, SkGPipeWriter::Flags flags) : fSrc(src), fFlags(flags) {}
+ ProxySrc(const Src& src) : fSrc(src) {}
Error draw(SkCanvas* canvas) const SK_OVERRIDE {
SkISize size = this->size();
// TODO: is DecodeMemory really required? Might help RAM usage to be lazy if we can.
PipeController controller(canvas, &SkImageDecoder::DecodeMemory);
SkGPipeWriter pipe;
- return fSrc.draw(pipe.startRecording(&controller, fFlags, size.width(), size.height()));
+ const uint32_t kFlags = 0; // We mirror SkDeferredCanvas, which doesn't use any flags.
+ return fSrc.draw(pipe.startRecording(&controller, kFlags, size.width(), size.height()));
}
SkISize size() const SK_OVERRIDE { return fSrc.size(); }
Name name() const SK_OVERRIDE { sk_throw(); return ""; } // No one should be calling this.
- } proxy(src, fFlags);
+ } proxy(src);
return fSink->draw(proxy, bitmap, stream);
}
class ViaPipe : public Sink {
public:
- ViaPipe(int flags, Sink*);
+ explicit ViaPipe(Sink*);
Error draw(const Src&, SkBitmap*, SkWStream*) const SK_OVERRIDE;
int enclave() const SK_OVERRIDE { return fSink->enclave(); }
const char* fileExtension() const SK_OVERRIDE { return fSink->fileExtension(); }
private:
- SkGPipeWriter::Flags fFlags;
SkAutoTDelete<Sink> fSink;
};