radeon: avoid page flip code in DRI2
[mesa.git] / src / mesa / drivers / dri / radeon / radeon_lock.h
index 86e96aa7d2c614bf3bbcf6f658b6a179039773ad..f5ebb8dd54c54bd9c5f927ebd00d8634c4018c62 100644 (file)
@@ -39,8 +39,12 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
  *   Kevin E. Martin <martin@valinux.com>
  */
 
-#ifndef __RADEON_LOCK_H__
-#define __RADEON_LOCK_H__
+#ifndef COMMON_LOCK_H
+#define COMMON_LOCK_H
+
+#include "main/colormac.h"
+#include "radeon_screen.h"
+#include "radeon_common.h"
 
 extern void radeonGetLock(radeonContextPtr rmesa, GLuint flags);
 
@@ -94,19 +98,23 @@ extern int prevLockLine;
    do {                                                                \
       char __ret = 0;                                          \
       DEBUG_CHECK_LOCK();                                      \
-      DRM_CAS( (rmesa)->dri.hwLock, (rmesa)->dri.hwContext,            \
-              (DRM_LOCK_HELD | (rmesa)->dri.hwContext), __ret );       \
-      if ( __ret )                                             \
-        radeonGetLock( (rmesa), 0 );                           \
-      DEBUG_LOCK();                                            \
+      if (!(rmesa)->radeonScreen->driScreen->dri2.enabled) {           \
+       DRM_CAS( (rmesa)->dri.hwLock, (rmesa)->dri.hwContext,           \
+                (DRM_LOCK_HELD | (rmesa)->dri.hwContext), __ret );     \
+       if ( __ret )                                                    \
+         radeonGetLock( (rmesa), 0 );                                  \
+      }                                                                        \
+      DEBUG_LOCK();                                                    \
    } while (0)
 
 #define UNLOCK_HARDWARE( rmesa )                                       \
    do {                                                                        \
-      DRM_UNLOCK( (rmesa)->dri.fd,                                     \
-                 (rmesa)->dri.hwLock,                                  \
-                 (rmesa)->dri.hwContext );                             \
-      DEBUG_RESET();                                                   \
+     if (!(rmesa)->radeonScreen->driScreen->dri2.enabled) {            \
+       DRM_UNLOCK( (rmesa)->dri.fd,                                    \
+                  (rmesa)->dri.hwLock,                                 \
+                  (rmesa)->dri.hwContext );                            \
+       DEBUG_RESET();                                                  \
+     }                                                                 \
    } while (0)
 
-#endif                         /* __RADEON_LOCK_H__ */
+#endif