blob: af8515fb000e64adc448bcbee000b464ec29456b [file] [log] [blame]
Lloyd Pique70d91362018-10-18 16:02:55 -07001/*
2 * Copyright 2018 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
Lloyd Pique441d5042018-10-18 16:49:51 -070019#include <memory>
20
Lloyd Pique70d91362018-10-18 16:02:55 -070021namespace android {
22
23class HWComposer;
24
Lloyd Piqueb97e04f2018-10-18 17:07:05 -070025namespace renderengine {
26class RenderEngine;
27} // namespace renderengine
28
Lloyd Pique70d91362018-10-18 16:02:55 -070029namespace compositionengine {
30
31/**
32 * Encapsulates all the interfaces and implementation details for performing
33 * display output composition.
34 */
35class CompositionEngine {
36public:
37 virtual ~CompositionEngine();
Lloyd Pique441d5042018-10-18 16:49:51 -070038
39 virtual HWComposer& getHwComposer() const = 0;
40 virtual void setHwComposer(std::unique_ptr<HWComposer>) = 0;
Lloyd Piqueb97e04f2018-10-18 17:07:05 -070041
42 virtual renderengine::RenderEngine& getRenderEngine() const = 0;
43 virtual void setRenderEngine(std::unique_ptr<renderengine::RenderEngine>) = 0;
Lloyd Pique70d91362018-10-18 16:02:55 -070044};
45
46} // namespace compositionengine
47} // namespace android