Loading graphics/java/android/graphics/ColorSpace.java +2 −2 Original line number Diff line number Diff line Loading @@ -212,9 +212,9 @@ public abstract class ColorSpace { new Rgb.TransferParameters(1 / 1.055, 0.055 / 1.055, 1 / 12.92, 0.04045, 2.4); private static final Rgb.TransferParameters BT2020_HLG_TRANSFER_PARAMETERS = new Rgb.TransferParameters(2.0f, 2.0f, 1 / 0.17883277f, 0.28466892f, 0.5599107f, -11 / 12.0f, -3.0f, true); 0.28466892f, 0.5599107f, 0.0f, -3.0f, true); private static final Rgb.TransferParameters BT2020_PQ_TRANSFER_PARAMETERS = new Rgb.TransferParameters(-107 / 128.0f, 1.0f, 32 / 2523.0f, new Rgb.TransferParameters(107 / 128.0f, 1.0f, 32 / 2523.0f, 2413 / 128.0f, -2392 / 128.0f, 8192 / 1305.0f, -2.0f, true); // See static initialization block next to #get(Named) Loading libs/hwui/Android.bp +1 −1 Original line number Diff line number Diff line Loading @@ -551,7 +551,6 @@ cc_defaults { "RootRenderNode.cpp", "SkiaCanvas.cpp", "SkiaInterpolator.cpp", "Tonemapper.cpp", "VectorDrawable.cpp", ], Loading Loading @@ -610,6 +609,7 @@ cc_defaults { "ProfileData.cpp", "ProfileDataContainer.cpp", "Readback.cpp", "Tonemapper.cpp", "TreeInfo.cpp", "WebViewFunctorManager.cpp", "protos/graphicsstats.proto", Loading libs/hwui/CanvasTransform.h +1 −1 Original line number Diff line number Diff line Loading @@ -45,4 +45,4 @@ bool transformPaint(ColorTransform transform, SkPaint* paint, BitmapPalette pale SkColor transformColor(ColorTransform transform, SkColor color); SkColor transformColorInverse(ColorTransform transform, SkColor color); } // namespace android::uirenderer } // namespace android::uirenderer; No newline at end of file libs/hwui/RecordingCanvas.cpp +4 −11 Original line number Diff line number Diff line Loading @@ -43,7 +43,6 @@ #include "SkRegion.h" #include "SkTextBlob.h" #include "SkVertices.h" #include "Tonemapper.h" #include "VectorDrawable.h" #include "include/gpu/GpuTypes.h" // from Skia #include "include/gpu/GrDirectContext.h" Loading Loading @@ -345,9 +344,7 @@ struct DrawImage final : Op { SkPaint paint; BitmapPalette palette; void draw(SkCanvas* c, const SkMatrix&) const { SkPaint newPaint = paint; tonemapPaint(image->imageInfo(), c->imageInfo(), -1, newPaint); c->drawImage(image.get(), x, y, sampling, &newPaint); c->drawImage(image.get(), x, y, sampling, &paint); } }; struct DrawImageRect final : Op { Loading @@ -369,9 +366,7 @@ struct DrawImageRect final : Op { SkCanvas::SrcRectConstraint constraint; BitmapPalette palette; void draw(SkCanvas* c, const SkMatrix&) const { SkPaint newPaint = paint; tonemapPaint(image->imageInfo(), c->imageInfo(), -1, newPaint); c->drawImageRect(image.get(), src, dst, sampling, &newPaint, constraint); c->drawImageRect(image.get(), src, dst, sampling, &paint, constraint); } }; struct DrawImageLattice final : Op { Loading Loading @@ -404,10 +399,8 @@ struct DrawImageLattice final : Op { auto flags = (0 == fs) ? nullptr : pod<SkCanvas::Lattice::RectType>( this, (xs + ys) * sizeof(int) + fs * sizeof(SkColor)); SkPaint newPaint = paint; tonemapPaint(image->imageInfo(), c->imageInfo(), -1, newPaint); c->drawImageLattice(image.get(), {xdivs, ydivs, flags, xs, ys, &src, colors}, dst, filter, &newPaint); c->drawImageLattice(image.get(), {xdivs, ydivs, flags, xs, ys, &src, colors}, dst, filter, &paint); } }; Loading libs/hwui/Tonemapper.cpp +3 −14 Original line number Diff line number Diff line Loading @@ -18,10 +18,7 @@ #include <SkRuntimeEffect.h> #include <log/log.h> // libshaders only exists on Android devices #ifdef __ANDROID__ #include <shaders/shaders.h> #endif #include "utils/Color.h" Loading @@ -29,8 +26,6 @@ namespace android::uirenderer { namespace { // custom tonemapping only exists on Android devices #ifdef __ANDROID__ class ColorFilterRuntimeEffectBuilder : public SkRuntimeEffectBuilder { public: explicit ColorFilterRuntimeEffectBuilder(sk_sp<SkRuntimeEffect> effect) Loading Loading @@ -64,21 +59,20 @@ static sk_sp<SkColorFilter> createLinearEffectColorFilter(const shaders::LinearE return effectBuilder.makeColorFilter(); } static ui::Dataspace extractTransfer(ui::Dataspace dataspace) { return static_cast<ui::Dataspace>(dataspace & HAL_DATASPACE_TRANSFER_MASK); static bool extractTransfer(ui::Dataspace dataspace) { return dataspace & HAL_DATASPACE_TRANSFER_MASK; } static bool isHdrDataspace(ui::Dataspace dataspace) { const auto transfer = extractTransfer(dataspace); return transfer == ui::Dataspace::TRANSFER_ST2084 || transfer == ui::Dataspace::TRANSFER_HLG; return transfer == HAL_DATASPACE_TRANSFER_ST2084 || transfer == HAL_DATASPACE_TRANSFER_HLG; } static ui::Dataspace getDataspace(const SkImageInfo& image) { return static_cast<ui::Dataspace>( ColorSpaceToADataSpace(image.colorSpace(), image.colorType())); } #endif } // namespace Loading @@ -86,8 +80,6 @@ static ui::Dataspace getDataspace(const SkImageInfo& image) { // shader and tag it on the supplied paint. void tonemapPaint(const SkImageInfo& source, const SkImageInfo& destination, float maxLuminanceNits, SkPaint& paint) { // custom tonemapping only exists on Android devices #ifdef __ANDROID__ const auto sourceDataspace = getDataspace(source); const auto destinationDataspace = getDataspace(destination); Loading @@ -110,9 +102,6 @@ void tonemapPaint(const SkImageInfo& source, const SkImageInfo& destination, flo paint.setColorFilter(colorFilter); } } #else return; #endif } } // namespace android::uirenderer Loading
graphics/java/android/graphics/ColorSpace.java +2 −2 Original line number Diff line number Diff line Loading @@ -212,9 +212,9 @@ public abstract class ColorSpace { new Rgb.TransferParameters(1 / 1.055, 0.055 / 1.055, 1 / 12.92, 0.04045, 2.4); private static final Rgb.TransferParameters BT2020_HLG_TRANSFER_PARAMETERS = new Rgb.TransferParameters(2.0f, 2.0f, 1 / 0.17883277f, 0.28466892f, 0.5599107f, -11 / 12.0f, -3.0f, true); 0.28466892f, 0.5599107f, 0.0f, -3.0f, true); private static final Rgb.TransferParameters BT2020_PQ_TRANSFER_PARAMETERS = new Rgb.TransferParameters(-107 / 128.0f, 1.0f, 32 / 2523.0f, new Rgb.TransferParameters(107 / 128.0f, 1.0f, 32 / 2523.0f, 2413 / 128.0f, -2392 / 128.0f, 8192 / 1305.0f, -2.0f, true); // See static initialization block next to #get(Named) Loading
libs/hwui/Android.bp +1 −1 Original line number Diff line number Diff line Loading @@ -551,7 +551,6 @@ cc_defaults { "RootRenderNode.cpp", "SkiaCanvas.cpp", "SkiaInterpolator.cpp", "Tonemapper.cpp", "VectorDrawable.cpp", ], Loading Loading @@ -610,6 +609,7 @@ cc_defaults { "ProfileData.cpp", "ProfileDataContainer.cpp", "Readback.cpp", "Tonemapper.cpp", "TreeInfo.cpp", "WebViewFunctorManager.cpp", "protos/graphicsstats.proto", Loading
libs/hwui/CanvasTransform.h +1 −1 Original line number Diff line number Diff line Loading @@ -45,4 +45,4 @@ bool transformPaint(ColorTransform transform, SkPaint* paint, BitmapPalette pale SkColor transformColor(ColorTransform transform, SkColor color); SkColor transformColorInverse(ColorTransform transform, SkColor color); } // namespace android::uirenderer } // namespace android::uirenderer; No newline at end of file
libs/hwui/RecordingCanvas.cpp +4 −11 Original line number Diff line number Diff line Loading @@ -43,7 +43,6 @@ #include "SkRegion.h" #include "SkTextBlob.h" #include "SkVertices.h" #include "Tonemapper.h" #include "VectorDrawable.h" #include "include/gpu/GpuTypes.h" // from Skia #include "include/gpu/GrDirectContext.h" Loading Loading @@ -345,9 +344,7 @@ struct DrawImage final : Op { SkPaint paint; BitmapPalette palette; void draw(SkCanvas* c, const SkMatrix&) const { SkPaint newPaint = paint; tonemapPaint(image->imageInfo(), c->imageInfo(), -1, newPaint); c->drawImage(image.get(), x, y, sampling, &newPaint); c->drawImage(image.get(), x, y, sampling, &paint); } }; struct DrawImageRect final : Op { Loading @@ -369,9 +366,7 @@ struct DrawImageRect final : Op { SkCanvas::SrcRectConstraint constraint; BitmapPalette palette; void draw(SkCanvas* c, const SkMatrix&) const { SkPaint newPaint = paint; tonemapPaint(image->imageInfo(), c->imageInfo(), -1, newPaint); c->drawImageRect(image.get(), src, dst, sampling, &newPaint, constraint); c->drawImageRect(image.get(), src, dst, sampling, &paint, constraint); } }; struct DrawImageLattice final : Op { Loading Loading @@ -404,10 +399,8 @@ struct DrawImageLattice final : Op { auto flags = (0 == fs) ? nullptr : pod<SkCanvas::Lattice::RectType>( this, (xs + ys) * sizeof(int) + fs * sizeof(SkColor)); SkPaint newPaint = paint; tonemapPaint(image->imageInfo(), c->imageInfo(), -1, newPaint); c->drawImageLattice(image.get(), {xdivs, ydivs, flags, xs, ys, &src, colors}, dst, filter, &newPaint); c->drawImageLattice(image.get(), {xdivs, ydivs, flags, xs, ys, &src, colors}, dst, filter, &paint); } }; Loading
libs/hwui/Tonemapper.cpp +3 −14 Original line number Diff line number Diff line Loading @@ -18,10 +18,7 @@ #include <SkRuntimeEffect.h> #include <log/log.h> // libshaders only exists on Android devices #ifdef __ANDROID__ #include <shaders/shaders.h> #endif #include "utils/Color.h" Loading @@ -29,8 +26,6 @@ namespace android::uirenderer { namespace { // custom tonemapping only exists on Android devices #ifdef __ANDROID__ class ColorFilterRuntimeEffectBuilder : public SkRuntimeEffectBuilder { public: explicit ColorFilterRuntimeEffectBuilder(sk_sp<SkRuntimeEffect> effect) Loading Loading @@ -64,21 +59,20 @@ static sk_sp<SkColorFilter> createLinearEffectColorFilter(const shaders::LinearE return effectBuilder.makeColorFilter(); } static ui::Dataspace extractTransfer(ui::Dataspace dataspace) { return static_cast<ui::Dataspace>(dataspace & HAL_DATASPACE_TRANSFER_MASK); static bool extractTransfer(ui::Dataspace dataspace) { return dataspace & HAL_DATASPACE_TRANSFER_MASK; } static bool isHdrDataspace(ui::Dataspace dataspace) { const auto transfer = extractTransfer(dataspace); return transfer == ui::Dataspace::TRANSFER_ST2084 || transfer == ui::Dataspace::TRANSFER_HLG; return transfer == HAL_DATASPACE_TRANSFER_ST2084 || transfer == HAL_DATASPACE_TRANSFER_HLG; } static ui::Dataspace getDataspace(const SkImageInfo& image) { return static_cast<ui::Dataspace>( ColorSpaceToADataSpace(image.colorSpace(), image.colorType())); } #endif } // namespace Loading @@ -86,8 +80,6 @@ static ui::Dataspace getDataspace(const SkImageInfo& image) { // shader and tag it on the supplied paint. void tonemapPaint(const SkImageInfo& source, const SkImageInfo& destination, float maxLuminanceNits, SkPaint& paint) { // custom tonemapping only exists on Android devices #ifdef __ANDROID__ const auto sourceDataspace = getDataspace(source); const auto destinationDataspace = getDataspace(destination); Loading @@ -110,9 +102,6 @@ void tonemapPaint(const SkImageInfo& source, const SkImageInfo& destination, flo paint.setColorFilter(colorFilter); } } #else return; #endif } } // namespace android::uirenderer