2 // Copyright (c) 2016 Intel Corporation
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
8 // http://www.apache.org/licenses/LICENSE-2.0
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.
16 #ifndef WSI_OVERLAYBUFFER_H_
17 #define WSI_OVERLAYBUFFER_H_
19 #include <platformdefines.h>
23 #include "compositordefs.h"
27 namespace hwcomposer {
29 class FrameBufferManager;
30 class NativeBufferHandler;
31 class ResourceManager;
35 static std::shared_ptr<OverlayBuffer> CreateOverlayBuffer();
37 OverlayBuffer(OverlayBuffer&& rhs) = default;
38 OverlayBuffer& operator=(OverlayBuffer&& other) = default;
39 OverlayBuffer() = default;
41 virtual ~OverlayBuffer() {
44 virtual void InitializeFromNativeHandle(
45 HWCNativeHandle handle, ResourceManager* buffer_manager,
46 FrameBufferManager* frame_buffer_manager) = 0;
48 virtual uint32_t GetDataSpace() const = 0;
50 virtual uint32_t GetWidth() const = 0;
52 virtual uint32_t GetHeight() const = 0;
54 virtual uint32_t GetFormat() const = 0;
56 virtual HWCLayerType GetUsage() const = 0;
58 virtual uint32_t GetFb() const = 0;
60 virtual uint32_t GetPrimeFD() const = 0;
62 virtual const uint32_t* GetPitches() const = 0;
64 virtual const uint32_t* GetOffsets() const = 0;
66 virtual uint32_t GetTilingMode() const = 0;
68 virtual void SetDataSpace(uint32_t dataspace) = 0;
70 virtual bool GetInterlace() = 0;
72 virtual void SetInterlace(bool isInterlaced) = 0;
74 // external_import should be true if this resource is not owned by HWC.
75 // If resource is owned by HWC, than the implementation needs to create
76 // frame buffer for this buffer.
77 virtual const ResourceHandle& GetGpuResource(GpuDisplay egl_display,
78 bool external_import) = 0;
80 virtual const ResourceHandle& GetGpuResource() = 0;
82 // Returns Media resource for this buffer which can be used by compositor.
83 // Surface will be clipped to width, height even if buffer size is
84 // greater than these values.
85 virtual const MediaResourceHandle& GetMediaResource(MediaDisplay display,
89 virtual bool CreateFrameBuffer() = 0;
91 // Creates Framebuffer taking into account any Modifiers.
92 virtual bool CreateFrameBufferWithModifier(uint64_t modifier) = 0;
94 virtual HWCNativeHandle GetOriginalHandle() const = 0;
96 virtual void SetOriginalHandle(HWCNativeHandle handle) = 0;
98 virtual void Dump() = 0;
101 } // namespace hwcomposer
102 #endif // WSI_OVERLAYBUFFER_H_