Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>tags/17.3-branchpoint
@@ -10,9 +10,9 @@ $ make headers_install INSTALL_HDR_PATH=/path/to/install | |||
The last update was done at the following kernel commit : | |||
commit 6d61e70ccc21606ffb8a0a03bd3aba24f659502b | |||
Merge: 338ffbf7cb5e c0bc126f97fb | |||
commit 7846b12fe0b5feab5446d892f41b5140c1419109 | |||
Merge: 7ebdb0d d78acfe | |||
Author: Dave Airlie <airlied@redhat.com> | |||
Date: Tue Jun 27 07:24:49 2017 +1000 | |||
Date: Tue Aug 29 10:38:14 2017 +1000 | |||
Backmerge tag 'v4.12-rc7' into drm-next | |||
Merge branch 'drm-vmwgfx-next' of git://people.freedesktop.org/~syeh/repos_linux into drm-next |
@@ -694,6 +694,7 @@ struct drm_prime_handle { | |||
struct drm_syncobj_create { | |||
__u32 handle; | |||
#define DRM_SYNCOBJ_CREATE_SIGNALED (1 << 0) | |||
__u32 flags; | |||
}; | |||
@@ -712,6 +713,24 @@ struct drm_syncobj_handle { | |||
__u32 pad; | |||
}; | |||
#define DRM_SYNCOBJ_WAIT_FLAGS_WAIT_ALL (1 << 0) | |||
#define DRM_SYNCOBJ_WAIT_FLAGS_WAIT_FOR_SUBMIT (1 << 1) | |||
struct drm_syncobj_wait { | |||
__u64 handles; | |||
/* absolute timeout */ | |||
__s64 timeout_nsec; | |||
__u32 count_handles; | |||
__u32 flags; | |||
__u32 first_signaled; /* only valid when not waiting all */ | |||
__u32 pad; | |||
}; | |||
struct drm_syncobj_array { | |||
__u64 handles; | |||
__u32 count_handles; | |||
__u32 pad; | |||
}; | |||
#if defined(__cplusplus) | |||
} | |||
#endif | |||
@@ -834,6 +853,9 @@ extern "C" { | |||
#define DRM_IOCTL_SYNCOBJ_DESTROY DRM_IOWR(0xC0, struct drm_syncobj_destroy) | |||
#define DRM_IOCTL_SYNCOBJ_HANDLE_TO_FD DRM_IOWR(0xC1, struct drm_syncobj_handle) | |||
#define DRM_IOCTL_SYNCOBJ_FD_TO_HANDLE DRM_IOWR(0xC2, struct drm_syncobj_handle) | |||
#define DRM_IOCTL_SYNCOBJ_WAIT DRM_IOWR(0xC3, struct drm_syncobj_wait) | |||
#define DRM_IOCTL_SYNCOBJ_RESET DRM_IOWR(0xC4, struct drm_syncobj_array) | |||
#define DRM_IOCTL_SYNCOBJ_SIGNAL DRM_IOWR(0xC5, struct drm_syncobj_array) | |||
/** | |||
* Device specific ioctls should only be in their respective headers |
@@ -712,6 +712,56 @@ struct drm_mode_atomic { | |||
__u64 user_data; | |||
}; | |||
struct drm_format_modifier_blob { | |||
#define FORMAT_BLOB_CURRENT 1 | |||
/* Version of this blob format */ | |||
__u32 version; | |||
/* Flags */ | |||
__u32 flags; | |||
/* Number of fourcc formats supported */ | |||
__u32 count_formats; | |||
/* Where in this blob the formats exist (in bytes) */ | |||
__u32 formats_offset; | |||
/* Number of drm_format_modifiers */ | |||
__u32 count_modifiers; | |||
/* Where in this blob the modifiers exist (in bytes) */ | |||
__u32 modifiers_offset; | |||
/* __u32 formats[] */ | |||
/* struct drm_format_modifier modifiers[] */ | |||
}; | |||
struct drm_format_modifier { | |||
/* Bitmask of formats in get_plane format list this info applies to. The | |||
* offset allows a sliding window of which 64 formats (bits). | |||
* | |||
* Some examples: | |||
* In today's world with < 65 formats, and formats 0, and 2 are | |||
* supported | |||
* 0x0000000000000005 | |||
* ^-offset = 0, formats = 5 | |||
* | |||
* If the number formats grew to 128, and formats 98-102 are | |||
* supported with the modifier: | |||
* | |||
* 0x0000003c00000000 0000000000000000 | |||
* ^ | |||
* |__offset = 64, formats = 0x3c00000000 | |||
* | |||
*/ | |||
__u64 formats; | |||
__u32 offset; | |||
__u32 pad; | |||
/* The modifier that applies to the >get_plane format list bitmask. */ | |||
__u64 modifier; | |||
}; | |||
/** | |||
* Create a new 'blob' data property, copying length bytes from data pointer, | |||
* and returning new blob ID. |
@@ -260,6 +260,8 @@ typedef struct _drm_i915_sarea { | |||
#define DRM_I915_GEM_CONTEXT_GETPARAM 0x34 | |||
#define DRM_I915_GEM_CONTEXT_SETPARAM 0x35 | |||
#define DRM_I915_PERF_OPEN 0x36 | |||
#define DRM_I915_PERF_ADD_CONFIG 0x37 | |||
#define DRM_I915_PERF_REMOVE_CONFIG 0x38 | |||
#define DRM_IOCTL_I915_INIT DRM_IOW( DRM_COMMAND_BASE + DRM_I915_INIT, drm_i915_init_t) | |||
#define DRM_IOCTL_I915_FLUSH DRM_IO ( DRM_COMMAND_BASE + DRM_I915_FLUSH) | |||
@@ -315,6 +317,8 @@ typedef struct _drm_i915_sarea { | |||
#define DRM_IOCTL_I915_GEM_CONTEXT_GETPARAM DRM_IOWR (DRM_COMMAND_BASE + DRM_I915_GEM_CONTEXT_GETPARAM, struct drm_i915_gem_context_param) | |||
#define DRM_IOCTL_I915_GEM_CONTEXT_SETPARAM DRM_IOWR (DRM_COMMAND_BASE + DRM_I915_GEM_CONTEXT_SETPARAM, struct drm_i915_gem_context_param) | |||
#define DRM_IOCTL_I915_PERF_OPEN DRM_IOW(DRM_COMMAND_BASE + DRM_I915_PERF_OPEN, struct drm_i915_perf_open_param) | |||
#define DRM_IOCTL_I915_PERF_ADD_CONFIG DRM_IOW(DRM_COMMAND_BASE + DRM_I915_PERF_ADD_CONFIG, struct drm_i915_perf_oa_config) | |||
#define DRM_IOCTL_I915_PERF_REMOVE_CONFIG DRM_IOW(DRM_COMMAND_BASE + DRM_I915_PERF_REMOVE_CONFIG, __u64) | |||
/* Allow drivers to submit batchbuffers directly to hardware, relying | |||
* on the security mechanisms provided by hardware. | |||
@@ -819,7 +823,7 @@ struct drm_i915_gem_exec_object2 { | |||
struct drm_i915_gem_exec_fence { | |||
/** | |||
* User's handle for a dma-fence to wait on or signal. | |||
* User's handle for a drm_syncobj to wait on or signal. | |||
*/ | |||
__u32 handle; | |||
@@ -842,10 +846,11 @@ struct drm_i915_gem_execbuffer2 { | |||
__u32 DR1; | |||
__u32 DR4; | |||
__u32 num_cliprects; | |||
/** This is a struct drm_clip_rect *cliprects if I915_EXEC_FENCE_ARRAY | |||
* is not set. If I915_EXEC_FENCE_ARRAY is set, then this is a | |||
* struct drm_i915_gem_exec_fence *fences. | |||
*/ | |||
/** | |||
* This is a struct drm_clip_rect *cliprects if I915_EXEC_FENCE_ARRAY | |||
* is not set. If I915_EXEC_FENCE_ARRAY is set, then this is a | |||
* struct drm_i915_gem_exec_fence *fences. | |||
*/ | |||
__u64 cliprects_ptr; | |||
#define I915_EXEC_RING_MASK (7<<0) | |||
#define I915_EXEC_DEFAULT (0<<0) | |||
@@ -1493,6 +1498,22 @@ enum drm_i915_perf_record_type { | |||
DRM_I915_PERF_RECORD_MAX /* non-ABI */ | |||
}; | |||
/** | |||
* Structure to upload perf dynamic configuration into the kernel. | |||
*/ | |||
struct drm_i915_perf_oa_config { | |||
/** String formatted like "%08x-%04x-%04x-%04x-%012x" */ | |||
char uuid[36]; | |||
__u32 n_mux_regs; | |||
__u32 n_boolean_regs; | |||
__u32 n_flex_regs; | |||
__u64 mux_regs_ptr; | |||
__u64 boolean_regs_ptr; | |||
__u64 flex_regs_ptr; | |||
}; | |||
#if defined(__cplusplus) | |||
} | |||
#endif |
@@ -40,6 +40,7 @@ extern "C" { | |||
#define DRM_VC4_GET_PARAM 0x07 | |||
#define DRM_VC4_SET_TILING 0x08 | |||
#define DRM_VC4_GET_TILING 0x09 | |||
#define DRM_VC4_LABEL_BO 0x0a | |||
#define DRM_IOCTL_VC4_SUBMIT_CL DRM_IOWR(DRM_COMMAND_BASE + DRM_VC4_SUBMIT_CL, struct drm_vc4_submit_cl) | |||
#define DRM_IOCTL_VC4_WAIT_SEQNO DRM_IOWR(DRM_COMMAND_BASE + DRM_VC4_WAIT_SEQNO, struct drm_vc4_wait_seqno) | |||
@@ -51,6 +52,7 @@ extern "C" { | |||
#define DRM_IOCTL_VC4_GET_PARAM DRM_IOWR(DRM_COMMAND_BASE + DRM_VC4_GET_PARAM, struct drm_vc4_get_param) | |||
#define DRM_IOCTL_VC4_SET_TILING DRM_IOWR(DRM_COMMAND_BASE + DRM_VC4_SET_TILING, struct drm_vc4_set_tiling) | |||
#define DRM_IOCTL_VC4_GET_TILING DRM_IOWR(DRM_COMMAND_BASE + DRM_VC4_GET_TILING, struct drm_vc4_get_tiling) | |||
#define DRM_IOCTL_VC4_LABEL_BO DRM_IOWR(DRM_COMMAND_BASE + DRM_VC4_LABEL_BO, struct drm_vc4_label_bo) | |||
struct drm_vc4_submit_rcl_surface { | |||
__u32 hindex; /* Handle index, or ~0 if not present. */ | |||
@@ -153,6 +155,16 @@ struct drm_vc4_submit_cl { | |||
__u32 pad:24; | |||
#define VC4_SUBMIT_CL_USE_CLEAR_COLOR (1 << 0) | |||
/* By default, the kernel gets to choose the order that the tiles are | |||
* rendered in. If this is set, then the tiles will be rendered in a | |||
* raster order, with the right-to-left vs left-to-right and | |||
* top-to-bottom vs bottom-to-top dictated by | |||
* VC4_SUBMIT_CL_RCL_ORDER_INCREASING_*. This allows overlapping | |||
* blits to be implemented using the 3D engine. | |||
*/ | |||
#define VC4_SUBMIT_CL_FIXED_RCL_ORDER (1 << 1) | |||
#define VC4_SUBMIT_CL_RCL_ORDER_INCREASING_X (1 << 2) | |||
#define VC4_SUBMIT_CL_RCL_ORDER_INCREASING_Y (1 << 3) | |||
__u32 flags; | |||
/* Returned value of the seqno of this render job (for the | |||
@@ -292,6 +304,7 @@ struct drm_vc4_get_hang_state { | |||
#define DRM_VC4_PARAM_SUPPORTS_BRANCHES 3 | |||
#define DRM_VC4_PARAM_SUPPORTS_ETC1 4 | |||
#define DRM_VC4_PARAM_SUPPORTS_THREADED_FS 5 | |||
#define DRM_VC4_PARAM_SUPPORTS_FIXED_RCL_ORDER 6 | |||
struct drm_vc4_get_param { | |||
__u32 param; | |||
@@ -311,6 +324,15 @@ struct drm_vc4_set_tiling { | |||
__u64 modifier; | |||
}; | |||
/** | |||
* struct drm_vc4_label_bo - Attach a name to a BO for debug purposes. | |||
*/ | |||
struct drm_vc4_label_bo { | |||
__u32 handle; | |||
__u32 len; | |||
__u64 name; | |||
}; | |||
#if defined(__cplusplus) | |||
} | |||
#endif |