1/*
2// Copyright (c) 2014 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 ANN_RGB_PLANE_H
17#define ANN_RGB_PLANE_H
18
19#include <utils/KeyedVector.h>
20#include <hal_public.h>
21#include <Hwcomposer.h>
22#include <BufferCache.h>
23#include <DisplayPlane.h>
24
25#include <linux/psb_drm.h>
26
27namespace android {
28namespace intel {
29
30class AnnRGBPlane : public DisplayPlane {
31public:
32    AnnRGBPlane(int index, int type, int disp);
33    virtual ~AnnRGBPlane();
34public:
35    // hardware operations
36    bool enable();
37    bool disable();
38    bool isDisabled();
39    void postFlip();
40
41    void* getContext() const;
42    void setZOrderConfig(ZOrderConfig& config, void *nativeConfig);
43
44    bool setDataBuffer(buffer_handle_t handle);
45protected:
46    bool setDataBuffer(BufferMapper& mapper);
47    bool enablePlane(bool enabled);
48private:
49    void setFramebufferTarget(buffer_handle_t handle);
50protected:
51    struct intel_dc_plane_ctx mContext;
52};
53
54} // namespace intel
55} // namespace android
56
57#endif /* ANN_RGB_PLANE_H */
58