diff options
| author | 2022-12-21 14:27:15 -0700 | |
|---|---|---|
| committer | 2022-12-21 15:33:46 -0700 | |
| commit | f5ab5ae62252e952748a04d8099f6d0adcbd76a4 (patch) | |
| tree | 5bb978f62e8e289f31f986dfcfb428df196c4c1b | |
| parent | 67244df9b3d0f60f5a3eaad0cb0f912dc745ca80 (diff) | |
Stop using nullptr for GraphicBuffers in unit tests
Bug: 258196272
Bug: 261930578
Fixes: 261930578
Test: presubmit
Change-Id: I76ec7cd245fa23ebc4ffe8fcc9f09f25ca7b993f
5 files changed, 38 insertions, 16 deletions
diff --git a/libs/renderengine/include/renderengine/mock/FakeExternalTexture.h b/libs/renderengine/include/renderengine/mock/FakeExternalTexture.h index 974e0fddde..b95f011753 100644 --- a/libs/renderengine/include/renderengine/mock/FakeExternalTexture.h +++ b/libs/renderengine/include/renderengine/mock/FakeExternalTexture.h @@ -23,7 +23,9 @@ namespace renderengine { namespace mock { 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 mHeight; uint64_t mId; @@ -34,7 +36,7 @@ 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; } + const sp<GraphicBuffer>& getBuffer() const { return mEmptyBuffer; } bool hasSameBuffer(const renderengine::ExternalTexture& other) const override { return getId() == other.getId(); } diff --git a/services/surfaceflinger/CompositionEngine/src/HwcBufferCache.cpp b/services/surfaceflinger/CompositionEngine/src/HwcBufferCache.cpp index 34ed214079..f0105b2782 100644 --- a/services/surfaceflinger/CompositionEngine/src/HwcBufferCache.cpp +++ b/services/surfaceflinger/CompositionEngine/src/HwcBufferCache.cpp @@ -28,11 +28,6 @@ HwcBufferCache::HwcBufferCache() { } 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()) { Cache& cache = i->second; // mark this cache slot as more recently used so it won't get evicted anytime soon diff --git a/services/surfaceflinger/Tracing/tools/LayerTraceGenerator.cpp b/services/surfaceflinger/Tracing/tools/LayerTraceGenerator.cpp index f1a6c0e2fa..ab98dbfe2f 100644 --- a/services/surfaceflinger/Tracing/tools/LayerTraceGenerator.cpp +++ b/services/surfaceflinger/Tracing/tools/LayerTraceGenerator.cpp @@ -27,7 +27,6 @@ #include <log/log.h> #include <mock/MockEventThread.h> #include <renderengine/ExternalTexture.h> -#include <renderengine/mock/FakeExternalTexture.h> #include <renderengine/mock/RenderEngine.h> #include <utils/String16.h> #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 { public: MockSurfaceFlinger(Factory& factory) @@ -102,12 +125,10 @@ public: std::shared_ptr<renderengine::ExternalTexture> getExternalTextureFromBufferData( BufferData& bufferData, const char* /* layerName */, uint64_t /* transactionId */) override { - return std::make_shared<renderengine::mock::FakeExternalTexture>(bufferData.getWidth(), - bufferData.getHeight(), - bufferData.getId(), - bufferData - .getPixelFormat(), - bufferData.getUsage()); + return std::make_shared<FakeExternalTexture>(bufferData.getWidth(), bufferData.getHeight(), + bufferData.getId(), + bufferData.getPixelFormat(), + bufferData.getUsage()); }; // b/220017192 migrate from transact codes to ISurfaceComposer apis diff --git a/services/surfaceflinger/tests/unittests/CompositionTest.cpp b/services/surfaceflinger/tests/unittests/CompositionTest.cpp index 06b9caa7cb..ba77600cda 100644 --- a/services/surfaceflinger/tests/unittests/CompositionTest.cpp +++ b/services/surfaceflinger/tests/unittests/CompositionTest.cpp @@ -182,7 +182,9 @@ public: sp<mock::NativeWindow> mNativeWindow = sp<mock::NativeWindow>::make(); 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(); Hwc2::mock::Composer* mComposer = nullptr; diff --git a/services/surfaceflinger/tests/unittests/DisplayTransactionTestHelpers.h b/services/surfaceflinger/tests/unittests/DisplayTransactionTestHelpers.h index d58e644506..223f4db889 100644 --- a/services/surfaceflinger/tests/unittests/DisplayTransactionTestHelpers.h +++ b/services/surfaceflinger/tests/unittests/DisplayTransactionTestHelpers.h @@ -115,7 +115,9 @@ public: TestableSurfaceFlinger mFlinger; 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; FakeDisplayInjector mFakeDisplayInjector{mFlinger, mPowerAdvisor, mNativeWindow}; |