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>
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));
}
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));
}
}
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,
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,
return result;
fail_context:
- anv_gem_destroy_context(device, device->context_id);
+ intel_gem_destroy_context(device->fd, device->context_id);
return result;
}
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:
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);
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)
{
}
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");
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);
return result;
fail_context:
- anv_gem_destroy_context(device, device->context_id);
+ intel_gem_destroy_context(device->fd, device->context_id);
return result;
}
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:
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);
}
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 = {
}
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");
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);