intel_batchbuffer.h revision 03b705cf
103b705cfSriastradh#ifndef _INTEL_BATCHBUFFER_H 203b705cfSriastradh#define _INTEL_BATCHBUFFER_H 303b705cfSriastradh 403b705cfSriastradh/* #define VERBOSE 0 */ 503b705cfSriastradh#ifndef VERBOSE 603b705cfSriastradhextern int VERBOSE; 703b705cfSriastradh#endif 803b705cfSriastradh 903b705cfSriastradh#define BATCH_LOCALS unsigned char *batch_ptr; 1003b705cfSriastradh 1103b705cfSriastradh#define BEGIN_BATCH(n) \ 1203b705cfSriastradh do { \ 1303b705cfSriastradh assert(xvmc_driver->batch.space >= (n) *4); \ 1403b705cfSriastradh if (xvmc_driver->batch.space < (n)*4) \ 1503b705cfSriastradh intelFlushBatch(TRUE); \ 1603b705cfSriastradh batch_ptr = xvmc_driver->batch.ptr; \ 1703b705cfSriastradh } while (0) 1803b705cfSriastradh 1903b705cfSriastradh#define OUT_BATCH(n) \ 2003b705cfSriastradh do { \ 2103b705cfSriastradh *(unsigned int *)batch_ptr = (n); \ 2203b705cfSriastradh batch_ptr += 4; \ 2303b705cfSriastradh } while (0) 2403b705cfSriastradh 2503b705cfSriastradh#define OUT_RELOC(bo,read_domains,write_domains,delta) \ 2603b705cfSriastradh do { \ 2703b705cfSriastradh *(unsigned int *)batch_ptr = (delta) + bo->offset; \ 2803b705cfSriastradh intel_batch_emit_reloc(bo, read_domains, write_domains, delta, batch_ptr); \ 2903b705cfSriastradh batch_ptr += 4; \ 3003b705cfSriastradh } while (0) 3103b705cfSriastradh 3203b705cfSriastradh#define OUT_BATCH_SHORT(n) \ 3303b705cfSriastradh do { \ 3403b705cfSriastradh *(short *)batch_ptr = (n); \ 3503b705cfSriastradh batch_ptr += 2; \ 3603b705cfSriastradh } while (0) 3703b705cfSriastradh 3803b705cfSriastradh#define OUT_BATCH_CHAR(n) \ 3903b705cfSriastradh do { \ 4003b705cfSriastradh *(char *)batch_ptr = (n); \ 4103b705cfSriastradh batch_ptr ++; \ 4203b705cfSriastradh } while (0) 4303b705cfSriastradh#define ADVANCE_BATCH() \ 4403b705cfSriastradh do { \ 4503b705cfSriastradh xvmc_driver->batch.space -= (batch_ptr - xvmc_driver->batch.ptr);\ 4603b705cfSriastradh xvmc_driver->batch.ptr = batch_ptr; \ 4703b705cfSriastradh } while(0) 4803b705cfSriastradh 4903b705cfSriastradhextern void intelFlushBatch(Bool); 5003b705cfSriastradhextern void intelBatchbufferData(const void *, unsigned, unsigned); 5103b705cfSriastradhextern Bool intelInitBatchBuffer(void); 5203b705cfSriastradhextern void intelFiniBatchBuffer(void); 5303b705cfSriastradhextern void intelCmdIoctl(char *, unsigned); 5403b705cfSriastradhextern void intel_batch_emit_reloc(dri_bo * bo, uint32_t read_domain, 5503b705cfSriastradh uint32_t write_domain, uint32_t delta, 5603b705cfSriastradh unsigned char *); 5703b705cfSriastradh#endif /* _INTEL_BATCHBUFFER_H */ 58