diff --git a/layers/draw_state.cpp b/layers/draw_state.cpp
index 282c238..07d4086 100644
--- a/layers/draw_state.cpp
+++ b/layers/draw_state.cpp
@@ -1564,8 +1564,8 @@
     uint32_t version;
     const char * const name;
 };
-#define DRAW_STATE_LAYER_EXT_ARRAY_SIZE 2
-static const VkExtensionProperties dsExts[DRAW_STATE_LAYER_EXT_ARRAY_SIZE] = {
+#define DRAW_STATE_LAYER_DEV_EXT_ARRAY_SIZE 3
+static const VkExtensionProperties dsDevExts[DRAW_STATE_LAYER_DEV_EXT_ARRAY_SIZE] = {
     {
         VK_STRUCTURE_TYPE_EXTENSION_PROPERTIES,
         "DrawState",
@@ -1577,6 +1577,12 @@
         "Validation",
         0x10,
         "Sample layer: DrawState",
+    },
+    {
+        VK_STRUCTURE_TYPE_EXTENSION_PROPERTIES,
+        DEBUG_MARKER_EXTENSION_NAME,
+        0x10,
+        "Sample layer: DrawState",
     }
 };
 
@@ -1601,17 +1607,17 @@
                 return VK_SUCCESS;
             }
             count = (uint32_t *) pData;
-            *count = DRAW_STATE_LAYER_EXT_ARRAY_SIZE;
+            *count = DRAW_STATE_LAYER_DEV_EXT_ARRAY_SIZE;
             break;
         case VK_EXTENSION_INFO_TYPE_PROPERTIES:
             *pDataSize = sizeof(VkExtensionProperties);
             if (pData == NULL) {
                 return VK_SUCCESS;
             }
-            if (extensionIndex >= DRAW_STATE_LAYER_EXT_ARRAY_SIZE) {
+            if (extensionIndex >= DRAW_STATE_LAYER_DEV_EXT_ARRAY_SIZE) {
                 return VK_ERROR_INVALID_VALUE;
             }
-            memcpy((VkExtensionProperties *) pData, &dsExts[extensionIndex], sizeof(VkExtensionProperties));
+            memcpy((VkExtensionProperties *) pData, &dsDevExts[extensionIndex], sizeof(VkExtensionProperties));
             break;
         default:
             return VK_ERROR_INVALID_VALUE;
@@ -1620,6 +1626,22 @@
     return VK_SUCCESS;
 }
 
+#define DRAW_STATE_LAYER_EXT_ARRAY_SIZE 2
+static const VkExtensionProperties dsExts[DRAW_STATE_LAYER_EXT_ARRAY_SIZE] = {
+    {
+        VK_STRUCTURE_TYPE_EXTENSION_PROPERTIES,
+        "DrawState",
+        0x10,
+        "Sample layer: DrawState",
+    },
+    {
+        VK_STRUCTURE_TYPE_EXTENSION_PROPERTIES,
+        "Validation",
+        0x10,
+        "Sample layer: DrawState",
+    }
+};
+
 VK_LAYER_EXPORT VkResult VKAPI vkGetGlobalExtensionInfo(
         VkExtensionInfoType infoType,
         uint32_t extensionIndex,
diff --git a/layers/param_checker.cpp b/layers/param_checker.cpp
index 0b13b65..680c637 100644
--- a/layers/param_checker.cpp
+++ b/layers/param_checker.cpp
@@ -326,6 +326,27 @@
     return VK_SUCCESS;
 }
 
+#define PARAM_CHECKER_LAYER_DEV_EXT_ARRAY_SIZE 3
+static const VkExtensionProperties pcDevExts[PARAM_CHECKER_LAYER_DEV_EXT_ARRAY_SIZE] = {
+    {
+        VK_STRUCTURE_TYPE_EXTENSION_PROPERTIES,
+        "ParamChecker",
+        0x10,
+        "Sample layer: ParamChecker",
+    },
+    {
+        VK_STRUCTURE_TYPE_EXTENSION_PROPERTIES,
+        "Validation",
+        0x10,
+        "Sample layer: ParamChecker",
+    },
+    {
+        VK_STRUCTURE_TYPE_EXTENSION_PROPERTIES,
+        DEBUG_MARKER_EXTENSION_NAME,
+        0x10,
+        "Sample layer: ParamChecker",
+    }
+};
 VK_LAYER_EXPORT VkResult VKAPI vkGetPhysicalDeviceExtensionInfo(
                                                VkPhysicalDevice gpu,
                                                VkExtensionInfoType infoType,
@@ -333,7 +354,6 @@
                                                size_t*  pDataSize,
                                                void*    pData)
 {
-    //TODO add debug_marker
     /* This entrypoint is NOT going to init it's own dispatch table since loader calls here early */
     uint32_t *count;
 
@@ -346,15 +366,15 @@
             if (pData == NULL)
                 return VK_SUCCESS;
             count = (uint32_t *) pData;
-            *count = PARAM_CHECKER_LAYER_EXT_ARRAY_SIZE;
+            *count = PARAM_CHECKER_LAYER_DEV_EXT_ARRAY_SIZE;
             break;
         case VK_EXTENSION_INFO_TYPE_PROPERTIES:
             *pDataSize = sizeof(VkExtensionProperties);
             if (pData == NULL)
                 return VK_SUCCESS;
-            if (extensionIndex >= PARAM_CHECKER_LAYER_EXT_ARRAY_SIZE)
+            if (extensionIndex >= PARAM_CHECKER_LAYER_DEV_EXT_ARRAY_SIZE)
                 return VK_ERROR_INVALID_VALUE;
-            memcpy((VkExtensionProperties *) pData, &pcExts[extensionIndex], sizeof(VkExtensionProperties));
+            memcpy((VkExtensionProperties *) pData, &pcDevExts[extensionIndex], sizeof(VkExtensionProperties));
             break;
         default:
             return VK_ERROR_INVALID_VALUE;
