diff options
| author | Jakob Bornecrantz <jakob@vmware.com> | 2010-05-29 11:33:14 +0200 | 
|---|---|---|
| committer | Jakob Bornecrantz <jakob@vmware.com> | 2010-06-06 12:29:28 +0100 | 
| commit | 76aed4b070be8950fd8ea5caff59321885ff0a06 (patch) | |
| tree | 067058a29f3bce35fcaea92b8f828daaa18a4233 /src | |
| parent | 27c49b16d370299e5e23aa732c925b57daa9a14a (diff) | |
gallium: Add drm driver interface
This interfacre replaces the drm_api api it works very much the same
way as drm_api but with the exception that its meant for the target
to implement it. And it does not export a get function and neither a
destroy function.
Diffstat (limited to 'src')
| -rw-r--r-- | src/gallium/include/state_tracker/drm_driver.h | 71 | 
1 files changed, 71 insertions, 0 deletions
| diff --git a/src/gallium/include/state_tracker/drm_driver.h b/src/gallium/include/state_tracker/drm_driver.h new file mode 100644 index 0000000000..d94c1e6a7c --- /dev/null +++ b/src/gallium/include/state_tracker/drm_driver.h @@ -0,0 +1,71 @@ + +#ifndef _DRM_DRIVER_H_ +#define _DRM_DRIVER_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_driver_descriptor +{ +   /** +    * Identifying sufix/prefix of the binary, used by egl. +    */ +   const char *name; + +   /** +    * Kernel driver name, as accepted by drmOpenByName. +    */ +   const char *driver_name; + +   /** +    * Create a pipe srcreen. +    * +    * This function does any wrapping of the screen. +    * For example wrapping trace or rbug debugging drivers around it. +    */ +   struct pipe_screen* (*create_screen)(int drm_fd); +}; + +extern struct drm_driver_descriptor driver_descriptor; + +/** + * Instantiate a drm_driver_descriptor struct. + */ +#define DRM_DRIVER_DESCRIPTOR(name_str, driver_name_str, func) \ +struct drm_driver_descriptor driver_descriptor = {             \ +   .name = name_str,                                           \ +   .driver_name = driver_name_str,                             \ +   .create_screen = func,                                      \ +}; + +#endif | 
