6 * Copyright (c) 2013 Samsung Electronics Co., Ltd.
8 * Stanislav Vorobiov <s.vorobiov@samsung.com>
10 * Permission is hereby granted, free of charge, to any person obtaining a
11 * copy of this software and associated documentation files (the "Software"),
12 * to deal in the Software without restriction, including without limitation
13 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
14 * and/or sell copies of the Software, and to permit persons to whom the
15 * Software is furnished to do so, subject to the following conditions:
17 * The above copyright notice and this permission notice (including the next
18 * paragraph) shall be included in all copies or substantial portions of the
21 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
22 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
23 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
24 * VA LINUX SYSTEMS AND/OR ITS SUPPLIERS BE LIABLE FOR ANY CLAIM, DAMAGES OR
25 * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
26 * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
27 * OTHER DEALINGS IN THE SOFTWARE.
34 * Bump this whenever driver interface changes.
36 #define DRM_VIGS_DRIVER_VERSION 10
39 * Surface access flags.
41 #define DRM_VIGS_SAF_READ 1
42 #define DRM_VIGS_SAF_WRITE 2
43 #define DRM_VIGS_SAF_MASK 3
45 struct drm_vigs_get_protocol_version
50 struct drm_vigs_create_surface
61 struct drm_vigs_create_execbuffer
67 struct drm_vigs_gem_map
71 unsigned long address;
74 struct drm_vigs_gem_wait
79 struct drm_vigs_surface_info
95 struct drm_vigs_surface_set_gpu_dirty
100 struct drm_vigs_surface_start_access
102 unsigned long address;
106 struct drm_vigs_surface_end_access
108 unsigned long address;
112 struct drm_vigs_create_fence
119 struct drm_vigs_fence_wait
124 struct drm_vigs_fence_signaled
130 struct drm_vigs_fence_unref
135 #define DRM_VIGS_GET_PROTOCOL_VERSION 0x00
136 #define DRM_VIGS_CREATE_SURFACE 0x01
137 #define DRM_VIGS_CREATE_EXECBUFFER 0x02
138 #define DRM_VIGS_GEM_MAP 0x03
139 #define DRM_VIGS_GEM_WAIT 0x04
140 #define DRM_VIGS_SURFACE_INFO 0x05
141 #define DRM_VIGS_EXEC 0x06
142 #define DRM_VIGS_SURFACE_SET_GPU_DIRTY 0x07
143 #define DRM_VIGS_SURFACE_START_ACCESS 0x08
144 #define DRM_VIGS_SURFACE_END_ACCESS 0x09
145 #define DRM_VIGS_CREATE_FENCE 0x0A
146 #define DRM_VIGS_FENCE_WAIT 0x0B
147 #define DRM_VIGS_FENCE_SIGNALED 0x0C
148 #define DRM_VIGS_FENCE_UNREF 0x0D
150 #define DRM_IOCTL_VIGS_GET_PROTOCOL_VERSION DRM_IOR(DRM_COMMAND_BASE + \
151 DRM_VIGS_GET_PROTOCOL_VERSION, struct drm_vigs_get_protocol_version)
152 #define DRM_IOCTL_VIGS_CREATE_SURFACE DRM_IOWR(DRM_COMMAND_BASE + \
153 DRM_VIGS_CREATE_SURFACE, struct drm_vigs_create_surface)
154 #define DRM_IOCTL_VIGS_CREATE_EXECBUFFER DRM_IOWR(DRM_COMMAND_BASE + \
155 DRM_VIGS_CREATE_EXECBUFFER, struct drm_vigs_create_execbuffer)
156 #define DRM_IOCTL_VIGS_GEM_MAP DRM_IOWR(DRM_COMMAND_BASE + \
157 DRM_VIGS_GEM_MAP, struct drm_vigs_gem_map)
158 #define DRM_IOCTL_VIGS_GEM_WAIT DRM_IOW(DRM_COMMAND_BASE + \
159 DRM_VIGS_GEM_WAIT, struct drm_vigs_gem_wait)
160 #define DRM_IOCTL_VIGS_SURFACE_INFO DRM_IOWR(DRM_COMMAND_BASE + \
161 DRM_VIGS_SURFACE_INFO, struct drm_vigs_surface_info)
162 #define DRM_IOCTL_VIGS_EXEC DRM_IOW(DRM_COMMAND_BASE + \
163 DRM_VIGS_EXEC, struct drm_vigs_exec)
164 #define DRM_IOCTL_VIGS_SURFACE_SET_GPU_DIRTY DRM_IOW(DRM_COMMAND_BASE + \
165 DRM_VIGS_SURFACE_SET_GPU_DIRTY, struct drm_vigs_surface_set_gpu_dirty)
166 #define DRM_IOCTL_VIGS_SURFACE_START_ACCESS DRM_IOW(DRM_COMMAND_BASE + \
167 DRM_VIGS_SURFACE_START_ACCESS, struct drm_vigs_surface_start_access)
168 #define DRM_IOCTL_VIGS_SURFACE_END_ACCESS DRM_IOW(DRM_COMMAND_BASE + \
169 DRM_VIGS_SURFACE_END_ACCESS, struct drm_vigs_surface_end_access)
170 #define DRM_IOCTL_VIGS_CREATE_FENCE DRM_IOWR(DRM_COMMAND_BASE + \
171 DRM_VIGS_CREATE_FENCE, struct drm_vigs_create_fence)
172 #define DRM_IOCTL_VIGS_FENCE_WAIT DRM_IOW(DRM_COMMAND_BASE + \
173 DRM_VIGS_FENCE_WAIT, struct drm_vigs_fence_wait)
174 #define DRM_IOCTL_VIGS_FENCE_SIGNALED DRM_IOWR(DRM_COMMAND_BASE + \
175 DRM_VIGS_FENCE_SIGNALED, struct drm_vigs_fence_signaled)
176 #define DRM_IOCTL_VIGS_FENCE_UNREF DRM_IOW(DRM_COMMAND_BASE + \
177 DRM_VIGS_FENCE_UNREF, struct drm_vigs_fence_unref)