diff --git a/drmdisplaycompositor.cpp b/drmdisplaycompositor.cpp
index 4291ad1..0d00bc0 100644
--- a/drmdisplaycompositor.cpp
+++ b/drmdisplaycompositor.cpp
@@ -39,7 +39,8 @@
 namespace android {
 
 DrmDisplayCompositor::DrmDisplayCompositor()
-    : drm_(NULL),
+    : resource_manager_(NULL),
+      drm_(NULL),
       display_(-1),
       initialized_(false),
       active_(false),
@@ -74,7 +75,9 @@
   pthread_mutex_destroy(&lock_);
 }
 
-int DrmDisplayCompositor::Init(DrmDevice *drm, int display) {
+int DrmDisplayCompositor::Init(ResourceManager *resource_manager,
+                               DrmDevice *drm, int display) {
+  resource_manager_ = resource_manager;
   drm_ = drm;
   display_ = display;
 
diff --git a/drmdisplaycompositor.h b/drmdisplaycompositor.h
index 1866d43..6212597 100644
--- a/drmdisplaycompositor.h
+++ b/drmdisplaycompositor.h
@@ -20,6 +20,7 @@
 #include "drmhwcomposer.h"
 #include "drmdisplaycomposition.h"
 #include "drmframebuffer.h"
+#include "resourcemanager.h"
 
 #include <pthread.h>
 #include <memory>
@@ -40,7 +41,7 @@
   DrmDisplayCompositor();
   ~DrmDisplayCompositor();
 
-  int Init(DrmDevice *drm, int display);
+  int Init(ResourceManager *resource_manager, DrmDevice *drm, int display);
 
   std::unique_ptr<DrmDisplayComposition> CreateComposition() const;
   int ApplyComposition(std::unique_ptr<DrmDisplayComposition> composition);
@@ -78,6 +79,7 @@
 
   std::tuple<int, uint32_t> CreateModeBlob(const DrmMode &mode);
 
+  ResourceManager *resource_manager_;
   DrmDevice *drm_;
   int display_;
 
diff --git a/drmhwctwo.cpp b/drmhwctwo.cpp
index 56ba07b..a6b48e2 100644
--- a/drmhwctwo.cpp
+++ b/drmhwctwo.cpp
@@ -72,10 +72,10 @@
     return HWC2::Error::NoResources;
   }
 
-  displays_.emplace(std::piecewise_construct,
-                    std::forward_as_tuple(HWC_DISPLAY_PRIMARY),
-                    std::forward_as_tuple(drm, importer, HWC_DISPLAY_PRIMARY,
-                                          HWC2::DisplayType::Physical));
+  displays_.emplace(
+      std::piecewise_construct, std::forward_as_tuple(HWC_DISPLAY_PRIMARY),
+      std::forward_as_tuple(&resource_manager_, drm, importer,
+                            HWC_DISPLAY_PRIMARY, HWC2::DisplayType::Physical));
 
   DrmCrtc *crtc = drm->GetCrtcForDisplay(static_cast<int>(HWC_DISPLAY_PRIMARY));
   if (!crtc) {
@@ -152,10 +152,15 @@
   return HWC2::Error::None;
 }
 
-DrmHwcTwo::HwcDisplay::HwcDisplay(DrmDevice *drm,
+DrmHwcTwo::HwcDisplay::HwcDisplay(ResourceManager *resource_manager,
+                                  DrmDevice *drm,
                                   std::shared_ptr<Importer> importer,
                                   hwc2_display_t handle, HWC2::DisplayType type)
-    : drm_(drm), importer_(importer), handle_(handle), type_(type) {
+    : resource_manager_(resource_manager),
+      drm_(drm),
+      importer_(importer),
+      handle_(handle),
+      type_(type) {
   supported(__func__);
 }
 
@@ -168,7 +173,7 @@
   }
 
   int display = static_cast<int>(handle_);
-  int ret = compositor_.Init(drm_, display);
+  int ret = compositor_.Init(resource_manager_, drm_, display);
   if (ret) {
     ALOGE("Failed display compositor init for display %d (%d)", display, ret);
     return HWC2::Error::NoResources;
diff --git a/drmhwctwo.h b/drmhwctwo.h
index b65d37d..d987065 100644
--- a/drmhwctwo.h
+++ b/drmhwctwo.h
@@ -135,8 +135,9 @@
 
   class HwcDisplay {
    public:
-    HwcDisplay(DrmDevice *drm, std::shared_ptr<Importer> importer,
-               hwc2_display_t handle, HWC2::DisplayType type);
+    HwcDisplay(ResourceManager *resource_manager, DrmDevice *drm,
+               std::shared_ptr<Importer> importer, hwc2_display_t handle,
+               HWC2::DisplayType type);
     HwcDisplay(const HwcDisplay &) = delete;
     HWC2::Error Init(std::vector<DrmPlane *> *planes);
 
@@ -188,6 +189,7 @@
     HWC2::Error CreateComposition(bool test);
     void AddFenceToRetireFence(int fd);
 
+    ResourceManager *resource_manager_;
     DrmDevice *drm_;
     DrmDisplayCompositor compositor_;
     std::shared_ptr<Importer> importer_;
