gallium: Make the intel xorg winsys start up with any Intel chipset.
[mesa.git] / src / gallium / winsys / drm / intel / gem / intel_be_device.h
1
2 #ifndef INTEL_DRM_DEVICE_H
3 #define INTEL_DRM_DEVICE_H
4
5 #include "pipe/internal/p_winsys_screen.h"
6 #include "pipe/p_context.h"
7
8 #include "drm.h"
9 #include "intel_bufmgr.h"
10
11 /*
12 * Device
13 */
14
15 struct intel_be_device
16 {
17 struct pipe_winsys base;
18
19 int fd; /**< Drm file discriptor */
20
21 unsigned id;
22
23 size_t max_batch_size;
24 size_t max_vertex_size;
25
26 struct {
27 drm_intel_bufmgr *gem;
28 } pools;
29 };
30
31 static INLINE struct intel_be_device *
32 intel_be_device(struct pipe_winsys *winsys)
33 {
34 return (struct intel_be_device *)winsys;
35 }
36
37 boolean
38 intel_be_init_device(struct intel_be_device *device, int fd, unsigned id);
39
40 /*
41 * Buffer
42 */
43
44 struct intel_be_buffer {
45 struct pipe_buffer base;
46 drm_intel_bo *bo;
47 boolean flinked;
48 unsigned flink;
49 };
50
51 /**
52 * Create a be buffer from a drm bo handle.
53 *
54 * Takes a reference.
55 */
56 struct pipe_buffer *
57 intel_be_buffer_from_handle(struct pipe_screen *screen,
58 const char* name, unsigned handle);
59
60 /**
61 * Gets a handle from a buffer.
62 *
63 * If buffer is destroyed handle may become invalid.
64 */
65 boolean
66 intel_be_handle_from_buffer(struct pipe_screen *screen,
67 struct pipe_buffer *buffer,
68 unsigned *handle);
69
70 /**
71 * Gets the global handle from a buffer.
72 *
73 * If buffer is destroyed handle may become invalid.
74 */
75 boolean
76 intel_be_global_handle_from_buffer(struct pipe_screen *screen,
77 struct pipe_buffer *buffer,
78 unsigned *handle);
79
80 static INLINE struct intel_be_buffer *
81 intel_be_buffer(struct pipe_buffer *buf)
82 {
83 return (struct intel_be_buffer *)buf;
84 }
85
86 static INLINE drm_intel_bo *
87 intel_bo(struct pipe_buffer *buf)
88 {
89 return intel_be_buffer(buf)->bo;
90 }
91
92 #endif