Mesa (master): amd: Add detection of timeline semaphore support.

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Thu Jul 23 17:49:27 UTC 2020


Module: Mesa
Branch: master
Commit: fb5237910b2e8f9b0d1a0a15de3f73dc0675771e
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=fb5237910b2e8f9b0d1a0a15de3f73dc0675771e

Author: Bas Nieuwenhuizen <bas at basnieuwenhuizen.nl>
Date:   Sun Jun 21 23:22:00 2020 +0200

amd: Add detection of timeline semaphore support.

Reviewed-by: Samuel Pitoiset <samuel.pitoiset at gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/5600>

---

 src/amd/common/ac_gpu_info.c | 10 ++++++++++
 src/amd/common/ac_gpu_info.h |  1 +
 2 files changed, 11 insertions(+)

diff --git a/src/amd/common/ac_gpu_info.c b/src/amd/common/ac_gpu_info.c
index 4054e1506a9..797de243b40 100644
--- a/src/amd/common/ac_gpu_info.c
+++ b/src/amd/common/ac_gpu_info.c
@@ -93,6 +93,14 @@ static bool has_syncobj(int fd)
 	return value ? true : false;
 }
 
+static bool has_timeline_syncobj(int fd)
+{
+	uint64_t value;
+	if (drmGetCap(fd, DRM_CAP_SYNCOBJ_TIMELINE, &value))
+		return false;
+	return value ? true : false;
+}
+
 static uint64_t fix_vram_size(uint64_t size)
 {
 	/* The VRAM size is underreported, so we need to fix it, because
@@ -478,6 +486,7 @@ bool ac_query_gpu_info(int fd, void *dev_p,
 		uvd_enc.available_rings ? true : false;
 	info->has_userptr = true;
 	info->has_syncobj = has_syncobj(fd);
+	info->has_timeline_syncobj = has_timeline_syncobj(fd);
 	info->has_syncobj_wait_for_submit = info->has_syncobj && info->drm_minor >= 20;
 	info->has_fence_to_handle = info->has_syncobj && info->drm_minor >= 21;
 	info->has_ctx_priority = info->drm_minor >= 22;
@@ -923,6 +932,7 @@ void ac_print_gpu_info(struct radeon_info *info)
 	printf("    has_userptr = %i\n", info->has_userptr);
 	printf("    has_syncobj = %u\n", info->has_syncobj);
 	printf("    has_syncobj_wait_for_submit = %u\n", info->has_syncobj_wait_for_submit);
+	printf("    has_timeline_syncobj = %u\n", info->has_timeline_syncobj);
 	printf("    has_fence_to_handle = %u\n", info->has_fence_to_handle);
 	printf("    has_ctx_priority = %u\n", info->has_ctx_priority);
 	printf("    has_local_buffers = %u\n", info->has_local_buffers);
diff --git a/src/amd/common/ac_gpu_info.h b/src/amd/common/ac_gpu_info.h
index 4b2c35c466c..70e53f16cb4 100644
--- a/src/amd/common/ac_gpu_info.h
+++ b/src/amd/common/ac_gpu_info.h
@@ -134,6 +134,7 @@ struct radeon_info {
 	bool                        has_userptr;
 	bool                        has_syncobj;
 	bool                        has_syncobj_wait_for_submit;
+	bool                        has_timeline_syncobj;
 	bool                        has_fence_to_handle;
 	bool                        has_ctx_priority;
 	bool                        has_local_buffers;



More information about the mesa-commit mailing list