#ifndef ANDROID_DRM_COMPOSITION_H_
#define ANDROID_DRM_COMPOSITION_H_
-#include "drm_hwcomposer.h"
+#include "drmhwcomposer.h"
#include "drmdisplaycomposition.h"
#include "drmplane.h"
-#include "importer.h"
+#include "platform.h"
-#include <deque>
#include <map>
#include <vector>
namespace android {
+class DrmDisplayCompositor;
+
struct DrmCompositionDisplayLayersMap {
int display;
- size_t num_layers;
- hwc_layer_1_t *layers;
- size_t *layer_indices;
+ bool geometry_changed = true;
+ std::vector<DrmHwcLayer> layers;
+
+ DrmCompositionDisplayLayersMap() = default;
+ DrmCompositionDisplayLayersMap(DrmCompositionDisplayLayersMap &&rhs) =
+ default;
};
class DrmComposition {
public:
DrmComposition(DrmResources *drm, Importer *importer);
- int Init();
+ int Init(uint64_t frame_no);
- int SetLayers(size_t num_displays,
- const DrmCompositionDisplayLayersMap *maps);
+ 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: