layers: Initialize debug_report instance proc table
diff --git a/layers/draw_state.cpp b/layers/draw_state.cpp
index 4b76f05..3371271 100644
--- a/layers/draw_state.cpp
+++ b/layers/draw_state.cpp
@@ -1536,6 +1536,11 @@
 
     if (result == VK_SUCCESS) {
         enable_debug_report(pCreateInfo->extensionCount, pCreateInfo->pEnabledExtensions);
+
+        debug_report_init_instance_extension_dispatch_table(
+                    pTable,
+                    pTable->GetInstanceProcAddr,
+                    *pInstance);
     }
     return result;
 }
diff --git a/layers/layers_msg.h b/layers/layers_msg.h
index a5e90de..f73e4d3 100644
--- a/layers/layers_msg.h
+++ b/layers/layers_msg.h
@@ -96,6 +96,15 @@
     return result;
 }
 
+static inline void debug_report_init_instance_extension_dispatch_table(
+        VkLayerInstanceDispatchTable *table,
+        PFN_vkGetInstanceProcAddr gpa,
+        VkInstance inst)
+{
+    table->DbgCreateMsgCallback = (PFN_vkDbgCreateMsgCallback) gpa(inst, "vkDbgCreateMsgCallback");
+    table->DbgDestroyMsgCallback = (PFN_vkDbgDestroyMsgCallback) gpa(inst, "vkDbgDestroyMsgCallback");
+}
+
 static void* msg_callback_get_proc_addr(
         const char      *funcName)
 {
diff --git a/layers/mem_tracker.cpp b/layers/mem_tracker.cpp
index b6a839d..9e51e88 100644
--- a/layers/mem_tracker.cpp
+++ b/layers/mem_tracker.cpp
@@ -869,10 +869,16 @@
 {
     loader_platform_thread_once(&g_initOnce, initMemTracker);
 
-    VkResult result = instance_dispatch_table(*pInstance)->CreateInstance(pCreateInfo, pInstance);
+    VkLayerInstanceDispatchTable *pTable = instance_dispatch_table(*pInstance);
+    VkResult result = pTable->CreateInstance(pCreateInfo, pInstance);
 
     if (result == VK_SUCCESS) {
         enable_debug_report(pCreateInfo->extensionCount, pCreateInfo->pEnabledExtensions);
+
+        debug_report_init_instance_extension_dispatch_table(
+                    pTable,
+                    pTable->GetInstanceProcAddr,
+                    *pInstance);
     }
     return result;
 }
diff --git a/layers/param_checker.cpp b/layers/param_checker.cpp
index 79903f3..15056f5 100644
--- a/layers/param_checker.cpp
+++ b/layers/param_checker.cpp
@@ -189,6 +189,12 @@
         layerCbMsg(VK_DBG_REPORT_INFO_BIT, (VkObjectType) 0, NULL, 0, 1, "PARAMCHECK", str);
         return;
     }
+
+    VkLayerInstanceDispatchTable *pTable = instance_dispatch_table(*pInstance);
+    debug_report_init_instance_extension_dispatch_table(
+                pTable,
+                pTable->GetInstanceProcAddr,
+                *pInstance);
 }
 
 VK_LAYER_EXPORT VkResult VKAPI vkCreateInstance(const VkInstanceCreateInfo* pCreateInfo, VkInstance* pInstance)
diff --git a/layers/shader_checker.cpp b/layers/shader_checker.cpp
index 20f1aae..d31d7f6 100644
--- a/layers/shader_checker.cpp
+++ b/layers/shader_checker.cpp
@@ -955,6 +955,11 @@
 
     if (result == VK_SUCCESS) {
         enable_debug_report(pCreateInfo->extensionCount, pCreateInfo->pEnabledExtensions);
+
+        debug_report_init_instance_extension_dispatch_table(
+                    pTable,
+                    pTable->GetInstanceProcAddr,
+                    *pInstance);
     }
     return result;
 }