loader: Add support for debug report
diff --git a/tests/layer_validation_tests.cpp b/tests/layer_validation_tests.cpp
index 5c69e3c..e9cf958 100644
--- a/tests/layer_validation_tests.cpp
+++ b/tests/layer_validation_tests.cpp
@@ -152,6 +152,13 @@
         std::vector<const char *> device_extension_names;
 
         instance_extension_names.push_back(DEBUG_REPORT_EXTENSION_NAME);
+        instance_extension_names.push_back("MemTracker");
+        instance_extension_names.push_back("ObjectTracker");
+        instance_extension_names.push_back("Threading");
+
+        device_extension_names.push_back("MemTracker");
+        device_extension_names.push_back("ObjectTracker");
+        device_extension_names.push_back("Threading");
 
         // Force layer output level to be >= WARNING so that we catch those messages but ignore others
         setLayerOptionEnum("MemTrackerReportLevel",    "VK_DBG_LAYER_LEVEL_WARNING");
@@ -806,34 +813,6 @@
 }
 #endif
 #if OBJECT_TRACKER_TESTS
-TEST_F(VkLayerTest, WaitForUnsubmittedFence)
-{
-    vk_testing::Fence testFence;
-    VkFlags msgFlags;
-    std::string msgString;
-    VkFenceCreateInfo fenceInfo = {};
-    fenceInfo.sType = VK_STRUCTURE_TYPE_FENCE_CREATE_INFO;
-    fenceInfo.pNext = NULL;
-
-    ASSERT_NO_FATAL_FAILURE(InitState());
-    testFence.init(*m_device, fenceInfo);
-    m_errorMonitor->ClearState();
-    vkGetFenceStatus(m_device->device(),testFence.obj());
-    msgFlags = m_errorMonitor->GetState(&msgString);
-    ASSERT_TRUE(msgFlags & VK_DBG_REPORT_ERROR_BIT) << "Did not receive an error asking for status of unsubmitted fence";
-    if (!strstr(msgString.c_str(),"Status Requested for Unsubmitted Fence")) {
-        FAIL() << "Error received was not Status Requested for Unsubmitted Fence";
-    }
-
-    VkFence fences[1] = {testFence.obj()};
-    m_errorMonitor->ClearState();
-    vkWaitForFences(m_device->device(), 1, fences, VK_TRUE, 0);
-    msgFlags = m_errorMonitor->GetState(&msgString);
-    ASSERT_TRUE(msgFlags & VK_DBG_REPORT_ERROR_BIT) << "Did not receive an error for waiting for unsubmitted fence";
-    if (!strstr(msgString.c_str(),"Waiting for Unsubmitted Fence")) {
-        FAIL() << "Error received was not 'Waiting for Unsubmitted Fence'";
-    }
-}
 
 TEST_F(VkLayerTest, GetObjectInfoMismatchedType)
 {
diff --git a/tests/vkrenderframework.cpp b/tests/vkrenderframework.cpp
index a658bbe..f206d06 100644
--- a/tests/vkrenderframework.cpp
+++ b/tests/vkrenderframework.cpp
@@ -120,7 +120,7 @@
                                          VK_DBG_REPORT_ERROR_BIT | VK_DBG_REPORT_WARN_BIT,
                                          dbgFunction,
                                          userData,
-                                         &m_msgCallback);
+                                         &m_globalMsgCallback);
             ASSERT_VK_SUCCESS(err);
         }
     }
@@ -149,6 +149,18 @@
 //    ASSERT_NE(obj_name, (PFN_vkDbgCreateMsgCallback) NULL) << "Did not get function pointer for DbgCreateMsgCallback";
 //    obj_name()
     m_device = new VkDeviceObj(0, objs[0], device_extensions);
+
+    /* Now register callback on device */
+    if (0) {
+        if (m_dbgCreateMsgCallback) {
+            err = m_dbgCreateMsgCallback(this->inst,
+                                         VK_DBG_REPORT_ERROR_BIT | VK_DBG_REPORT_WARN_BIT,
+                                         dbgFunction,
+                                         userData,
+                                         &m_devMsgCallback);
+            ASSERT_VK_SUCCESS(err);
+        }
+    }
     m_device->get_device_queue();
 
     m_depthStencil = new VkDepthStencilObj();
diff --git a/tests/vkrenderframework.h b/tests/vkrenderframework.h
index 024bdba..e761001 100644
--- a/tests/vkrenderframework.h
+++ b/tests/vkrenderframework.h
@@ -129,7 +129,8 @@
     VkDepthStencilObj                  *m_depthStencil;
     VkMemoryRefManager                  m_mem_ref_mgr;
     PFN_vkDbgCreateMsgCallback          m_dbgCreateMsgCallback;
-    VkDbgMsgCallback                    m_msgCallback;
+    VkDbgMsgCallback                    m_globalMsgCallback;
+    VkDbgMsgCallback                    m_devMsgCallback;
 
     /*
      * SetUp and TearDown are called by the Google Test framework