Hi guys,
CCing: dri-devel.
question to the usual suspects here: Does somebody of hand knows when DRM_RDWR was added and how we can check reliable if it's available or not?
Using the version number of amdgpu for this sounds a bit questionable, cause that reflects amdgpu functionality level and not DRM prime functionality level.
Thanks, Christian.
Am 17.04.2018 um 10:48 schrieb Qiang Yu:
For kernel < 4.6 drm_prime_handle_to_fd_ioctl won't accept DRM_RDWR.
Sigend-off-by: Qiang Yu Qiang.Yu@amd.com
amdgpu/amdgpu_bo.c | 8 ++++++-- amdgpu/amdgpu_internal.h | 2 ++ 2 files changed, 8 insertions(+), 2 deletions(-)
diff --git a/amdgpu/amdgpu_bo.c b/amdgpu/amdgpu_bo.c index 9e37b14..17f848f 100644 --- a/amdgpu/amdgpu_bo.c +++ b/amdgpu/amdgpu_bo.c @@ -229,6 +229,7 @@ int amdgpu_bo_export(amdgpu_bo_handle bo, uint32_t *shared_handle) { int r;
uint32_t flags;
switch (type) { case amdgpu_bo_handle_type_gem_flink_name:
@@ -246,8 +247,11 @@ int amdgpu_bo_export(amdgpu_bo_handle bo,
case amdgpu_bo_handle_type_dma_buf_fd: amdgpu_add_handle_to_table(bo);
return drmPrimeHandleToFD(bo->dev->fd, bo->handle,
DRM_CLOEXEC | DRM_RDWR,
flags = DRM_CLOEXEC;
if (AMDGPU_VERSION(bo->dev->major_version, bo->dev->minor_version) >=
AMDGPU_VERSION(3, 1))
flags |= DRM_RDWR;
} return -EINVAL;return drmPrimeHandleToFD(bo->dev->fd, bo->handle, flags, (int*)shared_handle);
diff --git a/amdgpu/amdgpu_internal.h b/amdgpu/amdgpu_internal.h index 99b8ce0..09f5036 100644 --- a/amdgpu/amdgpu_internal.h +++ b/amdgpu/amdgpu_internal.h @@ -39,6 +39,8 @@ #define ROUND_UP(x, y) ((((x)-1) | __round_mask(x, y))+1) #define ROUND_DOWN(x, y) ((x) & ~__round_mask(x, y))
+#define AMDGPU_VERSION(major, minor) ((major << 16) | minor)
- #define AMDGPU_INVALID_VA_ADDRESS 0xffffffffffffffff #define AMDGPU_NULL_SUBMIT_SEQ 0