|
@@ -318,6 +318,7 @@ typedef struct _drm_i915_sarea {
|
|
|
#define DRM_I915_PERF_OPEN 0x36
|
|
|
#define DRM_I915_PERF_ADD_CONFIG 0x37
|
|
|
#define DRM_I915_PERF_REMOVE_CONFIG 0x38
|
|
|
+#define DRM_I915_QUERY 0x39
|
|
|
|
|
|
#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)
|
|
@@ -375,6 +376,7 @@ typedef struct _drm_i915_sarea {
|
|
|
#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)
|
|
|
+#define DRM_IOCTL_I915_QUERY DRM_IOWR(DRM_COMMAND_BASE + DRM_I915_QUERY, struct drm_i915_query)
|
|
|
|
|
|
/* Allow drivers to submit batchbuffers directly to hardware, relying
|
|
|
* on the security mechanisms provided by hardware.
|
|
@@ -1606,15 +1608,53 @@ struct drm_i915_perf_oa_config {
|
|
|
__u32 n_flex_regs;
|
|
|
|
|
|
/*
|
|
|
- * These fields are pointers to tuples of u32 values (register
|
|
|
- * address, value). For example the expected length of the buffer
|
|
|
- * pointed by mux_regs_ptr is (2 * sizeof(u32) * n_mux_regs).
|
|
|
+ * These fields are pointers to tuples of u32 values (register address,
|
|
|
+ * value). For example the expected length of the buffer pointed by
|
|
|
+ * mux_regs_ptr is (2 * sizeof(u32) * n_mux_regs).
|
|
|
*/
|
|
|
__u64 mux_regs_ptr;
|
|
|
__u64 boolean_regs_ptr;
|
|
|
__u64 flex_regs_ptr;
|
|
|
};
|
|
|
|
|
|
+struct drm_i915_query_item {
|
|
|
+ __u64 query_id;
|
|
|
+
|
|
|
+ /*
|
|
|
+ * When set to zero by userspace, this is filled with the size of the
|
|
|
+ * data to be written at the data_ptr pointer. The kernel sets this
|
|
|
+ * value to a negative value to signal an error on a particular query
|
|
|
+ * item.
|
|
|
+ */
|
|
|
+ __s32 length;
|
|
|
+
|
|
|
+ /*
|
|
|
+ * Unused for now. Must be cleared to zero.
|
|
|
+ */
|
|
|
+ __u32 flags;
|
|
|
+
|
|
|
+ /*
|
|
|
+ * Data will be written at the location pointed by data_ptr when the
|
|
|
+ * value of length matches the length of the data to be written by the
|
|
|
+ * kernel.
|
|
|
+ */
|
|
|
+ __u64 data_ptr;
|
|
|
+};
|
|
|
+
|
|
|
+struct drm_i915_query {
|
|
|
+ __u32 num_items;
|
|
|
+
|
|
|
+ /*
|
|
|
+ * Unused for now. Must be cleared to zero.
|
|
|
+ */
|
|
|
+ __u32 flags;
|
|
|
+
|
|
|
+ /*
|
|
|
+ * This points to an array of num_items drm_i915_query_item structures.
|
|
|
+ */
|
|
|
+ __u64 items_ptr;
|
|
|
+};
|
|
|
+
|
|
|
#if defined(__cplusplus)
|
|
|
}
|
|
|
#endif
|