diff options
Diffstat (limited to 'src/gallium/include/state_tracker/drm_api.h')
-rw-r--r-- | src/gallium/include/state_tracker/drm_api.h | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/src/gallium/include/state_tracker/drm_api.h b/src/gallium/include/state_tracker/drm_api.h new file mode 100644 index 0000000000..4572c7e042 --- /dev/null +++ b/src/gallium/include/state_tracker/drm_api.h @@ -0,0 +1,57 @@ + +#ifndef _DRM_API_H_ +#define _DRM_API_H_ + +#include "pipe/p_compiler.h" + +struct pipe_screen; +struct pipe_winsys; +struct pipe_context; +struct pipe_resource; + +#define DRM_API_HANDLE_TYPE_SHARED 0 +#define DRM_API_HANDLE_TYPE_KMS 1 + +/** + * For use with pipe_screen::{texture_from_handle|texture_get_handle}. + */ +struct winsys_handle +{ + /** + * Unused for texture_from_handle, always + * DRM_API_HANDLE_TYPE_SHARED. Input to texture_get_handle, + * use TEXTURE_USAGE to select handle for kms or ipc. + */ + unsigned type; + /** + * Input to texture_from_handle. + * Output for texture_get_handle. + */ + unsigned handle; + /** + * Input to texture_from_handle. + * Output for texture_get_handle. + */ + unsigned stride; +}; + +struct drm_api +{ + void (*destroy)(struct drm_api *api); + + const char *name; + + /** + * Kernel driver name, as accepted by drmOpenByName. + */ + const char *driver_name; + + /** + * Create a pipe srcreen. + */ + struct pipe_screen* (*create_screen)(struct drm_api *api, int drm_fd); +}; + +extern struct drm_api * drm_api_create(void); + +#endif |