diff options
author | Thomas Hellstrom <thellstrom@vmware.com> | 2011-09-01 16:18:44 -0400 |
---|---|---|
committer | Dave Airlie <airlied@redhat.com> | 2011-09-06 06:51:11 -0400 |
commit | ae2a104058e217548215bfe6c6c8a98752139c29 (patch) | |
tree | 9f3fccec1c8f4e78b67b44fc6b4cdda10f3291da /drivers/gpu/drm/vmwgfx/vmwgfx_drv.h | |
parent | 4f73a96bd76914009682432842ac04a32ab9115b (diff) |
vmwgfx: Implement fence objects
Will be needed for queries and drm event-driven throttling.
As a benefit, they help avoid stale user-space fence handles.
Signed-off-by: Thomas Hellstrom <thellstrom@vmware.com>
Reviewed-by: Jakob Bornecrantz <jakob@vmware.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
Diffstat (limited to 'drivers/gpu/drm/vmwgfx/vmwgfx_drv.h')
-rw-r--r-- | drivers/gpu/drm/vmwgfx/vmwgfx_drv.h | 16 |
1 files changed, 13 insertions, 3 deletions
diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_drv.h b/drivers/gpu/drm/vmwgfx/vmwgfx_drv.h index 3018871aaaff..770f0636cee8 100644 --- a/drivers/gpu/drm/vmwgfx/vmwgfx_drv.h +++ b/drivers/gpu/drm/vmwgfx/vmwgfx_drv.h | |||
@@ -38,6 +38,7 @@ | |||
38 | #include "ttm/ttm_lock.h" | 38 | #include "ttm/ttm_lock.h" |
39 | #include "ttm/ttm_execbuf_util.h" | 39 | #include "ttm/ttm_execbuf_util.h" |
40 | #include "ttm/ttm_module.h" | 40 | #include "ttm/ttm_module.h" |
41 | #include "vmwgfx_fence.h" | ||
41 | 42 | ||
42 | #define VMWGFX_DRIVER_DATE "20100927" | 43 | #define VMWGFX_DRIVER_DATE "20100927" |
43 | #define VMWGFX_DRIVER_MAJOR 1 | 44 | #define VMWGFX_DRIVER_MAJOR 1 |
@@ -53,6 +54,11 @@ | |||
53 | #define VMW_PL_GMR TTM_PL_PRIV0 | 54 | #define VMW_PL_GMR TTM_PL_PRIV0 |
54 | #define VMW_PL_FLAG_GMR TTM_PL_FLAG_PRIV0 | 55 | #define VMW_PL_FLAG_GMR TTM_PL_FLAG_PRIV0 |
55 | 56 | ||
57 | #define VMW_RES_CONTEXT ttm_driver_type0 | ||
58 | #define VMW_RES_SURFACE ttm_driver_type1 | ||
59 | #define VMW_RES_STREAM ttm_driver_type2 | ||
60 | #define VMW_RES_FENCE ttm_driver_type3 | ||
61 | |||
56 | struct vmw_fpriv { | 62 | struct vmw_fpriv { |
57 | struct drm_master *locked_master; | 63 | struct drm_master *locked_master; |
58 | struct ttm_object_file *tfile; | 64 | struct ttm_object_file *tfile; |
@@ -245,6 +251,7 @@ struct vmw_private { | |||
245 | atomic_t fifo_queue_waiters; | 251 | atomic_t fifo_queue_waiters; |
246 | uint32_t last_read_seqno; | 252 | uint32_t last_read_seqno; |
247 | spinlock_t irq_lock; | 253 | spinlock_t irq_lock; |
254 | struct vmw_fence_manager *fman; | ||
248 | 255 | ||
249 | /* | 256 | /* |
250 | * Device state | 257 | * Device state |
@@ -456,8 +463,6 @@ extern int vmw_irq_postinstall(struct drm_device *dev); | |||
456 | extern void vmw_irq_uninstall(struct drm_device *dev); | 463 | extern void vmw_irq_uninstall(struct drm_device *dev); |
457 | extern bool vmw_seqno_passed(struct vmw_private *dev_priv, | 464 | extern bool vmw_seqno_passed(struct vmw_private *dev_priv, |
458 | uint32_t seqno); | 465 | uint32_t seqno); |
459 | extern int vmw_fence_wait_ioctl(struct drm_device *dev, void *data, | ||
460 | struct drm_file *file_priv); | ||
461 | extern int vmw_fallback_wait(struct vmw_private *dev_priv, | 466 | extern int vmw_fallback_wait(struct vmw_private *dev_priv, |
462 | bool lazy, | 467 | bool lazy, |
463 | bool fifo_idle, | 468 | bool fifo_idle, |
@@ -466,7 +471,8 @@ extern int vmw_fallback_wait(struct vmw_private *dev_priv, | |||
466 | unsigned long timeout); | 471 | unsigned long timeout); |
467 | extern void vmw_update_seqno(struct vmw_private *dev_priv, | 472 | extern void vmw_update_seqno(struct vmw_private *dev_priv, |
468 | struct vmw_fifo_state *fifo_state); | 473 | struct vmw_fifo_state *fifo_state); |
469 | 474 | extern void vmw_seqno_waiter_add(struct vmw_private *dev_priv); | |
475 | extern void vmw_seqno_waiter_remove(struct vmw_private *dev_priv); | ||
470 | 476 | ||
471 | /** | 477 | /** |
472 | * Rudimentary fence-like objects currently used only for throttling - | 478 | * Rudimentary fence-like objects currently used only for throttling - |
@@ -572,4 +578,8 @@ static inline struct vmw_dma_buffer *vmw_dmabuf_reference(struct vmw_dma_buffer | |||
572 | return NULL; | 578 | return NULL; |
573 | } | 579 | } |
574 | 580 | ||
581 | static inline struct ttm_mem_global *vmw_mem_glob(struct vmw_private *dev_priv) | ||
582 | { | ||
583 | return (struct ttm_mem_global *) dev_priv->mem_global_ref.object; | ||
584 | } | ||
575 | #endif | 585 | #endif |