| /* $XFree86: xc/lib/GL/mesa/src/drv/i810/i810ioctl.h,v 1.7 2002/10/30 12:51:33 alanh Exp $ */ |
| |
| #ifndef I810_IOCTL_H |
| #define I810_IOCTL_H |
| |
| #include "i810context.h" |
| |
| void i810EmitPrim( i810ContextPtr imesa ); |
| void i810FlushPrims( i810ContextPtr mmesa ); |
| void i810FlushPrimsLocked( i810ContextPtr mmesa ); |
| void i810FlushPrimsGetBuffer( i810ContextPtr imesa ); |
| |
| void i810WaitAgeLocked( i810ContextPtr imesa, int age ); |
| void i810WaitAge( i810ContextPtr imesa, int age ); |
| void i810DmaFinish( i810ContextPtr imesa ); |
| void i810RegetLockQuiescent( i810ContextPtr imesa ); |
| void i810InitIoctlFuncs( struct dd_function_table *functions ); |
| void i810CopyBuffer( const __DRIdrawablePrivate *dpriv ); |
| void i810PageFlip( const __DRIdrawablePrivate *dpriv ); |
| int i810_check_copy(int fd); |
| |
| #define I810_STATECHANGE(imesa, flag) \ |
| do { \ |
| if (imesa->vertex_low != imesa->vertex_last_prim) \ |
| i810FlushPrims(imesa); \ |
| imesa->dirty |= flag; \ |
| } while (0) \ |
| |
| |
| #define I810_FIREVERTICES(imesa) \ |
| do { \ |
| if (imesa->vertex_buffer) { \ |
| i810FlushPrims(imesa); \ |
| } \ |
| } while (0) |
| |
| static INLINE GLuint *i810AllocDmaLow( i810ContextPtr imesa, int bytes ) |
| { |
| if (imesa->vertex_low + bytes > imesa->vertex_high) |
| i810FlushPrimsGetBuffer( imesa ); |
| |
| { |
| GLuint *start = (GLuint *)(imesa->vertex_addr + imesa->vertex_low); |
| imesa->vertex_low += bytes; |
| return start; |
| } |
| } |
| |
| #endif |