diff --git a/icd/intel/gpu.c b/icd/intel/gpu.c
index 75432b3..3f918cf 100644
--- a/icd/intel/gpu.c
+++ b/icd/intel/gpu.c
@@ -40,21 +40,6 @@
 #include "vk_debug_report_lunarg.h"
 #include "vk_debug_marker_lunarg.h"
 
-static const VkExtensionProperties intel_phy_dev_gpu_exts[INTEL_PHY_DEV_EXT_COUNT] = {
-    {
-        .sType = VK_STRUCTURE_TYPE_EXTENSION_PROPERTIES,
-        .name = DEBUG_REPORT_EXTENSION_NAME,
-        .version = VK_DEBUG_REPORT_EXTENSION_VERSION,
-        .description = "Intel sample driver",
-    },
-    {
-        .sType = VK_STRUCTURE_TYPE_EXTENSION_PROPERTIES,
-        .name = DEBUG_MARKER_EXTENSION_NAME,
-        .version = VK_DEBUG_MARKER_EXTENSION_VERSION,
-        .description = "Intel sample driver",
-    }
-};
-
 static int gpu_open_primary_node(struct intel_gpu *gpu)
 {
     if (gpu->primary_fd_internal < 0)
@@ -407,13 +392,6 @@
     gpu_close_render_node(gpu);
 }
 
-static bool compare_vk_extension_properties(
-        const VkExtensionProperties *op1,
-        const VkExtensionProperties *op2)
-{
-    return memcmp(op1, op2, sizeof(VkExtensionProperties)) == 0 ? true : false;
-}
-
 enum intel_phy_dev_ext_type intel_gpu_lookup_phy_dev_extension(
         const struct intel_gpu *gpu,
         const VkExtensionProperties *ext)
diff --git a/icd/intel/gpu.h b/icd/intel/gpu.h
index beed815..215c7f9 100644
--- a/icd/intel/gpu.h
+++ b/icd/intel/gpu.h
@@ -29,22 +29,12 @@
 #define GPU_H
 
 #include "intel.h"
+#include "extension_info.h"
 
 #define INTEL_GPU_ASSERT(gpu, min_gen, max_gen)   \
        assert(intel_gpu_gen(gpu) >= INTEL_GEN(min_gen) && \
               intel_gpu_gen(gpu) <= INTEL_GEN(max_gen))
 
-/*
- * No device-specific extensions at thie point, so this enum is a placeholder
- */
-enum intel_phy_dev_ext_type {
-    INTEL_PHY_DEV_EXT_DEBUG_REPORT,
-    INTEL_PHY_DEV_EXT_DEBUG_MARKER,
-
-    INTEL_PHY_DEV_EXT_COUNT,
-    INTEL_PHY_DEV_EXT_INVALID = INTEL_PHY_DEV_EXT_COUNT,
-};
-
 enum intel_gpu_engine_type {
     /* TODO BLT support */
     INTEL_GPU_ENGINE_3D,
diff --git a/icd/intel/instance.c b/icd/intel/instance.c
index bdc9b86..bcbe40f 100644
--- a/icd/intel/instance.c
+++ b/icd/intel/instance.c
@@ -178,15 +178,6 @@
     return instance;
 }
 
-static const VkExtensionProperties intel_global_exts[INTEL_GLOBAL_EXT_COUNT] = {
-    {
-        .sType = VK_STRUCTURE_TYPE_EXTENSION_PROPERTIES,
-        .name = VK_WSI_LUNARG_EXTENSION_NAME,
-        .version = VK_WSI_LUNARG_REVISION,
-        .description = "Intel sample driver",
-    }
-};
-
 enum intel_global_ext_type intel_gpu_lookup_global_extension(
         const struct intel_instance *instance,
         const VkExtensionProperties *ext)
diff --git a/icd/intel/instance.h b/icd/intel/instance.h
index c4952dc..c638043 100644
--- a/icd/intel/instance.h
+++ b/icd/intel/instance.h
@@ -29,16 +29,10 @@
 #define INSTANCE_H
 
 #include "intel.h"
+#include "extension_info.h"
 
 struct intel_gpu;
 
-enum intel_global_ext_type {
-    INTEL_GLOBAL_EXT_WSI_LUNARG,
-
-    INTEL_GLOBAL_EXT_COUNT,
-    INTEL_GLOBAL_EXT_INVALID = INTEL_GLOBAL_EXT_COUNT,
-};
-
 struct intel_instance {
     struct intel_handle handle;
 
