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

Commit 3f3d9d05 authored by android-build-team Robot's avatar android-build-team Robot
Browse files

Snap for 7205268 from c04b9206 to sc-release

Change-Id: I41da2f105237deee7c144da9fdf9a259f57a8ead
parents b2b4aa2c c04b9206
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -214,6 +214,7 @@ cc_library {
        "-misc-redundant-expression",
        "-misc-unused-using-decls",
        "performance*",
        "-performance-no-int-to-ptr",
        "portability*",
    ],

+10 −0
Original line number Diff line number Diff line
@@ -85,5 +85,15 @@ std::unique_ptr<RenderEngine> RenderEngine::create(const RenderEngineCreationArg

RenderEngine::~RenderEngine() = default;

void RenderEngine::validateInputBufferUsage(const sp<GraphicBuffer>& buffer) {
    LOG_ALWAYS_FATAL_IF(!(buffer->getUsage() & GraphicBuffer::USAGE_HW_TEXTURE),
                        "input buffer not gpu readable");
}

void RenderEngine::validateOutputBufferUsage(const sp<GraphicBuffer>& buffer) {
    LOG_ALWAYS_FATAL_IF(!(buffer->getUsage() & GraphicBuffer::USAGE_HW_RENDER),
                        "output buffer not gpu writeable");
}

} // namespace renderengine
} // namespace android
+3 −0
Original line number Diff line number Diff line
@@ -1125,6 +1125,8 @@ status_t GLESRenderEngine::drawLayers(const DisplaySettings& display,
        return BAD_VALUE;
    }

    validateOutputBufferUsage(buffer);

    std::unique_ptr<BindNativeBufferAsFramebuffer> fbo;
    // Gathering layers that requested blur, we'll need them to decide when to render to an
    // offscreen buffer, and when to render to the native buffer.
@@ -1249,6 +1251,7 @@ status_t GLESRenderEngine::drawLayers(const DisplaySettings& display,
            isOpaque = layer->source.buffer.isOpaque;

            sp<GraphicBuffer> gBuf = layer->source.buffer.buffer;
            validateInputBufferUsage(gBuf);
            bindExternalTextureBuffer(layer->source.buffer.textureName, gBuf,
                                      layer->source.buffer.fence);

+3 −0
Original line number Diff line number Diff line
@@ -201,6 +201,9 @@ public:
    // we should not allow in general, so remove this.
    RenderEngineType getRenderEngineType() const { return mRenderEngineType; }

    static void validateInputBufferUsage(const sp<GraphicBuffer>&);
    static void validateOutputBufferUsage(const sp<GraphicBuffer>&);

protected:
    friend class threaded::RenderEngineThreaded;
    const RenderEngineType mRenderEngineType;
+3 −0
Original line number Diff line number Diff line
@@ -598,6 +598,8 @@ status_t SkiaGLRenderEngine::drawLayers(const DisplaySettings& display,
        return BAD_VALUE;
    }

    validateOutputBufferUsage(buffer);

    auto grContext = mInProtectedContext ? mProtectedGrContext : mGrContext;
    auto& cache = mInProtectedContext ? mProtectedTextureCache : mTextureCache;
    AHardwareBuffer_Desc bufferDesc;
@@ -815,6 +817,7 @@ status_t SkiaGLRenderEngine::drawLayers(const DisplaySettings& display,
        SkPaint paint;
        if (layer->source.buffer.buffer) {
            ATRACE_NAME("DrawImage");
            validateInputBufferUsage(layer->source.buffer.buffer);
            const auto& item = layer->source.buffer;
            std::shared_ptr<AutoBackendTexture::LocalRef> imageTextureRef = nullptr;
            auto iter = mTextureCache.find(item.buffer->getId());
Loading