| #ifndef GEM_H |
| #define GEM_H |
| |
| #include "igt.h" |
| |
| struct gem_driver |
| { |
| /** |
| * mmap: |
| * @ptr: (out) pointer to the buffer in the user process's memory |
| * @drm_fd: open DRM device fd |
| * @gem_handle: GEM handle |
| * @size: exact size of the GEM buffer |
| * |
| * Maps the buffer backing the GEM handle for reading and writing. |
| * |
| * Returns: 0 on success, -1 otherwise |
| **/ |
| int (*mmap)(void **ptr, int drm_fd, uint32_t gem_handle, size_t size); |
| |
| /** |
| * munmap: |
| * @drm_fd: open DRM device fd |
| * @gem_handle: GEM handle |
| * @ptr: pointer (see ptr argument to mmap) |
| * @size: exact size of the mapped area |
| * |
| * Unmaps a region previously mapped with mmap. |
| * |
| * Returns: 0 on success: -1 otherwise |
| **/ |
| int (*munmap)(int drm_fd, uint32_t gem_handle, void *ptr, size_t size); |
| }; |
| |
| /** |
| * gem_get_driver: |
| * @drm_fd: open DRM device fd |
| * |
| * Gets the driver-specific GEM APIs for a particular device. |
| * |
| * Returns: a struct with function pointers on success; NULL otherwise |
| **/ |
| struct gem_driver *gem_get_driver(int drm_fd); |
| |
| /** |
| * gem_size: |
| * @drm_fd: open DRM device fd |
| * @size: (out) size of the buffer |
| * @gem_handle: GEM handle |
| * Returns: size of the buffer backing the GEM handle. |
| **/ |
| int gem_size(int drm_fd, size_t *size, uint32_t gem_handle); |
| |
| /** |
| * gem_release_handle |
| * @drm_fd: open DRM device fd |
| * @gem_handle: GEM handle |
| * |
| * Releases a GEM handle. |
| **/ |
| void gem_release_handle(int drm_fd, uint32_t gem_handle); |
| |
| struct fb_configuration |
| { |
| uint32_t width; |
| uint32_t height; |
| uint32_t pixel_format; |
| uint32_t pixel_size; |
| }; |
| |
| /** |
| * drm_fb_for_gem_handle |
| * @drm_fd: open DRM device fd |
| * @fb_id: (out) id of the DRM KMS fb |
| * @gem_handle: GEM handle |
| * @fb_config: metadata for the fb |
| * |
| * Converts a GEM buffer into a DRM KMS fb |
| * |
| * Returns: 0 if the buffer could be converted; -1 otherwise |
| **/ |
| int drm_fb_for_gem_handle(int drm_fd, uint32_t *fb_id, uint32_t gem_handle, |
| const struct fb_configuration *fb_config); |
| |
| #endif |