leave pixel memory uninitialized for opaque alpha type in SkSurface::MakeRaster
BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2412633002 Review-Url: https://codereview.chromium.org/2412633002
This commit is contained in:
parent
88fa7476ab
commit
c64ef3563d
@ -51,10 +51,14 @@ public:
|
||||
void* context, const SkSurfaceProps* = nullptr);
|
||||
|
||||
/**
|
||||
* Return a new surface, with the memory for the pixels automatically allocated and
|
||||
* zero-initialized, but respecting the specified rowBytes. If rowBytes==0, then a default
|
||||
* value will be chosen. If a non-zero rowBytes is specified, then any images snapped off of
|
||||
* this surface (via makeImageSnapshot()) are guaranteed to have the same rowBytes.
|
||||
* Return a new surface, with the memory for the pixels automatically allocated but respecting
|
||||
* the specified rowBytes. If rowBytes==0, then a default value will be chosen. If a non-zero
|
||||
* rowBytes is specified, then any images snapped off of this surface (via makeImageSnapshot())
|
||||
* are guaranteed to have the same rowBytes.
|
||||
*
|
||||
* If the requested alpha type is not opaque, then the surface's pixel memory will be
|
||||
* zero-initialized. If it is opaque, then it will be left uninitialized, and the caller is
|
||||
* responsible for initially clearing the surface.
|
||||
*
|
||||
* If the requested surface cannot be created, or the request is not a
|
||||
* supported configuration, NULL will be returned.
|
||||
|
@ -208,7 +208,11 @@ sk_sp<SkSurface> SkSurface::MakeRaster(const SkImageInfo& info, size_t rowBytes,
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
SkAutoTUnref<SkPixelRef> pr(SkMallocPixelRef::NewZeroed(info, rowBytes, nullptr));
|
||||
// If the requested alpha type is opaque, then leave the pixels uninitialized.
|
||||
// Alpha formats can be safely initialiezd to zero.
|
||||
SkAutoTUnref<SkPixelRef> pr(info.isOpaque()
|
||||
? SkMallocPixelRef::NewAllocate(info, rowBytes, nullptr)
|
||||
: SkMallocPixelRef::NewZeroed(info, rowBytes, nullptr));
|
||||
if (nullptr == pr.get()) {
|
||||
return nullptr;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user