iris: Move iris_bufmgr_init_global_vm() to i915/iris_bufmgr.c and prepare for Xe KMD
authorJosé Roberto de Souza <jose.souza@intel.com>
Tue, 1 Nov 2022 15:31:16 +0000 (08:31 -0700)
committerMarge Bot <emma+marge@anholt.net>
Wed, 15 Mar 2023 02:05:58 +0000 (02:05 +0000)
Signed-off-by: José Roberto de Souza <jose.souza@intel.com>
Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/21887>

src/gallium/drivers/iris/i915/iris_bufmgr.c
src/gallium/drivers/iris/i915/iris_bufmgr.h
src/gallium/drivers/iris/iris_bufmgr.c

index 3eb3bd9..e90bcc5 100644 (file)
@@ -55,3 +55,13 @@ int iris_i915_bo_wait_gem(struct iris_bo *bo, int64_t timeout_ns)
 
    return 0;
 }
+
+bool iris_i915_init_global_vm(struct iris_bufmgr *bufmgr, uint32_t *vm_id)
+{
+   uint64_t value;
+   bool ret = intel_gem_get_context_param(iris_bufmgr_get_fd(bufmgr), 0,
+                                          I915_CONTEXT_PARAM_VM, &value);
+   if (ret)
+      *vm_id = value;
+   return ret;
+}
index 1702b03..534fd7c 100644 (file)
@@ -26,6 +26,9 @@
 #include <stdint.h>
 
 struct iris_bo;
+struct iris_bufmgr;
 
 bool iris_i915_bo_busy_gem(struct iris_bo *bo);
 int iris_i915_bo_wait_gem(struct iris_bo *bo, int64_t timeout_ns);
+
+bool iris_i915_init_global_vm(struct iris_bufmgr *bufmgr, uint32_t *vm_id);
index db95337..78a9e57 100644 (file)
@@ -2212,13 +2212,12 @@ iris_bufmgr_get_meminfo(struct iris_bufmgr *bufmgr,
 static void
 iris_bufmgr_init_global_vm(struct iris_bufmgr *bufmgr)
 {
-   uint64_t value;
-   if (!intel_gem_get_context_param(bufmgr->fd, 0, I915_CONTEXT_PARAM_VM, &value)) {
-      bufmgr->use_global_vm = false;
-      bufmgr->global_vm_id = 0;
-   } else {
-      bufmgr->use_global_vm = true;
-      bufmgr->global_vm_id = value;
+   switch (bufmgr->devinfo.kmd_type) {
+   case INTEL_KMD_TYPE_I915:
+      bufmgr->use_global_vm = iris_i915_init_global_vm(bufmgr, &bufmgr->global_vm_id);
+      break;
+   default:
+      unreachable("missing");
    }
 }
 
@@ -2256,8 +2255,6 @@ iris_bufmgr_create(struct intel_device_info *devinfo, int fd, bool bo_reuse)
    simple_mtx_init(&bufmgr->lock, mtx_plain);
    simple_mtx_init(&bufmgr->bo_deps_lock, mtx_plain);
 
-   iris_bufmgr_init_global_vm(bufmgr);
-
    list_inithead(&bufmgr->zombie_list);
 
    bufmgr->devinfo = *devinfo;
@@ -2274,6 +2271,8 @@ iris_bufmgr_create(struct intel_device_info *devinfo, int fd, bool bo_reuse)
                                                             INTEL_ENGINE_CLASS_COMPUTE);
    free(engine_info);
 
+   iris_bufmgr_init_global_vm(bufmgr);
+
    STATIC_ASSERT(IRIS_MEMZONE_SHADER_START == 0ull);
    const uint64_t _4GB = 1ull << 32;
    const uint64_t _2GB = 1ul << 31;