1bc88c95990f871a206a8fe93e7541f1f41841f7eJakob Bornecrantz
2bc88c95990f871a206a8fe93e7541f1f41841f7eJakob Bornecrantz#ifndef INTEL_DRM_WINSYS_H
3bc88c95990f871a206a8fe93e7541f1f41841f7eJakob Bornecrantz#define INTEL_DRM_WINSYS_H
4bc88c95990f871a206a8fe93e7541f1f41841f7eJakob Bornecrantz
5bc88c95990f871a206a8fe93e7541f1f41841f7eJakob Bornecrantz#include "i915/i915_batchbuffer.h"
6bc88c95990f871a206a8fe93e7541f1f41841f7eJakob Bornecrantz
7bc88c95990f871a206a8fe93e7541f1f41841f7eJakob Bornecrantz#include "drm.h"
8bc88c95990f871a206a8fe93e7541f1f41841f7eJakob Bornecrantz#include "intel_bufmgr.h"
9bc88c95990f871a206a8fe93e7541f1f41841f7eJakob Bornecrantz
10bc88c95990f871a206a8fe93e7541f1f41841f7eJakob Bornecrantz
11bc88c95990f871a206a8fe93e7541f1f41841f7eJakob Bornecrantz/*
12bc88c95990f871a206a8fe93e7541f1f41841f7eJakob Bornecrantz * Winsys
13bc88c95990f871a206a8fe93e7541f1f41841f7eJakob Bornecrantz */
14bc88c95990f871a206a8fe93e7541f1f41841f7eJakob Bornecrantz
15bc88c95990f871a206a8fe93e7541f1f41841f7eJakob Bornecrantz
16bc88c95990f871a206a8fe93e7541f1f41841f7eJakob Bornecrantzstruct i915_drm_winsys
17bc88c95990f871a206a8fe93e7541f1f41841f7eJakob Bornecrantz{
18bc88c95990f871a206a8fe93e7541f1f41841f7eJakob Bornecrantz   struct i915_winsys base;
19bc88c95990f871a206a8fe93e7541f1f41841f7eJakob Bornecrantz
20bc88c95990f871a206a8fe93e7541f1f41841f7eJakob Bornecrantz   boolean dump_cmd;
21fc30910c65e7ab078b900c29d2066e45d3edd8c2Brian Paul   const char *dump_raw_file;
222d818ed0f86b216774dd4663b12aa0bb3119c215Jakob Bornecrantz   boolean send_cmd;
23bc88c95990f871a206a8fe93e7541f1f41841f7eJakob Bornecrantz
24bc88c95990f871a206a8fe93e7541f1f41841f7eJakob Bornecrantz   int fd; /**< Drm file discriptor */
25bc88c95990f871a206a8fe93e7541f1f41841f7eJakob Bornecrantz
26bc88c95990f871a206a8fe93e7541f1f41841f7eJakob Bornecrantz   size_t max_batch_size;
27bc88c95990f871a206a8fe93e7541f1f41841f7eJakob Bornecrantz
28c8fca58d9d5b3f25cb1ac2056ac2b437b79c04eeDaniel Vetter   drm_intel_bufmgr *gem_manager;
29bc88c95990f871a206a8fe93e7541f1f41841f7eJakob Bornecrantz};
30bc88c95990f871a206a8fe93e7541f1f41841f7eJakob Bornecrantz
31bc88c95990f871a206a8fe93e7541f1f41841f7eJakob Bornecrantzstatic INLINE struct i915_drm_winsys *
32bc88c95990f871a206a8fe93e7541f1f41841f7eJakob Bornecrantzi915_drm_winsys(struct i915_winsys *iws)
33bc88c95990f871a206a8fe93e7541f1f41841f7eJakob Bornecrantz{
34bc88c95990f871a206a8fe93e7541f1f41841f7eJakob Bornecrantz   return (struct i915_drm_winsys *)iws;
35bc88c95990f871a206a8fe93e7541f1f41841f7eJakob Bornecrantz}
36bc88c95990f871a206a8fe93e7541f1f41841f7eJakob Bornecrantz
37bc88c95990f871a206a8fe93e7541f1f41841f7eJakob Bornecrantzstruct pipe_fence_handle * i915_drm_fence_create(drm_intel_bo *bo);
38bc88c95990f871a206a8fe93e7541f1f41841f7eJakob Bornecrantz
39bc88c95990f871a206a8fe93e7541f1f41841f7eJakob Bornecrantzvoid i915_drm_winsys_init_batchbuffer_functions(struct i915_drm_winsys *idws);
40bc88c95990f871a206a8fe93e7541f1f41841f7eJakob Bornecrantzvoid i915_drm_winsys_init_buffer_functions(struct i915_drm_winsys *idws);
41bc88c95990f871a206a8fe93e7541f1f41841f7eJakob Bornecrantzvoid i915_drm_winsys_init_fence_functions(struct i915_drm_winsys *idws);
42bc88c95990f871a206a8fe93e7541f1f41841f7eJakob Bornecrantz
43bc88c95990f871a206a8fe93e7541f1f41841f7eJakob Bornecrantz
44bc88c95990f871a206a8fe93e7541f1f41841f7eJakob Bornecrantz/*
45bc88c95990f871a206a8fe93e7541f1f41841f7eJakob Bornecrantz * Buffer
46bc88c95990f871a206a8fe93e7541f1f41841f7eJakob Bornecrantz */
47bc88c95990f871a206a8fe93e7541f1f41841f7eJakob Bornecrantz
48bc88c95990f871a206a8fe93e7541f1f41841f7eJakob Bornecrantz
49bc88c95990f871a206a8fe93e7541f1f41841f7eJakob Bornecrantzstruct i915_drm_buffer {
50bc88c95990f871a206a8fe93e7541f1f41841f7eJakob Bornecrantz   unsigned magic;
51bc88c95990f871a206a8fe93e7541f1f41841f7eJakob Bornecrantz
52bc88c95990f871a206a8fe93e7541f1f41841f7eJakob Bornecrantz   drm_intel_bo *bo;
53bc88c95990f871a206a8fe93e7541f1f41841f7eJakob Bornecrantz
54bc88c95990f871a206a8fe93e7541f1f41841f7eJakob Bornecrantz   void *ptr;
55bc88c95990f871a206a8fe93e7541f1f41841f7eJakob Bornecrantz   unsigned map_count;
56bc88c95990f871a206a8fe93e7541f1f41841f7eJakob Bornecrantz
57bc88c95990f871a206a8fe93e7541f1f41841f7eJakob Bornecrantz   boolean flinked;
58bc88c95990f871a206a8fe93e7541f1f41841f7eJakob Bornecrantz   unsigned flink;
59bc88c95990f871a206a8fe93e7541f1f41841f7eJakob Bornecrantz};
60bc88c95990f871a206a8fe93e7541f1f41841f7eJakob Bornecrantz
61bc88c95990f871a206a8fe93e7541f1f41841f7eJakob Bornecrantzstatic INLINE struct i915_drm_buffer *
62bc88c95990f871a206a8fe93e7541f1f41841f7eJakob Bornecrantzi915_drm_buffer(struct i915_winsys_buffer *buffer)
63bc88c95990f871a206a8fe93e7541f1f41841f7eJakob Bornecrantz{
64bc88c95990f871a206a8fe93e7541f1f41841f7eJakob Bornecrantz   return (struct i915_drm_buffer *)buffer;
65bc88c95990f871a206a8fe93e7541f1f41841f7eJakob Bornecrantz}
66bc88c95990f871a206a8fe93e7541f1f41841f7eJakob Bornecrantz
67bc88c95990f871a206a8fe93e7541f1f41841f7eJakob Bornecrantzstatic INLINE drm_intel_bo *
68bc88c95990f871a206a8fe93e7541f1f41841f7eJakob Bornecrantzintel_bo(struct i915_winsys_buffer *buffer)
69bc88c95990f871a206a8fe93e7541f1f41841f7eJakob Bornecrantz{
70bc88c95990f871a206a8fe93e7541f1f41841f7eJakob Bornecrantz   return i915_drm_buffer(buffer)->bo;
71bc88c95990f871a206a8fe93e7541f1f41841f7eJakob Bornecrantz}
72bc88c95990f871a206a8fe93e7541f1f41841f7eJakob Bornecrantz
73bc88c95990f871a206a8fe93e7541f1f41841f7eJakob Bornecrantz#endif
74