mesa: lift default symlinks target into Makefile.template
[mesa.git] / src / mesa / drivers / dri / sis / sis_tris.h
index d0ca7c12c0e4e105dfc10071feb58cf6fe66aa38..b34fe8c7c98a44d80986a00bb49270bcec01eac6 100644 (file)
@@ -1,4 +1,3 @@
-/* $XFree86: xc/lib/GL/mesa/src/drv/r128/r128_tris.h,v 1.8 2002/10/30 12:51:43 alanh Exp $ */
 /**************************************************************************
 
 Copyright 2003 Eric Anholt
@@ -32,13 +31,40 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 #ifndef __SIS_TRIS_H__
 #define __SIS_TRIS_H__
 
-#include "mtypes.h"
+#include "sis_lock.h"
+#include "main/mtypes.h"
 
 extern void sisInitTriFuncs( GLcontext *ctx );
-
-
+extern void sisFlushPrims( sisContextPtr smesa );
+extern void sisFlushPrimsLocked( sisContextPtr smesa );
 extern void sisFallback( GLcontext *ctx, GLuint bit, GLboolean mode );
+
 #define FALLBACK( smesa, bit, mode ) sisFallback( smesa->glCtx, bit, mode )
 
+#define SIS_FIREVERTICES(smesa)                                \
+do {                                                   \
+   if (smesa->vb_cur != smesa->vb_last)                        \
+      sisFlushPrims(smesa);                            \
+} while (0)
+
+static INLINE GLuint *sisAllocDmaLow(sisContextPtr smesa, int bytes)
+{
+   GLuint *start;
+
+   if (smesa->vb_cur + bytes >= smesa->vb_end) {
+      LOCK_HARDWARE();
+      sisFlushPrimsLocked(smesa);
+      if (smesa->using_agp) {
+        WaitEngIdle(smesa);
+        smesa->vb_cur = smesa->vb;
+        smesa->vb_last = smesa->vb_cur;
+      }
+      UNLOCK_HARDWARE();
+   }
+
+   start = (GLuint *)smesa->vb_cur;
+   smesa->vb_cur += bytes;
+   return start;
+}
 
 #endif /* __SIS_TRIS_H__ */