mesa: lift default symlinks target into Makefile.template
[mesa.git] / src / mesa / drivers / dri / sis / sis_tris.h
index 775c1072a772d384f92508acb490de69381de5c6..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
@@ -18,10 +17,9 @@ Software.
 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL
-ATI, PRECISION INSIGHT AND/OR THEIR SUPPLIERS BE LIABLE FOR ANY CLAIM,
-DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
-OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
-USE OR OTHER DEALINGS IN THE SOFTWARE.
+ERIC ANHOLT BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 
 **************************************************************************/
 
@@ -33,13 +31,40 @@ 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__ */