diff options
| author | Jakob Bornecrantz <jakob@vmware.com> | 2011-11-28 07:19:11 -0500 |
|---|---|---|
| committer | Dave Airlie <airlied@redhat.com> | 2011-12-19 09:06:02 -0500 |
| commit | 551a6697d08f92a311d6adbf8d03af2bc7f9e2ee (patch) | |
| tree | 36bdebe3d5a03e5fa1ea6e04f10f8914f7cc20ad /drivers | |
| parent | 6a91d97e02d7efde955c25a5b0fbf950cd2a6efa (diff) | |
vmwgfx: Add helper function to get surface or dmabuf
Signed-off-by: Jakob Bornecrantz <jakob@vmware.com>
Reviewed-by: Thomas Hellstrom <thellstrom@vmware.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
Diffstat (limited to 'drivers')
| -rw-r--r-- | drivers/gpu/drm/vmwgfx/vmwgfx_drv.h | 5 | ||||
| -rw-r--r-- | drivers/gpu/drm/vmwgfx/vmwgfx_resource.c | 23 |
2 files changed, 28 insertions, 0 deletions
diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_drv.h b/drivers/gpu/drm/vmwgfx/vmwgfx_drv.h index 8cca91a93bde..dc279706ca70 100644 --- a/drivers/gpu/drm/vmwgfx/vmwgfx_drv.h +++ b/drivers/gpu/drm/vmwgfx/vmwgfx_drv.h | |||
| @@ -390,6 +390,11 @@ extern int vmw_context_check(struct vmw_private *dev_priv, | |||
| 390 | struct ttm_object_file *tfile, | 390 | struct ttm_object_file *tfile, |
| 391 | int id, | 391 | int id, |
| 392 | struct vmw_resource **p_res); | 392 | struct vmw_resource **p_res); |
| 393 | extern int vmw_user_lookup_handle(struct vmw_private *dev_priv, | ||
| 394 | struct ttm_object_file *tfile, | ||
| 395 | uint32_t handle, | ||
| 396 | struct vmw_surface **out_surf, | ||
| 397 | struct vmw_dma_buffer **out_buf); | ||
| 393 | extern void vmw_surface_res_free(struct vmw_resource *res); | 398 | extern void vmw_surface_res_free(struct vmw_resource *res); |
| 394 | extern int vmw_surface_init(struct vmw_private *dev_priv, | 399 | extern int vmw_surface_init(struct vmw_private *dev_priv, |
| 395 | struct vmw_surface *srf, | 400 | struct vmw_surface *srf, |
diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_resource.c b/drivers/gpu/drm/vmwgfx/vmwgfx_resource.c index 86c5e4cceb31..1c7f09e26819 100644 --- a/drivers/gpu/drm/vmwgfx/vmwgfx_resource.c +++ b/drivers/gpu/drm/vmwgfx/vmwgfx_resource.c | |||
| @@ -1190,6 +1190,29 @@ void vmw_resource_unreserve(struct list_head *list) | |||
| 1190 | write_unlock(lock); | 1190 | write_unlock(lock); |
| 1191 | } | 1191 | } |
| 1192 | 1192 | ||
| 1193 | /** | ||
| 1194 | * Helper function that looks either a surface or dmabuf. | ||
| 1195 | * | ||
| 1196 | * The pointer this pointed at by out_surf and out_buf needs to be null. | ||
| 1197 | */ | ||
| 1198 | int vmw_user_lookup_handle(struct vmw_private *dev_priv, | ||
| 1199 | struct ttm_object_file *tfile, | ||
| 1200 | uint32_t handle, | ||
| 1201 | struct vmw_surface **out_surf, | ||
| 1202 | struct vmw_dma_buffer **out_buf) | ||
| 1203 | { | ||
| 1204 | int ret; | ||
| 1205 | |||
| 1206 | BUG_ON(*out_surf || *out_buf); | ||
| 1207 | |||
| 1208 | ret = vmw_user_surface_lookup_handle(dev_priv, tfile, handle, out_surf); | ||
| 1209 | if (!ret) | ||
| 1210 | return 0; | ||
| 1211 | |||
| 1212 | ret = vmw_user_dmabuf_lookup(tfile, handle, out_buf); | ||
| 1213 | return ret; | ||
| 1214 | } | ||
| 1215 | |||
| 1193 | 1216 | ||
| 1194 | int vmw_user_surface_lookup_handle(struct vmw_private *dev_priv, | 1217 | int vmw_user_surface_lookup_handle(struct vmw_private *dev_priv, |
| 1195 | struct ttm_object_file *tfile, | 1218 | struct ttm_object_file *tfile, |
