OSDN Git Service

c3a24577a9ede2a8a6b2284d7f180e647f47051f
[android-x86/hardware-intel-common-libva.git] / i965_drv_video / intel_batchbuffer.h
1 #ifndef _INTEL_BATCHBUFFER_H_
2 #define _INTEL_BATCHBUFFER_H_
3
4 #include <xf86drm.h>
5 #include <drm.h>
6 #include <i915_drm.h>
7 #include <intel_bufmgr.h>
8
9 #include "intel_driver.h"
10
11 struct intel_batchbuffer 
12 {
13     struct intel_driver_data *intel;
14     dri_bo *buffer;
15     unsigned int size;
16     unsigned char *map;
17     unsigned char *ptr;
18     int atomic;
19 };
20
21 Bool intel_batchbuffer_init(struct intel_driver_data *intel);
22 Bool intel_batchbuffer_terminate(struct intel_driver_data *intel);
23 void intel_batchbuffer_emit_dword(VADriverContextP ctx, unsigned int x);
24 void intel_batchbuffer_emit_reloc(VADriverContextP ctx, dri_bo *bo, 
25                                   uint32_t read_domains, uint32_t write_domains, 
26                                   uint32_t delta);
27 void intel_batchbuffer_require_space(VADriverContextP ctx, unsigned int size);
28 void intel_batchbuffer_data(VADriverContextP ctx, void *data, unsigned int size);
29 void intel_batchbuffer_emit_mi_flush(VADriverContextP ctx);
30 void intel_batchbuffer_start_atomic(VADriverContextP ctx, unsigned int size);
31 void intel_batchbuffer_end_atomic(VADriverContextP ctx);
32 Bool intel_batchbuffer_flush(VADriverContextP ctx);
33
34 #define BEGIN_BATCH(ctx, n) do {                                \
35    intel_batchbuffer_require_space(ctx, (n) * 4);               \
36 } while (0)
37
38 #define OUT_BATCH(ctx, d) do {                                  \
39    intel_batchbuffer_emit_dword(ctx, d);                        \
40 } while (0)
41
42 #define OUT_RELOC(ctx, bo, read_domains, write_domain, delta) do {      \
43    assert((delta) >= 0);                                                \
44    intel_batchbuffer_emit_reloc(ctx, bo,                                \
45                                 read_domains, write_domain, delta);     \
46 } while (0)
47
48 #define ADVANCE_BATCH(ctx) do {                                         \
49 } while (0)
50
51 #endif /* _INTEL_BATCHBUFFER_H_ */