OSDN Git Service

Merge branch 'master' into i915-unification
[android-x86/external-mesa.git] / src / mesa / drivers / dri / ffb / ffb_lock.h
1 /* $XFree86: xc/lib/GL/mesa/src/drv/ffb/ffb_lock.h,v 1.2 2002/02/22 21:32:59 dawes Exp $ */
2
3 #ifndef _FFB_LOCK_H
4 #define _FFB_LOCK_H
5
6 #include "ffb_context.h"
7
8 extern void ffbXMesaUpdateState(ffbContextPtr fmesa);
9 #define FFB_UPDATE_STATE(fmesa) ffbXMesaUpdateState(fmesa)
10
11 /* Lock the hardware and validate our state.  This hardware can only ever
12  * exist on SPARC platforms.  Don't bother building the real LOCK_HARDWARE and
13  * UNLOCK_HARDWARE code on non-SPARC platforms.  The only reason the driver
14  * gets built on non-SPARC is to catch build breakages earlier.
15  */
16 #if !defined(__sparc__)
17 #define LOCK_HARDWARE(fmesa)                    
18 #define UNLOCK_HARDWARE(fmesa)                  
19 #else
20 #define LOCK_HARDWARE(fmesa)                            \
21   do {                                                  \
22     DRM_CAS_RESULT(__ret);                              \
23     DRM_CAS(fmesa->driHwLock, fmesa->hHWContext,        \
24             (DRM_LOCK_HELD | fmesa->hHWContext), __ret);\
25     if (__ret) {                                        \
26         drmGetLock(fmesa->driFd, fmesa->hHWContext, 0); \
27         FFB_UPDATE_STATE(fmesa);                        \
28     }                                                   \
29   } while (0)
30
31
32 /* Unlock the hardware. */
33 #define UNLOCK_HARDWARE(fmesa)                                  \
34     DRM_UNLOCK(fmesa->driFd, fmesa->driHwLock, fmesa->hHWContext);      
35 #endif
36
37 #endif /* !(_FFB_LOCK_H) */