#ifndef I830_IOCTL_H
#define I830_IOCTL_H
#include "i830_context.h"
GLuint *i830AllocDwords (i830ContextPtr imesa, int dwords);
void i830EmitPrim( i830ContextPtr imesa );
void i830FlushPrims( i830ContextPtr mmesa );
void i830FlushPrimsLocked( i830ContextPtr mmesa );
void i830FlushPrimsGetBuffer( i830ContextPtr imesa );
void i830FlushPrimsGetBufferLocked( i830ContextPtr imesa );
void i830WaitAgeLocked( i830ContextPtr imesa, int age );
void i830WaitAge( i830ContextPtr imesa, int age );
void i830DmaFinish( i830ContextPtr imesa );
void i830RegetLockQuiescent( i830ContextPtr imesa );
void i830DDInitIoctlFuncs( GLcontext *ctx );
void i830CopyBuffer( const __DRIdrawablePrivate *dpriv );
void i830PageFlip( const __DRIdrawablePrivate *dpriv );
int i830_check_copy(int fd);
#define I830_STATECHANGE(imesa, flag) \
do { \
if (imesa->vertex_low != imesa->vertex_last_prim) \
i830FlushPrims(imesa); \
imesa->dirty |= flag; \
} while (0)
#define I830_FIREVERTICES(imesa) \
do { \
if (imesa->vertex_buffer) { \
i830FlushPrims(imesa); \
} \
} while (0)
static __inline GLuint *i830AllocDmaLow( i830ContextPtr imesa, int bytes )
{
if (imesa->vertex_low + bytes > imesa->vertex_high) {
i830FlushPrimsGetBuffer( imesa );
}
{
GLuint *start = (GLuint *)(imesa->vertex_addr + imesa->vertex_low);
imesa->vertex_low += bytes;
return start;
}
}
static __inline GLuint *i830AllocDmaLowLocked( i830ContextPtr imesa,
int bytes )
{
if (imesa->vertex_low + bytes > imesa->vertex_high) {
i830FlushPrimsGetBufferLocked( imesa );
}
{
GLuint *start = (GLuint *)(imesa->vertex_addr + imesa->vertex_low);
imesa->vertex_low += bytes;
return start;
}
}
#endif