intel: add support for per-instance GPU enumeration

Every instance should be indepedenent and have its own list of intel_gpus.
diff --git a/icd/intel/instance.c b/icd/intel/instance.c
index ab19566..9e2c56b 100644
--- a/icd/intel/instance.c
+++ b/icd/intel/instance.c
@@ -78,9 +78,30 @@
     }
 }
 
+static void intel_instance_add_gpu(struct intel_instance *instance,
+                                   struct intel_gpu *gpu)
+{
+    gpu->next = instance->gpus;
+    instance->gpus = gpu;
+}
+
+static void intel_instance_remove_gpus(struct intel_instance *instance)
+{
+    struct intel_gpu *gpu = instance->gpus;
+
+    while (gpu) {
+        struct intel_gpu *next = gpu->next;
+
+        intel_gpu_destroy(gpu);
+        gpu = next;
+    }
+
+    instance->gpus = NULL;
+}
+
 static void intel_instance_destroy(struct intel_instance *instance)
 {
-    intel_gpu_remove_all();
+    intel_instance_remove_gpus(instance);
     icd_free(instance);
 }
 
@@ -130,16 +151,17 @@
 }
 
 ICD_EXPORT XGL_RESULT XGLAPI xglEnumerateGpus(
-    XGL_INSTANCE                                instance,
+    XGL_INSTANCE                                instance_,
     uint32_t                                    maxGpus,
     uint32_t*                                   pGpuCount,
     XGL_PHYSICAL_GPU*                           pGpus)
 {
+    struct intel_instance *instance = intel_instance(instance_);
     struct icd_drm_device *devices, *dev;
     XGL_RESULT ret;
     uint32_t count;
 
-    intel_gpu_remove_all();
+    intel_instance_remove_gpus(instance);
 
     if (!maxGpus) {
         *pGpuCount = 0;
@@ -162,8 +184,11 @@
         render_node = icd_drm_get_devnode(dev, ICD_DRM_MINOR_RENDER);
 
         devid = (intel_devid_override) ? intel_devid_override : dev->devid;
-        ret = intel_gpu_add(devid, primary_node, render_node, &gpu);
+        ret = intel_gpu_create(instance, devid,
+                primary_node, render_node, &gpu);
         if (ret == XGL_SUCCESS) {
+            intel_instance_add_gpu(instance, gpu);
+
             pGpus[count++] = (XGL_PHYSICAL_GPU) gpu;
             if (count >= maxGpus)
                 break;