Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit a3cd23fc authored by Kevin Lubick's avatar Kevin Lubick Committed by Android (Google) Code Review
Browse files

Merge "[base] Migrate SkSurface creation to SkSurfaces factories"

parents 0fe8336a 6817fc46
Loading
Loading
Loading
Loading
+14 −13
Original line number Diff line number Diff line
@@ -30,6 +30,7 @@
#include <SkSamplingOptions.h>
#include <SkSurface.h>
#include "include/gpu/GpuTypes.h" // from Skia
#include <include/gpu/ganesh/SkSurfaceGanesh.h>
#include <gui/TraceUtils.h>
#include <private/android/AHardwareBufferHelpers.h>
#include <shaders/shaders.h>
@@ -173,14 +174,14 @@ void Readback::copySurfaceInto(ANativeWindow* window, const std::shared_ptr<Copy
    SkBitmap skBitmap = request->getDestinationBitmap(srcRect.width(), srcRect.height());
    SkBitmap* bitmap = &skBitmap;
    sk_sp<SkSurface> tmpSurface =
            SkSurface::MakeRenderTarget(mRenderThread.getGrContext(), skgpu::Budgeted::kYes,
            SkSurfaces::RenderTarget(mRenderThread.getGrContext(), skgpu::Budgeted::kYes,
                                     bitmap->info(), 0, kTopLeft_GrSurfaceOrigin, nullptr);

    // if we can't generate a GPU surface that matches the destination bitmap (e.g. 565) then we
    // attempt to do the intermediate rendering step in 8888
    if (!tmpSurface.get()) {
        SkImageInfo tmpInfo = bitmap->info().makeColorType(SkColorType::kN32_SkColorType);
        tmpSurface = SkSurface::MakeRenderTarget(mRenderThread.getGrContext(),
        tmpSurface = SkSurfaces::RenderTarget(mRenderThread.getGrContext(),
                                              skgpu::Budgeted::kYes,
                                              tmpInfo, 0, kTopLeft_GrSurfaceOrigin, nullptr);
        if (!tmpSurface.get()) {
@@ -348,7 +349,7 @@ bool Readback::copyLayerInto(Layer* layer, const SkRect* srcRect, const SkRect*
     * a scaling issue (b/62262733) that was encountered when sampling from an EGLImage into a
     * software buffer.
     */
    sk_sp<SkSurface> tmpSurface = SkSurface::MakeRenderTarget(mRenderThread.getGrContext(),
    sk_sp<SkSurface> tmpSurface = SkSurfaces::RenderTarget(mRenderThread.getGrContext(),
                                                           skgpu::Budgeted::kYes,
                                                           bitmap->info(),
                                                           0,
@@ -358,7 +359,7 @@ bool Readback::copyLayerInto(Layer* layer, const SkRect* srcRect, const SkRect*
    // attempt to do the intermediate rendering step in 8888
    if (!tmpSurface.get()) {
        SkImageInfo tmpInfo = bitmap->info().makeColorType(SkColorType::kN32_SkColorType);
        tmpSurface = SkSurface::MakeRenderTarget(mRenderThread.getGrContext(),
        tmpSurface = SkSurfaces::RenderTarget(mRenderThread.getGrContext(),
                                              skgpu::Budgeted::kYes,
                                              tmpInfo, 0, kTopLeft_GrSurfaceOrigin, nullptr);
        if (!tmpSurface.get()) {
+2 −2
Original line number Diff line number Diff line
@@ -45,9 +45,9 @@ static bool convert(const ANativeWindow_Buffer* buffer,
    SkImageInfo imageInfo = uirenderer::ANativeWindowToImageInfo(*buffer, cs);
    size_t rowBytes = buffer->stride * imageInfo.bytesPerPixel();

    // If SkSurface::MakeRasterDirect fails then we should as well as we will not be able to
    // If SkSurfaces::WrapPixels fails then we should as well as we will not be able to
    // draw into the canvas.
    sk_sp<SkSurface> surface = SkSurface::MakeRasterDirect(imageInfo, buffer->bits, rowBytes);
    sk_sp<SkSurface> surface = SkSurfaces::WrapPixels(imageInfo, buffer->bits, rowBytes);
    if (surface.get() != nullptr) {
        if (outBitmap) {
            outBitmap->setInfo(imageInfo, rowBytes);
+1 −1
Original line number Diff line number Diff line
@@ -96,7 +96,7 @@ void GLFunctorDrawable::onDraw(SkCanvas* canvas) {
        SkImageInfo surfaceInfo =
                canvas->imageInfo().makeWH(clipBounds.width(), clipBounds.height());
        tmpSurface =
                SkSurface::MakeRenderTarget(directContext, skgpu::Budgeted::kYes, surfaceInfo);
                SkSurfaces::RenderTarget(directContext, skgpu::Budgeted::kYes, surfaceInfo);
        tmpSurface->getCanvas()->clear(SK_ColorTRANSPARENT);

        GrGLFramebufferInfo fboInfo;
+4 −3
Original line number Diff line number Diff line
@@ -16,6 +16,7 @@

#include "SkiaOpenGLPipeline.h"

#include <include/gpu/ganesh/SkSurfaceGanesh.h>
#include <GrBackendSurface.h>
#include <SkBlendMode.h>
#include <SkImageInfo.h>
@@ -150,7 +151,7 @@ IRenderPipeline::DrawResult SkiaOpenGLPipeline::draw(
        surface = getBufferSkSurface(bufferParams);
        preTransform = bufferParams.getTransform();
    } else {
        surface = SkSurface::MakeFromBackendRenderTarget(mRenderThread.getGrContext(), backendRT,
        surface = SkSurfaces::WrapBackendRenderTarget(mRenderThread.getGrContext(), backendRT,
                                                      getSurfaceOrigin(), colorType,
                                                      mSurfaceColorSpace, &props);
        preTransform = SkMatrix::I();
+6 −4
Original line number Diff line number Diff line
@@ -16,6 +16,8 @@

#include "SkiaPipeline.h"

#include <include/android/SkSurfaceAndroid.h>
#include <include/gpu/ganesh/SkSurfaceGanesh.h>
#include <SkCanvas.h>
#include <SkColor.h>
#include <SkColorSpace.h>
@@ -186,7 +188,7 @@ bool SkiaPipeline::createOrUpdateLayer(RenderNode* node, const DamageAccumulator
                                 kPremul_SkAlphaType, getSurfaceColorSpace());
        SkSurfaceProps props(0, kUnknown_SkPixelGeometry);
        SkASSERT(mRenderThread.getGrContext() != nullptr);
        node->setLayerSurface(SkSurface::MakeRenderTarget(mRenderThread.getGrContext(),
        node->setLayerSurface(SkSurfaces::RenderTarget(mRenderThread.getGrContext(),
                                                       skgpu::Budgeted::kYes, info, 0,
                                                       this->getSurfaceOrigin(), &props));
        if (node->getLayerSurface()) {
@@ -620,7 +622,7 @@ sk_sp<SkSurface> SkiaPipeline::getBufferSkSurface(
    auto bufferColorSpace = bufferParams.getColorSpace();
    if (mBufferSurface == nullptr || mBufferColorSpace == nullptr ||
        !SkColorSpace::Equals(mBufferColorSpace.get(), bufferColorSpace.get())) {
        mBufferSurface = SkSurface::MakeFromAHardwareBuffer(
        mBufferSurface = SkSurfaces::WrapAndroidHardwareBuffer(
                mRenderThread.getGrContext(), mHardwareBuffer, kTopLeft_GrSurfaceOrigin,
                bufferColorSpace, nullptr, true);
        mBufferColorSpace = bufferColorSpace;
Loading