r600g: handle DRM_API_HANDLE_TYPE_KMS in buffer_get_handle

This commit is contained in:
Marek Olšák 2010-06-20 03:50:44 +02:00
parent e4fe18a620
commit c85e53bebf
1 changed files with 13 additions and 10 deletions

View File

@ -48,19 +48,22 @@ boolean r600_buffer_get_handle(struct radeon *rw,
struct winsys_handle *whandle)
{
struct drm_gem_flink flink;
struct r600_buffer* rbuffer;
int r;
struct r600_buffer* rbuffer = (struct r600_buffer*)buf;
rbuffer = (struct r600_buffer*)buf;
if (!rbuffer->flink) {
flink.handle = rbuffer->bo->handle;
r = ioctl(rw->fd, DRM_IOCTL_GEM_FLINK, &flink);
if (r) {
return FALSE;
if (whandle->type == DRM_API_HANDLE_TYPE_SHARED) {
if (!rbuffer->flink) {
flink.handle = rbuffer->bo->handle;
if (ioctl(rw->fd, DRM_IOCTL_GEM_FLINK, &flink)) {
return FALSE;
}
rbuffer->flink = flink.name;
}
rbuffer->flink = flink.name;
whandle->handle = rbuffer->flink;
} else if (whandle->type == DRM_API_HANDLE_TYPE_KMS) {
whandle->handle = rbuffer->bo->handle;
}
whandle->handle = rbuffer->flink;
return TRUE;
}