> 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<yakui.z...@intel.com>
> > > ---
> > >   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.

however the extra bit is still used 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
Libva@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/libva

Reply via email to