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

Commit dfce8196 authored by John Reck's avatar John Reck Committed by android-build-merger
Browse files

Merge "Selectively disable filtering if estimated safe" into oc-dev

am: 38c97237

Change-Id: Ic3be7167429e8cd6a291ac0465e883522afcf9e3
parents 9d41ce8c 38c97237
Loading
Loading
Loading
Loading
+4 −2
Original line number Original line Diff line number Diff line
@@ -457,11 +457,13 @@ GlopBuilder& GlopBuilder::setFillTextureLayer(GlLayer& layer, float alpha) {
    return *this;
    return *this;
}
}


GlopBuilder& GlopBuilder::setFillExternalTexture(Texture& texture, Matrix4& textureTransform) {
GlopBuilder& GlopBuilder::setFillExternalTexture(Texture& texture, Matrix4& textureTransform,
        bool requiresFilter) {
    TRIGGER_STAGE(kFillStage);
    TRIGGER_STAGE(kFillStage);
    REQUIRE_STAGES(kMeshStage | kRoundRectClipStage);
    REQUIRE_STAGES(kMeshStage | kRoundRectClipStage);


    mOutGlop->fill.texture = { &texture, GL_LINEAR, GL_CLAMP_TO_EDGE, &textureTransform };
    GLenum filter = requiresFilter ? GL_LINEAR : GL_NEAREST;
    mOutGlop->fill.texture = { &texture, filter, GL_CLAMP_TO_EDGE, &textureTransform };


    setFill(SK_ColorWHITE, 1.0f, SkBlendMode::kSrc, Blend::ModeOrderSwap::NoSwap,
    setFill(SK_ColorWHITE, 1.0f, SkBlendMode::kSrc, Blend::ModeOrderSwap::NoSwap,
            nullptr, nullptr);
            nullptr, nullptr);
+2 −1
Original line number Original line Diff line number Diff line
@@ -75,7 +75,8 @@ public:
    GlopBuilder& setFillTextureLayer(GlLayer& layer, float alpha);
    GlopBuilder& setFillTextureLayer(GlLayer& layer, float alpha);
    // TODO: setFillLayer normally forces its own wrap & filter mode,
    // TODO: setFillLayer normally forces its own wrap & filter mode,
    // which isn't always correct.
    // which isn't always correct.
    GlopBuilder& setFillExternalTexture(Texture& texture, Matrix4& textureTransform);
    GlopBuilder& setFillExternalTexture(Texture& texture, Matrix4& textureTransform,
            bool requiresFilter);


    GlopBuilder& setTransform(const Matrix4& canvas, const int transformFlags);
    GlopBuilder& setTransform(const Matrix4& canvas, const int transformFlags);


+7 −1
Original line number Original line Diff line number Diff line
@@ -199,6 +199,7 @@ inline CopyResult copyTextureInto(Caches& caches, RenderState& renderState,
            GL_TEXTURE_2D, texture, 0);
            GL_TEXTURE_2D, texture, 0);


    {
    {
        bool requiresFilter;
        // Draw & readback
        // Draw & readback
        renderState.setViewport(destWidth, destHeight);
        renderState.setViewport(destWidth, destHeight);
        renderState.scissor().setEnabled(false);
        renderState.scissor().setEnabled(false);
@@ -216,12 +217,17 @@ inline CopyResult copyTextureInto(Caches& caches, RenderState& renderState,
            croppedTexTransform.scale(srcRect.getWidth() / sourceTexture.width(),
            croppedTexTransform.scale(srcRect.getWidth() / sourceTexture.width(),
                    srcRect.getHeight() / sourceTexture.height(), 1);
                    srcRect.getHeight() / sourceTexture.height(), 1);
            croppedTexTransform.multiply(sFlipV);
            croppedTexTransform.multiply(sFlipV);
            requiresFilter = srcRect.getWidth() != (float) destWidth
                    || srcRect.getHeight() != (float) destHeight;
        } else {
            requiresFilter = sourceTexture.width() != (uint32_t) destWidth
                    || sourceTexture.height() != (uint32_t) destHeight;
        }
        }
        Glop glop;
        Glop glop;
        GlopBuilder(renderState, caches, &glop)
        GlopBuilder(renderState, caches, &glop)
                .setRoundRectClipState(nullptr)
                .setRoundRectClipState(nullptr)
                .setMeshTexturedUnitQuad(nullptr)
                .setMeshTexturedUnitQuad(nullptr)
                .setFillExternalTexture(sourceTexture, croppedTexTransform)
                .setFillExternalTexture(sourceTexture, croppedTexTransform, requiresFilter)
                .setTransform(Matrix4::identity(), TransformFlags::None)
                .setTransform(Matrix4::identity(), TransformFlags::None)
                .setModelViewMapUnitToRect(Rect(destWidth, destHeight))
                .setModelViewMapUnitToRect(Rect(destWidth, destHeight))
                .build();
                .build();