diff options
author | android-build-team Robot <android-build-team-robot@google.com> | 2018-04-30 21:05:29 +0000 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2018-04-30 21:05:29 +0000 |
commit | 635dc181eda0e508d0960fae6c3bedbac7a8381c (patch) | |
tree | 1d9505870ae7d12f3d3da28bc17e0d41cbc6cd54 /libs/hwui/DeferredLayerUpdater.cpp | |
parent | 913f22a7fc47df578bbbf7008779747c5f0d85c9 (diff) | |
parent | be3876c434864d6c05212158b25d778d29b07eb0 (diff) |
Merge "Respect a Layer's (e.g. SurfaceTexture) colorSpace when compositing"
Diffstat (limited to 'libs/hwui/DeferredLayerUpdater.cpp')
-rw-r--r-- | libs/hwui/DeferredLayerUpdater.cpp | 16 |
1 files changed, 10 insertions, 6 deletions
diff --git a/libs/hwui/DeferredLayerUpdater.cpp b/libs/hwui/DeferredLayerUpdater.cpp index be7d663b412f..569de76f294e 100644 --- a/libs/hwui/DeferredLayerUpdater.cpp +++ b/libs/hwui/DeferredLayerUpdater.cpp @@ -40,7 +40,6 @@ DeferredLayerUpdater::DeferredLayerUpdater(RenderState& renderState, CreateLayer } DeferredLayerUpdater::~DeferredLayerUpdater() { - SkSafeUnref(mColorFilter); setTransform(nullptr); mRenderState.unregisterDeferredLayerUpdater(this); destroyLayer(); @@ -67,8 +66,11 @@ void DeferredLayerUpdater::destroyLayer() { void DeferredLayerUpdater::setPaint(const SkPaint* paint) { mAlpha = PaintUtils::getAlphaDirect(paint); mMode = PaintUtils::getBlendModeDirect(paint); - SkColorFilter* colorFilter = (paint) ? paint->getColorFilter() : nullptr; - SkRefCnt_SafeAssign(mColorFilter, colorFilter); + if (paint) { + mColorFilter = paint->refColorFilter(); + } else { + mColorFilter.reset(); + } } void DeferredLayerUpdater::apply() { @@ -143,7 +145,7 @@ void DeferredLayerUpdater::doUpdateTexImage() { #endif mSurfaceTexture->getTransformMatrix(transform); - updateLayer(forceFilter, transform); + updateLayer(forceFilter, transform, mSurfaceTexture->getCurrentDataSpace()); } } @@ -153,17 +155,19 @@ void DeferredLayerUpdater::doUpdateVkTexImage() { Layer::Api::OpenGL, Layer::Api::Vulkan); static const mat4 identityMatrix; - updateLayer(false, identityMatrix.data); + updateLayer(false, identityMatrix.data, HAL_DATASPACE_UNKNOWN); VkLayer* vkLayer = static_cast<VkLayer*>(mLayer); vkLayer->updateTexture(); } -void DeferredLayerUpdater::updateLayer(bool forceFilter, const float* textureTransform) { +void DeferredLayerUpdater::updateLayer(bool forceFilter, const float* textureTransform, + android_dataspace dataspace) { mLayer->setBlend(mBlend); mLayer->setForceFilter(forceFilter); mLayer->setSize(mWidth, mHeight); mLayer->getTexTransform().load(textureTransform); + mLayer->setDataSpace(dataspace); } void DeferredLayerUpdater::detachSurfaceTexture() { |