On 11/18/2016 08:47 AM, Xiang, Haihao wrote:
On Wed, 2016-11-16 at 21:06 -0500, Zhao Yakui wrote:
This info can be used to configure the max EU threads of GPU device.
eu_total * 6

Signed-off-by: Zhao Yakui<[email protected]>
---
  src/intel_driver.c | 13 +++++++++++++
  src/intel_driver.h |  3 +++
  2 files changed, 16 insertions(+)

diff --git a/src/intel_driver.c b/src/intel_driver.c
index bb19401..a2c8c71 100644
--- a/src/intel_driver.c
+++ b/src/intel_driver.c
@@ -50,6 +50,12 @@ uint32_t g_intel_debug_option_flags = 0;
  #define LOCAL_I915_PARAM_HAS_HUC 42
  #endif

+#ifdef I915_PARAM_EU_TOTAL
+#define LOCAL_I915_PARAM_EU_TOTAL I915_PARAM_EU_TOTAL
+#else
+#define LOCAL_I915_PARAM_EU_TOTAL 34
+#endif
+
  static Bool
  intel_driver_get_param(struct intel_driver_data *intel, int param,
int *value)
  {
@@ -142,6 +148,13 @@ intel_driver_init(VADriverContextP ctx)
      if (intel_driver_get_param(intel, LOCAL_I915_PARAM_HAS_HUC,
&ret_value))
          intel->has_huc = !!ret_value;

+    intel->has_eu_flag = 0;
+    intel->eu_total = 0;
+    if (intel_driver_get_param(intel, LOCAL_I915_PARAM_EU_TOTAL,
&ret_value)) {
+        intel->has_eu_flag = !!ret_value;
+        intel->eu_total = ret_value;
+    }
+
      intel_driver_get_revid(intel,&intel->revision);
      return true;
  }
diff --git a/src/intel_driver.h b/src/intel_driver.h
index dcdc03b..a02bfa8 100644
--- a/src/intel_driver.h
+++ b/src/intel_driver.h
@@ -182,6 +182,9 @@ struct intel_driver_data
      unsigned int has_vebox  : 1; /* Flag: has VEBOX unit */
      unsigned int has_bsd2   : 1; /* Flag: has the second BSD video
ring unit */
      unsigned int has_huc    : 1; /* Flag: has a fully loaded HuC
firmware? */
+    unsigned int has_eu_flag : 1; /* Flag: Kernel will return EU
counts */
+
+    int eu_total;


adding eu_total is enough, we can use the following if ... else
statement later

In fact the has_eu_flag is equal to the condition check.
   > if (intel->eu_total > 0)

It only use extra bit_field to avoid calling it every time.


if (intel->eu_total>  0) {
   ...
} else {
   ...
}

It avoids setting the number of thread to 0 (although it is unlikely)
as well.


      const struct intel_device_info *device_info;
  };

_______________________________________________
Libva mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/libva

Reply via email to