|
@@ -86,6 +86,62 @@ enum i915_mocs_table_index {
|
|
I915_MOCS_CACHED,
|
|
I915_MOCS_CACHED,
|
|
};
|
|
};
|
|
|
|
|
|
|
|
+/*
|
|
|
|
+ * Different engines serve different roles, and there may be more than one
|
|
|
|
+ * engine serving each role. enum drm_i915_gem_engine_class provides a
|
|
|
|
+ * classification of the role of the engine, which may be used when requesting
|
|
|
|
+ * operations to be performed on a certain subset of engines, or for providing
|
|
|
|
+ * information about that group.
|
|
|
|
+ */
|
|
|
|
+enum drm_i915_gem_engine_class {
|
|
|
|
+ I915_ENGINE_CLASS_RENDER = 0,
|
|
|
|
+ I915_ENGINE_CLASS_COPY = 1,
|
|
|
|
+ I915_ENGINE_CLASS_VIDEO = 2,
|
|
|
|
+ I915_ENGINE_CLASS_VIDEO_ENHANCE = 3,
|
|
|
|
+
|
|
|
|
+ I915_ENGINE_CLASS_INVALID = -1
|
|
|
|
+};
|
|
|
|
+
|
|
|
|
+/**
|
|
|
|
+ * DOC: perf_events exposed by i915 through /sys/bus/event_sources/drivers/i915
|
|
|
|
+ *
|
|
|
|
+ */
|
|
|
|
+
|
|
|
|
+enum drm_i915_pmu_engine_sample {
|
|
|
|
+ I915_SAMPLE_BUSY = 0,
|
|
|
|
+ I915_SAMPLE_WAIT = 1,
|
|
|
|
+ I915_SAMPLE_SEMA = 2
|
|
|
|
+};
|
|
|
|
+
|
|
|
|
+#define I915_PMU_SAMPLE_BITS (4)
|
|
|
|
+#define I915_PMU_SAMPLE_MASK (0xf)
|
|
|
|
+#define I915_PMU_SAMPLE_INSTANCE_BITS (8)
|
|
|
|
+#define I915_PMU_CLASS_SHIFT \
|
|
|
|
+ (I915_PMU_SAMPLE_BITS + I915_PMU_SAMPLE_INSTANCE_BITS)
|
|
|
|
+
|
|
|
|
+#define __I915_PMU_ENGINE(class, instance, sample) \
|
|
|
|
+ ((class) << I915_PMU_CLASS_SHIFT | \
|
|
|
|
+ (instance) << I915_PMU_SAMPLE_BITS | \
|
|
|
|
+ (sample))
|
|
|
|
+
|
|
|
|
+#define I915_PMU_ENGINE_BUSY(class, instance) \
|
|
|
|
+ __I915_PMU_ENGINE(class, instance, I915_SAMPLE_BUSY)
|
|
|
|
+
|
|
|
|
+#define I915_PMU_ENGINE_WAIT(class, instance) \
|
|
|
|
+ __I915_PMU_ENGINE(class, instance, I915_SAMPLE_WAIT)
|
|
|
|
+
|
|
|
|
+#define I915_PMU_ENGINE_SEMA(class, instance) \
|
|
|
|
+ __I915_PMU_ENGINE(class, instance, I915_SAMPLE_SEMA)
|
|
|
|
+
|
|
|
|
+#define __I915_PMU_OTHER(x) (__I915_PMU_ENGINE(0xff, 0xff, 0xf) + 1 + (x))
|
|
|
|
+
|
|
|
|
+#define I915_PMU_ACTUAL_FREQUENCY __I915_PMU_OTHER(0)
|
|
|
|
+#define I915_PMU_REQUESTED_FREQUENCY __I915_PMU_OTHER(1)
|
|
|
|
+#define I915_PMU_INTERRUPTS __I915_PMU_OTHER(2)
|
|
|
|
+#define I915_PMU_RC6_RESIDENCY __I915_PMU_OTHER(3)
|
|
|
|
+
|
|
|
|
+#define I915_PMU_LAST I915_PMU_RC6_RESIDENCY
|
|
|
|
+
|
|
/* Each region is a minimum of 16k, and there are at most 255 of them.
|
|
/* Each region is a minimum of 16k, and there are at most 255 of them.
|
|
*/
|
|
*/
|
|
#define I915_NR_TEX_REGIONS 255 /* table size 2k - maximum due to use
|
|
#define I915_NR_TEX_REGIONS 255 /* table size 2k - maximum due to use
|
|
@@ -450,6 +506,27 @@ typedef struct drm_i915_irq_wait {
|
|
*/
|
|
*/
|
|
#define I915_PARAM_HAS_EXEC_FENCE_ARRAY 49
|
|
#define I915_PARAM_HAS_EXEC_FENCE_ARRAY 49
|
|
|
|
|
|
|
|
+/*
|
|
|
|
+ * Query whether every context (both per-file default and user created) is
|
|
|
|
+ * isolated (insofar as HW supports). If this parameter is not true, then
|
|
|
|
+ * freshly created contexts may inherit values from an existing context,
|
|
|
|
+ * rather than default HW values. If true, it also ensures (insofar as HW
|
|
|
|
+ * supports) that all state set by this context will not leak to any other
|
|
|
|
+ * context.
|
|
|
|
+ *
|
|
|
|
+ * As not every engine across every gen support contexts, the returned
|
|
|
|
+ * value reports the support of context isolation for individual engines by
|
|
|
|
+ * returning a bitmask of each engine class set to true if that class supports
|
|
|
|
+ * isolation.
|
|
|
|
+ */
|
|
|
|
+#define I915_PARAM_HAS_CONTEXT_ISOLATION 50
|
|
|
|
+
|
|
|
|
+/* Frequency of the command streamer timestamps given by the *_TIMESTAMP
|
|
|
|
+ * registers. This used to be fixed per platform but from CNL onwards, this
|
|
|
|
+ * might vary depending on the parts.
|
|
|
|
+ */
|
|
|
|
+#define I915_PARAM_CS_TIMESTAMP_FREQUENCY 51
|
|
|
|
+
|
|
typedef struct drm_i915_getparam {
|
|
typedef struct drm_i915_getparam {
|
|
__s32 param;
|
|
__s32 param;
|
|
/*
|
|
/*
|