aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/vmwgfx/vmwgfx_drv.h
diff options
context:
space:
mode:
authorThomas Hellstrom <thellstrom@vmware.com>2011-09-01 16:18:44 -0400
committerDave Airlie <airlied@redhat.com>2011-09-06 06:51:11 -0400
commitae2a104058e217548215bfe6c6c8a98752139c29 (patch)
tree9f3fccec1c8f4e78b67b44fc6b4cdda10f3291da /drivers/gpu/drm/vmwgfx/vmwgfx_drv.h
parent4f73a96bd76914009682432842ac04a32ab9115b (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.h16
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
56struct vmw_fpriv { 62struct 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);
456extern void vmw_irq_uninstall(struct drm_device *dev); 463extern void vmw_irq_uninstall(struct drm_device *dev);
457extern bool vmw_seqno_passed(struct vmw_private *dev_priv, 464extern bool vmw_seqno_passed(struct vmw_private *dev_priv,
458 uint32_t seqno); 465 uint32_t seqno);
459extern int vmw_fence_wait_ioctl(struct drm_device *dev, void *data,
460 struct drm_file *file_priv);
461extern int vmw_fallback_wait(struct vmw_private *dev_priv, 466extern 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);
467extern void vmw_update_seqno(struct vmw_private *dev_priv, 472extern void vmw_update_seqno(struct vmw_private *dev_priv,
468 struct vmw_fifo_state *fifo_state); 473 struct vmw_fifo_state *fifo_state);
469 474extern void vmw_seqno_waiter_add(struct vmw_private *dev_priv);
475extern 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
581static 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