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

Commit 3c20b55c authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge changes I6f6853a3,I2c6234a1,Iad51c4cf,Ib5e658df,Ia6f0df08, ...

* changes:
  SF: Define mock::EventThread
  SF: Separate EventThread into interface and impl
  SF: Define mock::RE::RenderEngine et al
  SF: Separate RenderEngine into interface and impl
  SF: Define Hwc2::mock::Composer
  SF: Separate Hwc2::Composer into interface and impl
parents b0056e9f f979735a
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -244,7 +244,7 @@ void HardwareComposer::OnPostThreadResumed() {
  // Standalones only create the composer client once and then use SetPowerMode
  // to control the screen on pause/resume.
  if (!is_standalone_device_ || !composer_) {
    composer_.reset(new Hwc2::Composer("default"));
    composer_.reset(new Hwc2::impl::Composer("default"));
    composer_callback_ = new ComposerCallback;
    composer_->registerCallback(composer_callback_);
    LOG_ALWAYS_FATAL_IF(!composer_callback_->HasDisplayId(),
+2 −2
Original line number Diff line number Diff line
@@ -200,7 +200,7 @@ void BufferLayer::onDraw(const RenderArea& renderArea, const Region& clip,

    bool blackOutLayer = isProtected() || (isSecure() && !renderArea.isSecure());

    RenderEngine& engine(mFlinger->getRenderEngine());
    auto& engine(mFlinger->getRenderEngine());

    if (!blackOutLayer) {
        // TODO: we could be more subtle with isFixedSize()
@@ -817,7 +817,7 @@ void BufferLayer::drawWithOpenGL(const RenderArea& renderArea, bool useIdentityT
    texCoords[2] = vec2(right, 1.0f - bottom);
    texCoords[3] = vec2(right, 1.0f - top);

    RenderEngine& engine(mFlinger->getRenderEngine());
    auto& engine(mFlinger->getRenderEngine());
    engine.setupLayerBlending(mPremultipliedAlpha, isOpaque(s), false /* disableTexture */,
                              getColor());
    engine.setSourceDataSpace(mCurrentState.dataSpace);
+12 −9
Original line number Diff line number Diff line
@@ -23,6 +23,7 @@

#include "DispSync.h"
#include "Layer.h"
#include "RenderEngine/Image.h"
#include "RenderEngine/RenderEngine.h"

#include <inttypes.h>
@@ -56,8 +57,8 @@ namespace android {

static const mat4 mtxIdentity;

BufferLayerConsumer::BufferLayerConsumer(const sp<IGraphicBufferConsumer>& bq, RenderEngine& engine,
                                         uint32_t tex, Layer* layer)
BufferLayerConsumer::BufferLayerConsumer(const sp<IGraphicBufferConsumer>& bq,
                                         RE::RenderEngine& engine, uint32_t tex, Layer* layer)
      : ConsumerBase(bq, false),
        mCurrentCrop(Rect::EMPTY_RECT),
        mCurrentTransform(0),
@@ -359,7 +360,7 @@ status_t BufferLayerConsumer::bindTextureImageLocked() {

    if (mCurrentTexture == BufferQueue::INVALID_BUFFER_SLOT && mCurrentTextureImage == nullptr) {
        BLC_LOGE("bindTextureImage: no currently-bound texture");
        mRE.bindExternalTextureImage(mTexName, RE::Image(mRE));
        mRE.bindExternalTextureImage(mTexName, *mRE.createImage());
        return NO_INIT;
    }

@@ -367,7 +368,7 @@ status_t BufferLayerConsumer::bindTextureImageLocked() {
    status_t err = mCurrentTextureImage->createIfNeeded(imageCrop);
    if (err != NO_ERROR) {
        BLC_LOGW("bindTextureImage: can't create image on slot=%d", mCurrentTexture);
        mRE.bindExternalTextureImage(mTexName, RE::Image(mRE));
        mRE.bindExternalTextureImage(mTexName, *mRE.createImage());
        return UNKNOWN_ERROR;
    }

@@ -604,13 +605,15 @@ void BufferLayerConsumer::dumpLocked(String8& result, const char* prefix) const
    ConsumerBase::dumpLocked(result, prefix);
}

BufferLayerConsumer::Image::Image(sp<GraphicBuffer> graphicBuffer, const RenderEngine& engine)
BufferLayerConsumer::Image::Image(sp<GraphicBuffer> graphicBuffer, RE::RenderEngine& engine)
      : mGraphicBuffer(graphicBuffer),
        mImage{engine},
        mImage{engine.createImage()},
        mCreated(false),
        mCropWidth(0),
        mCropHeight(0) {}

BufferLayerConsumer::Image::~Image() = default;

status_t BufferLayerConsumer::Image::createIfNeeded(const Rect& imageCrop) {
    const int32_t cropWidth = imageCrop.width();
    const int32_t cropHeight = imageCrop.height();
@@ -618,7 +621,7 @@ status_t BufferLayerConsumer::Image::createIfNeeded(const Rect& imageCrop) {
        return OK;
    }

    mCreated = mImage.setNativeWindowBuffer(mGraphicBuffer->getNativeBuffer(),
    mCreated = mImage->setNativeWindowBuffer(mGraphicBuffer->getNativeBuffer(),
                                             mGraphicBuffer->getUsage() & GRALLOC_USAGE_PROTECTED,
                                             cropWidth, cropHeight);
    if (mCreated) {
+12 −10
Original line number Diff line number Diff line
@@ -17,8 +17,6 @@
#ifndef ANDROID_BUFFERLAYERCONSUMER_H
#define ANDROID_BUFFERLAYERCONSUMER_H

#include "RenderEngine/Image.h"

#include <gui/BufferQueueDefs.h>
#include <gui/ConsumerBase.h>
#include <gui/HdrMetadata.h>
@@ -36,9 +34,13 @@ namespace android {

class DispSync;
class Layer;
class RenderEngine;
class String8;

namespace RE {
class RenderEngine;
class Image;
} // namespace RE

/*
 * BufferLayerConsumer consumes buffers of graphics data from a BufferQueue,
 * and makes them available to RenderEngine as a texture.
@@ -70,8 +72,8 @@ public:
    // BufferLayerConsumer constructs a new BufferLayerConsumer object.  The
    // tex parameter indicates the name of the RenderEngine texture to which
    // images are to be streamed.
    BufferLayerConsumer(const sp<IGraphicBufferConsumer>& bq, RenderEngine& engine, uint32_t tex,
                        Layer* layer);
    BufferLayerConsumer(const sp<IGraphicBufferConsumer>& bq, RE::RenderEngine& engine,
                        uint32_t tex, Layer* layer);

    // Sets the contents changed listener. This should be used instead of
    // ConsumerBase::setFrameAvailableListener().
@@ -220,7 +222,7 @@ private:
    // also only creating new RE::Images from buffers when required.
    class Image : public LightRefBase<Image> {
    public:
        Image(sp<GraphicBuffer> graphicBuffer, const RenderEngine& engine);
        Image(sp<GraphicBuffer> graphicBuffer, RE::RenderEngine& engine);

        Image(const Image& rhs) = delete;
        Image& operator=(const Image& rhs) = delete;
@@ -234,18 +236,18 @@ private:
            return mGraphicBuffer == nullptr ? nullptr : mGraphicBuffer->handle;
        }

        const RE::Image& image() const { return mImage; }
        const RE::Image& image() const { return *mImage; }

    private:
        // Only allow instantiation using ref counting.
        friend class LightRefBase<Image>;
        virtual ~Image() = default;
        virtual ~Image();

        // mGraphicBuffer is the buffer that was used to create this image.
        sp<GraphicBuffer> mGraphicBuffer;

        // mImage is the image created from mGraphicBuffer.
        RE::Image mImage;
        std::unique_ptr<RE::Image> mImage;
        bool mCreated;
        int32_t mCropWidth;
        int32_t mCropHeight;
@@ -349,7 +351,7 @@ private:
    // setFilteringEnabled().
    bool mFilteringEnabled;

    RenderEngine& mRE;
    RE::RenderEngine& mRE;

    // mTexName is the name of the RenderEngine texture to which streamed
    // images will be bound when bindTexImage is called. It is set at
+1 −1
Original line number Diff line number Diff line
@@ -48,7 +48,7 @@ void ColorLayer::onDraw(const RenderArea& renderArea, const Region& /* clip */,
    if (s.color.a > 0) {
        Mesh mesh(Mesh::TRIANGLE_FAN, 4, 2);
        computeGeometry(renderArea, mesh, useIdentityTransform);
        RenderEngine& engine(mFlinger->getRenderEngine());
        auto& engine(mFlinger->getRenderEngine());
        engine.setupLayerBlending(getPremultipledAlpha(), false /* opaque */,
                                  true /* disableTexture */, s.color);
        engine.drawMesh(mesh);
Loading