1 /* 2 * Copyright (C) 2021 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17 #pragma once 18 19 #include <composer-resources/2.2/ComposerResources.h> 20 21 #include "include/IResourceManager.h" 22 23 using android::hardware::graphics::composer::V2_2::hal::ComposerResources; 24 25 namespace aidl::android::hardware::graphics::composer3::impl { 26 27 // Wrapper of ComposerResources before there is an aidl version 28 class BufferReleaser : public IBufferReleaser { 29 public: BufferReleaser(bool isBuffer)30 BufferReleaser(bool isBuffer) : mReplacedHandle(isBuffer) {} 31 virtual ~BufferReleaser() = default; 32 getReplacedHandle()33 ComposerResources::ReplacedHandle* getReplacedHandle() { return &mReplacedHandle; } 34 35 private: 36 // ReplacedHandle releases buffer at its destruction. 37 ComposerResources::ReplacedHandle mReplacedHandle; 38 }; 39 40 class ResourceManager : public IResourceManager { 41 public: 42 virtual ~ResourceManager() = default; 43 44 std::unique_ptr<IBufferReleaser> createReleaser(bool isBuffer) override; 45 void clear(RemoveDisplay removeDisplay) override; 46 bool hasDisplay(int64_t display) override; 47 int32_t addPhysicalDisplay(int64_t display) override; 48 int32_t addVirtualDisplay(int64_t display, uint32_t outputBufferCacheSize) override; 49 int32_t removeDisplay(int64_t display) override; 50 int32_t setDisplayClientTargetCacheSize(int64_t display, 51 uint32_t clientTargetCacheSize) override; 52 int32_t getDisplayClientTargetCacheSize(int64_t display, size_t* outCacheSize) override; 53 int32_t getDisplayOutputBufferCacheSize(int64_t display, size_t* outCacheSize) override; 54 int32_t addLayer(int64_t display, int64_t layer, uint32_t bufferCacheSize) override; 55 int32_t removeLayer(int64_t display, int64_t layer) override; 56 void setDisplayMustValidateState(int64_t display, bool mustValidate) override; 57 bool mustValidateDisplay(int64_t display) override; 58 int32_t getDisplayReadbackBuffer(int64_t display, const buffer_handle_t handle, 59 buffer_handle_t& outHandle, 60 IBufferReleaser* bufReleaser) override; 61 int32_t getDisplayClientTarget(int64_t display, uint32_t slot, bool fromCache, 62 const buffer_handle_t handle, buffer_handle_t& outHandle, 63 IBufferReleaser* bufReleaser) override; 64 int32_t getDisplayOutputBuffer(int64_t display, uint32_t slot, bool fromCache, 65 const buffer_handle_t handle, buffer_handle_t& outHandle, 66 IBufferReleaser* bufReleaser) override; 67 int32_t getLayerBuffer(int64_t display, int64_t layer, uint32_t slot, bool fromCache, 68 const buffer_handle_t rawHandle, 69 buffer_handle_t& outBufferHandle, 70 IBufferReleaser* bufReleaser) override; 71 int32_t getLayerSidebandStream(int64_t display, int64_t layer, 72 const buffer_handle_t rawHandle, 73 buffer_handle_t& outStreamHandle, 74 IBufferReleaser* bufReleaser) override; 75 private: 76 std::unique_ptr<ComposerResources> mResources = ComposerResources::create(); 77 }; 78 79 } // namespace aidl::android::hardware::graphics::composer3::impl 80