amd: Add detection of timeline semaphore support.

Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/5600>
This commit is contained in:
Bas Nieuwenhuizen 2020-06-21 23:22:00 +02:00 committed by Marge Bot
parent ce4064fe2f
commit fb5237910b
2 changed files with 11 additions and 0 deletions

View file

@ -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);

View file

@ -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;