diff options
author | Thomas Hellstrom <thellstrom@vmware.com> | 2010-11-17 07:28:30 -0500 |
---|---|---|
committer | Dave Airlie <airlied@redhat.com> | 2010-11-21 22:25:20 -0500 |
commit | 95762c2b34069bf4adb7929969f1f5f5fc8a38df (patch) | |
tree | 5c792e65dbdb4e7cb2c04b5a8058a929e8acc23d /include/drm/ttm | |
parent | 702adba22433c175e8429a47760f35ca16caf1cd (diff) |
drm/ttm: Improved fencing of buffer object lists
Drastically reduce the number of spin lock / unlock operations by performing
unreserving and fencing under global locks.
Signed-off-by: Thomas Hellstrom <thellstrom@vmware.com>
Reviewed-by: Jerome Glisse <j.glisse@redhat.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
Diffstat (limited to 'include/drm/ttm')
-rw-r--r-- | include/drm/ttm/ttm_bo_driver.h | 10 | ||||
-rw-r--r-- | include/drm/ttm/ttm_execbuf_util.h | 2 |
2 files changed, 12 insertions, 0 deletions
diff --git a/include/drm/ttm/ttm_bo_driver.h b/include/drm/ttm/ttm_bo_driver.h index ca8131e98300..cfb9ca4ec1c4 100644 --- a/include/drm/ttm/ttm_bo_driver.h +++ b/include/drm/ttm/ttm_bo_driver.h | |||
@@ -910,6 +910,16 @@ extern int ttm_bo_reserve_locked(struct ttm_buffer_object *bo, | |||
910 | extern void ttm_bo_unreserve(struct ttm_buffer_object *bo); | 910 | extern void ttm_bo_unreserve(struct ttm_buffer_object *bo); |
911 | 911 | ||
912 | /** | 912 | /** |
913 | * ttm_bo_unreserve_locked | ||
914 | * | ||
915 | * @bo: A pointer to a struct ttm_buffer_object. | ||
916 | * | ||
917 | * Unreserve a previous reservation of @bo. | ||
918 | * Needs to be called with struct ttm_bo_global::lru_lock held. | ||
919 | */ | ||
920 | extern void ttm_bo_unreserve_locked(struct ttm_buffer_object *bo); | ||
921 | |||
922 | /** | ||
913 | * ttm_bo_wait_unreserved | 923 | * ttm_bo_wait_unreserved |
914 | * | 924 | * |
915 | * @bo: A pointer to a struct ttm_buffer_object. | 925 | * @bo: A pointer to a struct ttm_buffer_object. |
diff --git a/include/drm/ttm/ttm_execbuf_util.h b/include/drm/ttm/ttm_execbuf_util.h index fd09b8438977..535ab00407e0 100644 --- a/include/drm/ttm/ttm_execbuf_util.h +++ b/include/drm/ttm/ttm_execbuf_util.h | |||
@@ -44,6 +44,7 @@ | |||
44 | * @reserved: Indicates whether @bo has been reserved for validation. | 44 | * @reserved: Indicates whether @bo has been reserved for validation. |
45 | * @removed: Indicates whether @bo has been removed from lru lists. | 45 | * @removed: Indicates whether @bo has been removed from lru lists. |
46 | * @put_count: Number of outstanding references on bo::list_kref. | 46 | * @put_count: Number of outstanding references on bo::list_kref. |
47 | * @old_sync_obj: Pointer to a sync object about to be unreferenced | ||
47 | */ | 48 | */ |
48 | 49 | ||
49 | struct ttm_validate_buffer { | 50 | struct ttm_validate_buffer { |
@@ -53,6 +54,7 @@ struct ttm_validate_buffer { | |||
53 | bool reserved; | 54 | bool reserved; |
54 | bool removed; | 55 | bool removed; |
55 | int put_count; | 56 | int put_count; |
57 | void *old_sync_obj; | ||
56 | }; | 58 | }; |
57 | 59 | ||
58 | /** | 60 | /** |