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

Commit 25833d29 authored by Derek Sollenberger's avatar Derek Sollenberger
Browse files

Standardize the surface origin for each HWUI pipeline.

OpenGL prefers a bottom-left origin while Vulkan prefers the
top-left. Prior to this change we were inconsistent in Vulkan by
creating layers with a bottom-left origin which was different from
the primary buffer.

Test: CtsUiRenderingTestCases
Change-Id: Icfeed4085021cae941aeab58720406e3b3e37923
parent 59a7bc04
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -96,7 +96,7 @@ bool SkiaOpenGLPipeline::draw(const Frame& frame, const SkRect& screenDirty, con

    SkASSERT(mRenderThread.getGrContext() != nullptr);
    sk_sp<SkSurface> surface(SkSurface::MakeFromBackendRenderTarget(
            mRenderThread.getGrContext(), backendRT, kBottomLeft_GrSurfaceOrigin, colorType,
            mRenderThread.getGrContext(), backendRT, this->getSurfaceOrigin(), colorType,
            mSurfaceColorSpace, &props));

    SkiaPipeline::updateLighting(lightGeometry, lightInfo);
+1 −0
Original line number Diff line number Diff line
@@ -39,6 +39,7 @@ public:
              const Rect& contentDrawBounds, bool opaque, const LightInfo& lightInfo,
              const std::vector<sp<RenderNode> >& renderNodes,
              FrameInfoVisualizer* profiler) override;
    GrSurfaceOrigin getSurfaceOrigin() override { return kBottomLeft_GrSurfaceOrigin; }
    bool swapBuffers(const renderthread::Frame& frame, bool drew, const SkRect& screenDirty,
                     FrameInfo* currentFrameInfo, bool* requireSwap) override;
    DeferredLayerUpdater* createTextureLayer() override;
+2 −1
Original line number Diff line number Diff line
@@ -174,7 +174,8 @@ bool SkiaPipeline::createOrUpdateLayer(RenderNode* node, const DamageAccumulator
        SkSurfaceProps props(0, kUnknown_SkPixelGeometry);
        SkASSERT(mRenderThread.getGrContext() != nullptr);
        node->setLayerSurface(SkSurface::MakeRenderTarget(mRenderThread.getGrContext(),
                                                          SkBudgeted::kYes, info, 0, &props));
                                                          SkBudgeted::kYes, info, 0,
                                                          this->getSurfaceOrigin(), &props));
        if (node->getLayerSurface()) {
            // update the transform in window of the layer to reset its origin wrt light source
            // position
+1 −1
Original line number Diff line number Diff line
@@ -48,7 +48,7 @@ public:
    bool createOrUpdateLayer(RenderNode* node, const DamageAccumulator& damageAccumulator,
                             ErrorHandler* errorHandler) override;

    SkColorType getSurfaceColorType() const { return mSurfaceColorType; }
    SkColorType getSurfaceColorType() const override { return mSurfaceColorType; }
    sk_sp<SkColorSpace> getSurfaceColorSpace() override { return mSurfaceColorSpace; }

    void renderFrame(const LayerUpdateQueue& layers, const SkRect& clip,
+1 −0
Original line number Diff line number Diff line
@@ -35,6 +35,7 @@ public:
              const Rect& contentDrawBounds, bool opaque, const LightInfo& lightInfo,
              const std::vector<sp<RenderNode> >& renderNodes,
              FrameInfoVisualizer* profiler) override;
    GrSurfaceOrigin getSurfaceOrigin() override { return kTopLeft_GrSurfaceOrigin; }
    bool swapBuffers(const renderthread::Frame& frame, bool drew, const SkRect& screenDirty,
                     FrameInfo* currentFrameInfo, bool* requireSwap) override;
    DeferredLayerUpdater* createTextureLayer() override;
Loading