intel: Add and use intel_gem_destroy_context()
authorJosé Roberto de Souza <jose.souza@intel.com>
Wed, 5 Oct 2022 15:49:26 +0000 (08:49 -0700)
committerMarge Bot <emma+marge@anholt.net>
Thu, 3 Nov 2022 21:01:30 +0000 (21:01 +0000)
Again sharing the same function across all Intel drivers.

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/18974>

12 files changed:
src/gallium/drivers/crocus/crocus_bufmgr.c
src/gallium/drivers/iris/iris_bufmgr.c
src/intel/common/intel_gem.c
src/intel/common/intel_gem.h
src/intel/vulkan/anv_device.c
src/intel/vulkan/anv_gem.c
src/intel/vulkan/anv_gem_stubs.c
src/intel/vulkan/anv_private.h
src/intel/vulkan_hasvk/anv_device.c
src/intel/vulkan_hasvk/anv_gem.c
src/intel/vulkan_hasvk/anv_gem_stubs.c
src/intel/vulkan_hasvk/anv_private.h

index 4e8b5a9..d618083 100644 (file)
@@ -1594,10 +1594,8 @@ crocus_clone_hw_context(struct crocus_bufmgr *bufmgr, uint32_t ctx_id)
 void
 crocus_destroy_hw_context(struct crocus_bufmgr *bufmgr, uint32_t ctx_id)
 {
-   struct drm_i915_gem_context_destroy d = { .ctx_id = ctx_id };
-
    if (ctx_id != 0 &&
-       intel_ioctl(bufmgr->fd, DRM_IOCTL_I915_GEM_CONTEXT_DESTROY, &d) != 0) {
+       !intel_gem_destroy_context(bufmgr->fd, ctx_id)) {
       fprintf(stderr, "DRM_IOCTL_I915_GEM_CONTEXT_DESTROY failed: %s\n",
               strerror(errno));
    }
index de38bce..c4af964 100644 (file)
@@ -2294,10 +2294,8 @@ iris_clone_hw_context(struct iris_bufmgr *bufmgr, uint32_t ctx_id)
 void
 iris_destroy_kernel_context(struct iris_bufmgr *bufmgr, uint32_t ctx_id)
 {
-   struct drm_i915_gem_context_destroy d = { .ctx_id = ctx_id };
-
    if (ctx_id != 0 &&
-       intel_ioctl(bufmgr->fd, DRM_IOCTL_I915_GEM_CONTEXT_DESTROY, &d) != 0) {
+       !intel_gem_destroy_context(bufmgr->fd, ctx_id)) {
       fprintf(stderr, "DRM_IOCTL_I915_GEM_CONTEXT_DESTROY failed: %s\n",
               strerror(errno));
    }
index 69dde10..7819be0 100644 (file)
@@ -69,6 +69,15 @@ intel_gem_create_context(int fd, uint32_t *context_id)
 }
 
 bool
+intel_gem_destroy_context(int fd, uint32_t context_id)
+{
+   struct drm_i915_gem_context_destroy destroy = {
+      .ctx_id = context_id,
+   };
+   return intel_ioctl(fd, DRM_IOCTL_I915_GEM_CONTEXT_DESTROY, &destroy) == 0;
+}
+
+bool
 intel_gem_create_context_engines(int fd,
                                  const struct intel_query_engine_info *info,
                                  int num_engines, enum intel_engine_class *engine_classes,
index b13ef36..9f9ce9e 100644 (file)
@@ -160,6 +160,7 @@ intel_i915_query_alloc(int fd, uint64_t query_id, int32_t *query_length)
 bool intel_gem_supports_syncobj_wait(int fd);
 
 bool intel_gem_create_context(int fd, uint32_t *context_id);
+bool intel_gem_destroy_context(int fd, uint32_t context_id);
 bool
 intel_gem_create_context_engines(int fd,
                                  const struct intel_query_engine_info *info,
index e19ebfe..055d233 100644 (file)
@@ -3206,7 +3206,7 @@ anv_device_setup_context(struct anv_device *device,
    return result;
 
 fail_context:
-   anv_gem_destroy_context(device, device->context_id);
+   intel_gem_destroy_context(device->fd, device->context_id);
    return result;
 }
 
@@ -3663,7 +3663,7 @@ VkResult anv_CreateDevice(
       anv_queue_finish(&device->queues[i]);
    vk_free(&device->vk.alloc, device->queues);
  fail_context_id:
-   anv_gem_destroy_context(device, device->context_id);
+   intel_gem_destroy_context(device->fd, device->context_id);
  fail_fd:
    close(device->fd);
  fail_device:
@@ -3748,7 +3748,7 @@ void anv_DestroyDevice(
       anv_queue_finish(&device->queues[i]);
    vk_free(&device->vk.alloc, device->queues);
 
-   anv_gem_destroy_context(device, device->context_id);
+   intel_gem_destroy_context(device->fd, device->context_id);
 
    if (INTEL_DEBUG(DEBUG_BATCH))
       intel_batch_decode_ctx_finish(&device->decoder_ctx);
index b87c99d..c0c60d7 100644 (file)
@@ -302,16 +302,6 @@ anv_gem_has_context_priority(int fd, VkQueueGlobalPriorityKHR priority)
                                      priority);
 }
 
-int
-anv_gem_destroy_context(struct anv_device *device, int context)
-{
-   struct drm_i915_gem_context_destroy destroy = {
-      .ctx_id = context,
-   };
-
-   return intel_ioctl(device->fd, DRM_IOCTL_I915_GEM_CONTEXT_DESTROY, &destroy);
-}
-
 static int
 vk_priority_to_i915(VkQueueGlobalPriorityKHR priority)
 {
index ce01fa4..ea17982 100644 (file)
@@ -125,12 +125,6 @@ anv_gem_get_param(int fd, uint32_t param)
 }
 
 int
-anv_gem_destroy_context(struct anv_device *device, int context)
-{
-   unreachable("Unused");
-}
-
-int
 anv_gem_set_context_param(int fd, int context, uint32_t param, uint64_t value)
 {
    unreachable("Unused");
index 49f62cf..f7f919c 100644 (file)
@@ -1347,7 +1347,6 @@ int anv_gem_execbuffer(struct anv_device *device,
 int anv_gem_set_tiling(struct anv_device *device, uint32_t gem_handle,
                        uint32_t stride, uint32_t tiling);
 bool anv_gem_has_context_priority(int fd, VkQueueGlobalPriorityKHR priority);
-int anv_gem_destroy_context(struct anv_device *device, int context);
 int anv_gem_set_context_param(int fd, int context, uint32_t param,
                               uint64_t value);
 int anv_gem_get_param(int fd, uint32_t param);
index 047c0d9..59a2403 100644 (file)
@@ -2855,7 +2855,7 @@ anv_device_setup_context(struct anv_device *device,
    return result;
 
 fail_context:
-   anv_gem_destroy_context(device, device->context_id);
+   intel_gem_destroy_context(device->fd, device->context_id);
    return result;
 }
 
@@ -3263,7 +3263,7 @@ VkResult anv_CreateDevice(
       anv_queue_finish(&device->queues[i]);
    vk_free(&device->vk.alloc, device->queues);
  fail_context_id:
-   anv_gem_destroy_context(device, device->context_id);
+   intel_gem_destroy_context(device->fd, device->context_id);
  fail_fd:
    close(device->fd);
  fail_device:
@@ -3335,7 +3335,7 @@ void anv_DestroyDevice(
       anv_queue_finish(&device->queues[i]);
    vk_free(&device->vk.alloc, device->queues);
 
-   anv_gem_destroy_context(device, device->context_id);
+   intel_gem_destroy_context(device->fd, device->context_id);
 
    if (INTEL_DEBUG(DEBUG_BATCH))
       intel_batch_decode_ctx_finish(&device->decoder_ctx);
index 9036504..a383f8e 100644 (file)
@@ -274,16 +274,6 @@ anv_gem_has_context_priority(int fd, int priority)
 }
 
 int
-anv_gem_destroy_context(struct anv_device *device, int context)
-{
-   struct drm_i915_gem_context_destroy destroy = {
-      .ctx_id = context,
-   };
-
-   return intel_ioctl(device->fd, DRM_IOCTL_I915_GEM_CONTEXT_DESTROY, &destroy);
-}
-
-int
 anv_gem_set_context_param(int fd, int context, uint32_t param, uint64_t value)
 {
    struct drm_i915_gem_context_param p = {
index e86ae41..751e206 100644 (file)
@@ -117,12 +117,6 @@ anv_gem_get_param(int fd, uint32_t param)
 }
 
 int
-anv_gem_destroy_context(struct anv_device *device, int context)
-{
-   unreachable("Unused");
-}
-
-int
 anv_gem_set_context_param(int fd, int context, uint32_t param, uint64_t value)
 {
    unreachable("Unused");
index 600489d..b1143fb 100644 (file)
@@ -1382,7 +1382,6 @@ int anv_gem_execbuffer(struct anv_device *device,
 int anv_gem_set_tiling(struct anv_device *device, uint32_t gem_handle,
                        uint32_t stride, uint32_t tiling);
 bool anv_gem_has_context_priority(int fd, int priority);
-int anv_gem_destroy_context(struct anv_device *device, int context);
 int anv_gem_set_context_param(int fd, int context, uint32_t param,
                               uint64_t value);
 int anv_gem_get_param(int fd, uint32_t param);