xref: /aosp_15_r20/external/drm_hwcomposer/hwc3/DrmHwcThree.h (revision 0a9764fe0a15e71ebbeb85e87e10990c23aab47f)
1 /*
2  * Copyright (C) 2024 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 <aidl/android/hardware/graphics/composer3/IComposerCallback.h>
20 
21 #include "drm/DrmHwc.h"
22 #include "hwc3/ComposerResources.h"
23 
24 namespace aidl::android::hardware::graphics::composer3::impl {
25 
26 class DrmHwcThree : public ::android::DrmHwc {
27  public:
DrmHwcThree(ComposerResources * composer_resources)28   explicit DrmHwcThree(ComposerResources* composer_resources)
29       : composer_resources_(composer_resources) {
30   }
31   ~DrmHwcThree() override;
32 
33   void Init(std::shared_ptr<IComposerCallback> callback);
34 
35   // DrmHwcInterface
36   void SendVsyncEventToClient(hwc2_display_t display_id, int64_t timestamp,
37                               uint32_t vsync_period) const override;
38   void SendVsyncPeriodTimingChangedEventToClient(
39       hwc2_display_t display_id, int64_t timestamp) const override;
40   void SendRefreshEventToClient(uint64_t display_id) override;
41   void SendHotplugEventToClient(hwc2_display_t display_id,
42                                 DrmHwc::DisplayStatus display_status) override;
43 
44  private:
45   void CleanDisplayResources(uint64_t display_id);
46   void HandleDisplayHotplugEvent(uint64_t display_id, bool connected);
47 
48   std::shared_ptr<IComposerCallback> composer_callback_;
49   ComposerResources* composer_resources_;
50 };
51 }  // namespace aidl::android::hardware::graphics::composer3::impl
52