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

Commit 79555a7a authored by Peiyong Lin's avatar Peiyong Lin Committed by Android (Google) Code Review
Browse files

Merge "[SurfaceFlinger] Add GPU protected content support."

parents c4d6e57f 8f28a1d2
Loading
Loading
Loading
Loading
+5 −2
Original line number Original line Diff line number Diff line
@@ -125,9 +125,11 @@ static constexpr mat4 inverseOrientation(uint32_t transform) {


bool BufferLayer::prepareClientLayer(const RenderArea& renderArea, const Region& clip,
bool BufferLayer::prepareClientLayer(const RenderArea& renderArea, const Region& clip,
                                     bool useIdentityTransform, Region& clearRegion,
                                     bool useIdentityTransform, Region& clearRegion,
                                     const bool supportProtectedContent,
                                     renderengine::LayerSettings& layer) {
                                     renderengine::LayerSettings& layer) {
    ATRACE_CALL();
    ATRACE_CALL();
    Layer::prepareClientLayer(renderArea, clip, useIdentityTransform, clearRegion, layer);
    Layer::prepareClientLayer(renderArea, clip, useIdentityTransform, clearRegion,
                              supportProtectedContent, layer);
    if (CC_UNLIKELY(mActiveBuffer == 0)) {
    if (CC_UNLIKELY(mActiveBuffer == 0)) {
        // the texture has not been created yet, this Layer has
        // the texture has not been created yet, this Layer has
        // in fact never been drawn into. This happens frequently with
        // in fact never been drawn into. This happens frequently with
@@ -154,7 +156,8 @@ bool BufferLayer::prepareClientLayer(const RenderArea& renderArea, const Region&
        }
        }
        return false;
        return false;
    }
    }
    bool blackOutLayer = isProtected() || (isSecure() && !renderArea.isSecure());
    bool blackOutLayer =
            (isProtected() && !supportProtectedContent) || (isSecure() && !renderArea.isSecure());
    const State& s(getDrawingState());
    const State& s(getDrawingState());
    if (!blackOutLayer) {
    if (!blackOutLayer) {
        layer.source.buffer.buffer = mActiveBuffer;
        layer.source.buffer.buffer = mActiveBuffer;
+2 −1
Original line number Original line Diff line number Diff line
@@ -168,7 +168,8 @@ protected:
    // prepareClientLayer - constructs a RenderEngine layer for GPU composition.
    // prepareClientLayer - constructs a RenderEngine layer for GPU composition.
    bool prepareClientLayer(const RenderArea& renderArea, const Region& clip,
    bool prepareClientLayer(const RenderArea& renderArea, const Region& clip,
                            bool useIdentityTransform, Region& clearRegion,
                            bool useIdentityTransform, Region& clearRegion,
                            renderengine::LayerSettings& layer);
                            const bool supportProtectedContent,
                            renderengine::LayerSettings& layer) override;


private:
private:
    // Returns true if this layer requires filtering
    // Returns true if this layer requires filtering
+3 −1
Original line number Original line Diff line number Diff line
@@ -50,8 +50,10 @@ ColorLayer::~ColorLayer() = default;


bool ColorLayer::prepareClientLayer(const RenderArea& renderArea, const Region& clip,
bool ColorLayer::prepareClientLayer(const RenderArea& renderArea, const Region& clip,
                                    bool useIdentityTransform, Region& clearRegion,
                                    bool useIdentityTransform, Region& clearRegion,
                                    const bool supportProtectedContent,
                                    renderengine::LayerSettings& layer) {
                                    renderengine::LayerSettings& layer) {
    Layer::prepareClientLayer(renderArea, clip, useIdentityTransform, clearRegion, layer);
    Layer::prepareClientLayer(renderArea, clip, useIdentityTransform, clearRegion,
                              supportProtectedContent, layer);
    half4 color(getColor());
    half4 color(getColor());
    half3 solidColor(color.r, color.g, color.b);
    half3 solidColor(color.r, color.g, color.b);
    layer.source.solidColor = solidColor;
    layer.source.solidColor = solidColor;
+4 −3
Original line number Original line Diff line number Diff line
@@ -42,9 +42,10 @@ public:


protected:
protected:
    FloatRect computeCrop(const sp<const DisplayDevice>& /*display*/) const override { return {}; }
    FloatRect computeCrop(const sp<const DisplayDevice>& /*display*/) const override { return {}; }
    virtual bool prepareClientLayer(const RenderArea& renderArea, const Region& clip,
    bool prepareClientLayer(const RenderArea& renderArea, const Region& clip,
                            bool useIdentityTransform, Region& clearRegion,
                            bool useIdentityTransform, Region& clearRegion,
                                    renderengine::LayerSettings& layer);
                            const bool supportProtectedContent,
                            renderengine::LayerSettings& layer) override;


private:
private:
    std::shared_ptr<compositionengine::Layer> mCompositionLayer;
    std::shared_ptr<compositionengine::Layer> mCompositionLayer;
+1 −1
Original line number Original line Diff line number Diff line
@@ -26,7 +26,7 @@ ContainerLayer::ContainerLayer(const LayerCreationArgs& args) : Layer(args) {}


ContainerLayer::~ContainerLayer() = default;
ContainerLayer::~ContainerLayer() = default;


bool ContainerLayer::prepareClientLayer(const RenderArea&, const Region&, bool, Region&,
bool ContainerLayer::prepareClientLayer(const RenderArea&, const Region&, bool, Region&, const bool,
                                        renderengine::LayerSettings&) {
                                        renderengine::LayerSettings&) {
    return false;
    return false;
}
}
Loading