2 #ifndef INTEL_DRM_DEVICE_H
3 #define INTEL_DRM_DEVICE_H
5 #include "pipe/internal/p_winsys_screen.h"
6 #include "pipe/p_context.h"
9 #include "intel_bufmgr.h"
17 struct intel_be_device
19 struct pipe_winsys base
;
23 int fd
; /**< Drm file discriptor */
27 size_t max_batch_size
;
28 size_t max_vertex_size
;
31 drm_intel_bufmgr
*gem
;
35 static INLINE
struct intel_be_device
*
36 intel_be_device(struct pipe_winsys
*winsys
)
38 return (struct intel_be_device
*)winsys
;
42 intel_be_init_device(struct intel_be_device
*device
, int fd
, unsigned id
);
48 struct intel_be_buffer
{
49 struct pipe_buffer base
;
56 * Wrapper for driver get_texture_buffer functions.
59 intel_be_get_texture_buffer(struct drm_api
*api
,
60 struct pipe_texture
*texture
,
61 struct pipe_buffer
**buffer
,
65 * Create a be buffer from a drm bo handle.
70 intel_be_buffer_from_handle(struct drm_api
*api
,
71 struct pipe_screen
*screen
,
72 const char* name
, unsigned handle
);
75 * Gets a handle from a buffer.
77 * If buffer is destroyed handle may become invalid.
80 intel_be_handle_from_buffer(struct drm_api
*api
,
81 struct pipe_screen
*screen
,
82 struct pipe_buffer
*buffer
,
86 * Gets the global handle from a buffer.
88 * If buffer is destroyed handle may become invalid.
91 intel_be_global_handle_from_buffer(struct drm_api
*api
,
92 struct pipe_screen
*screen
,
93 struct pipe_buffer
*buffer
,
96 static INLINE
struct intel_be_buffer
*
97 intel_be_buffer(struct pipe_buffer
*buf
)
99 return (struct intel_be_buffer
*)buf
;
102 static INLINE drm_intel_bo
*
103 intel_bo(struct pipe_buffer
*buf
)
105 return intel_be_buffer(buf
)->bo
;