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

Commit f5ab5ae6 authored by Brian Lindahl's avatar Brian Lindahl
Browse files

Stop using nullptr for GraphicBuffers in unit tests

Bug: 258196272
Bug: 261930578
Fixes: 261930578
Test: presubmit
Change-Id: I76ec7cd245fa23ebc4ffe8fcc9f09f25ca7b993f
parent 67244df9
Loading
Loading
Loading
Loading
+4 −2
Original line number Original line Diff line number Diff line
@@ -23,7 +23,9 @@ namespace renderengine {
namespace mock {
namespace mock {


class FakeExternalTexture : public renderengine::ExternalTexture {
class FakeExternalTexture : public renderengine::ExternalTexture {
    const sp<GraphicBuffer> mNullBuffer = nullptr;
    const sp<GraphicBuffer> mEmptyBuffer =
            sp<GraphicBuffer>::make(1u, 1u, PIXEL_FORMAT_RGBA_8888,
                                    GRALLOC_USAGE_SW_WRITE_OFTEN | GRALLOC_USAGE_SW_READ_OFTEN);
    uint32_t mWidth;
    uint32_t mWidth;
    uint32_t mHeight;
    uint32_t mHeight;
    uint64_t mId;
    uint64_t mId;
@@ -34,7 +36,7 @@ public:
    FakeExternalTexture(uint32_t width, uint32_t height, uint64_t id, PixelFormat pixelFormat,
    FakeExternalTexture(uint32_t width, uint32_t height, uint64_t id, PixelFormat pixelFormat,
                        uint64_t usage)
                        uint64_t usage)
          : mWidth(width), mHeight(height), mId(id), mPixelFormat(pixelFormat), mUsage(usage) {}
          : mWidth(width), mHeight(height), mId(id), mPixelFormat(pixelFormat), mUsage(usage) {}
    const sp<GraphicBuffer>& getBuffer() const { return mNullBuffer; }
    const sp<GraphicBuffer>& getBuffer() const { return mEmptyBuffer; }
    bool hasSameBuffer(const renderengine::ExternalTexture& other) const override {
    bool hasSameBuffer(const renderengine::ExternalTexture& other) const override {
        return getId() == other.getId();
        return getId() == other.getId();
    }
    }
+0 −5
Original line number Original line Diff line number Diff line
@@ -28,11 +28,6 @@ HwcBufferCache::HwcBufferCache() {
}
}


HwcSlotAndBuffer HwcBufferCache::getHwcSlotAndBuffer(const sp<GraphicBuffer>& buffer) {
HwcSlotAndBuffer HwcBufferCache::getHwcSlotAndBuffer(const sp<GraphicBuffer>& buffer) {
    // TODO(b/261930578): This is for unit tests which don't mock GraphicBuffers but instead send
    // in nullptrs.
    if (buffer == nullptr) {
        return {0, nullptr};
    }
    if (auto i = mCacheByBufferId.find(buffer->getId()); i != mCacheByBufferId.end()) {
    if (auto i = mCacheByBufferId.find(buffer->getId()); i != mCacheByBufferId.end()) {
        Cache& cache = i->second;
        Cache& cache = i->second;
        // mark this cache slot as more recently used so it won't get evicted anytime soon
        // mark this cache slot as more recently used so it won't get evicted anytime soon
+28 −7
Original line number Original line Diff line number Diff line
@@ -27,7 +27,6 @@
#include <log/log.h>
#include <log/log.h>
#include <mock/MockEventThread.h>
#include <mock/MockEventThread.h>
#include <renderengine/ExternalTexture.h>
#include <renderengine/ExternalTexture.h>
#include <renderengine/mock/FakeExternalTexture.h>
#include <renderengine/mock/RenderEngine.h>
#include <renderengine/mock/RenderEngine.h>
#include <utils/String16.h>
#include <utils/String16.h>
#include <string>
#include <string>
@@ -95,6 +94,30 @@ public:
    }
    }
};
};


class FakeExternalTexture : public renderengine::ExternalTexture {
    const sp<GraphicBuffer> mNullBuffer = nullptr;
    uint32_t mWidth;
    uint32_t mHeight;
    uint64_t mId;
    PixelFormat mPixelFormat;
    uint64_t mUsage;

public:
    FakeExternalTexture(uint32_t width, uint32_t height, uint64_t id, PixelFormat pixelFormat,
                        uint64_t usage)
          : mWidth(width), mHeight(height), mId(id), mPixelFormat(pixelFormat), mUsage(usage) {}
    const sp<GraphicBuffer>& getBuffer() const { return mNullBuffer; }
    bool hasSameBuffer(const renderengine::ExternalTexture& other) const override {
        return getId() == other.getId();
    }
    uint32_t getWidth() const override { return mWidth; }
    uint32_t getHeight() const override { return mHeight; }
    uint64_t getId() const override { return mId; }
    PixelFormat getPixelFormat() const override { return mPixelFormat; }
    uint64_t getUsage() const override { return mUsage; }
    ~FakeExternalTexture() = default;
};

class MockSurfaceFlinger : public SurfaceFlinger {
class MockSurfaceFlinger : public SurfaceFlinger {
public:
public:
    MockSurfaceFlinger(Factory& factory)
    MockSurfaceFlinger(Factory& factory)
@@ -102,11 +125,9 @@ public:
    std::shared_ptr<renderengine::ExternalTexture> getExternalTextureFromBufferData(
    std::shared_ptr<renderengine::ExternalTexture> getExternalTextureFromBufferData(
            BufferData& bufferData, const char* /* layerName */,
            BufferData& bufferData, const char* /* layerName */,
            uint64_t /* transactionId */) override {
            uint64_t /* transactionId */) override {
        return std::make_shared<renderengine::mock::FakeExternalTexture>(bufferData.getWidth(),
        return std::make_shared<FakeExternalTexture>(bufferData.getWidth(), bufferData.getHeight(),
                                                                         bufferData.getHeight(),
                                                     bufferData.getId(),
                                                     bufferData.getId(),
                                                                         bufferData
                                                     bufferData.getPixelFormat(),
                                                                                 .getPixelFormat(),
                                                     bufferData.getUsage());
                                                     bufferData.getUsage());
    };
    };


+3 −1
Original line number Original line Diff line number Diff line
@@ -182,7 +182,9 @@ public:
    sp<mock::NativeWindow> mNativeWindow = sp<mock::NativeWindow>::make();
    sp<mock::NativeWindow> mNativeWindow = sp<mock::NativeWindow>::make();
    std::vector<sp<Layer>> mAuxiliaryLayers;
    std::vector<sp<Layer>> mAuxiliaryLayers;


    sp<GraphicBuffer> mBuffer = sp<GraphicBuffer>::make();
    sp<GraphicBuffer> mBuffer =
            sp<GraphicBuffer>::make(1u, 1u, PIXEL_FORMAT_RGBA_8888,
                                    GRALLOC_USAGE_SW_WRITE_OFTEN | GRALLOC_USAGE_SW_READ_OFTEN);
    ANativeWindowBuffer* mNativeWindowBuffer = mBuffer->getNativeBuffer();
    ANativeWindowBuffer* mNativeWindowBuffer = mBuffer->getNativeBuffer();


    Hwc2::mock::Composer* mComposer = nullptr;
    Hwc2::mock::Composer* mComposer = nullptr;
+3 −1
Original line number Original line Diff line number Diff line
@@ -115,7 +115,9 @@ public:


    TestableSurfaceFlinger mFlinger;
    TestableSurfaceFlinger mFlinger;
    sp<mock::NativeWindow> mNativeWindow = sp<mock::NativeWindow>::make();
    sp<mock::NativeWindow> mNativeWindow = sp<mock::NativeWindow>::make();
    sp<GraphicBuffer> mBuffer = sp<GraphicBuffer>::make();
    sp<GraphicBuffer> mBuffer =
            sp<GraphicBuffer>::make(1u, 1u, PIXEL_FORMAT_RGBA_8888,
                                    GRALLOC_USAGE_SW_WRITE_OFTEN | GRALLOC_USAGE_SW_READ_OFTEN);
    Hwc2::mock::PowerAdvisor mPowerAdvisor;
    Hwc2::mock::PowerAdvisor mPowerAdvisor;


    FakeDisplayInjector mFakeDisplayInjector{mFlinger, mPowerAdvisor, mNativeWindow};
    FakeDisplayInjector mFakeDisplayInjector{mFlinger, mPowerAdvisor, mNativeWindow};