OSDN Git Service

Add full color range support
[android-x86/external-IA-Hardware-Composer.git] / wsi / overlaybuffer.h
1 /*
2 // Copyright (c) 2016 Intel Corporation
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 #ifndef WSI_OVERLAYBUFFER_H_
17 #define WSI_OVERLAYBUFFER_H_
18
19 #include <platformdefines.h>
20
21 #include <memory>
22
23 #include "compositordefs.h"
24
25 #include "hwcdefs.h"
26
27 namespace hwcomposer {
28
29 class FrameBufferManager;
30 class NativeBufferHandler;
31 class ResourceManager;
32
33 class OverlayBuffer {
34  public:
35   static std::shared_ptr<OverlayBuffer> CreateOverlayBuffer();
36
37   OverlayBuffer(OverlayBuffer&& rhs) = default;
38   OverlayBuffer& operator=(OverlayBuffer&& other) = default;
39   OverlayBuffer() = default;
40
41   virtual ~OverlayBuffer() {
42   }
43
44   virtual void InitializeFromNativeHandle(
45       HWCNativeHandle handle, ResourceManager* buffer_manager,
46       FrameBufferManager* frame_buffer_manager) = 0;
47
48   virtual uint32_t GetDataSpace() const = 0;
49
50   virtual uint32_t GetWidth() const = 0;
51
52   virtual uint32_t GetHeight() const = 0;
53
54   virtual uint32_t GetFormat() const = 0;
55
56   virtual HWCLayerType GetUsage() const = 0;
57
58   virtual uint32_t GetFb() const = 0;
59
60   virtual uint32_t GetPrimeFD() const = 0;
61
62   virtual const uint32_t* GetPitches() const = 0;
63
64   virtual const uint32_t* GetOffsets() const = 0;
65
66   virtual uint32_t GetTilingMode() const = 0;
67
68   virtual void SetDataSpace(uint32_t dataspace) = 0;
69
70   virtual bool GetInterlace() = 0;
71
72   virtual void SetInterlace(bool isInterlaced) = 0;
73
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;
79
80   virtual const ResourceHandle& GetGpuResource() = 0;
81
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,
86                                                       uint32_t width,
87                                                       uint32_t height) = 0;
88
89   virtual bool CreateFrameBuffer() = 0;
90
91   // Creates Framebuffer taking into account any Modifiers.
92   virtual bool CreateFrameBufferWithModifier(uint64_t modifier) = 0;
93
94   virtual HWCNativeHandle GetOriginalHandle() const = 0;
95
96   virtual void SetOriginalHandle(HWCNativeHandle handle) = 0;
97
98   virtual void Dump() = 0;
99 };
100
101 }  // namespace hwcomposer
102 #endif  // WSI_OVERLAYBUFFER_H_