OSDN Git Service

drm_hwcomposer: get gralloc buffer usage during hwc_set
[android-x86/external-drm_hwcomposer.git] / drmcomposition.h
index 69bf6d9..80a7eea 100644 (file)
@@ -22,7 +22,6 @@
 #include "drmplane.h"
 #include "importer.h"
 
-#include <deque>
 #include <map>
 #include <vector>
 
 
 namespace android {
 
+class DrmDisplayCompositor;
+
+struct DrmCompositionDisplayLayersMap {
+  int display;
+  bool geometry_changed = true;
+  std::vector<DrmHwcLayer> layers;
+
+  DrmCompositionDisplayLayersMap() = default;
+  DrmCompositionDisplayLayersMap(DrmCompositionDisplayLayersMap &&rhs) =
+      default;
+};
+
 class DrmComposition {
  public:
   DrmComposition(DrmResources *drm, Importer *importer);
-  ~DrmComposition();
 
-  int Init();
+  int Init(uint64_t frame_no);
 
-  unsigned GetRemainingLayers(int display, unsigned num_needed) const;
-  int AddLayer(int display, hwc_layer_1_t *layer, hwc_drm_bo_t *bo);
-  int AddDpmsMode(int display, uint32_t dpms_mode);
-
-  int DisableUnusedPlanes();
+  int SetLayers(size_t num_displays, DrmCompositionDisplayLayersMap *maps);
+  int SetDpmsMode(int display, uint32_t dpms_mode);
+  int SetDisplayMode(int display, const DrmMode &display_mode);
 
   std::unique_ptr<DrmDisplayComposition> TakeDisplayComposition(int display);
   DrmDisplayComposition *GetDisplayComposition(int display);
 
+  int Plan(std::map<int, DrmDisplayCompositor> &compositor_map);
+  int DisableUnusedPlanes();
+
  private:
   DrmComposition(const DrmComposition &) = delete;
 
@@ -62,7 +73,6 @@ class DrmComposition {
    */
   std::map<int, std::unique_ptr<DrmDisplayComposition>> composition_map_;
 };
-
 }
 
 #endif  // ANDROID_DRM_COMPOSITION_H_