diff options
author | Marcin Chrzanowski <marcin.j.chrzanowski@gmail.com> | 2018-05-26 21:49:47 +0200 |
---|---|---|
committer | Marcin Chrzanowski <marcin.j.chrzanowski@gmail.com> | 2018-05-26 21:49:47 +0200 |
commit | 3b8c536f437a6114c1653eb1635a84116c08e8f6 (patch) | |
tree | 2e388c54a0383890742db752fb0eeb7931d628e6 /doomdev.h | |
parent | c5e76238315f07d5224949d4454658082db2a78f (diff) |
Add missing headers
Diffstat (limited to 'doomdev.h')
-rw-r--r-- | doomdev.h | 144 |
1 files changed, 144 insertions, 0 deletions
diff --git a/doomdev.h b/doomdev.h new file mode 100644 index 0000000..01f9961 --- /dev/null +++ b/doomdev.h @@ -0,0 +1,144 @@ +#ifndef DOOMDEV_H +#define DOOMDEV_H + +#ifdef __KERNEL__ +#include <linux/kernel.h> +#else +#include <stdint.h> +#endif + +#include <linux/ioctl.h> + +/* /dev/doom* ioctls. */ + +struct doomdev_ioctl_create_surface { + uint16_t width; + uint16_t height; +}; + +struct doomdev_ioctl_create_texture { + uint64_t data_ptr; + uint32_t size; + uint16_t height; + uint16_t _pad; +}; + +struct doomdev_ioctl_create_flat { + uint64_t data_ptr; +}; + +struct doomdev_ioctl_create_colormaps { + uint64_t data_ptr; + uint32_t num; + uint32_t _pad; +}; + +#define DOOMDEV_IOCTL_CREATE_SURFACE _IOW('D', 0x00, struct doomdev_ioctl_create_surface) +#define DOOMDEV_IOCTL_CREATE_TEXTURE _IOW('D', 0x01, struct doomdev_ioctl_create_texture) +#define DOOMDEV_IOCTL_CREATE_FLAT _IOW('D', 0x02, struct doomdev_ioctl_create_flat) +#define DOOMDEV_IOCTL_CREATE_COLORMAPS _IOW('D', 0x03, struct doomdev_ioctl_create_colormaps) + +struct doomdev_surf_ioctl_copy_rects { + uint64_t rects_ptr; + uint32_t surf_src_fd; + uint16_t rects_num; + uint16_t _pad; +}; + +struct doomdev_copy_rect { + uint16_t pos_dst_x; + uint16_t pos_dst_y; + uint16_t pos_src_x; + uint16_t pos_src_y; + uint16_t width; + uint16_t height; +}; + +struct doomdev_surf_ioctl_fill_rects { + uint64_t rects_ptr; + uint16_t rects_num; + uint16_t _pad[3]; +}; + +struct doomdev_fill_rect { + uint16_t pos_dst_x; + uint16_t pos_dst_y; + uint16_t width; + uint16_t height; + uint8_t color; + uint8_t _pad; +}; + +struct doomdev_surf_ioctl_draw_lines { + uint64_t lines_ptr; + uint16_t lines_num; + uint16_t _pad[3]; +}; + +struct doomdev_line { + uint16_t pos_a_x; + uint16_t pos_a_y; + uint16_t pos_b_x; + uint16_t pos_b_y; + uint8_t color; + uint8_t _pad; +}; + +struct doomdev_surf_ioctl_draw_background { + uint32_t flat_fd; +}; + +struct doomdev_surf_ioctl_draw_columns { + uint64_t columns_ptr; + uint32_t texture_fd; + uint32_t translations_fd; + uint32_t colormaps_fd; + uint16_t columns_num; + uint8_t draw_flags; + uint8_t translation_idx; +}; + +struct doomdev_column { + uint32_t texture_offset; + uint32_t ustart; + uint32_t ustep; + uint16_t y1; + uint16_t y2; + uint16_t x; + uint8_t colormap_idx; + uint8_t _pad; +}; + +struct doomdev_surf_ioctl_draw_spans { + uint64_t spans_ptr; + uint32_t flat_fd; + uint32_t translations_fd; + uint32_t colormaps_fd; + uint16_t spans_num; + uint8_t draw_flags; + uint8_t translation_idx; +}; + +struct doomdev_span { + uint32_t ustart; + uint32_t vstart; + uint32_t ustep; + uint32_t vstep; + uint16_t x1, x2; + uint16_t y; + uint8_t colormap_idx; + uint8_t _pad; +}; + +#define DOOMDEV_SURF_IOCTL_COPY_RECTS _IOW('D', 0x10, struct doomdev_surf_ioctl_copy_rects) +#define DOOMDEV_SURF_IOCTL_FILL_RECTS _IOW('D', 0x11, struct doomdev_surf_ioctl_fill_rects) +#define DOOMDEV_SURF_IOCTL_DRAW_LINES _IOW('D', 0x12, struct doomdev_surf_ioctl_draw_lines) +#define DOOMDEV_SURF_IOCTL_DRAW_BACKGROUND _IOW('D', 0x13, struct doomdev_surf_ioctl_draw_background) +#define DOOMDEV_SURF_IOCTL_DRAW_COLUMNS _IOW('D', 0x14, struct doomdev_surf_ioctl_draw_columns) +#define DOOMDEV_SURF_IOCTL_DRAW_SPANS _IOW('D', 0x15, struct doomdev_surf_ioctl_draw_spans) + +#define DOOMDEV_DRAW_FLAGS_FUZZ 0x01 +#define DOOMDEV_DRAW_FLAGS_TRANSLATE 0x02 +#define DOOMDEV_DRAW_FLAGS_COLORMAP 0x04 + +#endif |