skia2/dm
Brian Salomon ce240cc6fd SkSurface asynchronous read APIs allow client to extend pixel lifetime
Previously the pixel data passed to the client was only valid during
the client's callback. This meant if the client wanted to defer
processing of the data a copy was necessary.

Now we pass an object to the callback and the pixel lifetime is tied
to the lifetime of that object.

The object may be holding a GPU transfer buffer mapped. We don't assume
that the object will be released on the direct GrContext thread. So
when the object is destroyed it posts a message to a new type,
GrClientMappedBufferManager, hanging off the direct context. The direct
context will periodically check for messages and unmap and then unref
buffers so that they can be reused. Currently this is done in
GrContext::performDeferredCleanup() and GrDrawingManager::flush().

The old API is kept around for backwards compatibility but it is
reimplemented as a bridge on top of the new mechanism.

Also a utility function to SkImageInfo is added to directly make a new
info with a specified dimensions rather than passing the width and
height separately to makeWH().

Bug: chromium:973403
Bug: skia:8962

Change-Id: Id5cf04235376170142a48e90d3ecd13fd021a2a6
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/245457
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: Brian Salomon <bsalomon@google.com>
2019-10-02 19:20:08 +00:00
..
DM.cpp Simplify GPUSink constructors by just passing the config object 2019-09-09 18:12:18 +00:00
DMGpuTestProcs.cpp Remove "nvpr" configs 2019-06-26 16:53:50 +00:00
DMJsonWriter.cpp Remove all global mutexes 2019-06-18 00:39:15 +00:00
DMJsonWriter.h rewrite includes to not need so much -Ifoo 2019-04-24 16:27:11 +00:00
DMSrcSink.cpp SkSurface asynchronous read APIs allow client to extend pixel lifetime 2019-10-02 19:20:08 +00:00
DMSrcSink.h Simplify GPUSink constructors by just passing the config object 2019-09-09 18:12:18 +00:00