1848b8605Smrg 2848b8605Smrg#ifndef UTIL_RINGBUFFER_H 3848b8605Smrg#define UTIL_RINGBUFFER_H 4848b8605Smrg 5848b8605Smrg#include "pipe/p_compiler.h" 6848b8605Smrg#include "pipe/p_defines.h" /* only for pipe_error! */ 7848b8605Smrg 8848b8605Smrg/* Generic header 9848b8605Smrg */ 10848b8605Smrgstruct util_packet { 11848b8605Smrg unsigned dwords:8; 12848b8605Smrg unsigned data24:24; 13848b8605Smrg}; 14848b8605Smrg 15848b8605Smrgstruct util_ringbuffer; 16848b8605Smrg 17848b8605Smrgstruct util_ringbuffer *util_ringbuffer_create( unsigned dwords ); 18848b8605Smrg 19848b8605Smrgvoid util_ringbuffer_destroy( struct util_ringbuffer *ring ); 20848b8605Smrg 21848b8605Smrgvoid util_ringbuffer_enqueue( struct util_ringbuffer *ring, 22848b8605Smrg const struct util_packet *packet ); 23848b8605Smrg 24848b8605Smrgenum pipe_error util_ringbuffer_dequeue( struct util_ringbuffer *ring, 25848b8605Smrg struct util_packet *packet, 26848b8605Smrg unsigned max_dwords, 27848b8605Smrg boolean wait ); 28848b8605Smrg 29848b8605Smrg#endif 30